1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\QuoteGraphQl\Model\Cart;
- use Magento\Framework\Exception\NoSuchEntityException;
- use Magento\Framework\GraphQl\Exception\GraphQlAuthorizationException;
- use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException;
- use Magento\Quote\Api\CartRepositoryInterface;
- use Magento\Quote\Model\MaskedQuoteIdToQuoteIdInterface;
- use Magento\Quote\Model\Quote;
- /**
- * Get cart
- */
- class GetCartForUser
- {
- /**
- * @var MaskedQuoteIdToQuoteIdInterface
- */
- private $maskedQuoteIdToQuoteId;
- /**
- * @var CartRepositoryInterface
- */
- private $cartRepository;
- /**
- * @param MaskedQuoteIdToQuoteIdInterface $maskedQuoteIdToQuoteId
- * @param CartRepositoryInterface $cartRepository
- */
- public function __construct(
- MaskedQuoteIdToQuoteIdInterface $maskedQuoteIdToQuoteId,
- CartRepositoryInterface $cartRepository
- ) {
- $this->maskedQuoteIdToQuoteId = $maskedQuoteIdToQuoteId;
- $this->cartRepository = $cartRepository;
- }
- /**
- * Get cart for user
- *
- * @param string $cartHash
- * @param int|null $userId
- * @return Quote
- * @throws GraphQlAuthorizationException
- * @throws GraphQlNoSuchEntityException
- */
- public function execute(string $cartHash, ?int $userId): Quote
- {
- try {
- $cartId = $this->maskedQuoteIdToQuoteId->execute($cartHash);
- } catch (NoSuchEntityException $exception) {
- throw new GraphQlNoSuchEntityException(
- __('Could not find a cart with ID "%masked_cart_id"', ['masked_cart_id' => $cartHash])
- );
- }
- try {
- /** @var Quote $cart */
- $cart = $this->cartRepository->get($cartId);
- } catch (NoSuchEntityException $e) {
- throw new GraphQlNoSuchEntityException(
- __('Could not find a cart with ID "%masked_cart_id"', ['masked_cart_id' => $cartHash])
- );
- }
- $customerId = (int)$cart->getCustomerId();
- /* Guest cart, allow operations */
- if (!$customerId) {
- return $cart;
- }
- if ($customerId !== $userId) {
- throw new GraphQlAuthorizationException(
- __(
- 'The current user cannot perform operations on cart "%masked_cart_id"',
- ['masked_cart_id' => $cartHash]
- )
- );
- }
- return $cart;
- }
- }
|