Authentification et RBAC
Flux d'authentification et de contrôle d'accès pour l'API Laravel DMV : de l'identité utilisateur à la ressource protégée.
Statut
- Supabase Auth côté frontends, validation JWT côté API, Sanctum : actifs et confirmés dans le code.
- Middlewares
ensure.admin,mairie.access,asso.access,device.token: actifs. - Policies Laravel sur acteurs et publications : actives.
- MFA, flux canonique Supabase/Sanctum stabilisé : à définir (vision cible).
- Flèches pointillées
-.->: chemin alternatif (Device PlayLoop).
Schéma
Lecture du schéma
Flux utilisateur standard : l'utilisateur s'authentifie via Supabase Auth (côté frontend). L'API valide le JWT avec firebase/php-jwt en vérifiant SUPABASE_JWT_SECRET et le rôle authenticated. Un token Sanctum est émis avec une durée de vie configurable (SANCTUM_TOKEN_EXPIRATION).
Middleware chain :
identify.appidentifie l'application source via l'en-têteX-App-Source. Ce header contextualise la requête mais ne suffit pas à autoriser une action.auth:sanctumvérifie que le token est valide et non expiré.- La vérification de rôle applique le middleware adapté (
ensure.admin,mairie.access,asso.access) selon la route. - La policy Laravel contrôle l'accès à la ressource spécifique selon la propriété ou le périmètre.
RBAC rôle + périmètre : un rôle seul ne suffit pas. L'accès combine toujours un rôle (utilisateur, contributeur, mairie, admin) et un périmètre (acteur, commune, association, global).
Device PlayLoop : les devices ne passent pas par Supabase Auth. Ils utilisent un token opaque via le middleware device.token (Bearer {token}) et rejoignent la chaîne à partir de identify.app.
Refus : les erreurs d'autorisation retournent une réponse JSON structurée en 401 (non authentifié) ou 403 (non autorisé).