Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

willy12's avatar

Redirect

Hello coder's i have 3 roles in my system admin,doctor,user a ceated a middleware to redirect each to appropriate page but when am login as admin if i change the url login in will redirect to login i don't want that am using Laravel 11

0 likes
8 replies
willy12's avatar

public function handle(Request $request, Closure $next, $role): Response {

    if ($request->user()->role !== $role) {
       if ($request->user()->role === 'doctor') {
          return redirect()->route('doctor.dashboard');
       }elseif ($request->user()->role === 'admin') {
          return redirect()->route('admin.dashboard');
       }elseif($request->user()->role === 'user'){
        return redirect()->route('dashboard');
       }
    }
    return $next($request);
}
willy12's avatar
   Route::get('/admin/dashboard',[AdminController::class,'Dashboard'])->name('admin.dashboard');
   Route::get('/admin/specialty',[SpecialtyController::class,'index'])->name('admin.specialty');
   Route::post('/admin/specialty/store',[SpecialtyController::class,'store'])->name('admin.specialty.store');
   Route::post('/admin/specialty/update/{id}',[SpecialtyController::class,'update'])->name('admin.specialty.update');
   Route::post('/admin/specialty/destroy/{id}',[SpecialtyController::class,'delete'])->name('admin.specialty.destroy');```

});

Route::get('/admin/login',[AdminController::class,'AdminLogin'])->name('admin.login');
 Route::get('/admin/logout',[AdminController::class,'AdminLogout'])->name('admin.logout');'''
Snapey's avatar

i don't want that

What do you want?

if i change the url login in will redirect to login

As expected?

willy12's avatar

@Snapey when you're logged in in laravel it redirects to dashboard when you try to change the url to log in again it will redirect to dashboard thats what i want as an admin it should redirect to dashboard when log in.

Lara_Love's avatar

hi use like this codes:

you can use return response()->view in middleware

if (Auth::check() && auth()->user()->type == '1') {
            $user = User::all();
            return response()->view('manager', compact('user'));
        } elseif (Auth::check() && auth()->user()->type == '2') {
            return response()->view('admin');
        } else {
            return response()->view('home');
        }

1-you can use in in controller

 if (auth()->user()->type == '1') {
                return redirect()->route('manager');
            }else if (auth()->user()->type == '2') {
                return redirect()->route('admin');
            }else{
                return redirect()->route('home');
            }
        }else{
            return redirect()->route('login')

2-use 2 middleware

Snapey's avatar

@lara_love

The only thing you should do in middleware is allow the request to pass through or return a redirect.

Definately not loading data and returning a view.

1 like
Lara_Love's avatar

hello Mr @Snapey I don't enter this piece of code in middleware

 $user = User::all();

, it gives $user error

Please or to participate in this conversation.