Приветствую всех.
Исходная ситуация:
1. На сайте для пользователя необходимо соорудить единую форму для реализации и авторизации ( remember-me так же подразумевается ), чтобы пользователь не бегал по двум разным формам: региться в форме регистрации, авторизоваться - в авторизации. Другими словами: нужна форма 2 в 1.
2. Проект пишется на Symfony 2.3
3. Документация и примеры в Symfony 2 показывают как создавать авторизацию отдельно и регистрацию отдельно, про нечто единое и цельное ничего не нашел.
4. Начал копать эту задачу вглубь: пока думается, что нужно реализовывать свой метод в контроллере вместо пресловутого метода, на который указывает рекомендуемый документацией logic_check в security.yml:
...
form_login:
login_path: /account/login
check_path: /account/login_check
...
и routing.yml:
...
login_check:
pattern: /account/login_check
...
Но, судя по докам, Symfony 2 перехватывает событие и вводимые логин:пароль обрабатывает где-то у себя. Где именно это происходит в Symfony - из всей найденной документации так и не нашел.
На данный момент я понимаю так, необходимо ( или-или ):
- просто переписать "где-то там в Symfony 2" функционал обработки данных из формы;
- отменить действие "где-то там в Symfony 2" функционала обработки данных из формы и вместо него написать свой функционал.
Вопрос: если кто сталкивался с подобными задачами или знает эту часть Symfony 2 до мозга костей, помогите разобраться в понимании проблемы ( при поисках инфы я так или иначе упирался в тему событий ( Events ), нужно переписывать под свои требования какие-то там Эвенты для Фаервола? ). Или другими словами: как и где в Symfony 2 написать custom login_check?
Примечание: единая форма регистрации/авторизации ( method POST )- это одна форма с полями логин (email), пароль ( и чекбокс remember-me ). Метод контроллера через request получает данные из формы. Проверяет, если в БД уже есть логин (email), то ищет пароль, если пароль совпадает, то запускается процесс авторизации.
Если в БД нет логина (email), то запускается процесс регистрации ( добавление в БД новых логин:пароль с кучей служебной инфы, типа: дата-время, активный и т.д. ). Вне зависимости, какой процесс запущен, после регистрации или авторизации пользователь перенаправляется в личный кабинет. Вывод ошибок о неправильном пароле пока не нужен.
Заранее благодарю за помощь, советы, рекомендации и ликбез. Отвечу на все встречные вопросы, если что непонятно из поставленного вопроса.