vendor/payum/payum/src/Payum/Core/Bridge/Symfony/Security/HttpRequestVerifier.php line 49

Open in your IDE?
  1. <?php
  2. namespace Payum\Core\Bridge\Symfony\Security;
  3. use Payum\Core\Exception\InvalidArgumentException;
  4. use Payum\Core\Security\HttpRequestVerifierInterface;
  5. use Payum\Core\Security\TokenInterface;
  6. use Payum\Core\Security\Util\RequestTokenVerifier;
  7. use Payum\Core\Storage\StorageInterface;
  8. use Symfony\Component\HttpKernel\Exception\HttpException;
  9. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  10. use Symfony\Component\HttpFoundation\Request;
  11. class HttpRequestVerifier implements HttpRequestVerifierInterface
  12. {
  13.     /**
  14.      * @var \Payum\Core\Storage\StorageInterface
  15.      */
  16.     protected $tokenStorage;
  17.     /**
  18.      * @param StorageInterface $tokenStorage
  19.      */
  20.     public function __construct(StorageInterface $tokenStorage)
  21.     {
  22.         $this->tokenStorage $tokenStorage;
  23.     }
  24.     /**
  25.      * {@inheritDoc}
  26.      */
  27.     public function verify($httpRequest)
  28.     {
  29.         if (false == $httpRequest instanceof Request) {
  30.             throw new InvalidArgumentException(sprintf(
  31.                 'Invalid request given. Expected %s but it is %s',
  32.                 'Symfony\Component\HttpFoundation\Request',
  33.                 is_object($httpRequest) ? get_class($httpRequest) : gettype($httpRequest)
  34.             ));
  35.         }
  36.         if (false === $hash $httpRequest->attributes->get('payum_token'$httpRequest->get('payum_token'false))) {
  37.             throw new NotFoundHttpException('Token parameter not set in request');
  38.         }
  39.         if ($hash instanceof TokenInterface) {
  40.             $token $hash;
  41.         } else {
  42.             if (false == $token $this->tokenStorage->find($hash)) {
  43.                 throw new NotFoundHttpException(sprintf('A token with hash `%s` could not be found.'$hash));
  44.             }
  45.             if (!RequestTokenVerifier::isValid($httpRequest->getUri(), $token->getTargetUrl())) {
  46.                 throw new HttpException(400sprintf('The current url %s not match target url %s set in the token.'$httpRequest->getUri(), $token->getTargetUrl()));
  47.             }
  48.         }
  49.         return $token;
  50.     }
  51.     /**
  52.      * {@inheritDoc}
  53.      */
  54.     public function invalidate(TokenInterface $token)
  55.     {
  56.         $this->tokenStorage->delete($token);
  57.     }
  58. }