Вы можете найти события FOSUserBundle пожаров в FOSUserEvents class. Более конкретно, это то, который вы ищете:
/**
* The SECURITY_IMPLICIT_LOGIN event occurs when the user is logged in programmatically.
*
* This event allows you to access the response which will be sent.
* The event listener method receives a FOS\UserBundle\Event\UserEvent instance.
*/
const SECURITY_IMPLICIT_LOGIN = 'fos_user.security.implicit_login';
документацию для подключения в эти события можно найти на странице Hooking into the controllers дока. В вашем случае, вам нужно будет реализовать что-то вроде этого:
namespace Acme\UserBundle\EventListener;
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\FormEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Security\Http\SecurityEvents;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
/**
* Listener responsible to change the redirection at the end of the password resetting
*/
class LoginListener implements EventSubscriberInterface
{
private $container;
public function __construct($container)
{
$this->container = $container;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::SECURITY_IMPLICIT_LOGIN => 'onLogin',
SecurityEvents::INTERACTIVE_LOGIN => 'onLogin',
);
}
public function onLogin($event)
{
// FYI
// if ($event instanceof UserEvent) {
// $user = $event->getUser();
// }
// if ($event instanceof InteractiveLoginEvent) {
// $user = $event->getAuthenticationToken()->getUser();
// }
$point = $this->container->get('process_points');
$point->ProcessPoints(1 , $this->container);
}
}
Затем вы должны определить слушателя в качестве сервиса и ввести контейнер. В качестве альтернативы вы можете ввести только тот сервис, который вам нужен, а не весь контейнер.
services:
acme_user.login:
class: Acme\UserBundle\EventListener\LoginListener
arguments: [@container]
tags:
- { name: kernel.event_subscriber }
Существует еще один метод, который включает в себя overriding the controller, но, как указано в документации, вы должны дублировать их код так, это не совсем чистые и неизбежно сломается, если (или, вернее, когда) FOSUserBundle изменяется.
В настоящее время GitHub недоступен, поэтому я не могу предоставить полный ответ, но способ сделать это - переопределить контроллер FOSUserBundle, отвечающий за регистрацию. –