Aller au contenu

Les helpers Jinja dans Forge RBAC

Ce document décrit l'utilisateur public et le helper can() exposés aux gabarits.

Le fichier de code correspondant est forge_mvc_rbac/jinja.py.

1. À quoi sert ce module ?

Les gabarits ont besoin de deux choses : savoir qui est connecté, et ce qu'il peut faire.
Ce module expose un utilisateur public sans secret (ni hash de mot de passe) et un helper can(permission) pour l'affichage conditionnel.

2. L'utilisateur public (AuthJinjaUser)

@dataclass
class AuthJinjaUser:
    id: int
    email: str | None = None
    is_active: bool | None = None

C'est une représentation minimale : jamais de mot de passe ni de secret côté gabarit.

3. L'API

Fonction Comportement
get_jinja_current_user(request, *, user_loader=None) l'utilisateur public courant, ou None
sanitize_jinja_user(user) réduit un utilisateur à sa représentation publique
make_auth_jinja_can(request, ...) construit le helper can(permission) exposé aux gabarits
make_auth_jinja_context(request, ...) le contexte Auth/User standard pour Jinja
make_auth_jinja_context_with_can(request) variante sans argument pour le registre du noyau

4. Usage dans un gabarit

{% if current_user %}
  Bonjour {{ current_user.email }}
  {% if can("article.publish") %}
    <a href="/article/publish">Publier</a>
  {% endif %}
{% endif %}

5. Contextes d'utilisation

  • Injection : make_auth_jinja_context(request) au rendu d'une vue.
  • Affichage conditionnel : can("...") dans le gabarit.

6. Voir aussi