Project

General

Profile

Development #57482

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

Added by Benjamin Dauvergne 2 months ago. Updated 2 days ago.

Status:
Solution déployée
Priority:
Normal
Category:
-
Target version:
-
Start date:
01 Oct 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 pagesSolution déployée14 Dec 2017

Actions

Associated revisions

Revision a4f778ea (diff)
Added by Benjamin Dauvergne 2 days ago

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

History

#1

Updated by Benjamin Dauvergne 2 months ago

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

Updated by Benjamin Dauvergne 2 months ago

  • Assignee set to Benjamin Dauvergne
#4

Updated by Benjamin Dauvergne 2 months 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 2 months 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 (absent jusqu’au 12/12) 2 months 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 2 months 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 2 months 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 2 months 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 (absent jusqu’au 12/12) 2 months 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 2 months 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 2 months ago

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

Updated by Benjamin Dauvergne 2 months ago

correction d'une chaîne dans le test.

#18

Updated by Emmanuel Cazenave 2 days 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 2 days 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 (absent jusqu’au 12/12) 2 days ago

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

Also available in: Atom PDF