Having problem with Laravel 9. Simple website is working fine. But when I access admin panel I get this error after logging in .I want to create 2 pages, namely the admin and user pages, but I am having problems with routes that are not readable
AuthController
public function loginAksi(Request $req)
{
if ($req->email == null or $req->password == null) {
return redirect()->back()->with(['error' => 'Masukkan Email atau Password !']);
} else {
if (Auth::attempt([ 'email' => $req->email, 'password' => $req->password ])) {
$user = Auth::user();
if($user->level == 1){
return redirect()->route('admin');
} else {
return redirect()->route('user');
}
} else {
return redirect()->back()->with(['error' => 'Login Gagal !']);
}
}
}
Tampilan Route Saya web.php
Route::get('welcome', function () {
return view('welcome');
});
Route::controller(AuthController::class)->group(function () {
Route::get('login', 'login')->name('login');
Route::post('login', 'loginAksi')->name('login.aksi');
Route::get('logout', 'logout')->middleware('auth')->name('logout');
});
Route::middleware('auth')->group(function () {
Route::middleware(['admin'])->group(function(){
Route::get('', [DashboardController::class, 'index'])->name('admin.dashboard');
Route::controller(IbuController::class)->prefix('users')->group(function () {
Route::get('', 'index')->name('ibu');
Route::get('tambah', 'tambah')->name('admin.ibu.tambah');
Route::post('tambah', 'store')->name('admin.ibu.store');
Route::get('edit/{id}', 'edit')->name('admin.ibu.edit');
Route::post('edit/{id}', 'update')->name('admin.ibu.update');
Route::get('hapus/{id}', 'hapus')->name('admin.ibu.hapus');
});
});
Route::middleware(['user'])->group(function(){
Route::get('user', function (){
return view('user.dashboard');
})->name('user');
});
});
can anyone help me solve this?
The "target class [class
] does not exist" is the error message thrown when a middleware by alias is not found. This means that this line Route::middleware(['admin'])->group(function(){
is referencing an alias that simply is not defined in the Kernel.
You can add this alias by adding your alias to the $routeMiddleware
property in the App\Http\Kernel.php
(as stated in the docs):
protected $routeMiddleware = [
//
'admin' => YourMiddlewareClass::class,
];
However, as @aceraven777 stated, you'll probably get a follow-up exception seeing as there's no route defined named 'admin'.
As per @wruckie's comment, in Laravel 11 the Kernel no longer exists.
Middleware should instead be placed in the bootstrap/app.php
file, within the withMiddleware
function like so:
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'admin' => YourMiddlewareClass::class,
]);
}
See docs