si-klinik/sk-klinik.my.id/app/Livewire/Admin/RolePermissions.php

40 lines
1.1 KiB
PHP

<?php
namespace App\Livewire\Admin;
use Livewire\Component;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
use Masmerise\Toaster\Toaster;
class RolePermissions extends Component
{
public Role $role;
public $selectedPermissions = [];
public function mount(Role $role)
{
$this->role = $role;
// Ambil permission yang sudah dimiliki role ini
$this->selectedPermissions = $role->permissions->pluck('name')->toArray();
}
public function save()
{
$this->role->syncPermissions($this->selectedPermissions);
Toaster::success('Hak akses untuk role ' . $this->role->name . ' berhasil diperbarui!');
return redirect()->route('admin.roles'); // Kembali ke daftar role
}
public function render()
{
return view('livewire.admin.role-permissions', [
'allPermissions' => Permission::all()->groupBy(function($perm) {
// Opsional: Kelompokkan berdasarkan kata pertama (misal: 'user-list' jadi group 'user')
return explode('-', $perm->name)[0];
})
]);
}
}