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/'
Files
Related issues
Associated revisions
Revert "settings_loaders: adapt service slug for secondary services (#57482)"
This reverts commit a4f778ea10e37845606a592ad2eb36c6fd51607a.
settings_loaders: adapt service slug for secondary services (#57482)
History
Updated by Benjamin Dauvergne about 3 years ago
- Related to Development #20699: Fournir dans le contexte des template le service appelant sur toutes la pages added
Updated by Benjamin Dauvergne about 3 years ago
- 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.
Updated by Benjamin Dauvergne about 3 years ago
- File 0001-settings_loaders-add-service-ref-to-account-and-regi.patch 0001-settings_loaders-add-service-ref-to-account-and-regi.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Ç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.
Updated by Frédéric Péters about 3 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.
Updated by Benjamin Dauvergne about 3 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.
Updated by Benjamin Dauvergne about 3 years ago
- File 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch added
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.
Updated by Benjamin Dauvergne about 3 years ago
- File 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch added
Avec un commentaire et en simplifiant la condition, le portal user ne peut pas être secondaire.
Updated by Frédéric Péters about 3 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é)
Updated by Benjamin Dauvergne about 3 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.
Updated by Benjamin Dauvergne about 3 years ago
- Status changed from Solution proposée to En cours
Updated by Benjamin Dauvergne about 3 years ago
- File 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch added
- Status changed from En cours to Solution proposée
correction d'une chaîne dans le test.
Updated by Emmanuel Cazenave almost 3 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.
Updated by Benjamin Dauvergne almost 3 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)
Updated by Frédéric Péters almost 3 years ago
- Status changed from Résolu (à déployer) to Solution déployée
Updated by Serghei Mihai almost 3 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 }}
.
Updated by Serghei Mihai almost 3 years ago
- Related to Project management #59345: modifier l'url de redirection vers la page "mon compte" dans combo added
Updated by Emmanuel Cazenave almost 3 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.
Updated by Benjamin Dauvergne almost 3 years ago
- File 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch added
- Status changed from En cours to 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.
Updated by Valentin Deniaud almost 3 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}}.
Updated by Benjamin Dauvergne almost 3 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.
Updated by Valentin Deniaud almost 3 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}}.
Updated by Benjamin Dauvergne almost 3 years ago
- File 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch 0001-settings_loaders-adapt-service-slug-for-secondary-se.patch added
Ok, j'ouvrirai un ticket sur publik-base-theme dans la foulée quand celui-ci sera validé.
Updated by Valentin Deniaud almost 3 years ago
- Status changed from Solution proposée to Solution validée
Updated by Benjamin Dauvergne almost 3 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)
Updated by Frédéric Péters almost 3 years ago
- Status changed from Résolu (à déployer) to Solution déployée
Updated by Frédéric Péters almost 3 years ago
- Related to Development #60165: utiliser idp_service_and_next_params added
settings_loaders: adapt service slug for secondary services (#57482)