v0.166.0
 1from typing import TYPE_CHECKING, Any
 2
 3from jinja2 import pass_context
 4from plain.sessions.exceptions import SessionNotAvailable
 5from plain.templates import register_template_global
 6
 7from .requests import get_request_user
 8
 9if TYPE_CHECKING:
10    from jinja2.runtime import Context
11
12
13@register_template_global
14@pass_context
15def get_current_user(context: Context) -> Any | None:
16    """Get the authenticated user for the current request."""
17    request = context.get("request")
18    assert request is not None, "No request in template context"
19    try:
20        return get_request_user(request)
21    except SessionNotAvailable:
22        # Session not available (e.g., during error page rendering before middleware runs)
23        return None