Tech : Correction d'un comportement étrange sur la connexion par email / mot de passe #11156
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Comportement étrange trouvé avec Sim sur la fonctionnalité qui bloque l'authentication par email/mdp si l'email est sur un domaine dont la connexion doit être gérée exclusivement par AgentConnect (ex @beta.gouv.fr).
L'utilisateur ne devrait pas pouvoir se connecter par email/mdp (bloqué par un
redirect
dans lebefore_action
sursessions#create
) or c'est le cas (la redirection se passe bien, mais l'utilisateur est quand même connecté).Après investigation nous avons remarqué que si aucun utilisateur n'est connecté, mais que dans le code on appelle
current_user
, Devise par Warden va essayer d'authentifier l'utilisateur en utilisant le contexte de la requête en cours.Cela pose problème chez nous dans le cas d'une requête de connexion
POST /users/sign_in
car si on appelle dans un before_action la méthodecurrent_user
, Devise va connecter l'utilisateur avant de passer dans le code de l'actionsessions#create
.Issues : heartcombo/devise#4951 heartcombo/devise#5602
Réponse officielle de Devise
Cette PR surchage donc
current_user
pour éviter l'authentification non intentionnelle