Empêcher la connexion

Pour empêcher la connexion d'un utilisateur parce que celui-ci aura été bloqué par un administrateur on va utiliser UserChecker qu'on a déjà utilisé pour vérifier si la personne peut se connecter suivant si son email est valide ou non.

On rajoute une condition afin de savoir si notre utilisateur est bloqué avec $user->getIsLocked()

<?php

// src/Security/UserChecker.php

namespace App\Security;

use App\Entity\User;
use Symfony\Component\Security\Core\Exception\DisabledException;
use Symfony\Component\Security\Core\Exception\LockedException;
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();
        }

        if ($user->getIsLocked()) {
            throw new LockedException();
        }
    }

}

Maintenant si on essai de se connecter avec un compte qui à isLocked=true nous avons le message suivant :

{
    "error": "Account is locked."
}
prev

Commentaires

Connectez-vous pour laisser un commentaire