Mengatur hak akses pengguna sangat krusial pada sistem seperti ERP, POS, e-commerce admin, hingga manajemen sekolah. Dengan package Spatie Laravel Permission, kamu bisa dengan mudah membuat dan mengatur role serta permission secara dinamis.
🎯 Tujuan Part 7
- Mengatur level akses: admin, kasir, user
- Memberi role & permission ke user
- Proteksi halaman & aksi berdasarkan role
- Middleware role/permission
🔧 1. Install Spatie Laravel Permission
Jalankan di terminal:
composer require spatie/laravel-permission
Publikasikan migration & config:
php artisan vendor:publish --provider="Spatie\Permission\PermissionServiceProvider"
php artisan migrate
⚙️ 2. Setup Model User
Edit file app/Models/User.php
:
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use HasRoles;
}
🔨 3. Tambahkan Role ke User
a. Tambah Role Manual (di Tinker)
php artisan tinker
use Spatie\Permission\Models\Role;
Role::create(['name' => 'admin']);
Role::create(['name' => 'kasir']);
Role::create(['name' => 'user']);
b. Assign Role ke User
$user = \App\Models\User::find(1);
$user->assignRole('admin');
🛑 4. Proteksi Route Berdasarkan Role
Contoh: hanya admin
yang bisa akses halaman produk.
Route::group(['middleware' => ['role:admin']], function () {
Route::resource('produk', ProdukController::class);
});
Atau langsung:
Route::get('/admin-only', function () {
return 'Hanya admin bisa lihat ini';
})->middleware('role:admin');
🔐 5. Cek Role di Blade View
@role('admin')
<a href="/produk">Kelola Produk</a>
@endrole
@hasanyrole('admin|kasir')
<p>Halaman kasir atau admin</p>
@endhasanyrole
🔧 6. Permission Khusus (Opsional)
a. Tambahkan Permission:
use Spatie\Permission\Models\Permission;
Permission::create(['name' => 'edit produk']);
b. Assign ke role:
$role = Role::findByName('admin');
$role->givePermissionTo('edit produk');
c. Middleware berdasarkan permission:
Route::get('/produk/edit', [ProdukController::class, 'edit'])->middleware('permission:edit produk');
🧠 Best Practice Role & Akses
Fitur | Rekomendasi |
---|---|
Role dinamis | Gunakan di dashboard admin, jangan hardcode |
Gunakan middleware | Untuk keamanan & efisiensi |
Buat seeder role-user | Otomatiskan di tahap deploy/test |
Hindari logic di blade | Cek role di controller bila kompleks |
🧰 Elektra Network Vision – Spesialis Sistem Login & Role Laravel
Kami bantu:
- Sistem role & permission Laravel skala bisnis
- Otorisasi dinamis admin/karyawan/pelanggan
- Audit akses & kontrol multi level
🌐 elektranetworkvision.com — Mitra Laravel & manajemen sistem akses terbaik di Indonesia.