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

  1. Saat login sebagai admin kenapa muncul error : Target class [admin] does not exist. pada halaman http://127.0.0.1:8000/admin/dashboard
  2. 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;
    }
avatar tegarkusuma_google_7086
@tegarkusuma_google_7086

2 Kontribusi 1 Poin

Diperbarui 8 bulan yang lalu

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,
        ],
    ],

avatar tegarkusuma_google_7086
@tegarkusuma_google_7086

2 Kontribusi 1 Poin

Dipost 8 bulan yang lalu

Tanggapan

terima kasih sudah sharing. Silahkan ditandai sebagai jawaban benar. Bisa membantu untuk orang yang mengalami masalah sama.

Login untuk ikut Jawaban