Projet

Général

Profil

Development #57482

Exploiter le paramètre ?service= pour les URLs "Mon compte" et d'enregistrement

Ajouté par Benjamin Dauvergne il y a plus de 2 ans. Mis à jour il y a plus de 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
01 octobre 2021
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Cf. #20699-21

Ajouter ?service=<slug-du-service> dans les URL suivantes de hobo/multitenant/settings_loaders.py :

                variables['idp_account_url'] = service.get('base_url') + 'accounts/'
                variables['idp_registration_url'] = service.get('base_url') + 'accounts/register/'

Fichiers


Demandes liées

Lié à Authentic 2 - Development #20699: Fournir dans le contexte des template le service appelant sur toutes la pagesFermé14 décembre 2017

Actions
Lié à Publik - Project management #59345: modifier l'url de redirection vers la page "mon compte" dans comboFermé06 décembre 2021

Actions
Lié à Intégrations graphiques Publik - Development #60165: utiliser idp_service_and_next_paramsFermé30 décembre 2021

Actions

Révisions associées

Révision a4f778ea (diff)
Ajouté par Benjamin Dauvergne il y a plus de 2 ans

settings_loaders: adapt service slug for secondary services (#57482)

Révision 1a6734bd (diff)
Ajouté par Emmanuel Cazenave il y a plus de 2 ans

Revert "settings_loaders: adapt service slug for secondary services (#57482)"

This reverts commit a4f778ea10e37845606a592ad2eb36c6fd51607a.

Révision f164fe62 (diff)
Ajouté par Benjamin Dauvergne il y a plus de 2 ans

settings_loaders: adapt service slug for secondary services (#57482)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Lié à Development #20699: Fournir dans le contexte des template le service appelant sur toutes la pages ajouté
#3

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Assigné à mis à Benjamin Dauvergne
#4

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

J'ai commencé à aller vers le plus simple (la description du ticket) mais je vois un souci entre le slug reçu par le service et le slug reçu par a2, si on prend le portail TM à Toulouse :
  • pour combo, son slug c'est portal
  • pour A2 avec la ville comme Publik principal, c'est _hobo-tm_portal

Le paramètre ?service= accepter comme syntaxe "legacy" de sa valeur "{service.slug}" mais pour être sûr de son coup il faudrait normalement "{ou.slug} {service.slug}".

Je vois bien une variable ou-slug mais je ne sais pas si elle est défini sur le hobo primaire ou le secondaire... je regarde ça.

#5

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Ça devrait je pense être quelque chose comme ça. Je veux bien un assentiment sur le sujet.

PS: je n'ai pas eu à modifier les tests donc je ne pense pas qu'il y ait de test autour de ces variables, pour idp_register_url je ne sais pas si quelque chose autour de l'URL de retour est fait, je me dis qu'idéalement en se basant sur service et en l'absence de paramètre ?next authentic devrait en deviner une, comme la racine du service, on peut mettre ça dans le tas sauf si il existe déjà une solution.

#6

Mis à jour par Frédéric Péters il y a plus de 2 ans

Je teste et ça me produit ?service=idp (sur le combo primaire) et ?service=_hobo-commune2__interco_idp sur un combo secondaire.

Je dirais que le soucis c'est slug = service['slug'] fait qu'on a le slug de l'idp pas le slug de l'application sur laquelle on est.

#7

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Bon ok en fait c'est déjà partiellement fait via portal_user_slug, c'est juste que ça ne prend pas en compte le cas primaire/secondaire.

#8

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Voilà, mon test est un peu fake mais pas beaucoup plus que l'existant, coté a2 je pense que je devrais faire en sorte de chercher les références de service simple dans l'OU par défaut avant de prendre la première parmi tous les services.

#9

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Avec un commentaire et en simplifiant la condition, le portal user ne peut pas être secondaire.

#10

Mis à jour par Frédéric Péters il y a plus de 2 ans

le portal user ne peut pas être secondaire

? c'est commun d'avoir dans les publik secondaires des portail usager et portail agent spécifiques.

~~

(je trouve que les f-strings ici dégradent la lisibilité)

#11

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Frédéric Péters a écrit :

le portal user ne peut pas être secondaire

? c'est commun d'avoir dans les publik secondaires des portail usager et portail agent spécifiques.

Tu m'as mal compris, je veux dire que dans le code suivant :

            if service.get('service-id') == 'combo' and not service.get('secondary'):
                if 'portal-user' in service.get('template_name', ''):
                    variables['portal_user_url'] = service.get('base_url')
                    variables['portal_user_title'] = service.get('title')
                    variables['portal_user_slug'] = service.get('slug')
...
        if 'idp_registration_url' in variables:
            params = {}
            if 'portal_user_url' in variables:
                params['next'] = variables['portal_user_url']
            if 'portal_user_slug' in variables:
                # if we are in a secondary hobo, adapt the ou slug and
                # portal_user_slug to match the service slug in the Authentic
                # of the primary hobo
                if authentic_service.get('secondary'):
                    ou_slug = variables['ou-slug']
                    service_slug = '_%s_%s' % (ou_slug, variables['portal_user_slug'])
                    params['service'] = '%s %s' % (ou_slug, service_slug)
                else:
                    # we should provider the default slug to have a full
                    # service reference, but it could change so for now we
                    # expect authentic to search first in the default ou
                    params['service'] = variables['portal_user_slug']

J'ai juste à vérifier que l'authentic est secondaire, le service ayant produit la variable 'portal_user_slug' est forcément primaire pour le service en cours (celui qui appelle le settings_loader TemplateVars) vu la toute première condition (dans mon patch précédent je retestais).

~~

(je trouve que les f-strings ici dégradent la lisibilité)

Ok je corrige ça.

#13

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution proposée à En cours
#14

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

correction d'une chaîne dans le test.

#18

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée

Bon j'y comprends que dalle (c'est pas le code, c'est le contetxe), confiance dans le développeur.

#19

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit a4f778ea10e37845606a592ad2eb36c6fd51607a
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Oct 1 10:20:42 2021 +0200

    settings_loaders: adapt service slug for secondary services (#57482)
#20

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#21

Mis à jour par Serghei Mihai il y a plus de 2 ans

Ça casse toutes les pages combo ou il y a une page faisant redirection vers {{ idp_url }}accounts/.

Il faut à priori substituer par la nouvelle variable créée {{ idp_account_url }}.

#22

Mis à jour par Serghei Mihai il y a plus de 2 ans

Et documenter quelque part.

#25

Mis à jour par Serghei Mihai il y a plus de 2 ans

#27

Mis à jour par Emmanuel Cazenave il y a plus de 2 ans

  • Statut changé de Solution déployée à En cours

Consensus sur le salon tech pour reverter.

commit 1a6734bd32450a951707e6e53ce5a20f2903770c (HEAD -> main, origin/main)
Author: Emmanuel Cazenave <ecazenave@entrouvert.com>
Date:   Mon Dec 6 10:18:31 2021 +0100

    Revert "settings_loaders: adapt service slug for secondary services (#57482)" 

    This reverts commit a4f778ea10e37845606a592ad2eb36c6fd51607a.
#28

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Voilà, j'ai viré la modification à idp_url qui était finalement tout à fait gratuite; en échange j'introduis deux variables dont on pourra voir l'utilitié à l'usage, idp_service_params qui fournit simplement le bout de query_string service=.... et idp_service_and_next_params qui fournit next=...&service=... permettant de construire ainsi les URLs qu'on veut assez facilement en conservant le principe de la conservation du service d'origine au niveau du thème sur authentic.

#29

Mis à jour par Valentin Deniaud il y a plus de 2 ans

+                variables['idp_account_url'] += '?%s' % urlencode(params)

or dans ce que pointe Serghei plus haut
{{idp_url}}accounts/edit/

ce qui nous met la puce à l'oreille que quelque part il peut exister
{{idp_account_url}}edit/

Bref, virer cette ligne, en bonus on conserve la cohérence avec le comportement de {{idp_url}}.
#30

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Valentin Deniaud a écrit :

[...]
or dans ce que pointe Serghei plus haut
[...]
ce qui nous met la puce à l'oreille que quelque part il peut exister
[...]
Bref, virer cette ligne, en bonus on conserve la cohérence avec le comportement de {{idp_url}}.

Si on vire cette ligne le patch n'a plus aucun intérêt, le but étant d'avoir des URLs avec ce paramètre ?service= dans les entête de page (lien page mon compte), de ce que je vois dans publik-base-theme il n'y aucune utilisation autre que directe :

templates/includes/user-info.html:    {% if idp_account_url %}<a class="account-link" href="{{idp_account_url}}">{% endif %}
templates/includes/user-info.html:    <span class="connected-user">{% block user-info-user-name %}{{user.first_name}} {{user.last_name}}{% endblock %}</span>{% if idp_account_url %}</a>{% endif %}
templates/variants/metz-metropole-2019/includes/user-info.html:  <a class="hello" href="{{idp_account_url}}"><span>Bonjour {{ user.first_name }}</span></a><span> -
templates/variants/strasbourg-2018/combo/page_template.html:        <a href="{{ idp_account_url}}" class="nav-account nav-btn" title="Mon compte">
templates/variants/toodego/wcs/base.html:    {% if idp_account_url %}<a href="{{idp_account_url}}">{% endif %}
templates/variants/toodego/wcs/base.html:    <span class="connected-user">{{session_user_display_name}}</span>{% if idp_account_url %}</a>{% endif %}
templates/variants/toulouse-metropole/includes/nav.html:            {% if idp_account_url %}<a href="{{idp_account_url}}">{% endif %}
templates/variants/toulouse-metropole/includes/nav.html:            <span class="connected-user">{{user.first_name}} {{user.last_name}}</span>{% if idp_account_url %}</a>{% endif %}
templates/variants/villeneuve-dascq/includes/user-info.html:    {% if idp_account_url %}<a class="account-link" href="{{idp_account_url}}">{% endif %}
templates/variants/villeneuve-dascq/includes/user-info.html:    <span class="connected-user">{% block user-info-user-name %}{{user.first_name}} {{user.last_name}}{% endblock %}</span>{% if idp_account_url %}</a>{% endif %}
templates/variants/villeurbanne-2018/user_info.html:  {% if idp_account_url %}<a href="{{idp_account_url}}" role="button" class="btn-account">{% endif %}
templates/variants/villeurbanne-2018/user_info.html:  Mon compte{% if idp_account_url %}</a>{% endif %}

Il n'y qu'idp_url qui est utilisé de cette manière.

#31

Mis à jour par Valentin Deniaud il y a plus de 2 ans

Benjamin Dauvergne a écrit :

le but étant d'avoir des URLs avec ce paramètre ?service= dans les entête de page (lien page mon compte)

Ça me paraît clair que du coup il faut aller explicitement toucher cet/ces endroit(s) et y ajouter ?{{idp_service_and_next_params}}.

#32

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

Ok, j'ouvrirai un ticket sur publik-base-theme dans la foulée quand celui-ci sera validé.

#34

Mis à jour par Valentin Deniaud il y a plus de 2 ans

  • Statut changé de Solution proposée à Solution validée
#35

Mis à jour par Benjamin Dauvergne il y a plus de 2 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit f164fe6205395ccae68de6f80da4cb3bd51e2e29
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date:   Fri Oct 1 10:20:42 2021 +0200

    settings_loaders: adapt service slug for secondary services (#57482)
#36

Mis à jour par Frédéric Péters il y a plus de 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#37

Mis à jour par Frédéric Péters il y a plus de 2 ans

#38

Mis à jour par Transition automatique il y a environ 2 ans

Automatic expiration

Formats disponibles : Atom PDF