Project

General

Profile

Development #57482

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

Added by Benjamin Dauvergne over 2 years ago. Updated over 2 years ago.

Status:
Fermé
Priority:
Normal
Category:
-
Target version:
-
Start date:
01 October 2021
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

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

Files


Related issues

Related to Authentic 2 - Development #20699: Fournir dans le contexte des template le service appelant sur toutes la pagesFermé14 December 2017

Actions
Related to Publik - Project management #59345: modifier l'url de redirection vers la page "mon compte" dans comboFermé06 December 2021

Actions
Related to Intégrations graphiques Publik - Development #60165: utiliser idp_service_and_next_paramsFermé30 December 2021

Actions

Associated revisions

Revision a4f778ea (diff)
Added by Benjamin Dauvergne over 2 years ago

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

Revision 1a6734bd (diff)
Added by Emmanuel Cazenave over 2 years ago

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

This reverts commit a4f778ea10e37845606a592ad2eb36c6fd51607a.

Revision f164fe62 (diff)
Added by Benjamin Dauvergne over 2 years ago

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

History

#1

Updated by Benjamin Dauvergne over 2 years ago

  • Related to Development #20699: Fournir dans le contexte des template le service appelant sur toutes la pages added
#3

Updated by Benjamin Dauvergne over 2 years ago

  • Assignee set to Benjamin Dauvergne
#4

Updated by Benjamin Dauvergne over 2 years ago

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

Updated by Benjamin Dauvergne over 2 years ago

Ç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

Updated by Frédéric Péters over 2 years ago

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

Updated by Benjamin Dauvergne over 2 years ago

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

Updated by Benjamin Dauvergne over 2 years ago

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

Updated by Benjamin Dauvergne over 2 years ago

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

#10

Updated by Frédéric Péters over 2 years ago

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

Updated by Benjamin Dauvergne over 2 years ago

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

Updated by Benjamin Dauvergne over 2 years ago

  • Status changed from Solution proposée to En cours
#14

Updated by Benjamin Dauvergne over 2 years ago

correction d'une chaîne dans le test.

#18

Updated by Emmanuel Cazenave over 2 years ago

  • Status changed from Solution proposée to Solution validée

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

#19

Updated by Benjamin Dauvergne over 2 years ago

  • Status changed from Solution validée to 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

Updated by Frédéric Péters over 2 years ago

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

Updated by Serghei Mihai over 2 years ago

Ç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

Updated by Serghei Mihai over 2 years ago

Et documenter quelque part.

#25

Updated by Serghei Mihai over 2 years ago

#27

Updated by Emmanuel Cazenave over 2 years ago

  • Status changed from Solution déployée to 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

Updated by Benjamin Dauvergne over 2 years ago

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

Updated by Valentin Deniaud over 2 years ago

+                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

Updated by Benjamin Dauvergne over 2 years ago

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

Updated by Valentin Deniaud over 2 years ago

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

Updated by Benjamin Dauvergne over 2 years ago

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

#34

Updated by Valentin Deniaud over 2 years ago

  • Status changed from Solution proposée to Solution validée
#35

Updated by Benjamin Dauvergne over 2 years ago

  • Status changed from Solution validée to 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

Updated by Frédéric Péters over 2 years ago

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

Updated by Frédéric Péters over 2 years ago

#38

Updated by Transition automatique about 2 years ago

Automatic expiration

Also available in: Atom PDF