Project

General

Profile

Development #60837

gérer la liaison eid csam vers un compte local pré-existant

Added by Paul Marillonnet 9 months ago. Updated 6 months ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
19 January 2022
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

Description

Cas d’usage où l’usager a déjà un compte existant et veut le lier à son compte CSAM.
C’est l’eid renvoyé par l’IDP dans le NameID qui servira d’info de liaison.


Files

Associated revisions

Revision 1114ee4c (diff)
Added by Paul Marillonnet 8 months ago

templates: i18n on login block instructions (#60837)

Revision f8566f46 (diff)
Added by Paul Marillonnet 8 months ago

profile: add csam account-(un)linking capabilities (#60837)

History

#1

Updated by Paul Marillonnet 9 months ago

  • Status changed from Nouveau to En cours
  • Assignee set to Olivier Renard
#2

Updated by Paul Marillonnet 9 months ago

  • Assignee changed from Olivier Renard to Paul Marillonnet
#3

Updated by Paul Marillonnet 9 months ago

  • Subject changed from gérer lla liaison eid csam vers un compte local pré-existant to gérer la liaison eid csam vers un compte local pré-existant
#4

Updated by Paul Marillonnet 8 months ago

Le code qui gère la liaison/déliaison.

Je vais voir si j’ai le temps d’ajouter un tox.ini, un /tests/ avec des tests au moins pour cette fonctionnalité, le Jenkinsfile et le job Jenkins, mais ce sera dans un ticket à part.

#5

Updated by Frédéric Péters (de retour le 10/10) 8 months ago

Du cosmétique,

                    messages.warning(request, 'Le compte existe déjà, retour sur le compte actuel.')

Plutôt messages.success(requet, "Votre compte est désormais relié à votre carte eID."), on est sur une belle réussite.

 <a href="{% url "fedict-unlink" %}">Vous pouvez dé-lier votre compte de votre espace usager CSAM.</a>

Je serais pour

 <p>Vous pouvez défaire ce lien, il ne vous sera alors plus possible de se connecter à votre compte en utilisant votre carte d’identité.</p>
 <p><a class="button" href="...">Défaire le lien</a></p>
 <a href="{% url "fedict-login" %}?next=/accounts/">Initier la liaison</a>

class="button" et peut-être un libellé qui reprend un terme passé, genre "Lier mon compte avec ma carte".

~~

(formellement aussi il y aurait à compléter/rendre dynamique la liste "(...) lecteur de carte, ou de votre liste de codes personnels (...)" mais ça concernerait également la page de connexion, ne touchons pas à ça).

#6

Updated by Frédéric Péters (de retour le 10/10) 8 months ago

(et je pensais qu'on n'avait pas de locale/ mais si, donc on peut y aller sur gettext et je traduirai).

#7

Updated by Paul Marillonnet 8 months ago

Frédéric Péters a écrit :

Du cosmétique,
[…]

Merci, tout inclus dans 0002.

(formellement aussi il y aurait à compléter/rendre dynamique la liste "(...) lecteur de carte, ou de votre liste de codes personnels (...)" mais ça concernerait également la page de connexion, ne touchons pas à ça).

J’avoue que je n’ai pas assez de connaissance du truc pour voir comment/quel intérêt on à, rendre ça dynamique. Peut-être un ticket à part pour qu’on en discute ?

Frédéric Péters a écrit :

(et je pensais qu'on n'avait pas de locale/ mais si, donc on peut y aller sur gettext et je traduirai).

En fait dans login.html j’ai vu un bout de chaîne tapée en français directement dans le gabarit (en plus de la chaîne dans le profile.html, maintenant retirée), ça m’a dissuadé d’internationaliser quoi ce que ce soit ici. Je le fais finalement partout, dans 0002, après avoir dans 0001 corrigé ladite chaîne.

Une dernière chose que je mets ici pour mémoire : je m’étais imaginé que la première connexion à CSAM créait un compte Publik local de simple façade, où il n’était pas possible de définir un mot de passe local. Mais mes tests des différents parcours avec la configuration discutée dans #32480 me font réaliser que si, au contraire, une fois la connexion à CSAM effectuée, on demande à l’usager de définir son mot de passe local. À partir de cette hypothèse fausse, j’avais réfléchi à ne faire apparaître le fonction de dé-liaison seulement pour les comptes pré-existant à la connexion CSAM (par exemple en testant que le compte Publik est au moins 10 secondes plus vieux que l’identifiant SAML créé à la connexion CSAM). Si jamais la piste de désactivation du login/mdp local pour les comptes créés au retour de connexion CSAM est discutée, il faudra se rappeler de sans doute implémenter cette restriction des options de dé-liaison.

#8

Updated by Frédéric Péters (de retour le 10/10) 8 months ago

Je le fais finalement partout, dans 0002, après avoir dans 0001 corrigé ladite chaîne.

Nickel.

Mais mes tests des différents parcours avec la configuration discutée dans #32480 me font réaliser que si, au contraire, une fois la connexion à CSAM effectuée, on demande à l’usager de définir son mot de passe local.

Yes.

Si jamais la piste de désactivation du login/mdp local pour les comptes créés au retour de connexion CSAM est discutée, il faudra se rappeler de sans doute implémenter cette restriction des options de dé-liaison.

Je ne pense pas que ça sera souhaité.

Mais ça me fait penser à autre chose, après liaison eid il faudrait mettre à jour + verrouiller les attributs.

Je n'ai pas encore testé mais comme on retourne l'ancien utilisateur je pense que ce n'est pas le cas.

Basiquement il s'agirait de copier les valeurs + flag vérifié de tous les attributs "vérifié" de l'user qu'on mark_as_inactive. (d'ailleurs il y aurait il me semble à plutôt le supprimer, pour ne pas avoir les utilisateurs "en double" dans les tableaux).

#9

Updated by Paul Marillonnet 8 months ago

  • Status changed from Solution proposée to En cours

Frédéric Péters a écrit :

Je ne pense pas que ça sera souhaité.

D’ac.

Mais ça me fait penser à autre chose, après liaison eid il faudrait mettre à jour + verrouiller les attributs.

Je n'ai pas encore testé mais comme on retourne l'ancien utilisateur je pense que ce n'est pas le cas.

Basiquement il s'agirait de copier les valeurs + flag vérifié de tous les attributs "vérifié" de l'user qu'on mark_as_inactive. (d'ailleurs il y aurait il me semble à plutôt le supprimer, pour ne pas avoir les utilisateurs "en double" dans les tableaux).

D’ac, je vais ajouter cela et des tests par la même occasion (en me rebasant sur #61045, et avec l’appui de #61046).

#10

Updated by Paul Marillonnet 8 months ago

Paul Marillonnet a écrit :

D’ac, je vais ajouter cela et des tests par la même occasion (en me rebasant sur #61045, et avec l’appui de #61046).

Voilà, 0002 modifié dans lequel je propose une version où on met à jour les attributs et leur état de vérification (pas seulement les attributs vérifiés donc).
Et les tests qui vont avec.

#11

Updated by Frédéric Péters (de retour le 10/10) 8 months ago

            for key in app_settings.PROVISION_VERIFIED_ATTRIBUTES:

Pourquoi pas juste old_user.tous_les_attributs_vérifiés ?

(je ne vois pas la raison alors que je vois ici qu'il va falloir fourni cette liste d'attributs).

~~

Et trivial, tu fais des commentaires # le commentaire (deux espaces derrière l'#) et pylint pose dessus "E262 inline comment should start with '# '", ça s'élimine facilement.

#12

Updated by Paul Marillonnet 8 months ago

Frédéric Péters a écrit :

[...]

Pourquoi pas juste old_user.tous_les_attributs_vérifiés ?

(je ne vois pas la raison alors que je vois ici qu'il va falloir fourni cette liste d'attributs).

Oui ok, je pensais intéressant le fait de pouvoir paramétrer le sous-ensemble d’attributs qui serait copié, indépendamment de leur état de vérification.
Nouveau patch qui laisse tomber cette approche à base d’app_settings et se contente de copier tous les attributs vérifiés.

Et trivial, tu fais des commentaires # le commentaire (deux espaces derrière l'#) et pylint pose dessus "E262 inline comment should start with '# '", ça s'élimine facilement.

Ok, erreur de ma part sur la façon dont pylint souhaite voir apparaître les commentaires inline. Corrigé.

#13

Updated by Frédéric Péters (de retour le 10/10) 8 months ago

  • Status changed from Solution proposée to Solution validée

Go envoie ainsi.

#14

Updated by Paul Marillonnet 8 months ago

  • Status changed from Solution validée to Résolu (à déployer)
commit f8566f461999ac0a418674b7023c3ba68f96d3af
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Fri Jan 21 11:46:46 2022 +0100

    profile: add csam account-(un)linking capabilities (#60837)

commit 1114ee4c1234bac5ba7e0c2035ff063b6a884e56
Author: Paul Marillonnet <pmarillonnet@entrouvert.com>
Date:   Mon Jan 24 17:46:04 2022 +0100

    templates: i18n on login block instructions (#60837)
#20

Updated by Frédéric Péters (de retour le 10/10) 6 months ago

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

Updated by Transition automatique 4 months ago

Automatic expiration

Also available in: Atom PDF