Я пытаюсь реализовать регистрацию с помощью FOSUserBundle. Я хочу, чтобы администратор мог зарегистрировать нового пользователя, и это я сделал просто, изменив регистрацию на брандмауэр-маршрут (префикс/admin/register).Регистрация пользователя с помощью FOSUserBundle без регистрации пользователя в
Я создал пользовательский тип формы регистрации и зарегистрировал его в качестве службы, как указано здесь: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/overriding_forms.md
Затем я подключил в регистрационные мероприятия, основанные на этом: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/controller_events.md
Мой слушатель выглядит следующим образом:
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\FilterUserResponseEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class RegistrationListener implements EventSubscriberInterface
{
private $router;
public function __construct(UrlGeneratorInterface $router)
{
$this->router = $router;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_COMPLETED => 'onRegisterDone',
FOSUserEvents::REGISTRATION_CONFIRMED => 'onRegisterDone',
FOSUserEvents::RESETTING_RESET_COMPLETED => 'onRegisterDone',
);
}
public function onRegisterDone(FilterUserResponseEvent $event)
{
$url = $this->router->generate('admin_panel');
//$event->setResponse(new RedirectResponse($url));
}
}
У фильтра FilterUserResponseEvent нет метода setResponse, поэтому я просто позволяю ему работать. Я думал, что подписка на это событие переопределит подписанные по умолчанию FOS \ UserBundle \ EventListener \ AuthenticationListener события и не позволит пользователю войти в систему, но новый пользователь все равно войдет в систему.
Возможно ли предотвратить аутентификацию, или просто я должен просто создать новую форму, которая вызовет действие для вызова User Manager?
Простую форму (с повторным использованием существующего типа формы регистрации), который просто использует диспетчер пользователей. –
Я пошел с этим пока. Возможно, в какой-то момент я столкнусь с тем, как отключить функциональность по умолчанию. – juuga