i am learning laravel. as a beginner i am trying to create a simple login system in laravel 12 with livewire. system should redirect to the admin dashboard and user dashboard base on role. i have created AdminMiddleware and UserMiddleware.
AdminMiddleware
<?php
namespace AppHttpMiddleware;
use Closure; use IlluminateHttpRequest; use IlluminateSupportFacadesAuth; use SymfonyComponentHttpFoundationResponse;
class AdminMiddleware {
/**
* Handle an incoming request.
*
* @param Closure(IlluminateHttpRequest): (SymfonyComponentHttpFoundationResponse) $next
*/
public function handle(Request $request, Closure $next): Response
{
if (Auth::user() && Auth::user()->role != 'admin') {
return redirect()->route('user.dashboard);
}
return $next($request);
} }
UserMiddleware
<?php
namespace AppHttpMiddleware;
use Closure;
use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;
use SymfonyComponentHttpFoundationResponse;
class UserMiddleware
{
/**
* Handle an incoming request.
*
* @param Closure(IlluminateHttpRequest): (SymfonyComponentHttpFoundationResponse) $next
*/
public function handle(Request $request, Closure $next): Response
{
if (Auth::user() && Auth::user()->role != 'user') {
return redirect()->route('admin.dashboard);
}
return $next($request);
}
}
web.php
<?php
use AppLivewireAdminAdminDashboard;
use AppLivewireEmployeeUserDashboard;
use AppLivewireSettingsAppearance;
use AppLivewireSettingsPassword;
use AppLivewireSettingsProfile;
use IlluminateSupportFacadesRoute;
Route::get('/', function () {
return view('welcome');
})->name('home');
Route::view('dashboard', Dashboard::class)
->middleware(['auth', 'employee'])
->name('user.dashboard');
Route::middleware(['auth'])->group(function () {
Route::redirect('settings', 'settings/profile');
Route::get('settings/profile', Profile::class)->name('settings.profile');
Route::get('settings/password', Password::class)->name('settings.password');
Route::get('settings/appearance', Appearance::class)->name('settings.appearance');
});
Route::middleware(['auth', 'admin'])->group(function () {
Route::view('admin/dashboard', AdminDashboard::class)->name('admin.dashboard');
// Additional admin routes can be added here
});
require __DIR__ . '/auth.php';
i am getting error Route [dashboard] not defined.
because i have created AdminMiddleware and UserMiddleware to redirect the admin.dashboard and user.dashboard while default dashboard is there.
my question is
Should we create two separate middleware for admin and user, or is it
enough to have only one middleware for admin that redirects to
admin.dashboard, while regular users don’t need their own middleware
and instead use the default dashboard without requiring a separate
user middleware to redirect the route to user.dashboard?