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.