Tujuanis_admin pada tabel users.KonteksPanduan ini cocok untuk aplikasi yang memerlukan sistem perizinan sederhana, sehingga pengguna dengan hak akses admin dapat melakukan tindakan administratif tertentu seperti pengelolaan data atau akses fitur khusus.
Hal yang Diperlukan.env sudah terhubung.User dengan migration tabel users yang berisi kolom is_admin.Langkah-LangkahSTEP 1: Membuat Kolom is_admin di Tabel Users
Pastikan Tabel Users Mengandung Kolom is_admin
Pastikan migration untuk tabel users sudah dibuat, dan tambahkan kolom is_admin seperti berikut:
php
Copy code
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('username')->unique();
$table->string('email')->unique();
$table->bigInteger('phone_number');
$table->string('instansi')->nullable();
$table->string('password');
$table->boolean('is_admin')->default(false); // Kolom untuk peran admin
$table->timestamp('last_activity')->nullable();
$table->rememberToken();
$table->timestamps();
});
is_admin bertipe boolean dengan nilai default false. Ubah nilai ini menjadi true bagi pengguna yang akan memiliki akses admin.Menambahkan Kolom is_admin (Opsional)
Jika tabel sudah ada tanpa kolom is_admin, Anda dapat membuat migration baru untuk menambahkannya:
bash
Copy code
php artisan make:migration add_is_admin_to_users_table --table=users
Di dalam migration baru, tambahkan kolom is_admin:
php
Copy code
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->boolean('is_admin')->default(false)->after('password');
});
}
Kemudian jalankan perintah migrate:
bash
Copy code
php artisan migrate
STEP 2: Menggunakan Middleware untuk Otorisasi
Buat Middleware Baru
Gunakan perintah Artisan untuk membuat middleware yang akan mengelola akses admin:
bash
Copy code
php artisan make:middleware AdminMiddleware
Tambahkan Logika Otorisasi di Middleware
Buka file app/Http/Middleware/AdminMiddleware.php dan tambahkan logika berikut untuk memeriksa status admin pengguna:
php
Copy code
<?php
namespace App\\Http\\Middleware;
use Closure;
use Illuminate\\Support\\Facades\\Auth;
class AdminMiddleware
{
public function handle($request, Closure $next)
{
if (!Auth::check() || !Auth::user()->is_admin) {
return redirect('/'); // Alihkan jika bukan admin
}
return $next($request);
}
}
Logika ini memeriksa apakah pengguna sudah login dan memiliki is_admin = true. Jika tidak, pengguna akan dialihkan ke halaman beranda (/).
Daftarkan Middleware di Kernel
Agar middleware dapat digunakan, daftarkan di app/Http/Kernel.php pada bagian $routeMiddleware:
php
Copy code
protected $routeMiddleware = [
// Middleware lainnya
'admin' => \\App\\Http\\Middleware\\AdminMiddleware::class,
];
STEP 3: Menggunakan Middleware pada Rute Admin
Terapkan Middleware pada Rute
Gunakan middleware admin pada rute atau group rute yang hanya boleh diakses oleh pengguna admin. Tambahkan di file web.php:
php
Copy code
use App\\Http\\Controllers\\AdminController;
Route::middleware(['admin'])->group(function () {
Route::get('/admin/dashboard', [AdminController::class, 'index']);
// Rute lain yang hanya boleh diakses oleh admin
});
Dengan ini, hanya pengguna yang memiliki is_admin = true yang bisa mengakses rute dalam grup ini.
Pengujian Akses Rute Admin:
admin.Kesimpulan
Dengan menggunakan kolom is_admin di tabel users dan middleware AdminMiddleware, aplikasi kini memiliki kontrol akses sederhana namun efektif. Pengguna dengan hak admin dapat mengakses rute administratif, sementara pengguna biasa dibatasi aksesnya.
Documentation