/**
  * @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;
 }
Exemple #2
0
 /**
  * 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();
 }
Exemple #15
0
 /**
  * @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);
 }
Exemple #19
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();
 }
Exemple #24
0
 /**
  * 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);
 }
Exemple #27
0
 /**
  * @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;
 }
Exemple #28
0
 /**
  * @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());
 }
Exemple #30
0
 /**
  * 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));
     }
 }