Development #37808
Interdire l'accès à une demande anonyme en frontoffice
0%
Description
Quand on n'est pas connecté et qu'on clique sur l'URL frontoffice d'une demande déposée anonymement, on est renvoyé vers la page de login.
Le but étant que w.c.s. cherche à savoir si la personne devant l'écran a ou pas une fonction lui permettant de voir cette demande.
Mais je pense qu'on frontoffice on pourrait interdire cela, car c'est en backoffice que se passent les actions de traitement.
Je proposerais donc que lorsqu'on est anonyme et qu'on clique sur une URL de demande frontoffice anonyme, alors on reçoive juste un message "accès interdit"
Files
Related issues
History
Updated by Thomas Noël almost 5 years ago
Une conséquence du comportement actuel : la personne qui a fait une demande anonyme, si elle revient "plus tard" sur l'URL de sa demande, par hasard ou historique de son navigateur, elle va être envoyée vers la page de login... alors que jamais cela ne lui permettra de voir sa demande. (mais elle va quand même tenter de se créer un compte car elle aura l'impression que c'est ce qu'on lui demande, et c'est encore plus d'incompréhension...)
Updated by Stéphane Laget almost 5 years ago
Surtout cela va poser pb avec les utilisations actuelles.
Si la personne a un compte, on lui envoie par mail directement le lien vers le formulaire, on s'attend alors légitimement à qu'il se connecte pour accéder à sa demande.
Updated by Thomas Noël almost 5 years ago
Stéphane Laget a écrit :
Surtout cela va poser pb avec les utilisations actuelles.
Si la personne a un compte, on lui envoie par mail directement le lien vers le formulaire, on s'attend alors légitimement à qu'il se connecte pour accéder à sa demande.
Si le formulaire est lié à son compte il sera accesssible bien sûr. Je parle ici des demandes déposées anonymement, qui ne sont pas liées à un usager. On envoie même pas l'URL de ces demandes.
Updated by Benjamin Dauvergne almost 5 years ago
Ça rejoint un peu, mais dans l'autre sens, la solution proposée sur #37095; si un utilisateur est attaché à un formulaire (brouillon ou pas), on force l'authentification si il n'y pas d'utilisateur accès interdit et/ou proposer d'entrer un code de suivi (la dernière solution me parait mieux).
Updated by Nicolas Roche almost 5 years ago
Oui, sinon je pige pas car je pensais que ce que vous décrivez était déjà pris en compte par #29218.
Updated by Benjamin Dauvergne almost 5 years ago
Nicolas Roche a écrit :
Oui, sinon je pige pas car je pensais que ce que vous décrivez était déjà pris en compte par #29218.
On ne parle pas de code de suivi ici (enfin moi un peu), il y a des URLs différentes pour un formulaire qui ont des comportements différents:
1. /slug/<id> pour un brouillon connecté
2. /slug/<id>/ pour un formulaire soumis connecté ou après utilisation du code de suivi
3. /(slug/)?code/<tracking-code/load pour retrouver un formulaire avec tracking code (ensuite ça redirige vers les deux autres URLs)
#29218 ça concerne la 3ème URL pour qu'elle fonctionne même si on est connecté.
Ici on demande à ce que les 2 premières URLs n'invoquent pas d'authentification quand le formulaire visé n'est pas attaché à un utilisateur et moi je rajoute que ce serait bien d'indiquer qu'un code de suivi est nécessaire pour y accéder à ce moment là plutôt que de simplement afficher "Accès interdit".
Updated by Nicolas Roche almost 5 years ago
- Status changed from Nouveau to Information nécessaire
- Assignee set to Nicolas Roche
- Planning changed from No to Yes
J'ai essayé en me plaçant au début de wcs/forms/root.py::FormPage::_q_lookup() :
# forbidden direct anonymous acces to anonymous formdata on frontoffice if get_request().is_in_frontoffice() and not ( filled.user_id or get_request().user or session.is_anonymous_submitter(filled)): message = '' if filled.get_formdef().enable_tracking_codes: message = 'You can access to this page using its tracking code.' raise errors.AccessForbiddenError(message)
parce qu'après on part dans 2 directions :
ici,
if not filled.is_draft(): ... return PublicFormStatusPage(self.formdef, filled)
ou là
# restore draft ...Le problème c'est que l'API passe également par là :
- 'jump/trigger/XXX'
- 'hooks/XXX/'
or les jumps et les hooks ne sont pas détectés par get_request().is_in_api()
.
Updated by Nicolas Roche almost 5 years ago
- File 0001-forms-forbidden-direct-anonymous-acces-to-anonymous-.patch 0001-forms-forbidden-direct-anonymous-acces-to-anonymous-.patch added
- Status changed from Information nécessaire to Solution proposée
- Patch proposed changed from No to Yes
Avec l'aide de Thomas : je me place à l'autre extrémité, là où on lève l'exception qui renvoie vers la page de login.
Updated by Nicolas Roche almost 5 years ago
- File 0001-forms-forbidden-direct-anonymous-acces-to-anonymous-.patch 0001-forms-forbidden-direct-anonymous-acces-to-anonymous-.patch added
Rebasé avec les tests sur les accès via le code de suivi (#38073).
Updated by Nicolas Roche almost 5 years ago
- Related to Development #38077: Accès aux brouillons via le code de suivi added
Updated by Nicolas Roche almost 5 years ago
proposer d'entrer un code de suivi
je suis coincé car pour moi c'est fait par une cellule via combo
indiquer qu'un code de suivi est nécessaire pour y accéder à ce moment là plutôt que de simplement afficher "Accès interdit".
en fait une indication en plus dans la page d'erreur suffirait ?
Updated by Nicolas Roche almost 5 years ago
- File 0001-forms-forbidden-direct-anonymous-acces-to-anonymous-.patch added
Rebasé sur les tests et ajout du message dans la page d'erreur.
Updated by Nicolas Roche almost 5 years ago
- File 0001-forms-forbidden-direct-anonymous-acces-to-anonymous-.patch 0001-forms-forbidden-direct-anonymous-acces-to-anonymous-.patch added
mince, mauvais patch.
Updated by Nicolas Roche almost 5 years ago
- File deleted (
0001-forms-forbidden-direct-anonymous-acces-to-anonymous-.patch)
Updated by Frédéric Péters about 4 years ago
- Status changed from Solution proposée to Fermé
Je ferme tout ça parce que mélangé sur cinq tickets, se partageant plus de 50 commentaires, et que je ne vois pas où ça mène.