1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\QuoteGraphQl\Model\Cart;
use Magento\Customer\Api\AddressRepositoryInterface;
use Magento\Customer\Api\Data\AddressInterface;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\GraphQl\Exception\GraphQlAuthorizationException;
use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException;
/**
* Get customer address. Throws exception if customer is not owner of address
*/
class GetCustomerAddress
{
/**
* @var AddressRepositoryInterface
*/
private $addressRepository;
/**
* @param AddressRepositoryInterface $addressRepository
*/
public function __construct(AddressRepositoryInterface $addressRepository)
{
$this->addressRepository = $addressRepository;
}
/**
* Get customer address. Throws exception if customer is not owner of address
*
* @param int $addressId
* @param int $customerId
* @return AddressInterface
* @throws GraphQlAuthorizationException
* @throws GraphQlNoSuchEntityException
* @throws LocalizedException
*/
public function execute(int $addressId, int $customerId): AddressInterface
{
try {
$customerAddress = $this->addressRepository->getById($addressId);
} catch (NoSuchEntityException $e) {
throw new GraphQlNoSuchEntityException(
__('Could not find a address with ID "%address_id"', ['address_id' => $addressId])
);
}
if ((int)$customerAddress->getCustomerId() !== $customerId) {
throw new GraphQlAuthorizationException(
__(
'The current user cannot use address with ID "%address_id"',
['address_id' => $addressId]
)
);
}
return $customerAddress;
}
}