Laravel - перенаправить пользователя после входа на определенную страницу - PullRequest
0 голосов
/ 24 октября 2018

Я хочу перенаправить пользователя на страницу edit.blade при первом входе в систему.для этого я сделал этот код, но он не работает, и я понятия не имею, в чем проблема.Может кто-нибудь мне помочь.

это код, который у меня сейчас есть:

// This section is the only change
if ($this->guard()->validate($this->credentials($request))) {
    $user = $this->guard()->getLastAttempted();
    // Make sure the user is active
    if ($user->verified && $this->attemptLogin($request)) {
        if ($user->first_time_login == true || $user->first_time_login == 1) {
            $this->redirectTo = '/users/edit';
            $user->first_time_login = false;
            $user->save();
        }
        return $this->sendLoginResponse($request);
    }
}

все работает, кроме этой строки:

if ($user->first_time_login == true || $user->first_time_login == 1) {
    $this->redirectTo = '/users/edit';
}

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Я обнаружил проблему, мне пришлось добавить return redirect()->to('/users/edit'); в нижней части функции аутентификации, что $ this-> redirrectTo является значением по умолчанию, если пользователь еще не перешел на другой аутентифицированный маршрут.

Мой код теперь выглядит так:

if ($user->first_time_login == true || $user->first_time_login == 1) {
                $this->redirectTo = '/users/edit';
                $user->first_time_login = false;
                $user->save();
                return redirect()->to('/users/edit');
            }
0 голосов
/ 24 октября 2018

Это можно сделать с помощью свойства redirectTo или метода authenticated:

свойство redirectTo: docs

Если для пути перенаправления требуется пользовательская логика генерации, вы можете определить метод redirectTo вместо свойства redirectTo:

protected function redirectTo()
{
    $user = Auth::user();

    if($user->first_time_login){
        $user->first_time_login = false;
        $user->save();

        return '/users/edit';
    }else{
        return '/home';
    }
}

метод с проверкой подлинности:

protected function authenticated(Request $request, $user)
{
    if ($user->first_time_login) {
        $url = '/users/edit';
        $user->first_time_login = false;
        $user->save();
    } else {
        $url = $this->redirectTo;
    }

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