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


🔧 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

FiturRekomendasi
Role dinamisGunakan di dashboard admin, jangan hardcode
Gunakan middlewareUntuk keamanan & efisiensi
Buat seeder role-userOtomatiskan di tahap deploy/test
Hindari logic di bladeCek role di controller bila kompleks

🧰 Elektra Network Vision – Spesialis Sistem Login & Role Laravel

Kami bantu:

🌐 elektranetworkvision.com — Mitra Laravel & manajemen sistem akses terbaik di Indonesia.

Leave a Reply

Your email address will not be published. Required fields are marked *