From 072de719dfe0981dd5f2b90b18bf9471cfcabe40 Mon Sep 17 00:00:00 2001 From: giles Date: Tue, 24 Feb 2026 09:11:52 +0000 Subject: [PATCH] Add auth-menu fragment handler to account app Phase 2 of fragment composition: account exposes auth-menu fragment (sign-in button or user email for desktop + mobile) via /internal/fragments/ endpoint. Updates shared submodule. Co-Authored-By: Claude Opus 4.6 --- bp/fragments/routes.py | 26 +++++++++++++++++---- shared | 2 +- templates/fragments/auth_menu.html | 36 ++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 5 deletions(-) create mode 100644 templates/fragments/auth_menu.html diff --git a/bp/fragments/routes.py b/bp/fragments/routes.py index 5ae8373..b21a601 100644 --- a/bp/fragments/routes.py +++ b/bp/fragments/routes.py @@ -2,11 +2,14 @@ Exposes HTML fragments at ``/internal/fragments/`` for consumption by other coop apps via the fragment client. + +Fragments: + auth-menu Desktop + mobile auth menu (sign-in or user link) """ from __future__ import annotations -from quart import Blueprint, Response, request +from quart import Blueprint, Response, request, render_template from shared.infrastructure.fragments import FRAGMENT_HEADER @@ -14,7 +17,24 @@ from shared.infrastructure.fragments import FRAGMENT_HEADER def register(): bp = Blueprint("fragments", __name__, url_prefix="/internal/fragments") - _handlers: dict[str, object] = {} + # --------------------------------------------------------------- + # Fragment handlers + # --------------------------------------------------------------- + + async def _auth_menu(): + user_email = request.args.get("email", "") + return await render_template( + "fragments/auth_menu.html", + user_email=user_email, + ) + + _handlers = { + "auth-menu": _auth_menu, + } + + # --------------------------------------------------------------- + # Routing + # --------------------------------------------------------------- @bp.before_request async def _require_fragment_header(): @@ -29,6 +49,4 @@ def register(): html = await handler() return Response(html, status=200, content_type="text/html") - bp._fragment_handlers = _handlers - return bp diff --git a/shared b/shared index b882770..2a9dfaa 160000 --- a/shared +++ b/shared @@ -1 +1 @@ -Subproject commit b882770828be7c62bbd047146e03b83511a2397d +Subproject commit 2a9dfaa749be414903b5edf834fbb201e6466498 diff --git a/templates/fragments/auth_menu.html b/templates/fragments/auth_menu.html new file mode 100644 index 0000000..fec15a8 --- /dev/null +++ b/templates/fragments/auth_menu.html @@ -0,0 +1,36 @@ +{# Desktop auth menu #} + +{% if user_email %} + + + {{ user_email }} + +{% else %} + + + sign in or register + +{% endif %} + +{# Mobile auth menu #} + +{% if user_email %} + + + {{ user_email }} + +{% else %} + + + sign in or register + +{% endif %} +