12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Webapi\Controller\Rest;
- use Magento\Framework\Exception\AuthorizationException;
- use Magento\Framework\Webapi\Authorization;
- use Magento\Framework\Webapi\Rest\Request as RestRequest;
- use Magento\Store\Model\StoreManagerInterface;
- /**
- * This class is responsible for validating the request
- */
- class RequestValidator
- {
- /**
- * @var RestRequest
- */
- private $request;
- /**
- * @var Router
- */
- private $router;
- /**
- * @var StoreManagerInterface
- */
- private $storeManager;
- /**
- * @var Authorization
- */
- private $authorization;
- /**
- * Initialize dependencies
- *
- * @param RestRequest $request
- * @param Router $router
- * @param StoreManagerInterface $storeManager
- * @param Authorization $authorization
- */
- public function __construct(
- RestRequest $request,
- Router $router,
- StoreManagerInterface $storeManager,
- Authorization $authorization
- ) {
- $this->request = $request;
- $this->router = $router;
- $this->storeManager = $storeManager;
- $this->authorization = $authorization;
- }
- /**
- * Validate request
- *
- * @throws AuthorizationException
- * @throws \Magento\Framework\Webapi\Exception
- * @return void
- */
- public function validate()
- {
- $this->checkPermissions();
- $route = $this->router->match($this->request);
- if ($route->isSecure() && !$this->request->isSecure()) {
- throw new \Magento\Framework\Webapi\Exception(__('Operation allowed only in HTTPS'));
- }
- }
- /**
- * Perform authentication and authorization.
- *
- * @throws \Magento\Framework\Exception\AuthorizationException
- * @return void
- */
- private function checkPermissions()
- {
- $route = $this->router->match($this->request);
- if (!$this->authorization->isAllowed($route->getAclResources())) {
- $params = ['resources' => implode(', ', $route->getAclResources())];
- throw new AuthorizationException(
- __("The consumer isn't authorized to access %resources.", $params)
- );
- }
- }
- }
|