Разбираюсь с авторизацией через SecurityBundle все отлично работает в штатном режиме (бандл наследуется от FOSUserBundle и в нем переопределяется часть функционала), но возникла потребность выполнить авторизацию пользователя в другом контроллере другого бандла этого же проекта. Выполняется вызов другого роутера, который не относится к базовому бандлу в нем необходимо выполнить проверку логина пароля и авторизовать пользователя или выдать ошибку, сейчас я реализовал это в хардкор-варианте, т.е. прямо получаю из репозитория пользователя по логину, вычисляю хеш пароля и сравниваю с хешем в базе.
Что бы было более понятно, вот мой «код»:
$request = $this->get('request');<br>
if ('POST' == $request->getMethod() || 'GET' == $request->getMethod()) {<br>
$username = $request->get('username');<br>
$password = $request->get('password');<br>
$em = $this->getDoctrine()->getManager();<br>
$userEntity = $em->getRepository('MyBundle:User')->findOneBy(array('username' => $username));<br>
if (!$userEntity) {<br>
return $this->getResponseError('404', $typeResponse);<br>
}<br>
$factory = $this->get('security.encoder_factory');<br>
$encoder = $factory->getEncoder($userEntity);<br>
$encodePassword = $encoder->encodePassword($password, $userEntity->getSalt());<br>
if ($encodePassword == $userEntity->getPassword()) {<br>
$response = new Response;<br>
if (!$this->authenticateUser($userEntity, $response)) {<br>
return $this->getResponseError('User locked', $typeResponse);<br>
}<br>
} else {<br>
return $this->getResponseError('Wrong password or login', $typeResponse);<br>
}<br>
}<br>
Понимаю, что это не есть правильно, но как реализовать это на уровне диспетчера событий не хватает опыта.
Прошу помощи у уважаемых разработчиков.