Development #32140
Gabarit de redirection après création d'un utilisateur
100%
Description
On peut passer une redirection mais ce qu'on voudrait c'est qu'après la création d'un utilisateur par l'agent, renvoyer l'agent sur la page correspondant à l'utilisateur. Genre il faudrait pouvoir faire ?next=https://portail-agent/user/{{uuid}}/
Files
Related issues
Associated revisions
utils: allow overriding REDIRECT_FIELD_NAME in select_next_url() (#32140)
A view can have different next_url depending on its final state
(cancel, ok, etc..)
utils: allow string replacement in next parameters (#32140)
The caller must explicitely give the replacement it covers through the
replace argument taking a dictionnary. The dictionnary keys are the
replacement pattern as simple strings, dictionnary values are the
replacement substitution. The replacement substitution is encoded with
urlparse.quote() before replacement.
manager: accept a cancel_url parameter on UserAddView (#32140)
manager: replace $UUID pattern in next parameter of UserAddView (fixes #32140)
History
Updated by Pierre Cros almost 4 years ago
Je me permet de pointer que vraiment vraiment ça aiderait des gens à travailler convenablement avec Publik.
Updated by Frédéric Péters almost 4 years ago
- Related to Development #19756: Personnalisation accrue du portail agent pour en faire aussi la page d'entrée des agents d'accueil added
Updated by Benjamin Dauvergne almost 4 years ago
Mais où renvoyer si l'agent fait cancel ? Il faut prévoir un cancel_url aussi.
Updated by Benjamin Dauvergne almost 4 years ago
- File 0001-tests-code-style-and-PEP8-32140.patch 0001-tests-code-style-and-PEP8-32140.patch added
- File 0003-utils-allow-string-replacement-in-next-parameters-32.patch 0003-utils-allow-string-replacement-in-next-parameters-32.patch added
- File 0005-manager-replace-UUID-pattern-in-next-parameter-of-Us.patch 0005-manager-replace-UUID-pattern-in-next-parameter-of-Us.patch added
- File 0002-utils-allow-overriding-REDIRECT_FIELD_NAME-in-select.patch 0002-utils-allow-overriding-REDIRECT_FIELD_NAME-in-select.patch added
- File 0004-manager-accept-a-cancel_url-parameter-on-UserAddView.patch 0004-manager-accept-a-cancel_url-parameter-on-UserAddView.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Updated by Paul Marillonnet almost 4 years ago
- Status changed from Solution proposée to Solution validée
Ok pour moi.
Du détail, mais la syntaxe à double accolade dans la description du ticket me plait un peu plus que faire un replace sur un '$UUID', à toi de voir.
Et la docstring de authentic2.utils.get_next_url
est passée sous la première ligne de code :
def get_next_url(params, field_name=None):
field_name = field_name or REDIRECT_FIELD_NAME
'''Extract and decode a next_url field'''
Updated by Frédéric Péters almost 4 years ago
La double accolade donne trop l'idée qu'on pourrait faire n'importe quoi comme gabarit.
Updated by Paul Marillonnet almost 4 years ago
J'aime bien l'idée d'un ou d'une suite de caractères de fermeture.
Updated by Paul Marillonnet almost 4 years ago
(Si par exemple à l'avenir on veut des URL du genre /{{user_ou}}/{{user}}/)
Updated by Paul Marillonnet almost 4 years ago
D'ailleurs, ça me fait penser que dans select_next_url
on pourrait tester qu'aucune des valeurs du dico replace
ne contient une autre clé, du genre
for value in replace.values():
for key in replace.keys():
if key in value and replace[key] != value
raise ValueError…
Updated by Paul Marillonnet almost 4 years ago
Et tester, de façon similaire, qu'aucune des clés n'en contient une autre, sinon on est pareillement fichu.
Edit: Ce qui me conforte dans l'idée d'avoir un ou des caractères de fermeture.
Updated by Benjamin Dauvergne almost 4 years ago
Frédéric Péters a écrit :
La double accolade donne trop l'idée qu'on pourrait faire n'importe quoi comme gabarit.
Oui c'est exactement pour ça que j'ai mis $XXXX aussi parce que ça n'interpolle pas juste la chaîne ça la quote en plus (pas possible d'avoir un slash d'URL dedans).
Updated by Benjamin Dauvergne almost 4 years ago
Paul Marillonnet a écrit :
D'ailleurs, ça me fait penser que dans
select_next_url
on pourrait tester qu'aucune des valeurs du dicoreplace
ne contient une autre clé, du genre
[...]
Non, si ton UUID c'est "$UUID" et bien soit, c'est con, mais c'est ton UUID (pour l'instant UUID est un champ texte libre, dans le futur ça deviendra peut-être une colonne UUID native postgres et ça ne passera plus).
Et tester, de façon similaire, qu'aucune des clés n'en contient une autre, sinon on est pareillement fichu.
Foutu de quoi ? Le remplacement n'est pas récursif et pour l'instant il n'y a qu'un remplacement permis, $UUID, et je serai très frileux d'en avoir d'autres à l'avenir; l'intérêt d'avoir un identifiant global unique c'est ne pas en avoir besoin d'un autre (et si un logiciel veux renvoyer de /$UUID/ vers /{{user.ou.slug}}/$UUID et bien il se débrouillera pour le faire, a priori si on lui envoie l'$UUID c'est qu'il a accès à l'API ou a une copie locale de l'annuaire).
Et les $ sont interdits dans les slugs.
Je ne changerai rien.
Updated by Benjamin Dauvergne almost 4 years ago
- Status changed from Solution validée to Résolu (à déployer)
commit 52edd31e3fa71d10f96d3948efa87a2066880d20 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Wed Apr 10 12:15:10 2019 +0200 manager: replace $UUID pattern in next parameter of UserAddView (fixes #32140) commit 354a215ab33556ed59000aaa7260cd13f407bb95 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Wed Apr 10 12:11:20 2019 +0200 manager: accept a cancel_url parameter on UserAddView (#32140) commit bddada5acd1e56a01fba406986d7c92a10e0081b Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Wed Apr 10 12:10:34 2019 +0200 utils: allow string replacement in next parameters (#32140) The caller must explicitely give the replacement it covers through the replace argument taking a dictionnary. The dictionnary keys are the replacement pattern as simple strings, dictionnary values are the replacement substitution. The replacement substitution is encoded with urlparse.quote() before replacement. commit 16aa682aa104126d44f156a9d1e9351cc0a994c5 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Wed Apr 10 12:07:28 2019 +0200 utils: allow overriding REDIRECT_FIELD_NAME in select_next_url() (#32140) A view can have different next_url depending on its final state (cancel, ok, etc..) commit 279788672a9ecc4c36b3776481ce8fa126e682b6 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Wed Apr 10 12:33:08 2019 +0200 tests: code style and PEP8 (#32140)
Updated by Benjamin Dauvergne almost 4 years ago
- % Done changed from 0 to 100
Appliqué par commit authentic2|52edd31e3fa71d10f96d3948efa87a2066880d20.
Updated by Frédéric Péters almost 4 years ago
- Status changed from Résolu (à déployer) to Solution déployée
Updated by Benjamin Dauvergne almost 3 years ago
- Has duplicate Development #31084: Possibilité d'inclure l'uuid de l'utilisateur créé dans l'URL de retour après création added
tests: code style and PEP8 (#32140)