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

DDSameera's avatar

Already Logged user Redirection By User Role Id

There are 02 logins based up on their roles

When user loggged in to the system , System will identify that role and redirect relavant dashboard.

Eg : once superadmin logged in to the system , it should redirect to admin dashboard

How could i implement that feature using this middleware

Middleware > RedirectIfAuthenticated.php


<?php

namespace App\Http\Middleware;

use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{

    public function handle(Request $request, Closure $next, ...$guards)
    {
        $guards = empty($guards) ? [null] : $guards;

        foreach ($guards as $guard) {
            if (Auth::guard($guard)->check()) {
                return redirect(RouteServiceProvider::HOME);
            }
        }

        return $next($request);
    }
}

0 likes
1 reply
DDSameera's avatar
DDSameera
OP
Best Answer
Level 3

Fixed it. Here is the solution

<?php

namespace App\Http\Middleware;

use App\Providers\RouteServiceProvider;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class RedirectIfAuthenticated
{

    public function handle(Request $request, Closure $next, ...$guards)
    {
        $guards = empty($guards) ? [null] : $guards;


        if(!empty(Auth::user())) {
            // //If already Logged User Redirection
            $userAssginedRoles = Auth::user()->roles->pluck('name')->toArray();
            $isStudent = in_array("student", $userAssginedRoles);
            $isSuperAdmin = in_array("superadmin", $userAssginedRoles);
            $isLecturer = in_array("lecturer", $userAssginedRoles);

            foreach ($guards as $guard) {
                //Super Admin
                if (Auth::guard($guard)->check() && ($isSuperAdmin || $isLecturer)) {
                    return redirect(RouteServiceProvider::HOME);

                }

                //Student
                if (Auth::guard($guard)->check() && ($isStudent)) {
                    return redirect(RouteServiceProvider::STUDENTHOME);
                }


            }
        }else{
            //Default Redirection
            foreach ($guards as $guard) {
                if (Auth::guard($guard)->check()) {
                    return redirect(RouteServiceProvider::HOME);
                }


            }

        }




        return $next($request);
    }
}


Please or to participate in this conversation.