Quiero redirigir al panel del usuario según el rol. Creé una tabla separada para el rol de usuario y una tabla separada para el usuario. No entiendo cómo puedo hacer eso.
Este es mi código de software intermedio
public function handle(Request $request, Closure $next) { if(!Auth::check()){ return redirect()->route('login.user')->with('error', 'Please login first'); } if(Auth::user()->role == 1){ return $next($request); } if(Auth::user()->role == 2){ return redirect()->route('user.dashboard'); } }Esta es mi tabla de roles de usuario
| identificación | tipo de usuario |
|---|---|
| 1 | administración |
| 2 | usuario |
Esta es mi tabla de usuario
| identificación | nombre de usuario | usuario_role_id |
|---|---|---|
| 1 | administración | 1 |
| 2 | usuario | 2 |
Estaría muy feliz si pudieras ayudarme.
En el modelo de usuario, debe definir la relación de roles.
Ponga esto a su modelo de usuario:
public function role() { return $this->belongsTo(Role::class, 'user_role_id'); }Por supuesto que tienes que tener el modelo a seguir, pero supongo que ya lo tienes.
public function handle(Request $request, Closure $next) { if(!Auth::check()){ return redirect()->route('login.user')->with('error', 'Please login first'); } if(Auth::user()->role->user_type == 'admin'){ return $next($request); } if(Auth::user()->role->user_type == 'user'){ return redirect()->route('user.dashboard'); } }Otra solución podría ser sin relación como esta:
public function handle(Request $request, Closure $next) { if(!Auth::check()){ return redirect()->route('login.user')->with('error', 'Please login first'); } if(Auth::user()->user_role_id == 1){ return $next($request); } if(Auth::user()->user_role_id == 2){ return redirect()->route('user.dashboard'); } }