Laravel 5 y Socialite - Nuevo redireccionamiento después de iniciar sesión
Otra pregunta nueva aquí, pero espero que alguien pueda arrojar algo de luz:
Estoy usando Socialite con Laravel 5, y quiero poder redirigir al usuario a una página en el sitio después de haber iniciado sesión. El problema es que usar
return redirect('any-path-I-put-here');
simplemente redirige de nuevo a 'social-site / login? code = afkjadfkjdslkfjdlkfj ...' (donde 'social-site' es cualquier sitio que se esté utilizando, es decir, facebook, twitter, google, etc.)
Entonces, lo que me parece que está sucediendo es que la función redirect () en la interfaz Socialite / Contracts / Provider está anulando cualquier redirección que intento después del hecho.
Solo para aclarar, mis rutas están configuradas correctamente. He probado todas las versiones de 'redirect' que puedas imaginar ('to', 'back', 'intent', Redirect ::, etc.), y el método se llama desde mi controlador de autenticación (aunque lo he intentado en otro lugar también).
La pregunta es, ¿cómo anulo esa redirección () una vez que termine de almacenar e iniciar sesión en el usuario con socialite? Cualquier ayuda es apreciada! Gracias de antemano.
El código que contiene la redirección en cuestión es:
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 ] );
}
}
... Sin embargo, la clase SocialAuth que se ejecuta antes de esto tiene aproximadamente 500 líneas, ya que tiene que determinar si el usuario existe, registrar nuevos usuarios si es necesario, mostrar formularios para diferentes escenarios, etc. Mientras tanto, aquí está la función que envía la información desde la clase 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);
}
}