gip-inclusion / itou-communaute-django

Site de la Communauté de l'Inclusion (version en Django)
https://communaute.inclusion.beta.gouv.fr/
GNU Affero General Public License v3.0
3 stars 1 forks source link

feat(user): authentification via un lien magique envoyé par email #804

Closed vincentporte closed 2 weeks ago

vincentporte commented 3 weeks ago

Description

🎸 En complément de l'authentification via Pro Connect (#731), permettre à un utlisateur de s'authentifier via un lien magique envoyé par email. 🎸 Nécessaire pour les utilisateurs n'appartenant pas à une organisation, car ils ne peuvent pas utiliser Pro Connect

🐻 La vue principale de connexion est désormais LoginView. Elle permet de recevoir un magic link ou de se connecter avec ProConnect. 🐻 Si l'utilisateur se connecte avec un lien magic, une variable est positionnée dans sa session pour determiner le mécanisme de déconnection à actionner. 🐻 LoginView n'est plus accessible si l'utilisateur est authentifié.

⚠️ edge case Un utilisateur demande un magic link, puis se connecter avec ProConnect, puis clique sur le magic link. La déconnection pourrait être celle du magic link (pas de déco ProConnect). Pas d'effet de bord catastrophique attendu.

Type de changement

🎢 Nouvelle fonctionnalité (changement non cassant qui ajoute une fonctionnalité). 🚧 technique

Points d'attention

🦺 ajout de la méthode clean_next_url pour limiter les risques sur les redirections 🦺 en dev, les magic link sont enregistrés dans EmailSentTrack 🦺 ref https://www.honeybadger.io/blog/options-for-passwordless-authentication-in-django/ 🦺 ref https://stackoverflow.com/a/46236585

🦺 pour une PR suivante : ajouter le contrôle sur BlockedEmail et sur BlockedDomainName pour prévenir d'eventuels spammers

Captures d'écran (optionnel)

LoginView image

CreateUserView image

Login Link Sent image

github-actions[bot] commented 2 weeks ago

🥁 La recette jetable est prête ! 👉 Je veux tester cette PR !