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