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:
giles
2026-02-24 22:38:48 +00:00
parent a7cb660009
commit 98080b10c5

View File

@@ -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(