/** * @param string $type * @param Account $account * * @return bool */ public function isAccountAddressGranted($type, Account $account = null) { if ($this->isManualEditGranted($type)) { return true; } $hasPermissions = $this->securityFacade->isGranted($this->getClassPermission('VIEW', $this->accountAddressClass)); if (!$hasPermissions) { return false; } if (!$account) { return false; } return (bool) $this->orderAddressProvider->getAccountAddresses($account, $type); }
/** * @dataProvider accountAddressPermissions * @param string $type * @param string $expectedPermission * @param object $loggedUser */ public function testGetAccountAddressesGrantedView($type, $expectedPermission, $loggedUser) { $this->securityFacade->expects($this->any())->method('getLoggedUser')->will($this->returnValue($loggedUser)); $account = new Account(); $addresses = [new AccountAddress()]; $this->securityFacade->expects($this->exactly(2))->method('isGranted')->will($this->returnValueMap([[$expectedPermission, null, false], ['VIEW;entity:' . $this->accountAddressClass, null, true]])); $repository = $this->assertAccountAddressRepositoryCall(); $repository->expects($this->never())->method('getAddressesByType'); $repository->expects($this->once())->method('getDefaultAddressesByType')->with($account, $type, $this->aclHelper)->will($this->returnValue($addresses)); $this->assertEquals($addresses, $this->provider->getAccountAddresses($account, $type)); // cache $this->assertEquals($addresses, $this->provider->getAccountAddresses($account, $type)); }
/** * @param Order $order * @param string $type * @return array */ public function getGroupedAddresses(Order $order, $type) { $addresses = []; $account = $order->getAccount(); if ($account) { $accountAddresses = $this->orderAddressProvider->getAccountAddresses($account, $type); foreach ($accountAddresses as $accountAddress) { $addresses[self::ACCOUNT_LABEL][$this->getIdentifier($accountAddress)] = $accountAddress; } } $accountUser = $order->getAccountUser(); if ($accountUser) { $accountUserAddresses = $this->orderAddressProvider->getAccountUserAddresses($accountUser, $type); if ($accountUserAddresses) { foreach ($accountUserAddresses as $accountUserAddress) { $addresses[self::ACCOUNT_USER_LABEL][$this->getIdentifier($accountUserAddress)] = $accountUserAddress; } } } return $addresses; }