Expand description
community_access_guard middleware — Story 5.5 (refonte UX multi-rôle ACP).
Contrepartie serveur de l’ADR 0052 : le comptable (accountant,
accountant.encodeur, accountant.emetteur) est un prestataire, pas un
copropriétaire — il n’a pas accès aux routes communautaires (SEL,
sondages, annonces, objets partagés, réservations de ressources
communes), sauf s’il cumule aussi un rôle owner sur l’organisation
(auquel cas il y accède via CE rôle-là, pas via sa casquette comptable).
FR/INV : FR28, FR30 ; INV-6. Deps : Story 5.3 (#587). Refs : #556.
Design :
- Il n’existe pas de scope Actix
/communitydédié — les routes SEL / sondages / annonces / objets partagés / réservations vivent à plat sous/api/v1(cf.routes.rs). CommeGdprRateLimit, ce garde est donc câblé GLOBALEMENT dansmain.rset s’auto-filtre par préfixe de chemin plutôt que par un.wrap()scopé sur un sous-arbre de routes. - JWT absent/invalide : laisse filer la requête — l’extracteur
AuthenticatedUserdu handler renverra son propre 401 ; ce garde n’a pas à dupliquer cette vérification. - Erreur de lecture des rôles cumulés (DB indisponible) : refuse plutôt
qu’ignorer — même convention que les gardes
verify_*_org_accessdescope_guard.rs(« refusé plutôt qu’ignoré »).
Structs§
- Community
Access Guard CommunityAccessGuard— factory Actix, à câbler GLOBALEMENT (cf. design ci-dessus). Wrap :- Community
Access Guard Middleware
Functions§
- community_
access_ denied - Décide si l’accès communautaire doit être refusé pour ce jeu d’assignments de rôles (les assignments expirées — Story 3.5 délégations — sont ignorées).
- is_
community_ path truesi le chemin correspond à une route communautaire protégée.