clara/app/Http/Livewire/Permission/PermissionModal.php
Daeng Deni Mardaeni c73ea1b54c update metronic 8.2
2023-09-26 16:51:59 +07:00

81 lines
2.0 KiB
PHP

<?php
namespace App\Http\Livewire\Permission;
use Livewire\Component;
use Spatie\Permission\Models\Permission;
class PermissionModal extends Component
{
public $name;
public Permission $permission;
protected $rules = [
'name' => 'required|string',
];
// This is the list of listeners that this component listens to.
protected $listeners = [
'modal.show.permission_name' => 'mountPermission',
'delete_permission' => 'delete'
];
public function render()
{
return view('livewire.permission.permission-modal');
}
public function mountPermission($permission_name = '')
{
if (empty($permission_name)) {
// Create new
$this->permission = new Permission;
$this->name = '';
return;
}
// Get the role by name.
$permission = Permission::where('name', $permission_name)->first();
if (is_null($permission)) {
$this->emit('error', 'The selected permission [' . $permission_name . '] is not found');
return;
}
$this->permission = $permission;
// Set the name and checked permissions properties to the role's values.
$this->name = $this->permission->name;
}
public function submit()
{
$this->validate();
$this->permission->name = strtolower($this->name);
if ($this->permission->isDirty()) {
$this->permission->save();
}
// Emit a success event with a message indicating that the permissions have been updated.
$this->emit('success', 'Permission updated');
}
public function delete($name)
{
$permission = Permission::where('name', $name)->first();
if (!is_null($permission)) {
$permission->delete();
}
$this->emit('success', 'Permission deleted');
}
public function hydrate()
{
$this->resetErrorBag();
$this->resetValidation();
}
}