как войти в Symfony с помощью внешнего почтового звонка, который возвращает JSON со статусом - PullRequest
0 голосов
/ 09 января 2019

войдите в 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?

спасибо

1 Ответ

0 голосов
/ 09 января 2019

Вместо установки действия формы, как 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');
}
...