backoffice: allow limited access to cards via dispatched functions (#66784) #615
Loading…
Reference in New Issue
No description provided.
Delete Branch "wip/66784-card-limited-access-listing"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
8346af102a
to564e1a4030
564e1a4030
tob6098c469a
@ -80,1 +80,3 @@
def is_accessible(self, user):
def is_accessible(self, user, traversal=False):
if traversal:
return super().is_accessible(user=user, traversal=traversal)
Quand on est en mode "traversal" (voir plus bas), on court-circuite pour envoyer sur la méthode parente qui se contentera de vérifier que l'accès backoffice est ok.
@ -112,2 +114,4 @@
if not (CardDef.exists()):
return self.empty_site_message(_('Cards'))
if not self.is_accessible(get_request().user, traversal=False):
raise errors.AccessForbiddenError()
Vérification ajoutée sur la page d'index pour lever une erreur si l'utilisateur n'avait pas accès (puisque lors de la traversée tous les cas n'auront pas été attrapés).
@ -201,1 +201,3 @@
if not self.is_accessible(component):
if not self.is_accessible(component, traversal=True):
# traversal=True will make it skip some expensive checks and
# let directories/views further down apply their own checks.
Ajout d'un paramètre traversal aux méthodes is_accessible(), qui permet d'indiquer quand l'accès se fait juste pour la traversée d'URL, et qu'un contrôle d'accès plus poussé aura lieu plus loin.
@ -1732,3 +1735,3 @@
user_roles = ensure_role_are_strings(user_roles)
if formdata and formdata.is_submitter(user):
if self.user_allowed_to_access_own_data and formdata and formdata.is_submitter(user):
Comme tous les agents peuvent désormais traverser jusque /cards/foo/id il faut cette modification pour qu'un agent ne puisse pas voir une fiche qui serait liée à son compte.
WIP: backoffice: allow limited access to cards via dispatched functions (#66784)to backoffice: allow limited access to cards via dispatched functions (#66784)@ -183,3 +183,3 @@
def _q_index(self):
for directory in ('studio', 'management'):
if self.is_accessible(directory):
if self.is_accessible(directory, traversal=True):
Pigé la PR dans son ensemble, sauf ici, pas compris en quoi
traversal=True
ajouté ici n’est pas trop permissif ?c'est très permissif mais justement derrière les vues en elles-mêmes font le contrôle et donc c'est ok si on laisse passer ici.