findById($id); if (!$model) { return null; } $this->authorizeUnitAccess($model->unit_id); $model->update($data); return $model->fresh(); } public function delete(int $id): bool { $model = $this->findById($id); if (!$model) { return false; } $this->authorizeUnitAccess($model->unit_id); return $model->delete(); } // public function getByUnit(int $unitId): Collection { $this->authorizeUnitAccess($unitId); return UnitInhabitantClassification::where('unit_id', $unitId) ->orderBy('description') ->get(); } public function getSelectList(int $unitId): Collection { return UnitInhabitantClassification::where('unit_id', $unitId) ->orderBy('description') ->get(['id', 'description', 'acronym', 'unit_id']); } // private function authorizeUnitAccess(int $unitId): void { /** @var User $user */ $user = Auth::user(); if ($user->isAdmin()) { return; } $hasUnit = $user->units()->where('units.id', $unitId)->exists(); if (!$hasUnit) { throw new AuthorizationException('Acesso negado: você não tem permissão para esta unidade.'); } } }