Используя Symfony / FOSUserBundle, как я могу перенаправить заблокированных пользователей на страницу, отличную от формы входа? - PullRequest
1 голос
/ 15 января 2020

У меня есть система, использующая Symfony 3.4 и FOSUserBundle 2.1.2. У нас есть концепция заблокированного пользователя (изначально в FOSUserBundle, но с тех пор он был удален в нашем собственном пакете). Symfony core Security проверяет, заблокирован ли пользователь во время авторизации и выдает LockedException. Это исключение приводит к сбою входа в систему и отображению простого текстового сообщения на странице входа в FOSUserBundle.

Пользователи могут быть заблокированы и разблокированы по желанию, но в системе также указана c причина для пользователь должен быть заблокирован как часть процесса регистрации, и если пользователь находится в этом состоянии, я хотел бы показать пользователю другую страницу при входе в систему, говоря: «Ваша учетная запись заблокирована, потому что XYZ, пожалуйста, подождите, пока мы уведомим вас о том, что все настроено правильно ". Тем не менее, я не понимаю, как это сделать в рамках FOSUserBundle.

Обычно для такого рода событий используются события, но в этот конкретный момент не возникает событие, которое помогает - они недостаточно конкретизированы c и не допускают условного перенаправления.

Я начал пытаться переопределить FOSUserBundle SecurityController, чтобы ввести некоторые собственные логики c, которые, я думаю, будут работать , но наследование пакетов не будет поддерживаться при переходе на Symfony 4.x (в ближайшее время).

Переход на более современный Symfony Защитный подход к безопасности даст нам необходимую гибкость, и мы будет делать это в какой-то момент (сам FOSUserBundle не поддерживает самые последние версии Symfony в любом случае), но предпочитает не делать этого прямо сейчас.

Есть ли подход, который позволит нам условно перенаправить заблокированных пользователей продолжая работать в процессе FOSUserBundle?

Заранее спасибо!

...