From 98080b10c577b49e3bc5ff2cfa1ca0ba2cd337a5 Mon Sep 17 00:00:00 2001 From: giles Date: Tue, 24 Feb 2026 22:38:48 +0000 Subject: [PATCH] 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 --- artdag_common/middleware/auth.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/artdag_common/middleware/auth.py b/artdag_common/middleware/auth.py index 6b4a22d..b227894 100644 --- a/artdag_common/middleware/auth.py +++ b/artdag_common/middleware/auth.py @@ -21,6 +21,7 @@ class UserContext: actor_id: str # Full actor ID like "@user@server.com" token: Optional[str] = None l2_server: Optional[str] = None # L2 server URL for this user + email: Optional[str] = None # User's email address @property def display_name(self) -> str: @@ -54,6 +55,7 @@ def get_user_from_cookie(request: Request) -> Optional[UserContext]: return UserContext( username=username, actor_id=actor_id, + email=data.get("email", ""), ) except (json.JSONDecodeError, ValueError, KeyError): pass @@ -71,6 +73,7 @@ def get_user_from_cookie(request: Request) -> Optional[UserContext]: username=username, actor_id=actor_id or "", token=token, + email=claims.get("email", ""), ) return None @@ -249,10 +252,13 @@ def set_auth_cookie(response: Any, user: UserContext, max_age: int = 86400 * 30) user: User context to store max_age: Cookie max age in seconds (default 30 days) """ - data = json.dumps({ + cookie_data = { "username": user.username, "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() response.set_cookie(