Laravel - Как перенаправить на предыдущий URL после подтверждения адреса электронной почты? - PullRequest
0 голосов
/ 14 декабря 2018

Я хочу перенаправить пользователя на предыдущий URL после подтверждения электронной почты.

Обычно в Laravel 5.7 после нажатия на маршрут, который требует аутентификации, вы будете перенаправлены обратно на этот URL после входа в систему.

Мне нужно такое же поведение после проверки электронной почты.

1 Ответ

0 голосов
/ 14 декабря 2018

Сначала нам нужно изменить RedirectIfAuthenticated и поместить в сеанс намеченный URL.

class RedirectIfAuthenticated
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @param  string|null  $guard
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        if(session()->get("url.intended")){
            session()->put("redirect_after_email_verification", session()->get("url.intended"));
        }

        if (Auth::guard($guard)->check()) {
            return redirect('/admin');
        }

        return $next($request);
    }
}

Затем добавить следующий код в VerificationController , чтобы проверить ранее добавленный URL в сеансе,Если этот URL-адрес существует в сеансе, мы перенаправим пользователя на этот URL-адрес после подтверждения электронной почты.

public function show(Request $request)
{
    return $request->user()->hasVerifiedEmail()
        ? redirect($this->redirectPath())
        : view('auth.verify');
}

protected function redirectTo(){
    if(session()->get("redirect_after_email_verification")){
        return session()->get("redirect_after_email_verification");
    }

    return $this->redirectTo;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...