How to redirect after login multi roles and different view

Viewed 72

i have problem to redirect login different view. in my case when admin login redirect to dashboard admin, and when user login redirect to user page. i'm using laravel 8. this is my Login Controller

protected $redirectTo = '/home';
public function redirectTo()
{
    $role = Auth::user()->role;
    switch ($role) {
        case 'admin':
            return '/admin';
            break;
        case 'user':
            return '/user';
            break;

        default:
            return '/home';
            break;
    }
}

my middleware

  {
    if (!Auth::check()) // This isnt necessary, it should be part of your 'auth' middleware
        return redirect('/home');

    $user = Auth::user();
    // echo $user;
    if ($user->roles == $role)
        return $next($request);

    return redirect('/home');
}

my controller

Route::get('/', function () {
return view('auth.login');

});

my route

Auth::routes();


Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Route::get('/user', [UserController::class, 'index'])->name('user')->middleware('role:user');
Route::get('/admin', [AdminController::class, 'index'])->name('admin')->middleware('role:admin');
1 Answers

I guess that the roles property of user model is a list of roles. And when you compare a list of roles with a single role, the condition is always wrong.

Related