Projet

Général

Profil

Development #32140

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

Ajouté par Frédéric Péters il y a environ 5 ans. Mis à jour il y a presque 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
10 avril 2019
Echéance:
% réalisé:

100%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Lié à Publik - Development #19756: Personnalisation accrue du portail agent pour en faire aussi la page d'entrée des agents d'accueilFermé29 octobre 201730 juin 2018

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

Actions

Révisions associées

Révision 27978867 (diff)
Ajouté par Benjamin Dauvergne il y a environ 5 ans

tests: code style and PEP8 (#32140)

Révision 16aa682a (diff)
Ajouté par Benjamin Dauvergne il y a environ 5 ans

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

Révision bddada5a (diff)
Ajouté par Benjamin Dauvergne il y a environ 5 ans

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.

Révision 354a215a (diff)
Ajouté par Benjamin Dauvergne il y a environ 5 ans

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

Révision 52edd31e (diff)
Ajouté par Benjamin Dauvergne il y a environ 5 ans

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

Historique

#2

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.

#3

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

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

  • Assigné à mis à Benjamin Dauvergne
#5

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.

#7

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

#8

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.

#9

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.

#10

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}}/)

#11

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

#12

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.

#13

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

#14

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

Mis à jour par Paul Marillonnet il y a environ 5 ans

Ok, va comme ça.

#16

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

Mis à jour par Benjamin Dauvergne il y a environ 5 ans

  • % réalisé changé de 0 à 100
#18

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

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é

Formats disponibles : Atom PDF