1from__future__importannotations 2 3fromtypingimportTYPE_CHECKING,Any 4 5fromjinja2importpass_context 6 7fromplain.sessions.exceptionsimportSessionNotAvailable 8fromplain.templatesimportregister_template_global 910from.requestsimportget_request_user1112ifTYPE_CHECKING:13fromjinja2.runtimeimportContext141516@register_template_global17@pass_context18defget_current_user(context:Context)->Any|None:19"""Get the authenticated user for the current request."""20request=context.get("request")21assertrequestisnotNone,"No request in template context"22try:23returnget_request_user(request)24exceptSessionNotAvailable:25# Session not available (e.g., during error page rendering before middleware runs)26returnNone