if it helps here are the snippets
web.php:
Route::middleware('auth')->group(function () {
// Profile routes
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
// Voter dashboard
Route::get('/voter/dashboard', [VoterDashboardController::class, 'index'])
->name('voter.dashboard');
// Admin dashboard (only accessible by admin role)
Route::middleware('admin')->group(function () {
Route::get('/admin/dashboard', [AdminDashboardController::class, 'index'])
->name('admin.dashboard');
});
});
Kernel.php
'admin' => \App\Http\Middleware\EnsureUserIsAdmin::class,
EnsureUserIsAdmin.php
public function handle($request, Closure $next)
{
dd([
'Auth::check()' => Auth::check(),
'Auth::user()' => Auth::user(),
'session' => session()->all(),
]);
if (Auth::user()?->role !== 'admin') {
abort(403, 'Unauthorized');
}
return $next($request);
}
DashboardController.php
class DashboardController extends Controller
{
public function index()
{
dd([
'user' => Auth::user(),
'check' => Auth::check(),
'session' => session()->all(),
]);
return view('admin.dashboard');
}
}
AuthenticatedSessionController.php
public function store(LoginRequest $request): RedirectResponse
{
$request->authenticate();
$request->session()->regenerate();
$user = Auth::user();
if ($user->role === 'admin') {
return redirect()->route('admin.dashboard');
}
return redirect()->route('voter.dashboard');
}