Skip to main content

Module community_access_guard

Module community_access_guard 

Source
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 /community dédié — les routes SEL / sondages / annonces / objets partagés / réservations vivent à plat sous /api/v1 (cf. routes.rs). Comme GdprRateLimit, ce garde est donc câblé GLOBALEMENT dans main.rs et 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 AuthenticatedUser du 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_access de scope_guard.rs (« refusé plutôt qu’ignoré »).

Structs§

CommunityAccessGuard
CommunityAccessGuard — factory Actix, à câbler GLOBALEMENT (cf. design ci-dessus). Wrap :
CommunityAccessGuardMiddleware

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
true si le chemin correspond à une route communautaire protégée.