'required|min:3|unique:roles,name', ]; public function render() { return view('livewire.admin.role-manager', [ 'roles' => Role::where('name', 'like', '%' . $this->search . '%') ->latest() ->paginate(10) ]); } public function create() { $this->reset(['name', 'roleId']); $this->isModalOpen = true; } public function edit(Role $role) { $this->roleId = $role->id; $this->name = $role->name; $this->isModalOpen = true; } public function save() { $validationRules = $this->roleId ? ['name' => 'required|min:3|unique:roles,name,' . $this->roleId] : $this->rules; $this->validate($validationRules); Role::updateOrCreate(['id' => $this->roleId], [ 'name' => $this->name, 'guard_name' => 'web' // Default guard ]); $pesan = $this->roleId ? 'Role berhasil diperbarui!' : 'Role baru berhasil ditambahkan!'; Toaster::success($pesan); $this->isModalOpen = false; $this->reset(['name', 'roleId']); } public function delete(Role $role) { $protectedRoles = ['admin', 'Admin', 'super-admin']; if (in_array($role->name, $protectedRoles)) { Toaster::error('Role ini adalah role sistem dan tidak boleh dihapus!'); return; } $role->delete(); Toaster::error('Role telah dihapus permanen.'); } }