Тема: Нужна помощь

Ребят, помогите разобраться со следующим вопросом. Столкнулся с symfony 2 недавно совсем и тут появилась острая нужда обрабатывать событие успешной авторизации пользователя и писать в базу дату и время авторизации. Как это реализовать на Symfony?

Я так понимаю, что есть AuthenticationEvents::AUTHENTICATION_SUCCESS - это собственно событие.
Есть DefaultAuthenticationSuccessHandler - это видимо то, что происходит по дефолту. Там есть редирект на главную после успешной авторизации.

Вопрос как реализовать из этого запись в БД времени авторизации.

2

Re: Нужна помощь

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

Например: http://www.webtipblog.com/create-authen … symfony-2/
Алсо: http://symfony.com/doc/current/event_dispatcher.html

3

Re: Нужна помощь

relo_san пишет:

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

Например: http://www.webtipblog.com/create-authen … symfony-2/
Алсо: http://symfony.com/doc/current/event_dispatcher.html


Я нашел AbstractAuthenticationListener, мне вполне достаточно его. У меня есть доктрина 2. Как мне из AbstractAuthenticationListener обратиться к сервису или entity manager или репозиторию? Уже четвертые сутки мучаюсь что-то никак догнать не могу... default/sad

4

Re: Нужна помощь

Otezvikentiy пишет:

Я нашел AbstractAuthenticationListener, мне вполне достаточно его.

Эм. Я правильно понял, что вы собираетесь ИЗМЕНИТЬ код класса AbstractAuthenticationListener из пакета Симфони?
Кагбэ, мягко выражаясь, изменять что-либо непосредственно в библиотеке вендора не принято. Потому что следующий апдейт/реинсталл вендоров затрет ваши изменения.


Otezvikentiy пишет:

Как мне из AbstractAuthenticationListener обратиться к сервису

Если он туда не «приезжает», то никак, очевидно.
Создайте свой слушатель, суньте ему в конструктор энтити менеджер, пропишите слушатель в сервисах с соответствующим аргументом (энтити менеджером) и пользуйтесь. Слушатель не должен никуда сам обращаться. Он может работать только с тем, что ему дали при создании/что пришло в ивенте.