2025-03-05 20:28:54 -06:00

62 lines
1.4 KiB
PHP

<?php
namespace Koneko\VuexyAdmin\Livewire\Roles;
use Livewire\Component;
use Livewire\WithPagination;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
class RoleIndex extends Component
{
use WithPagination;
public $roleName;
public $selectedRole;
public $permissions = [];
public $availablePermissions;
public function mount()
{
$this->availablePermissions = Permission::all();
}
public function createRole()
{
$this->validate([
'roleName' => 'required|unique:roles,name'
]);
$role = Role::create(['name' => $this->roleName]);
$this->reset(['roleName']);
session()->flash('message', 'Rol creado con éxito.');
}
public function selectRole($roleId)
{
$this->selectedRole = Role::find($roleId);
$this->permissions = $this->selectedRole->permissions->pluck('id')->toArray();
}
public function updateRolePermissions()
{
if ($this->selectedRole) {
$this->selectedRole->syncPermissions($this->permissions);
session()->flash('message', 'Permisos actualizados correctamente.');
}
}
public function deleteRole($roleId)
{
Role::find($roleId)->delete();
session()->flash('message', 'Rol eliminado.');
}
public function render()
{
return view('livewire.roles', [
'index' => Role::paginate(10)
]);
}
}