Tengo una página de productos del carrito, si una persona hace clic en el botón Agregar al carrito de un producto, será redirigido a la página de inicio de sesión.
Después de un inicio de sesión exitoso, necesito enviar al usuario nuevamente a la misma página de productos.
Usé la siguiente manera en el controlador de inicio de sesión.
Pero en realidad no funciona como yo quiero. Significa que redirigirá a la página de índice nuevamente, he usado la return redirect()->back(); también... pero no soluciona el problema
if (auth()->attempt(array('email' => $request->input('email'), 'password' => $request->input('password')))){ if(Auth::user()->name == 'Admin'){ return redirect()->to('home'); } else{ // return redirect()->back(); return redirect()->intended('/'); } }¿Cómo resolver el problema?
En este caso, back() y intended() no funcionarán.
Puede guardar la última página del producto en la sesión. Ejemplo muy simplificado:
session(['last_product_page_id' => $product->id]);Y luego use estos datos para redirigir al usuario después de iniciar sesión:
if (session()->has('last_product_page_id')) { return redirect()->route('product', session('last_product_page_id')); }Puede ser que la solución Mezenin sea correcta, pero lo resuelvo de otra manera. (Tomé el concepto de la solución anterior)
Como estoy usando Laravel 5.4 ... estoy dando una solución basada en el directorio de archivos reciente ...
He cambiado el controlador showLoginFrom que está dentro del rasgo AuthenticateUsers a esto:
public function showLoginForm() { Session::put('url.intended',URL::previous()); return view('auth.login'); }Y dentro de mi controlador de inicio de sesión he cambiado:
if (auth()->attempt(array('email' => $request->input('email'), 'password' => $request->input('password')))){ if(Auth::user()->name == 'Admin'){ return redirect()->to('home'); } else{ return Redirect::to(Session::get('url.intended')); } }Y es así como cuando un usuario inicia sesión, automáticamente será redirigido a la página anterior.