karya solusi digital

Cara Membuat Multiple Auth di Laravel 11

Admin
Admin 18 Aug 2024

Cara Membuat Multiple Auth di Laravel 11

Laravel adalah framework PHP yang sangat populer dan banyak digunakan untuk membangun aplikasi web. Salah satu fitur yang sangat berguna di Laravel adalah kemampuan untuk mengatur autentikasi (auth) yang kompleks, termasuk multiple auth untuk berbagai jenis pengguna dalam satu aplikasi. Dalam artikel ini, kita akan membahas cara membuat multiple auth di Laravel 11.

Langkah 1: Install Laravel 11

Pertama-tama, pastikan Anda sudah menginstall Laravel 11 di sistem Anda. Jika belum, Anda bisa menginstallnya dengan perintah berikut:

composer create-project --prefer-dist laravel/laravel project-name

Setelah proses instalasi selesai, masuk ke direktori proyek:

cd project-name

Langkah 2: Buat Model dan Migrations

Misalkan Anda ingin membuat dua jenis pengguna: Admin dan User. Kita mulai dengan membuat model dan migration untuk Admin:

php artisan make:model Admin -m

Ini akan membuat model Admin dan file migration. Selanjutnya, buka file migration yang baru saja dibuat di database/migrations/ dan tambahkan struktur tabel:

Schema::create('admins', function (Blueprint $table) {
    $table->id();
    $table->string('name');
    $table->string('email')->unique();
    $table->timestamp('email_verified_at')->nullable();
    $table->string('password');
    $table->rememberToken();
    $table->timestamps();
});

Lalu jalankan migrasi:

php artisan migrate

Langkah 3: Setup Guard di auth.php

Selanjutnya, kita perlu mengatur guard untuk Admin dan User di file konfigurasi config/auth.php.

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],
    'admin' => [
        'driver' => 'session',
        'provider' => 'admins',
    ],
],

'providers' => [
    'users' => [
        'driver' => 'eloquent',
        'model' => App\Models\User::class,
    ],

    'admins' => [
        'driver' => 'eloquent',
        'model' => App\Models\Admin::class,
    ],
],

Langkah 4: Buat Middleware

Untuk memastikan bahwa hanya pengguna yang terautentikasi yang bisa mengakses halaman tertentu, kita akan membuat middleware khusus untuk admin.

php artisan make:middleware AdminMiddleware

Di dalam AdminMiddleware, tambahkan logika untuk memeriksa apakah pengguna sudah login sebagai admin:

public function handle(Request $request, Closure $next)
{
    if (!auth()->guard('admin')->check()) {
        return redirect('/login/admin');
    }
    return $next($request);

}

Selanjutnya, daftarkan middleware ini di app/Http/Kernel.php:

protected $routeMiddleware = [

    // middleware lainnya

    'admin' => \App\Http\Middleware\AdminMiddleware::class,

];

Langkah 5: Buat Route dan Controller

Selanjutnya, buat route dan controller untuk admin. Kita mulai dengan membuat controller:

php artisan make:controller AdminController

Tambahkan route di file routes/web.php:

Route::prefix('admin')->group(function () {
    Route::get('/login', [AdminController::class, 'showLoginForm'])->name('admin.login');
    Route::post('/login', [AdminController::class, 'login']);
    Route::middleware('admin')->group(function () {
        Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('admin.dashboard');
    });

});

Langkah 6: Buat View untuk Login Admin

Buat file view resources/views/admin/login.blade.php untuk form login admin:

<form method="POST" action="{{ route('admin.login') }}">
    @csrf
    <div class="form-group">
        <label for="email">Email address</label>
        <input type="email" class="form-control" id="email" name="email" required autofocus>
    </div>
    <div class="form-group">
        <label for="password">Password</label>
        <input type="password" class="form-control" id="password" name="password" required>
    </div>
    <button type="submit" class="btn btn-primary">Login</button>
</form>

Langkah 7: Logika Login di Controller

Tambahkan logika untuk login di AdminController:

public function showLoginForm()
{
    return view('admin.login');
}

public function login(Request $request)
{
    $credentials = $request->only('email', 'password');
    if (auth()->guard('admin')->attempt($credentials)) {
        return redirect()->intended(route('admin.dashboard'));
    }
    return back()->withErrors(['email' => 'Email atau password salah.']);
}

public function dashboard()
{
    return view('admin.dashboard');
}

Langkah 8: Testing

Sekarang, Anda dapat mengakses login admin di /admin/login. Setelah login, Anda akan diarahkan ke dashboard admin.

Penutup

Itulah cara membuat multiple auth di Laravel 11. Anda bisa mengimplementasikan lebih banyak guard jika diperlukan untuk berbagai jenis pengguna lainnya. Laravel memberikan fleksibilitas yang luar biasa dalam hal autentikasi, memungkinkan Anda untuk membangun sistem yang kompleks dengan mudah.

Semoga artikel ini bermanfaat dan membantu Anda dalam mengembangkan aplikasi Laravel yang lebih aman dan terstruktur.