В моем приложении пользователи с ролью ROLE_ADMIN
могут вручную отключить учетные записи других пользователей, установив для enabled
в учетной записи пользователя значение false.
Используя пользовательскую проверку , пользователь не сможет войти в систему при следующей попытке:
public function checkPostAuth(UserInterface $user)
{
if (!$user->isEnabled()) {
throw new CustomUserMessageAuthenticationException(
'Account is not enabled.'
);
}
}
Моя проблема с этим, она работает только тогда, когда пользователь пытается войти в систему. Если пользователь в настоящее время вошел в систему (может также использовать функцию запомнить меня), ничего не произойдет, пока он не выйдет из системы.
Есть ли способ немедленно отключить пользователя от отправки запросов на маршруты, к которым у него больше нет доступа, даже если этот пользователь в данный момент вошел в систему?
Что я мог сделать, это проверить, учетная запись включена для каждого маршрута, для которого требуется доступ этого пользователя, например:
if ($this->getUser()->isEnabled() === false) {
throw new \Exception("Account disabled");
}
Но это кажется ужасным решением, потому что мне это понадобится во многих местах.