Symfony 5 параметров передачи для функций выхода из системы - PullRequest
0 голосов
/ 30 января 2020

В приложении Symfony 5.0 у меня следующий сценарий:

Пользователь с правами администратора может создавать новых пользователей. Если таким образом создается новый пользователь, я хочу выйти из системы перенаправления администратора на экран входа в систему и установить предварительно заполненное значение в поле электронной почты равным одному из созданных пользователем ранее.

В настоящее время у меня есть ссылка с href="{{ path('app_logout', {email: user.email}) }}" I SecurityController Я получил метод выхода по умолчанию, определенный следующим образом:

/**
 * @Route("/logout", name="app_logout")
 */
public function logout()
{
    throw new \Exception('This method can be blank - it will be intercepted by the logout key on your firewall');
}

Итак ... как мне обработать параметр "email" и передать его в логин? функция справиться там?

1 Ответ

0 голосов
/ 02 февраля 2020

Используйте Dependency Injection, чтобы получить объект Symfony\Component\HttpFoundation\Request, затем получите параметр email оттуда:

/**
 * @Route("/logout", name="app_logout")
 */
public function logout(Request $request)
{
    if ($request->get('email') {
        return $this->redirectToRoute('security_login', [
            'email' => $request->get('email');
        ]);
    }
}

/**
 * @Route("/login", name="security_login")
 */
public function login(Request $request, AuthenticationUtils $authenticationUtils, TokenStorageInterface $tokenStorage)
    {
        // force logout of previous user
        $tokenStorage->setToken(null);

        // get the login error if there is one
        $error = $authenticationUtils->getLastAuthenticationError();

        $form = $this->createForm(LoginForm::class, [
            'email' => $request->get('email');
        ]);

        return $this->render('security/login.html.twig', [
            'form' => $form->createView(),
            'error' => $error,
        ]);
}
...