diff --git a/app/Http/Controllers/ProjectReportController.php b/app/Http/Controllers/ProjectReportController.php index 3c91c0d..5f23411 100644 --- a/app/Http/Controllers/ProjectReportController.php +++ b/app/Http/Controllers/ProjectReportController.php @@ -10,7 +10,7 @@ class ProjectReportController extends Controller public function show(Project $project) { $user = Auth::user(); - if (!$user->hasRole('Admin') && !$project->users()->where('user_id', $user->id)->exists()) { + if (!$user->can('manage all') && !$project->users()->where('user_id', $user->id)->exists()) { abort(403); } diff --git a/app/Livewire/AdminUsers.php b/app/Livewire/AdminUsers.php index 40f21e7..af19670 100644 --- a/app/Livewire/AdminUsers.php +++ b/app/Livewire/AdminUsers.php @@ -14,7 +14,7 @@ class AdminUsers extends Component public function mount(): void { - if (!Auth::user()->hasRole('Admin')) abort(403); + abort_unless(Auth::user()->can('view users'), 403); $this->roles = Role::orderBy('name')->get(); } diff --git a/app/Livewire/CompanyView.php b/app/Livewire/CompanyView.php index 163d0de..4f37b5a 100644 --- a/app/Livewire/CompanyView.php +++ b/app/Livewire/CompanyView.php @@ -37,7 +37,7 @@ class CompanyView extends Component public function mount(Company $company): void { - if (!Auth::user()->hasRole('Admin')) abort(403); + abort_unless(Auth::user()->can('view companies'), 403); $this->company = $company->load(['users.roles', 'projects.phases']); $this->notes = $company->notes ?? ''; diff --git a/app/Livewire/LayerManager.php b/app/Livewire/LayerManager.php index 5123f13..e541dc8 100644 --- a/app/Livewire/LayerManager.php +++ b/app/Livewire/LayerManager.php @@ -43,7 +43,7 @@ class LayerManager extends Component if ($this->phase->project_id !== $this->project->id) abort(404); $user = Auth::user(); - if (!$user->hasRole('Admin') && !$project->users()->where('user_id', $user->id)->exists()) { + if (!$user->can('manage all') && !$project->users()->where('user_id', $user->id)->exists()) { abort(403); } @@ -148,7 +148,7 @@ class LayerManager extends Component public function importFile() { $user = Auth::user(); - if (!$user->can('upload layers') && !$user->hasRole('Admin')) { + if (!$user->can('upload layers')) { $this->dispatch('notify', 'Sin permisos para subir capas'); return; } @@ -228,7 +228,7 @@ class LayerManager extends Component public function createEmptyLayer() { $user = Auth::user(); - if (!$user->can('upload layers') && !$user->hasRole('Admin')) { + if (!$user->can('upload layers')) { $this->dispatch('notify', 'Sin permisos para crear capas'); return; } @@ -308,7 +308,7 @@ class LayerManager extends Component public function deleteLayer($layerId) { $user = Auth::user(); - if (!$user->can('delete layers') && !$user->hasRole('Admin')) abort(403); + if (!$user->can('delete layers')) abort(403); // Verify it belongs to this phase (prevents cross-project deletion) $layer = Layer::where('id', $layerId)->where('phase_id', $this->phase->id)->first(); diff --git a/app/Livewire/MediaManager.php b/app/Livewire/MediaManager.php index b5a010f..565a2f7 100644 --- a/app/Livewire/MediaManager.php +++ b/app/Livewire/MediaManager.php @@ -65,7 +65,7 @@ class MediaManager extends Component public function upload() { $user = Auth::user(); - if (!$user->can('upload layers') && !$user->hasRole('Admin')) { + if (!$user->can('upload layers')) { session()->flash('error', 'Sin permisos.'); return; } @@ -130,7 +130,7 @@ class MediaManager extends Component $media = Media::findOrFail($mediaId); $user = Auth::user(); - if (!$user->hasRole('Admin') && $media->uploaded_by !== $user->id) { + if (!$user->can('delete media') && $media->uploaded_by !== $user->id) { session()->flash('error', 'No puedes borrar archivos de otro usuario.'); return; } diff --git a/app/Livewire/PhaseGantt.php b/app/Livewire/PhaseGantt.php index ce997d3..2862b03 100644 --- a/app/Livewire/PhaseGantt.php +++ b/app/Livewire/PhaseGantt.php @@ -14,7 +14,7 @@ class PhaseGantt extends Component public function mount(Project $project) { $user = Auth::user(); - if (!$user->hasRole('Admin') && !$project->users()->where('user_id', $user->id)->exists()) { + if (!$user->can('manage all') && !$project->users()->where('user_id', $user->id)->exists()) { abort(403); } $this->project = $project; diff --git a/app/Livewire/ProjectCompanies.php b/app/Livewire/ProjectCompanies.php index 68d2f76..2e96b87 100644 --- a/app/Livewire/ProjectCompanies.php +++ b/app/Livewire/ProjectCompanies.php @@ -31,7 +31,7 @@ class ProjectCompanies extends Component public function assignCompany() { $user = Auth::user(); - if (!$user->can('assign users') && !$user->hasRole('Admin')) { + if (!$user->can('assign users')) { session()->flash('error', 'No tienes permisos para asignar compañías.'); return; } @@ -53,7 +53,7 @@ class ProjectCompanies extends Component public function removeCompany($companyId) { $user = Auth::user(); - if (!$user->can('assign users') && !$user->hasRole('Admin')) { + if (!$user->can('assign users')) { session()->flash('error', 'Sin permisos.'); return; } diff --git a/app/Livewire/ProjectDashboard.php b/app/Livewire/ProjectDashboard.php index b50795f..a4d84ff 100644 --- a/app/Livewire/ProjectDashboard.php +++ b/app/Livewire/ProjectDashboard.php @@ -34,7 +34,7 @@ class ProjectDashboard extends Component private function checkAccess(): void { $user = Auth::user(); - if ($user->hasRole('Admin')) return; + if ($user->can('manage all')) return; if (!$this->project->users()->where('user_id', $user->id)->exists()) abort(403); } diff --git a/app/Livewire/ProjectMap.php b/app/Livewire/ProjectMap.php index bd0459f..ed4886b 100644 --- a/app/Livewire/ProjectMap.php +++ b/app/Livewire/ProjectMap.php @@ -96,7 +96,7 @@ class ProjectMap extends Component private function authorizeProjectAccess(): void { $user = Auth::user(); - if ($user->hasRole('Admin')) return; + if ($user->can('manage all')) return; if (!$this->project->users()->where('user_id', $user->id)->exists()) abort(403); } @@ -184,7 +184,7 @@ class ProjectMap extends Component { $feature = Feature::with('layer.phase')->findOrFail($featureId); $user = Auth::user(); - if (!$user->can('update progress') && !$user->hasRole('Admin')) { + if (!$user->can('update progress')) { $this->dispatch('notify', 'Sin permisos'); return; } diff --git a/app/Livewire/ProjectUsers.php b/app/Livewire/ProjectUsers.php index ab0a0a5..7cd588d 100644 --- a/app/Livewire/ProjectUsers.php +++ b/app/Livewire/ProjectUsers.php @@ -31,7 +31,7 @@ class ProjectUsers extends Component public function assignUser() { $user = Auth::user(); - if (!$user->can('assign users') && !$user->hasRole('Admin')) { + if (!$user->can('assign users')) { session()->flash('error', 'No tienes permisos para asignar usuarios.'); return; } @@ -53,7 +53,7 @@ class ProjectUsers extends Component public function removeUser($userId) { $user = Auth::user(); - if (!$user->can('assign users') && !$user->hasRole('Admin')) { + if (!$user->can('assign users')) { session()->flash('error', 'Sin permisos.'); return; } diff --git a/app/Livewire/UserForm.php b/app/Livewire/UserForm.php index ce98349..74da087 100644 --- a/app/Livewire/UserForm.php +++ b/app/Livewire/UserForm.php @@ -45,7 +45,7 @@ class UserForm extends Component public function mount(?User $user = null): void { - if (!Auth::user()->hasRole('Admin')) abort(403); + abort_unless(Auth::user()->can('create users') || Auth::user()->can('edit users'), 403); $this->roles = Role::orderBy('name')->get(); $this->companies = Company::where('estado', 'activo')->orderBy('name')->get(); diff --git a/app/Livewire/UserView.php b/app/Livewire/UserView.php index f1ae3d3..98d6182 100644 --- a/app/Livewire/UserView.php +++ b/app/Livewire/UserView.php @@ -33,7 +33,7 @@ class UserView extends Component public function mount(User $user): void { - if (!Auth::user()->hasRole('Admin')) abort(403); + abort_unless(Auth::user()->can('view users'), 403); $this->user = $user->load(['roles', 'company', 'projects.phases']); $this->notes = $user->notes ?? ''; diff --git a/app/Models/Project.php b/app/Models/Project.php index cb44fba..2937095 100644 --- a/app/Models/Project.php +++ b/app/Models/Project.php @@ -66,7 +66,7 @@ class Project extends Model // Scope to filter accessible projects for non-admin users public function scopeAccessibleBy($query, User $user) { - if ($user->hasRole('Admin')) { + if ($user->can('manage all')) { return $query; } return $query->whereHas('users', function ($q) use ($user) {