/** * @depends testCreate * @param integer $id * @return array */ public function testGet($id) { $result = $this->soapClient->getPartner($id); $partner = $this->valueToArray($result); $this->assertArrayIntersectEquals(['id' => $id, 'partnerCondition' => $this->partnerCreateData['partnerCondition'], 'status' => $this->partnerCreateData['status'], 'account' => $this->getReference('orocrm_partner:test_account_1')->getId(), 'owner' => $this->adminUser->getId()], $partner); $this->assertArrayHasKey('startDate', $partner); $this->assertNotEmpty($partner['startDate']); return $partner; }
/** * Returns true if passed user is currently authenticated * * @param User $user * @return bool */ protected function isCurrentUser(User $user) { $token = $this->security->getToken(); $currentUser = $token ? $token->getUser() : null; if ($user->getId() && is_object($currentUser)) { return $currentUser->getId() == $user->getId(); } return false; }
public function testGetPermissionsWithEntities() { $this->client->request('GET', $this->getUrl('oro_api_get_user_permissions', ['id' => $this->user->getId(), 'entities' => 'Oro\\Bundle\\UserBundle\\Entity\\User'])); $result = $this->getJsonResponseContent($this->client->getResponse(), 200); $this->assertCount(1, $result, "Result should contains only permissions for one entity"); $this->client->request('GET', $this->getUrl('oro_api_get_user_permissions', ['id' => $this->user->getId(), 'entities' => implode(',', ['user', 'Oro\\Bundle\\OrganizationBundle\\Entity\\Organization'])])); $result = $this->getJsonResponseContent($this->client->getResponse(), 200); $this->assertCount(2, $result, "Result should contains only permissions for two entities"); }
/** * @depends testPost * @param integer $id * @return array */ public function testGet($id) { $this->client->request('GET', $this->getUrl('orocrm_partner_api_get_partner', ['id' => $id]), [], [], $this->generateWsseAuthHeader()); $partner = $this->getJsonResponseContent($this->client->getResponse(), 200); $this->assertArrayIntersectEquals(['partnerCondition' => $this->partnerPostData['partnerCondition'], 'status' => $this->partnerPostData['status'], 'account' => $this->partnerPostData['account'], 'owner' => $this->adminUser->getId()], $partner); $this->assertArrayHasKey('startDate', $partner); $this->assertNotEmpty($partner['startDate']); $this->assertArrayHasKey('id', $partner); $this->assertGreaterThan(0, $partner['id']); return $partner; }
/** * Assign new assignee (User) to ticket * @param OroUser $newAssignee * @return void */ public function assign(OroUser $newAssignee) { if (is_null($this->assignee) || $newAssignee->getId() != $this->assignee->getId()) { $this->processAssign($newAssignee); $this->raise(new TicketAssigneeWasChanged($this->uniqueId, $this->subject, $this->getAssigneeFullName())); } }
/** * @param User $currentUser * @param GridView $gridView * * @return string */ protected function createGridViewLabel(User $currentUser, GridView $gridView) { if ($gridView->getOwner()->getId() === $currentUser->getId()) { return $gridView->getName(); } return $this->translator->trans('oro.datagrid.gridview.shared_by', ['%name%' => $gridView->getName(), '%owner%' => $gridView->getOwner()->getUsername()]); }
/** * Build business units tree for user page * * @param User $user * @return array */ public function getBusinessUnitsTree(User $user = null) { $businessUnits = $this->createQueryBuilder('businessUnit')->select(array('businessUnit.id', 'businessUnit.name', 'IDENTITY(businessUnit.owner) parent')); if ($user && $user->getId()) { $units = $user->getBusinessUnits()->map(function (BusinessUnit $businessUnit) { return $businessUnit->getId(); }); $units = $units->toArray(); if ($units) { $businessUnits->addSelect('CASE WHEN businessUnit.id IN (:userUnits) THEN 1 ELSE 0 END as hasUser'); $businessUnits->setParameter(':userUnits', $units); } } $businessUnits = $businessUnits->getQuery()->getArrayResult(); $children = array(); foreach ($businessUnits as &$businessUnit) { $parent = $businessUnit['parent'] ?: 0; $children[$parent][] =& $businessUnit; } unset($businessUnit); foreach ($businessUnits as &$businessUnit) { if (isset($children[$businessUnit['id']])) { $businessUnit['children'] = $children[$businessUnit['id']]; } } unset($businessUnit); if (isset($children[0])) { $children = $children[0]; } return $children; }
/** * @return int|null */ public function getDefaultAssigneeId() { if (is_null($this->defaultAssignee)) { return null; } return $this->defaultAssignee->getId(); }
/** * @param Crawler $crawler * @param User $owner */ protected function assertOrderSave(Crawler $crawler, User $owner) { $form = $crawler->selectButton('Save and Close')->form(['orob2b_order_type[owner]' => $owner->getId()]); $this->client->followRedirects(true); $crawler = $this->client->submit($form); $result = $this->client->getResponse(); $this->assertHtmlResponseStatusCodeEquals($result, 200); $html = $crawler->html(); $this->assertContains('Order has been saved', $html); $this->assertViewPage($crawler, $owner); }
/** * @param User $user * @param Organization $organization * @param array $folderTypes * @param bool $isSeen * @return array */ public function getEmailUserList(User $user, Organization $organization, array $folderTypes = [], $isSeen = null) { $qb = $this->createQueryBuilder('eu'); $qb->join('eu.folders', 'f')->join('f.origin', 'o')->andWhere($qb->expr()->eq('eu.owner', $user->getId()))->andWhere($qb->expr()->eq('eu.organization', $organization->getId()))->andWhere($qb->expr()->eq('o.isActive', ':active'))->setParameter('active', true); if ($folderTypes) { $qb->andWhere($qb->expr()->in('f.type', $folderTypes)); } if ($isSeen !== null) { $qb->andWhere($qb->expr()->eq('eu.seen', ':seen'))->setParameter('seen', (bool) $isSeen); } return $qb->getQuery()->getResult(); }
/** * Get business units ids for current user for current access level * * @return array * value -> business unit id */ protected function getBusinessUnitIds() { if (AccessLevel::SYSTEM_LEVEL == $this->accessLevel) { return $this->businessUnitManager->getBusinessUnitIds(); } elseif (AccessLevel::LOCAL_LEVEL == $this->accessLevel) { return $this->treeProvider->getTree()->getUserBusinessUnitIds($this->currentUser->getId(), $this->getOrganizationContextId()); } elseif (AccessLevel::DEEP_LEVEL === $this->accessLevel) { return $this->treeProvider->getTree()->getUserSubordinateBusinessUnitIds($this->currentUser->getId(), $this->getOrganizationContextId()); } elseif (AccessLevel::GLOBAL_LEVEL === $this->accessLevel) { return $this->businessUnitManager->getBusinessUnitIds($this->getOrganizationContextId()); } return []; }
/** * @param EmailHeader $email * @param string $folderType * @param User|null $user * @param OrganizationInterface $organization * * @return bool */ protected function isApplicableEmail(EmailHeader $email, $folderType, $user = null, $organization = null) { if ($user === null) { return $this->isKnownSender($email) && $this->isKnownRecipient($email); } if ($user instanceof User) { if ($organization && !$this->checkOrganization($email, $folderType, $organization)) { return false; } if ($folderType === FolderType::SENT) { return $this->isUserSender($user->getId(), $email) && $this->isKnownRecipient($email); } else { return $this->isKnownSender($email) && $this->isUserRecipient($user->getId(), $email); } } elseif ($user instanceof Mailbox) { if ($folderType === FolderType::SENT) { return $this->isMailboxSender($user->getId(), $email); } else { return $this->isMailboxRecipient($user->getId(), $email); } } return false; }
/** * Checks if user can be set as owner by given user * * @param User $currentUser * @param User $newUser * @param string $accessLevel * @param OwnerTreeProvider $treeProvider * @param Organization $organization * * @return bool */ public function canUserBeSetAsOwner(User $currentUser, User $newUser, $accessLevel, OwnerTreeProvider $treeProvider, Organization $organization) { $userId = $newUser->getId(); if ($accessLevel == AccessLevel::SYSTEM_LEVEL) { return true; } elseif ($accessLevel == AccessLevel::BASIC_LEVEL && $userId == $currentUser->getId()) { return true; } elseif ($accessLevel == AccessLevel::GLOBAL_LEVEL && $newUser->getOrganizations()->contains($organization)) { return true; } else { $resultBuIds = []; if ($accessLevel == AccessLevel::LOCAL_LEVEL) { $resultBuIds = $treeProvider->getTree()->getUserBusinessUnitIds($currentUser->getId(), $organization->getId()); } elseif ($accessLevel == AccessLevel::DEEP_LEVEL) { $resultBuIds = $treeProvider->getTree()->getUserSubordinateBusinessUnitIds($currentUser->getId(), $organization->getId()); } if (!empty($resultBuIds)) { $newUserBuIds = $treeProvider->getTree()->getUserBusinessUnitIds($userId, $organization->getId()); $intersectBUIds = array_intersect($resultBuIds, $newUserBuIds); return !empty($intersectBUIds); } } return false; }
/** * Get count new emails * * @param User $user * * @return mixed */ public function getCountNewEmails(User $user) { return $this->createQueryBuilder('e')->select('COUNT(DISTINCT e)')->leftJoin('e.emailUsers', 'eu')->where('eu.organization = :organizationId')->andWhere('eu.owner = :ownerId')->andWhere('eu.seen = :seen')->setParameter('organizationId', $user->getOrganization()->getId())->setParameter('ownerId', $user->getId())->setParameter('seen', false)->getQuery()->getSingleScalarResult(); }
/** * @param User $user * @return array */ protected function createUserView(User $user) { return ['id' => $user->getId(), 'url' => $this->router->generate('oro_user_view', array('id' => $user->getId())), 'fullName' => $this->entityNameResolver->getName($user), 'avatar' => $user->getAvatar() ? $this->attachmentManager->getFilteredImageUrl($user->getAvatar(), 'avatar_xsmall') : null, 'permissions' => array('view' => $this->securityFacade->isGranted('VIEW', $user))]; }
/** * Get user topic * * @param User|int $user * @param Organization $organization * @return string */ public static function getUserTopic($user, Organization $organization) { $userId = $user instanceof User ? $user->getId() : $user; return sprintf(self::TOPIC, $userId, $organization->getId()); }
/** * @SuppressWarnings(PHPMD.UnusedLocalVariable) */ public function testForecastOfOpportunitiesValuesWithCompareDate() { $user = new User(); $user->setId(1); $date = '2015-09-20 00:00:00.000000'; $options = ['owners' => [$user], 'businessUnits' => [], 'compareToDate' => ['useDate' => true, 'date' => $date]]; $widgetOptions = new WidgetOptionBag($options); $resultValues = function ($users, $date, $aclHelper) { if ($date === null) { return ['inProgressCount' => 5, 'budgetAmount' => 1000, 'weightedForecast' => 500]; } return ['inProgressCount' => 2, 'budgetAmount' => 200, 'weightedForecast' => 50]; }; $this->opportunityRepository->expects($this->any())->method('getForecastOfOpporunitiesData')->with($this->logicalOr([$user->getId()], $this->logicalOr($date, null), $this->aclHelper))->will($this->returnCallback($resultValues)); $result = $this->provider->getForecastOfOpportunitiesValues($widgetOptions, 'getInProgressValues', 'integer', false); $expectedResult = ['value' => 5, 'deviation' => '+3 (+1.5)', 'isPositive' => true, 'previousRange' => $date]; $this->assertEquals($expectedResult, $result); $expectedResult = ['value' => 1000, 'deviation' => '+800 (+4)', 'isPositive' => 1, 'previousRange' => $date]; $result = $this->provider->getForecastOfOpportunitiesValues($widgetOptions, 'getTotalForecastValues', 'currency', false); $this->assertEquals($expectedResult, $result); $expectedResult = ['value' => 500, 'deviation' => '+450 (+9)', 'isPositive' => 1, 'previousRange' => $date]; $result = $this->provider->getForecastOfOpportunitiesValues($widgetOptions, 'getWeightedForecastValues', 'currency', false); $this->assertEquals($expectedResult, $result); }
/** * Validate permissions on pinbar * * @param User $user * @return bool */ protected function validatePermissions(User $user) { return $user->getId() == ($this->getUser() ? $this->getUser()->getId() : 0); }
/** * @param EntityManager $em * @param User $user * @param Organization $organization * * @return bool */ protected function isCalendarExists(EntityManager $em, User $user, Organization $organization) { $calendarRepository = $em->getRepository('OroCalendarBundle:Calendar'); return (bool) $calendarRepository->findDefaultCalendar($user->getId(), $organization->getId()); }
/** * @param User $user * @param int $parentId * @param int $ownerId * @param int $childrenCount * @param string $invitationStatus * @param string $buttonStatus * @return bool */ protected function isAvailableResponseButton($user, $parentId, $ownerId, $childrenCount, $invitationStatus, $buttonStatus) { return $invitationStatus && $invitationStatus != $buttonStatus && $user->getId() == $ownerId && ($parentId || $childrenCount); }
/** * Add user limitation * * @param DatagridConfiguration $config * @param string $accessLevel * @param User $user * @param Organization $organization * * @throws \Exception */ protected function applyACL(DatagridConfiguration $config, $accessLevel, User $user, Organization $organization) { $where = $config->offsetGetByPath('[source][query][where][and]', []); /** todo: refactor this check usages */ if ($accessLevel == AccessLevel::BASIC_LEVEL) { $where = array_merge($where, ['u.id = ' . $user->getId()]); } elseif ($accessLevel == AccessLevel::GLOBAL_LEVEL) { $leftJoins = $config->offsetGetByPath('[source][query][join][inner]', []); $leftJoins[] = ['join' => 'u.organizations', 'alias' => 'org']; $config->offsetSetByPath('[source][query][join][inner]', $leftJoins); $where = array_merge($where, ['org.id in (' . $organization->getId() . ')']); } elseif ($accessLevel !== AccessLevel::SYSTEM_LEVEL) { $resultBuIds = []; if ($accessLevel == AccessLevel::LOCAL_LEVEL) { $resultBuIds = $this->treeProvider->getTree()->getUserBusinessUnitIds($user->getId(), $organization->getId()); } elseif ($accessLevel == AccessLevel::DEEP_LEVEL) { $resultBuIds = $this->treeProvider->getTree()->getUserSubordinateBusinessUnitIds($user->getId(), $organization->getId()); } $leftJoins = $config->offsetGetByPath('[source][query][join][inner]', []); $leftJoins[] = ['join' => 'u.businessUnits', 'alias' => 'bu']; $config->offsetSetByPath('[source][query][join][inner]', $leftJoins); $where = array_merge($where, ['bu.id in (' . implode(', ', $resultBuIds) . ')']); } if (count($where)) { $config->offsetSetByPath('[source][query][where][and]', $where); } }
/** * Assign new assignee (User) to ticket * @param OroUser $newAssignee * @return void */ public function assign(OroUser $newAssignee) { if (is_null($this->assignee) || $newAssignee->getId() != $this->assignee->getId()) { $this->processAssign($newAssignee); } }
/** * Find only requested reminders assigned to user * * @param User $user * @return Reminder[] */ public function findRequestedReminders(User $user) { return $this->createQueryBuilder('reminder')->where('reminder.state = :sent_state')->andWhere('reminder.recipient = :userId')->andWhere('reminder.method = :method')->setParameter('userId', $user->getId())->setParameter('method', WebSocketSendProcessor::NAME)->setParameter('sent_state', Reminder::STATE_REQUESTED)->getQuery()->execute(); }
/** * Sets user password * * @AclAncestor("password_management") * @Method({"GET", "POST"}) * @Route("/set-password/{id}", name="oro_user_reset_set_password", requirements={"id"="\d+"}) * @Template("OroUserBundle:Reset:update.html.twig") */ public function setPasswordAction(User $entity) { $entityRoutingHelper = $this->getEntityRoutingHelper(); $formAction = $entityRoutingHelper->generateUrlByRequest('oro_user_reset_set_password', $this->getRequest(), ['id' => $entity->getId()]); $responseData = ['entity' => $entity, 'saved' => false]; if ($this->get('oro_user.form.handler.set_password')->process($entity)) { $responseData['entity'] = $entity; $responseData['saved'] = true; } $responseData['form'] = $this->get('oro_user.form.type.set_password.form')->createView(); $responseData['formAction'] = $formAction; return $responseData; }
/** * Get user topic * * @param User $user * @param Organization $organization * @return string */ public static function getUserTopic(User $user, Organization $organization) { return sprintf(self::TOPIC, $user->getId(), $organization->getId()); }
/** * @test */ public function getUserUrl() { $user = new User(); $user->setId(1); $url = '/user/view/4'; $this->router->expects($this->once())->method('generate')->with('oro_user_view', ['id' => $user->getId()])->will($this->returnValue($url)); $this->twigExtension->getUserUrl($user); }
/** * @param User $entity * @param string $editRoute * @return array */ protected function view(User $entity, $editRoute = '') { $output = array('entity' => $entity, 'allow_delete' => $this->getUser()->getId() !== $entity->getId() && !$this->get('oro_organization.owner_deletion_manager')->hasAssignments($entity)); if ($editRoute) { $output = array_merge($output, array('editRoute' => $editRoute)); } return $output; }
/** * @param User $emailOwner * @param OrganizationInterface $organization * * @return InternalEmailOrigin */ protected function createUserInternalOrigin(User $emailOwner, OrganizationInterface $organization = null) { $organization = $organization ? $organization : $emailOwner->getOrganization(); $originName = InternalEmailOrigin::BAP . '_User_' . $emailOwner->getId(); $outboxFolder = new EmailFolder(); $outboxFolder->setType(FolderType::SENT)->setName(FolderType::SENT)->setFullName(FolderType::SENT); $origin = new InternalEmailOrigin(); $origin->setName($originName)->addFolder($outboxFolder)->setOwner($emailOwner)->setOrganization($organization); $emailOwner->addEmailOrigin($origin); $this->getEntityManager()->persist($origin); $this->getEntityManager()->persist($emailOwner); return $origin; }
public function testUnserialize() { $user = new User(); $serialized = array('password', 'salt', 'username', true, 'confirmation_token', 10); $user->unserialize(serialize($serialized)); $this->assertEquals($serialized[0], $user->getPassword()); $this->assertEquals($serialized[1], $user->getSalt()); $this->assertEquals($serialized[2], $user->getUsername()); $this->assertEquals($serialized[3], $user->isEnabled()); $this->assertEquals($serialized[4], $user->getConfirmationToken()); $this->assertEquals($serialized[5], $user->getId()); }
/** * Add ACL Check condition to the Query Builder * * @param QueryBuilder $queryBuilder * @param string $accessLevel * @param User $user * @param Organization $organization */ protected function addAcl(QueryBuilder $queryBuilder, $accessLevel, User $user, Organization $organization) { if ($accessLevel == AccessLevel::BASIC_LEVEL) { $queryBuilder->andWhere($queryBuilder->expr()->in('users.id', [$user->getId()])); } elseif ($accessLevel == AccessLevel::GLOBAL_LEVEL) { $queryBuilder->join('users.organizations', 'org')->andWhere($queryBuilder->expr()->in('org.id', [$organization->getId()])); } elseif ($accessLevel !== AccessLevel::SYSTEM_LEVEL) { if ($accessLevel == AccessLevel::LOCAL_LEVEL) { $resultBuIds = $this->treeProvider->getTree()->getUserBusinessUnitIds($user->getId(), $organization->getId()); } elseif ($accessLevel == AccessLevel::DEEP_LEVEL) { $resultBuIds = $this->treeProvider->getTree()->getUserSubordinateBusinessUnitIds($user->getId(), $organization->getId()); } $queryBuilder->join('users.businessUnits', 'bu')->andWhere($queryBuilder->expr()->in('bu.id', $resultBuIds)); } }