Development #60837
gérer la liaison eid csam vers un compte local pré-existant
0%
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.
Fichiers
Révisions associées
profile: add csam account-(un)linking capabilities (#60837)
Historique
Mis à jour par Paul Marillonnet il y a plus de 2 ans
- Statut changé de Nouveau à En cours
- Assigné à mis à Olivier Renard
Mis à jour par Paul Marillonnet il y a plus de 2 ans
- Assigné à changé de Olivier Renard à Paul Marillonnet
Mis à jour par Paul Marillonnet il y a plus de 2 ans
- Sujet changé de gérer lla liaison eid csam vers un compte local pré-existant à gérer la liaison eid csam vers un compte local pré-existant
Mis à jour par Paul Marillonnet il y a plus de 2 ans
- Fichier 0001-profile-add-csam-account-un-linking-capabilities-608.patch 0001-profile-add-csam-account-un-linking-capabilities-608.patch ajouté
- Statut changé de En cours à Solution proposée
- Patch proposed changé de Non à Oui
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.
Mis à jour par Frédéric Péters il y a plus de 2 ans
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).
Mis à jour par Frédéric Péters il y a plus de 2 ans
(et je pensais qu'on n'avait pas de locale/ mais si, donc on peut y aller sur gettext et je traduirai).
Mis à jour par Paul Marillonnet il y a plus de 2 ans
- Fichier 0001-templates-i18n-on-login-block-instructions-60837.patch 0001-templates-i18n-on-login-block-instructions-60837.patch ajouté
- Fichier 0002-profile-add-csam-account-un-linking-capabilities-608.patch 0002-profile-add-csam-account-un-linking-capabilities-608.patch ajouté
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.
Mis à jour par Frédéric Péters il y a plus de 2 ans
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).
Mis à jour par Paul Marillonnet il y a environ 2 ans
- Statut changé de Solution proposée à 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).
Mis à jour par Paul Marillonnet il y a environ 2 ans
- Fichier 0002-profile-add-csam-account-un-linking-capabilities-608.patch 0002-profile-add-csam-account-un-linking-capabilities-608.patch ajouté
- Statut changé de En cours à Solution proposée
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.
Mis à jour par Frédéric Péters il y a environ 2 ans
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.
Mis à jour par Paul Marillonnet il y a environ 2 ans
- Fichier 0001-profile-add-csam-account-un-linking-capabilities-608.patch 0001-profile-add-csam-account-un-linking-capabilities-608.patch ajouté
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é.
Mis à jour par Frédéric Péters il y a environ 2 ans
- Statut changé de Solution proposée à Solution validée
Go envoie ainsi.
Mis à jour par Paul Marillonnet il y a environ 2 ans
- Statut changé de Solution validée à 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)
Mis à jour par Frédéric Péters il y a environ 2 ans
- Statut changé de Résolu (à déployer) à Solution déployée
templates: i18n on login block instructions (#60837)