Symfony 4: разрешить вход только активным аккаунтам - PullRequest
3 голосов
/ 14 марта 2019

Итак, я использую Symfony 4, и мне удалось добавить поле в таблице базы данных пользователя, которое называется «Active», если active равно 0, то учетная запись не активирована, и наоборот.Поэтому я пытаюсь сделать так, чтобы всякий раз, когда пользователь, у которого не активна учетная запись, пытается войти в систему, появляется сообщение или предупреждение, в котором говорится, что его учетная запись в данный момент неактивна.Пока активный пользователь подключается без проблем.Я не использую FOSUserBundle здесь.Так я могу сделать это вручную?

1 Ответ

4 голосов
/ 14 марта 2019

Вы можете выполнить это, используя пользовательскую проверку .

Например:

namespace App\Security;

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

class UserChecker implements UserCheckerInterface
{
    public function checkPreAuth(UserInterface $user)
    {
        if (!$user instanceof User) {
            return;
        }

        if (!$user->isActive()) {
            throw new CustomUserMessageAuthenticationException(
                'Inactive account cannot log-in.'
            );
        }
    }

    public function checkPostAuth(UserInterface $user)
    {
        $this->checkPreAuth($user);
    }
}

Включить проверку:

security:
    firewalls:
        main:
            // skipped for brevity
            user_checker: App\Security\UserChecker
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...