/** * @param OnClearEventArgs $event * @param OrganizationContextTokenInterface $token */ protected function checkOrganization(OnClearEventArgs $event, OrganizationContextTokenInterface $token) { $organization = $token->getOrganizationContext(); if (!is_object($organization)) { return; } $organizationClass = ClassUtils::getClass($organization); if ($event->getEntityClass() && $event->getEntityClass() !== $organizationClass) { return; } $em = $event->getEntityManager(); if ($em !== $this->doctrine->getManagerForClass($organizationClass)) { return; } $organization = $this->refreshEntity($organization, $organizationClass, $em); if (!$organization) { return; } $token->setOrganizationContext($organization); }
/** * @param mixed $organization * @param OrganizationContextTokenInterface $token * @throws \InvalidArgumentException */ protected function setOrganization($organization, OrganizationContextTokenInterface $token) { if (!$organization) { return; } $organizationRepository = $this->registry->getRepository('OroOrganizationBundle:Organization'); $organizationId = filter_var($organization, FILTER_VALIDATE_INT); if ($organizationId) { $organizationEntity = $organizationRepository->find($organizationId); } else { $organizationEntity = $organizationRepository->findOneBy(['name' => $organization]); } if ($organizationEntity) { // organization must be enabled if (!$organizationEntity->isEnabled()) { throw new \InvalidArgumentException(sprintf('Organization %s is not enabled', $organizationEntity->getName())); } $user = $token->getUser(); if ($user && $user instanceof User && !$user->hasOrganization($organizationEntity)) { throw new \InvalidArgumentException(sprintf('User %s is not in organization %s', $user->getUsername(), $organizationEntity->getName())); } $token->setOrganizationContext($organizationEntity); } else { throw new \InvalidArgumentException(sprintf('Can\'t find organization with identifier %s', $organization)); } }
public function testOrganization() { $organization = new Organization(2); $this->token->setOrganizationContext($organization); $this->assertSame($organization, $this->token->getOrganizationContext()); }