fix: 세션 로그인 시 포트폴리오 화면 갱신 안 됨 — MULTI_TENANT_ENABLED=false면 v1 API 사용

세션 로그인 사용자는 프론트가 v2(/portfolio/v2)를 쓰는데, 멀티테넌트가 꺼져 있으면
v2 컨텍스트가 legacy로 떨어져 KIS 동기화 없이 DB 스냅숏만 반환 → 현재가·손익이 갱신되지 않음.
/auth/me 에 multi_tenant_enabled 를 추가하고, 프론트는 세션 로그인 AND 플래그 true 일 때만 v2 사용.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-22 11:16:30 +09:00
parent 8ecedf65a8
commit 8b8c7a423e
2 changed files with 13 additions and 4 deletions

View File

@@ -257,12 +257,16 @@ async def login(body: LoginRequest, request: Request, db: AsyncSession = Depends
@router.get("/me")
async def me(credential: str = Depends(require_api_key), db: AsyncSession = Depends(get_db)):
"""현재 자격 증명 확인 — 세션 토큰이면 계정 정보, API 키면 'api-key'(관리자)."""
# multi_tenant_enabled: 프론트가 v2(사용자 스코프) API를 쓸지 결정하는 근거.
# False면 세션 로그인이라도 v2 컨텍스트가 legacy로 떨어져 /portfolio/v2 는
# KIS 동기화 없는 DB 스냅숏만 반환하므로(화면 갱신 안 됨) v1을 써야 한다.
_mt = bool(settings.MULTI_TENANT_ENABLED)
if hmac.compare_digest(credential.encode(), _get_api_key().encode()):
return {"username": "api-key", "auth_type": "api_key", "is_admin": True}
return {"username": "api-key", "auth_type": "api_key", "is_admin": True, "multi_tenant_enabled": _mt}
user = await _resolve_user(credential, db)
if user is None or not user.is_active:
raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="세션이 유효하지 않습니다.")
return {"username": user.username, "auth_type": "session", "is_admin": user.is_admin}
return {"username": user.username, "auth_type": "session", "is_admin": user.is_admin, "multi_tenant_enabled": _mt}
@router.get("/users", response_model=list[UserOut], dependencies=[Depends(require_admin)])