Bug #64467
afficher le nom et le logo du service déclenchant le SSO si c'est un service OIDC
0%
Description
Je testais en local uniquement avec un RP OIDC et pas fait gaffe quand lorsqu'on se connecte depuis Combo ou wcs le titre du service s'affiche: Portail ou Démarches.
Fichiers
Révisions associées
Historique
Mis à jour par Serghei Mihai il y a environ 2 ans
- Fichier 0001-misc-show-service-name-only-if-logo-is-available-644.patch 0001-misc-show-service-name-only-if-logo-is-available-644.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Thomas Noël il y a environ 2 ans
Pourquoi pas, mais on ne voudrait pas quelque chose de plus discriminant, genre un flag explicite "ne pas afficher ce service" ? Ou sinon expliciter quelque part que c'est le logo qui détermine l'affichage...?
Mis à jour par Serghei Mihai il y a environ 2 ans
On se dit avec Benjamin sur le salon tech qu'on ne devrait l'afficher uniquement pour les services qui ne sont pas en SAML, car seules nos briques font le SSO en SAML.
J'ai envoyé un patch dans une wip dans ce sens et je change le titre du ticket.
Mis à jour par Serghei Mihai il y a environ 2 ans
- Fichier 0001-misc-show-service-name-only-if-it-s-OIDC-service-644.patch 0001-misc-show-service-name-only-if-it-s-OIDC-service-644.patch ajouté
- Sujet changé de affichager le nom et le logo du service déclenchant le SSO uniquement si le logo est déclaré à afficher le nom et le logo du service déclenchant le SSO si c'est un service OIDC
Je pensais poser l'info dans le context processor, mais finalement rajouté des méthodes au modèle Service
pour savoir s'il s'agit d'un service oidc ou saml car pourrait servir par ailleurs.
Mis à jour par Benjamin Dauvergne il y a environ 2 ans
Tes fonctions ne font rien, elles renvoient toujours False.
Ajoute juste .select_subclasses()
au Service.objects.get(...)
ou mieux utiliser authentic2.utils.service.get_service(request) ensuite tu fais juste dans le code a2_processor variables['service_show_header'] = (type(service).__name__ != 'LibertyProvider')
avec un petit commentaire sur le fait que la fonctionnalité n'est prévu que pour CAS et OIDC pour l'instant.
Mis à jour par Serghei Mihai il y a environ 2 ans
Benjamin Dauvergne a écrit :
Tes fonctions ne font rien, elles renvoient toujours False.
Pourtant:
In [4]: s = Service.objects.get(slug='portal') In [5]: s.oidcclient --------------------------------------------------------------------------- RelatedObjectDoesNotExist Traceback (most recent call last) <ipython-input-5-4a697bfa4c3b> in <module> ----> 1 s.oidcclient ~/envs/publik-env-py3/lib/python3.10/site-packages/django/db/models/fields/related_descriptors.py in __get__(self, instance, cls) 410 411 if rel_obj is None: --> 412 raise self.RelatedObjectDoesNotExist( 413 "%s has no %s." % ( 414 instance.__class__.__name__, RelatedObjectDoesNotExist: Service has no oidcclient. In [7]: s.libertyprovider Out[7]: <LibertyProvider 'Portail'> .. In [8]: s = Service.objects.get(slug='test') In [9]: s.libertyprovider --------------------------------------------------------------------------- RelatedObjectDoesNotExist Traceback (most recent call last) <ipython-input-9-423671cb505f> in <module> ----> 1 s.libertyprovider ~/envs/publik-env-py3/lib/python3.10/site-packages/django/db/models/fields/related_descriptors.py in __get__(self, instance, cls) 410 411 if rel_obj is None: --> 412 raise self.RelatedObjectDoesNotExist( 413 "%s has no %s." % ( 414 instance.__class__.__name__, RelatedObjectDoesNotExist: Service has no libertyprovider. In [10]: s.oidcclient Out[10]: <OIDCClient name:"Entr'Ouvert" client_id:'758a6d51-3b46-431d-80d6-9abafae04cc8' identifier_policy:'pseudonyme irréversible'>
Mis à jour par Benjamin Dauvergne il y a environ 2 ans
Ok ça marche sans typo, mais faut pas faire ça.
Mis à jour par Serghei Mihai il y a environ 2 ans
- Fichier 0001-misc-show-service-name-only-if-it-s-OIDC-service-644.patch 0001-misc-show-service-name-only-if-it-s-OIDC-service-644.patch ajouté
- Assigné à mis à Serghei Mihai
Ok, je fais comme tu le suggères.
Mis à jour par Thomas Noël il y a environ 2 ans
A lire le code de get_service j'ai l'impression que tu pourrais te passer du if 'service_pk' in request.session:
?
Mis à jour par Serghei Mihai il y a environ 2 ans
- Fichier 0001-misc-show-service-name-only-if-it-s-OIDC-service-644.patch 0001-misc-show-service-name-only-if-it-s-OIDC-service-644.patch ajouté
Tu as raison.
Nouveau patch et branche à jour.
Mis à jour par Serghei Mihai il y a environ 2 ans
- Fichier 0001-misc-show-service-name-only-if-it-s-OIDC-service-644.patch 0001-misc-show-service-name-only-if-it-s-OIDC-service-644.patch ajouté
Et pylint râle à juste titre que Service
n'est pas utilisé.
Mis à jour par Thomas Noël il y a environ 2 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Serghei Mihai il y a environ 2 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit 28b2278aae01643f175b4d0cdd78c2e628a7ed1c (HEAD -> main, origin/main) Author: Serghei Mihai <smihai@entrouvert.com> Date: Fri Apr 22 10:57:09 2022 +0200 misc: show service name only if it's OIDC service (#64467)
Mis à jour par Transition automatique il y a environ 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: show service name only if it's OIDC service (#64467)