Project

General

Profile

Development #32140

Gabarit de redirection après création d'un utilisateur

Added by Frédéric Péters almost 4 years ago. Updated almost 4 years ago.

Status:
Fermé
Priority:
Normal
Category:
-
Target version:
-
Start date:
10 April 2019
Due date:
% Done:

100%

Estimated time:
Patch proposed:
Yes
Planning:
No

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

Related to Publik - Development #19756: Personnalisation accrue du portail agent pour en faire aussi la page d'entrée des agents d'accueilFermé29 October 201730 June 2018

Actions
Has duplicate Authentic 2 - Development #31084: Possibilité d'inclure l'uuid de l'utilisateur créé dans l'URL de retour après créationFermé05 March 2019

Actions

Associated revisions

Revision 27978867 (diff)
Added by Benjamin Dauvergne almost 4 years ago

tests: code style and PEP8 (#32140)

Revision 16aa682a (diff)
Added by Benjamin Dauvergne almost 4 years ago

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

Revision bddada5a (diff)
Added by Benjamin Dauvergne almost 4 years ago

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.

Revision 354a215a (diff)
Added by Benjamin Dauvergne almost 4 years ago

manager: accept a cancel_url parameter on UserAddView (#32140)

Revision 52edd31e (diff)
Added by Benjamin Dauvergne almost 4 years ago

manager: replace $UUID pattern in next parameter of UserAddView (fixes #32140)

History

#2

Updated by Pierre Cros almost 4 years ago

Je me permet de pointer que vraiment vraiment ça aiderait des gens à travailler convenablement avec Publik.

#3

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
#4

Updated by Benjamin Dauvergne almost 4 years ago

  • Assignee set to Benjamin Dauvergne
#5

Updated by Benjamin Dauvergne almost 4 years ago

Mais où renvoyer si l'agent fait cancel ? Il faut prévoir un cancel_url aussi.

#7

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'''

#8

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.

#9

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.

#10

Updated by Paul Marillonnet almost 4 years ago

(Si par exemple à l'avenir on veut des URL du genre /{{user_ou}}/{{user}}/)

#11

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

#12

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.

#13

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

#14

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 dico replace 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.

#15

Updated by Paul Marillonnet almost 4 years ago

Ok, va comme ça.

#16

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)
#17

Updated by Benjamin Dauvergne almost 4 years ago

  • % Done changed from 0 to 100
#18

Updated by Frédéric Péters almost 4 years ago

  • Status changed from Résolu (à déployer) to Solution déployée
#19

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

Also available in: Atom PDF