войдите в Symfony с помощью внешнего почтового вызова, который возвращает json
<form class = "form-signin" action = "example.com/user/login"method = "post">
{% if is_granted('ROLE_APP') %}
You are logged
{% else %}
You are not logged !
{% endif %}
<label for = "inputEmail" class = "sr-only">Username</label>
<input type = "text" name = "username" class = "form-control" placeholder = "username" required autofocus>
<label for = "inputPassword" class = "sr-only">Password</label>
<input type = "password" name = "password" class = "form-control" placeholder = "password" required>
<button class = "btn btn-lg btn-primary btn-block" type = "submit">Sign in</button>
если вызов внешнего api вернет json правильно, но как я могу установить роль пользователя, который в json возвращается с помощью ok?
Благодарность




Вместо того, чтобы устанавливать действие формы, так как action = "example.com/user/login" устанавливает какое-то действие в вашем контроллере. Затем в этом контроллере вызовите внешний api, прочтите json и, если все в порядке, войдите в систему программно. Например:
public function handleExternalApiLogin(Request $request, $token, GuardAuthenticatorHandler $handler, LoginFormAuthenticator $loginFormAuthenticator)
{
... //<- call external api and check if everything is ok
$user = ... //get user that you want to be logged
if ($user) {
$handler->authenticateUserAndHandleSuccess($user, $request, $loginFormAuthenticator, 'main'); // <- here 'main' is your firewall name
return $this->redirectToRoute('some_route_to_redirect_user_to');
}
return $this->redirectToRoute('route_where_login_form_is');
}
но не понимаю, нормально ли :(
/ ** * @Route ("/ app") * / public function appAction (Request $ request, $ token, GuardAuthenticatorHandler $ handler, LoginFormAuthenticator $ loginFormAuthenticator) {$ status = '200'; если ($ status = '200') {$ handler-> AuthenticateUserAndHandleSuccess ($ user, $ request, $ loginFormAuthenticator, 'main'); // <- здесь 'main' - имя вашего брандмауэра return $ this-> redirectToRoute ('esterne / app.account2.html.twig'); } return $ this-> redirectToRoute ('esterne / app.html.twig'); }