Vérifier si l'utilisateur peut se connecter

Nous allons créer un User Checker qui va vérifie si l'utilisateur à son email valide pour pouvoir se connecter.

<?php

// src/Security/UserChecker.php

namespace App\Security;

use App\Entity\User;
use Symfony\Component\Security\Core\Exception\DisabledException;
use Symfony\Component\Security\Core\User\UserCheckerInterface;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * Class UserChecker
 * @package App\Security
 */
class UserChecker implements UserCheckerInterface
{
    public function checkPreAuth(UserInterface $user)
    {
        if (!$user instanceof User) {
            return;
        }
    }

    public function checkPostAuth(UserInterface $user)
    {

        if (!$user instanceof User) {
            return;
        }

        if (!$user->getIsEnabled()) {
            throw new DisabledException();
        }
    }

}

Dans ce User Checker on regarde la valeur de isEnabled, et si elle est à false on throw une Exception qui bloque la connexion de l'utilisateur.

Pour l'activer il suffit d'aller dans security.yaml et dans le firewall main on indique son namespace

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: true
            user_checker: App\Security\UserChecker

Maintenant si vous essayez de vous connecter avec un utilisateur avec isEnabled à false vous aurez le message :

{
    "error": "Account is disabled."
}
prev next

Commentaires

Connectez-vous pour laisser un commentaire