backoffice: allow limited access to cards via dispatched functions (#66784) #615

Merged
fpeters merged 1 commits from wip/66784-card-limited-access-listing into main 2023-09-04 16:51:34 +02:00
Owner
No description provided.
fpeters force-pushed wip/66784-card-limited-access-listing from 8346af102a to 564e1a4030 2023-08-17 19:40:18 +02:00 Compare
fpeters force-pushed wip/66784-card-limited-access-listing from 564e1a4030 to b6098c469a 2023-08-17 19:56:10 +02:00 Compare
fpeters reviewed 2023-08-18 12:31:21 +02:00
@ -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)
Author
Owner

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.

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()
Author
Owner

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).

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.
Author
Owner

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.

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):
Author
Owner

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.

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.
fpeters changed title from WIP: backoffice: allow limited access to cards via dispatched functions (#66784) to backoffice: allow limited access to cards via dispatched functions (#66784) 2023-08-18 12:31:27 +02:00
pmarillonnet reviewed 2023-08-22 10:58:47 +02:00
@ -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):
Owner

Pigé la PR dans son ensemble, sauf ici, pas compris en quoi traversal=True ajouté ici n’est pas trop permissif ?

Pigé la PR dans son ensemble, sauf ici, pas compris en quoi `traversal=True` ajouté ici n’est pas trop permissif ?
Author
Owner

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.

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.
lguerin approved these changes 2023-09-04 15:57:26 +02:00
fpeters merged commit c4eea28adc into main 2023-09-04 16:51:34 +02:00
fpeters deleted branch wip/66784-card-limited-access-listing 2023-09-04 16:51:34 +02:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: entrouvert/wcs#615
No description provided.