feat(sso): user_picture를 세션 top-level에 저장 — OMS 도 아바타 표시 가능
기존엔 'user' dict 안에만 picture 가 저장돼 OMS 가 못 읽었다. 이제 user_email/user_name 처럼 top-level 키로도 저장하여 OMS 가 동일하게 읽는다. get_user() 도 top-level user_picture 를 인정.
This commit is contained in:
+4
-2
@@ -99,7 +99,7 @@ def get_user(request: Request) -> dict[str, Any] | None:
|
|||||||
return {
|
return {
|
||||||
"email": str(email),
|
"email": str(email),
|
||||||
"name": request.session.get("user_name") or str(email),
|
"name": request.session.get("user_name") or str(email),
|
||||||
"picture": "",
|
"picture": request.session.get("user_picture", "") or "",
|
||||||
}
|
}
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@@ -225,14 +225,16 @@ async def auth_google(request: Request):
|
|||||||
|
|
||||||
email = str(userinfo.get("email", "")).lower().strip()
|
email = str(userinfo.get("email", "")).lower().strip()
|
||||||
name = userinfo.get("name") or email
|
name = userinfo.get("name") or email
|
||||||
|
picture = userinfo.get("picture", "") or ""
|
||||||
# OMS 와 공유하는 top-level 키 (SSO 계약)
|
# OMS 와 공유하는 top-level 키 (SSO 계약)
|
||||||
request.session["user_email"] = email
|
request.session["user_email"] = email
|
||||||
request.session["user_name"] = name
|
request.session["user_name"] = name
|
||||||
|
request.session["user_picture"] = picture
|
||||||
# 기존 코드/템플릿 호환용 dict
|
# 기존 코드/템플릿 호환용 dict
|
||||||
request.session["user"] = {
|
request.session["user"] = {
|
||||||
"email": email,
|
"email": email,
|
||||||
"name": name,
|
"name": name,
|
||||||
"picture": userinfo.get("picture", ""),
|
"picture": picture,
|
||||||
}
|
}
|
||||||
next_url = safe_next(request.session.pop("_post_login_next", "/"))
|
next_url = safe_next(request.session.pop("_post_login_next", "/"))
|
||||||
return RedirectResponse(url=next_url, status_code=303)
|
return RedirectResponse(url=next_url, status_code=303)
|
||||||
|
|||||||
Reference in New Issue
Block a user