Bonjour,

Sur mon site, j'ai un formulaire d'identification en mode modal. Si j'ai une erreur d'authentification, le formulaire se ré-affiche en affichant un message flash contenant l'erreur :

Nom : Capture.JPG
Affichages : 138
Taille : 13,0 Ko

Ceci se fait grâce au handle suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 
<?php
 
namespace App\Handler;
 
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Http\Logout\LogoutSuccessHandlerInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationFailureHandlerInterface;
 
class AuthenticationHandler implements AuthenticationFailureHandlerInterface, LogoutSuccessHandlerInterface
{
    private $router;
 
    public function __construct(RouterInterface $router) 
    {
 
        $this->router = $router;
 
    }
 
    public function onAuthenticationFailure(Request $request, AuthenticationException $exception)
    { 
 
        $session = $request->getSession();
 
        $referer = $request->headers->get('referer');       
        $session->getFlashBag()->add('danger', $exception->getMessage());
        $session->set('errorFomAuthentication', true);
 
        return new RedirectResponse($referer);
 
    }
 
    public function onLogoutSuccess(Request $request) 
    {
 
        return new RedirectResponse($this->router->generate('home'));
 
    }
 
}
Par contre, lorsque les identifiants sont corrects mais que l'utilisateur n'est pas encore actif (attribut 'isActive' de mon entité 'user' à null), alors j'obtiens une erreur Symfony :

Nom : Capture.JPG
Affichages : 147
Taille : 36,2 Ko

Je ne vois pas comment faire pour capter dans ce handler le fait que l'utilisateur n'est pas actif afin d'éviter cette page d'erreur.

Quelqu'un aurait une idée?

Merci d'avance pour votre aide.