Еще один новый вопрос, но, надеюсь, кто-то сможет пролить свет:
Я использую Socialite с Laravel 5, и я хочу иметь возможность перенаправлять пользователя на страницу на сайте после того, как они вошли в систему. Проблема в том, что использование
return redirect('any-path-I-put-here');
просто перенаправляет обратно на 'social-site / login? code = afkjadfkjdslkfjdlkfj ...' (где 'social-site' - это любой сайт, который используется, например facebook, twitter, google и т. д.)
Итак, мне кажется, что происходит то, что функция redirect () в интерфейсе Socialite / Contracts / Provider отменяет любое перенаправление, которое я пытаюсь сделать после факта.
Просто для пояснения, мои маршруты настроены правильно. Я пробовал каждую версию «перенаправления», которую вы можете себе представить («на», «назад», «предполагалось», «Redirect ::» и т. Д.), И метод вызывается из моего контроллера аутентификации (хотя я пробовал его в другом месте. также).
Вопрос в том, как мне переопределить этот redirect () после того, как я закончу сохранение и авторизацию пользователя с помощью Socialite? Любая помощь приветствуется! Заранее спасибо.
Код, содержащий рассматриваемое перенаправление:
public function socialRedirect( $route, $status, $greeting, $user )
{
$this->auth->login( $user, true );
if( $status == 'new_user' ) {
// This is a new member. Make sure they see the welcome modal on redirect
\Session::flash( 'new_registration', true );
return redirect()->to( $route );// This is just the most recent attempt. It originated with return redirect($route);, and has been attempted every other way you can imagine as well (as mentioned above). Hardcoding (i.e., 'home') returns the exact same result. The socialite redirect always overrides anything that is put here.
}
else {
return redirect()->to( $route )->with( [ 'greeting' => $greeting ] );
}
}
... Класс SocialAuth, который запускается до этого, однако, имеет длину около 500 строк, так как он должен определять, существует ли пользователь, при необходимости регистрировать новых пользователей, отображать формы для различных сценариев и т. Д. Между тем, вот функция, которая отправляет информацию из класса Social Auth:
private function socialLogin( $socialUser, $goto, $provider, $status, $controller )
{
if( is_null( $goto ) ) {
$goto = 'backlot/' . $socialUser->profile->custom_url;
}
if( $status == 'new_user' ) {
return $controller->socialRedirect($goto, $status, null, $socialUser);
}
else {
// This is an existing member. Show them the welcome back status message.
$message = 'You have successfully logged in with your ' .
ucfirst( $provider ) . ' credentials.';
$greeting =
flash()->success( 'Welcome back, ' . $socialUser->username . '. ' . $message );
return $controller->socialRedirect($goto, $status, $greeting, $socialUser);
}
}