Files
Nexora/app/Livewire/PermissionsList.php
Javi 883daf32ed
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
añadir funicionalidades de permisos y grupos
2025-04-27 23:43:22 +02:00

60 lines
1.6 KiB
PHP

<?php
namespace App\Livewire;
use Livewire\Component;
use Spatie\Permission\Models\Permission;
use App\Models\{User, Group};
class PermissionsList extends Component
{
public $resourceId;
public $resourceType;
public function mount($resourceId)
{
$this->resourceId = $resourceId;
$this->determineResourceType();
}
protected function determineResourceType()
{
if (Project::find($this->resourceId)) {
$this->resourceType = 'project';
} else {
$this->resourceType = 'folder';
}
}
public function getPermissions()
{
return Permission::where('name', 'like', "{$this->resourceType}-{$this->resourceId}-%")
->get()
->groupBy(function ($permission) {
return explode('-', $permission->name)[2]; // Obtener tipo de permiso
});
}
public function revokePermission($permissionId, $modelType, $modelId)
{
$permission = Permission::findOrFail($permissionId);
$model = $modelType === 'user'
? User::find($modelId)
: Group::find($modelId);
$model->revokePermissionTo($permission);
$this->dispatch('permissionsUpdated');
}
public function render()
{
return view('livewire.permissions-list', [
'permissions' => $this->getPermissions(),
'users' => User::withPermissionsForResource($this->resourceId, $this->resourceType)->get(),
'groups' => Group::withPermissionsForResource($this->resourceId, $this->resourceType)->get()
]);
}
}