You need to actually import the classes in routes
So use it at the top, and remove quotes
use App\Http\Controllers\AdminController;
Route::controller(AdminController::class)
Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.
Hello,
I have AdminController and SupervisorController in Controllers folder. And I am still receiving class doesn;t exist error. Also, I am not able to log in with both users. It returns the dashboard page with 404 Not Found
My code snippets are given below:
AdminController
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\User;
class AdminController extends Controller
{
public function admindashboard()
{
return view('admin.index');
}
public function destroy(Request $request)
{
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
public function profile()
{
$id = Auth::user()->id;
$adminData = User::find($id);
return view('admin.admin_profile_view', compact('adminData'));
}
}
SupervisorController
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class SupervisorController extends Controller
{
public function supervisordashboard()
{
return view('supervisor.supervisor_dashboard');
}
public function destroy(Request $request)
{
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/login');
}
}
Routes:
// Admin Routes
Route::controller('AdminController::class')->middleware(['auth', 'role:Admin'])->prefix('admin')->group(function () {
Route::get('/dashboard', 'admindashboard')->name('admin.dashboard');
Route::get('/logout', 'destroy')->name('admin.logout');
Route::get('/profile', 'profile')->name('admin.profile');
});
//Supervisor Routes
Route::controller('SupervisorController::class')->middleware(['auth', 'role:Supervisor'])->prefix('supervisor')->group(function () {
Route::get('/dashboard', 'supervisordashboard');
Route::get('/logout', 'destroy');
});
RoleMiddleware:
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class RoleMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function handle(Request $request, Closure $next, $role)
{
if ($request->user()->role !== $role ) {
return redirect('/');
}
return $next($request);
}
}
AuthenticatedSessionController
<?php
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AuthenticatedSessionController extends Controller
{
/**
* Display the login view.
*
* @return \Illuminate\View\View
*/
public function create()
{
return view('auth.login');
}
/**
* Handle an incoming authentication request.
*
* @param \App\Http\Requests\Auth\LoginRequest $request
* @return \Illuminate\Http\RedirectResponse
*/
public function store(LoginRequest $request)
{
$request->authenticate();
$request->session()->regenerate();
$url = '';
if ($request->user()->role === 'Admin') {
$url = 'admin/dashboard';
} elseif ($request->user()->role === 'Supervisor') {
$url = 'supervisor/dashboard';
} elseif ($request->user()->role === 'Accountant') {
$url = 'accountant/dashboard';
}
return redirect()->intended($url);
}
/**
* Destroy an authenticated session.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\RedirectResponse
*/
public function destroy(Request $request)
{
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
}
Your help in this regard is highly appreciated.
You need to actually import the classes in routes
So use it at the top, and remove quotes
use App\Http\Controllers\AdminController;
Route::controller(AdminController::class)
Please or to participate in this conversation.