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}}/
Fichiers
Demandes liées
Révisions associées
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)
Historique
Mis à jour par Pierre Cros il y a environ 5 ans
Je me permet de pointer que vraiment vraiment ça aiderait des gens à travailler convenablement avec Publik.
Mis à jour par Frédéric Péters il y a environ 5 ans
- Lié à Development #19756: Personnalisation accrue du portail agent pour en faire aussi la page d'entrée des agents d'accueil ajouté
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
Mais où renvoyer si l'agent fait cancel ? Il faut prévoir un cancel_url aussi.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Fichier 0001-tests-code-style-and-PEP8-32140.patch 0001-tests-code-style-and-PEP8-32140.patch ajouté
- Fichier 0003-utils-allow-string-replacement-in-next-parameters-32.patch 0003-utils-allow-string-replacement-in-next-parameters-32.patch ajouté
- Fichier 0005-manager-replace-UUID-pattern-in-next-parameter-of-Us.patch 0005-manager-replace-UUID-pattern-in-next-parameter-of-Us.patch ajouté
- Fichier 0002-utils-allow-overriding-REDIRECT_FIELD_NAME-in-select.patch 0002-utils-allow-overriding-REDIRECT_FIELD_NAME-in-select.patch ajouté
- Fichier 0004-manager-accept-a-cancel_url-parameter-on-UserAddView.patch 0004-manager-accept-a-cancel_url-parameter-on-UserAddView.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Paul Marillonnet il y a environ 5 ans
- Statut changé de Solution proposée à 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'''
Mis à jour par Frédéric Péters il y a environ 5 ans
La double accolade donne trop l'idée qu'on pourrait faire n'importe quoi comme gabarit.
Mis à jour par Paul Marillonnet il y a environ 5 ans
J'aime bien l'idée d'un ou d'une suite de caractères de fermeture.
Mis à jour par Paul Marillonnet il y a environ 5 ans
(Si par exemple à l'avenir on veut des URL du genre /{{user_ou}}/{{user}}/)
Mis à jour par Paul Marillonnet il y a environ 5 ans
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…
Mis à jour par Paul Marillonnet il y a environ 5 ans
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.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
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).
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
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.
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- Statut changé de Solution validée à 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)
Mis à jour par Benjamin Dauvergne il y a environ 5 ans
- % réalisé changé de 0 à 100
Appliqué par commit authentic2|52edd31e3fa71d10f96d3948efa87a2066880d20.
Mis à jour par Frédéric Péters il y a presque 5 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Benjamin Dauvergne il y a presque 4 ans
- Dupliqué par Development #31084: Possibilité d'inclure l'uuid de l'utilisateur créé dans l'URL de retour après création ajouté
tests: code style and PEP8 (#32140)