Postingan lainnya
Buku Ini Koding!
Baru!
Buku ini akan jadi teman perjalanan kamu belajar sampai dapat kerjaan di dunia programming!
Masalah Autentikasi Laravel
Saya buat aplikasi kasir menggunakan Laravel. Aplikasi memiliki 2 jenis pengguna yaitu Admin dan Petugas. Saya ingin bila Admin maka masuk ke dashboard.admin dan petugas masuk ke dashboard.petugas.
Masalah Error
- Saat login sebagai admin kenapa muncul error : Target class [admin] does not exist. pada halaman http://127.0.0.1:8000/admin/dashboard
- Saat login sebagai admin kenapa muncul error : Target class [petugas] does not exist. pada halaman http://127.0.0.1:8000/petugas/dashboard
Apakah karena routing yang salah? Saya yakin penggunaan namespace sudah benar
Route::get('/login', [AuthController::class, 'index'])->name('login')->middleware('guest');
Route::post('/login/do', [AuthController::class, 'doLogin'])->middleware('guest');
Route::get('/logout', [AuthController::class, 'logout'])->middleware('auth');
Route::get('/petugas/login', [AuthController::class, 'petugasIndex'])->name('petugas.login');
Route::post('/petugas/login/do', [AuthController::class, 'petugasDoLogin'])->name('petugas.login.do');
Route::get('/', function () {
if (Auth::guard('web')->check()) {
return redirect()->route('admin.dashboard');
} elseif (Auth::guard('petugas')->check()) {
return redirect()->route('petugas.dashboard');
} else {
return redirect()->route('login');
}
})->name('home')->middleware('auth');
Route::prefix('admin')->middleware(['auth', 'role:admin'])->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index'])->name('admin.dashboard');
});
Route::prefix('petugas')->middleware(['auth', 'role:petugas'])->group(function () {
Route::get('/dashboard', [DashboardController::class, 'petugasIndex'])->name('petugas.dashboard');
});
atau apakah karena kesalahan pada middleware auth ?
protected function redirectTo($request)
{
if (!$request->expectsJson() && !$request->routeIs('login')) {
// Jika pengguna bukan dalam mode JSON dan tidak mengakses halaman login
if ($request->routeIs('admin.*')) {
// Jika pengguna sedang mengakses route admin, arahkan ke halaman login admin
return route('login');
} elseif ($request->routeIs('petugas.*')) {
// Jika pengguna sedang mengakses route petugas, arahkan ke halaman login petugas
return route('petugas.login');
} else {
// Untuk route selain admin dan petugas, arahkan ke halaman login default
return route('login');
}
}
return null;
}
1 Jawaban:
Sudah selesai masalahnya, masalahnya ada pada config/auth.php. belum menambahkan providers dan guards
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'admin' => [
'driver' => 'session',
'provider' => 'users',
],
'petugas' => [
'driver' => 'session',
'provider' => 'petugas',
],
],
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'petugas' => [
'driver' => 'eloquent',
'model' => App\Models\Petugas::class,
],
],
Tanggapan
terima kasih sudah sharing. Silahkan ditandai sebagai jawaban benar. Bisa membantu untuk orang yang mengalami masalah sama.