Projet

Général

Profil

Bug #64467

afficher le nom et le logo du service déclenchant le SSO si c'est un service OIDC

Ajouté par Serghei Mihai il y a environ 2 ans. Mis à jour il y a environ 2 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
22 avril 2022
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision 28b2278a (diff)
Ajouté par Serghei Mihai il y a environ 2 ans

misc: show service name only if it's OIDC service (#64467)

Historique

#1

Mis à jour par Serghei Mihai il y a environ 2 ans

#2

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...?

#3

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.

#4

Mis à jour par Serghei Mihai il y a environ 2 ans

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.

#5

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.

#6

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

Mis à jour par Benjamin Dauvergne il y a environ 2 ans

Ok ça marche sans typo, mais faut pas faire ça.

#8

Mis à jour par Serghei Mihai il y a environ 2 ans

Ok, je fais comme tu le suggères.

#9

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: ?

#11

Mis à jour par Serghei Mihai il y a environ 2 ans

Et pylint râle à juste titre que Service n'est pas utilisé.

#12

Mis à jour par Thomas Noël il y a environ 2 ans

  • Statut changé de Solution proposée à Solution validée
#13

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)

#14

Mis à jour par Transition automatique il y a environ 2 ans

  • Statut changé de Résolu (à déployer) à Solution déployée
#15

Mis à jour par Transition automatique il y a presque 2 ans

Automatic expiration

Formats disponibles : Atom PDF