Bug #210
Problème de droits d'accès formulaire et back-office
100%
Description
Sur mon site de démo, j'ai créé un rôle qui a le droit de remplir un formulaire et j'ai créé des utilisateurs qui sont associés à ce rôle.
Ces utilisateurs ont uniquement ce rôle et ne sont associés à aucun autre rôle.
Pourtant quand un utilisateur se logge, il a accès au lien back-office depuis son espace mon compte, alors qu'il n'a les droits en gestion sur aucun formulaire.
Le lien Back-office ne devrait pas apparaitre.
Fichiers
Révisions associées
Historique
Mis à jour par Frédéric Péters il y a environ 12 ans
Je dirais que oui, vu dans auquo, myspace.ptl:
if user.is_admin or user.roles: profile_links.append('<a href="%sbackoffice/">%s</a>' % (root_url, _('Back office')))
Par contre ce n'est pas follement évident d'automatiquement déterminer quels sont les rôles qui devraient mener à l'ajout de ce lien (ceux apparaissant en destinataire d'un formdef ou apparaissant en "by" d'un item de workflow, c'est un peu lourd à vérifier). Peut-être que le plus simple est alors d'ajouter une case à cocher "accès au backoffice" à la définition d'un rôle.
Mis à jour par Thomas Noël il y a environ 12 ans
Frédéric Péters a écrit :
ajouter une case à cocher "accès au backoffice" à la définition d'un rôle.
Oui (et Victor aussi), même si c'est pas forcément super top, dans un premier temps ça va permettre de répondre à la demande.
La demande classique : avoir des formulaires accessibles uniquement pour un certain type d'utilisateurs (président d'association, commerçant, agent interne, etc.) qui n'auront jamais accès au backoffice.
Mis à jour par Frédéric Péters il y a environ 12 ans
Approuvé à l'eocamp, pas de magie, même pas besoin d'un second temps.
Mis à jour par Frédéric Péters il y a environ 12 ans
"Autorisation d'accès au backoffice", case cochée par défaut.
Mis à jour par Thomas Noël il y a environ 12 ans
Actuellement on a ce code :
def can_go_in_backoffice(self): if self.is_admin: return True from formdef import FormDef formdefs = FormDef.select(lambda x: not x.is_disabled()) for formdef_id in FormDef.keys(): formdef = FormDef.get(formdef_id, ignore_errors=True) if formdef and not formdef.is_disabled() and formdef.receiver_id in (self.roles or []): return True return False
Je propose de complètement supprimer la detection "j'ai un role qui est destinataire" et de se baser UNIQUEMENT sur un test "j'ai au moins un role qui a accès au backoffice".
Ok avec ça ?
Mis à jour par Thomas Noël il y a environ 12 ans
- Fichier wcs-roles-can-go-in-backoffice.diff ajouté
Voilà le patch pour w.c.s.
Si ok, je ferai celui pour auquo dans la foulée.
Mis à jour par Frédéric Péters il y a environ 12 ans
Je ne suis pas fan du nom de l'attribut, trop proche de la méthode du même nom dans la classe User; allows_backoffice_access ?
Mis à jour par Thomas Noël il y a environ 12 ans
Voili voilà.
Mis à jour par Thomas Noël il y a environ 12 ans
- Fichier
wcs-roles-can-go-in-backoffice.diffsupprimé
Mis à jour par Thomas Noël il y a environ 12 ans
- Version cible changé de 81 à Au-quotidien 2012.2
add an attribute "allows_backoffice_access" on roles