hasRole('ROLE_ADMIN') || $clinic->getUser()->getId() === $user->getId()) { return true; } $doctor = $this->doctorRepo->findByUser($user); if ($doctor === null || !$clinic->hasDoctor($doctor)) { return false; } return $this->permRepo->getOrCreate($clinic, $doctor)->can($resource, $action); } public function assert(User $user, Clinic $clinic, string $resource, string $action): void { if (!$this->can($user, $clinic, $resource, $action)) { throw new AppException(ErrorCodes::ERR_ACCESS_DENIED, 'دسترسی ندارید', 403); } } }