Add email field to UserContext
Extract email from session cookie and JWT claims. Store email in cookie data. Needed for coop fragment composition (auth-menu). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -21,6 +21,7 @@ class UserContext:
|
|||||||
actor_id: str # Full actor ID like "@user@server.com"
|
actor_id: str # Full actor ID like "@user@server.com"
|
||||||
token: Optional[str] = None
|
token: Optional[str] = None
|
||||||
l2_server: Optional[str] = None # L2 server URL for this user
|
l2_server: Optional[str] = None # L2 server URL for this user
|
||||||
|
email: Optional[str] = None # User's email address
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def display_name(self) -> str:
|
def display_name(self) -> str:
|
||||||
@@ -54,6 +55,7 @@ def get_user_from_cookie(request: Request) -> Optional[UserContext]:
|
|||||||
return UserContext(
|
return UserContext(
|
||||||
username=username,
|
username=username,
|
||||||
actor_id=actor_id,
|
actor_id=actor_id,
|
||||||
|
email=data.get("email", ""),
|
||||||
)
|
)
|
||||||
except (json.JSONDecodeError, ValueError, KeyError):
|
except (json.JSONDecodeError, ValueError, KeyError):
|
||||||
pass
|
pass
|
||||||
@@ -71,6 +73,7 @@ def get_user_from_cookie(request: Request) -> Optional[UserContext]:
|
|||||||
username=username,
|
username=username,
|
||||||
actor_id=actor_id or "",
|
actor_id=actor_id or "",
|
||||||
token=token,
|
token=token,
|
||||||
|
email=claims.get("email", ""),
|
||||||
)
|
)
|
||||||
|
|
||||||
return None
|
return None
|
||||||
@@ -249,10 +252,13 @@ def set_auth_cookie(response: Any, user: UserContext, max_age: int = 86400 * 30)
|
|||||||
user: User context to store
|
user: User context to store
|
||||||
max_age: Cookie max age in seconds (default 30 days)
|
max_age: Cookie max age in seconds (default 30 days)
|
||||||
"""
|
"""
|
||||||
data = json.dumps({
|
cookie_data = {
|
||||||
"username": user.username,
|
"username": user.username,
|
||||||
"actor_id": user.actor_id,
|
"actor_id": user.actor_id,
|
||||||
})
|
}
|
||||||
|
if user.email:
|
||||||
|
cookie_data["email"] = user.email
|
||||||
|
data = json.dumps(cookie_data)
|
||||||
cookie_value = base64.b64encode(data.encode()).decode()
|
cookie_value = base64.b64encode(data.encode()).decode()
|
||||||
|
|
||||||
response.set_cookie(
|
response.set_cookie(
|
||||||
|
|||||||
Reference in New Issue
Block a user