Development #57482
Exploiter le paramètre ?service= pour les URLs "Mon compte" et d'enregistrement
0%
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
Révisions associées
Revert "settings_loaders: adapt service slug for secondary services (#57482)"
This reverts commit a4f778ea10e37845606a592ad2eb36c6fd51607a.
settings_loaders: adapt service slug for secondary services (#57482)
Historique
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é
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- 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.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-settings_loaders-add-service-ref-to-account-and-regi.patch 0001-settings_loaders-add-service-ref-to-account-and-regi.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Ç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.
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.
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.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch ajouté
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.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch ajouté
Avec un commentaire et en simplifiant la condition, le portal user ne peut pas être secondaire.
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é)
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.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Statut changé de Solution proposée à En cours
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch ajouté
- Statut changé de En cours à Solution proposée
correction d'une chaîne dans le test.
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.
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)
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
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 }}
.
Mis à jour par Serghei Mihai il y a plus de 2 ans
- Lié à Project management #59345: modifier l'url de redirection vers la page "mon compte" dans combo ajouté
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.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch ajouté
- Statut changé de En cours à Solution proposée
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.
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}}.
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.
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}}.
Mis à jour par Benjamin Dauvergne il y a plus de 2 ans
- Fichier 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch ajouté
Ok, j'ouvrirai un ticket sur publik-base-theme dans la foulée quand celui-ci sera validé.
Mis à jour par Valentin Deniaud il y a plus de 2 ans
- Statut changé de Solution proposée à Solution validée
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)
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
Mis à jour par Frédéric Péters il y a plus de 2 ans
- Lié à Development #60165: utiliser idp_service_and_next_params ajouté
settings_loaders: adapt service slug for secondary services (#57482)