'required|min:3|unique:permissions,name', ]; public function render() { return view('livewire.admin.permission-manager', [ 'permissions' => Permission::where('name', 'like', '%' . $this->search . '%') ->latest() ->paginate(10) ]); } public function create() { $this->reset(['name', 'permissionId']); $this->isModalOpen = true; } public function edit(Permission $permission) { $this->permissionId = $permission->id; $this->name = $permission->name; $this->isModalOpen = true; } public function save() { $validationRules = $this->permissionId ? ['name' => 'required|min:3|unique:permissions,name,' . $this->permissionId] : $this->rules; $this->validate($validationRules); Permission::updateOrCreate(['id' => $this->permissionId], [ 'name' => $this->name, 'guard_name' => 'web' ]); $pesan = $this->permissionId ? 'Permission berhasil diperbarui!' : 'Permission baru berhasil ditambahkan!'; Toaster::success($pesan); $this->isModalOpen = false; $this->reset(['name', 'permissionId']); } public function delete(Permission $permission) { // Opsional: Proteksi permission krusial agar tidak terhapus $protectedPermissions = ['role-list', 'role-create', 'permission-list']; if (in_array($permission->name, $protectedPermissions)) { Toaster::error('Permission ini dilindungi sistem dan tidak boleh dihapus!'); return; } $permission->delete(); Toaster::error('Permission telah dihapus.'); } }