Rôle et slug¶
Objectif : comprendre la brique rôle — son nom lisible et son slug stable.
Ce que vous allez apprendre : un rôle a un nom (« Éditeur en chef ») et un
slug identifiant (editeur-en-chef). normalize_role_slug dérive le slug ;
validate_role refuse un rôle invalide.
Troisième palier du niveau débutant de la progression RBAC.
Module opt-in
Ce starter suppose forge-mvc-rbac installé (palier « Installation »).
Ce que ce starter montre¶
normalize_role_slug(name)→ slug stable ;validate_role(name, slug)→ validité ;- une transformation pure.
Classes Forge utilisées¶
| Classe / fonction | Rôle dans ce starter | Référence |
|---|---|---|
forge_mvc_rbac.normalize_role_slug |
Dériver un slug depuis un nom de rôle. | RBAC |
forge_mvc_rbac.validate_role |
Refuser un rôle invalide. | RBAC |
Tester¶
Ouvrez https://localhost:8000/rbac-role?name=Éditeur en chef → slug
editeur-en-chef.
Le contrôleur¶
# mvc/controllers/rbac_role_controller.py
from forge_mvc_rbac import RbacValidationError, normalize_role_slug, validate_role
def _role_view(name: str) -> dict:
slug = normalize_role_slug(name)
try:
validate_role(name, slug)
return {"name": name, "slug": slug, "valid": True, "error": None}
except RbacValidationError as exc:
return {"name": name, "slug": slug, "valid": False, "error": str(exc)}
Comprendre ce code¶
- Le slug est l'identifiant stable du rôle ; il ne change pas même si le nom d'affichage évolue.
- Séparer nom et slug évite de coder en dur des libellés dans les comparaisons.
validate_rolegarantit un couple nom/slug cohérent.
À retenir¶
- Un rôle = un nom (affichage) + un slug (identité stable).
- Le slug est ce qui apparaît dans le contrat et les associations.
- Nom et slug se valident ensemble.
Après ce starter¶
Vous avez les briques (permission, rôle). La suite (intermédiaire) : les confronter.