/**
  * Get validation result
  *
  * @param Opifer\QueueIt\Queue\Queue $queue
  *
  * @return Opifer\QueueIt\Validation\AcceptedConfirmResult
  */
 public function getValidationResult($queue)
 {
     $key = $this->generateKey($queue->getCustomerId(), $queue->getEventId());
     if (!isset($_COOKIE[$key])) {
         return null;
     }
     try {
         $values = $_COOKIE[$key];
         $queueId = $values["QueueId"];
         $originalUrl = $values["OriginalUrl"];
         $placeInQueue = KnownUserFactory::decryptPlaceInQueue($values["PlaceInQueue"]);
         $redirectType = $values["RedirectType"];
         $timeStamp = $values["TimeStamp"];
         $actualHash = $values["Hash"];
         $expectedHash = $this->generateHash($queueId, $originalUrl, $placeInQueue, $redirectType, $timeStamp);
         if ($actualHash != $expectedHash) {
             return null;
         }
         $this->writeCookie($queue, $queueId, $originalUrl, $placeInQueue, $redirectType, $timeStamp, $actualHash);
         $parsedTimeStamp = new \DateTime("now", new \DateTimeZone("UTC"));
         $parsedTimeStamp->setTimestamp(intval($timeStamp));
         return new AcceptedConfirmedResult($queue, new Md5KnownUser($queueId, $placeInQueue, $parsedTimeStamp, $queue->getCustomerId(), $queue->getEventId(), $redirectType, $originalUrl), false);
     } catch (InvalidKnownUserUrlException $e) {
         return null;
     }
 }
Ejemplo n.º 2
0
 /**
  * Verify MD5 Hash
  *
  * @param string                        $secretKey
  * @param KnownUserUrlProviderInterface $urlProvider
  * @param string                        $queryStringPrefix
  *
  * @throws InvalidArgumentException                              if $secretKey is null
  * @throws Opifer\QueueIt\Exception\InvalidKnownUserUrlException
  * @throws Opifer\QueueIt\Exception\KnownUserException
  *
  * @return Opifer\QueueIt\Queue\Md5KnownUser
  */
 public static function verifyMd5Hash($secretKey = null, $urlProvider = null, $queryStringPrefix = null)
 {
     global $defaultQueryStringPrefix, $defaultSecretKey, $defaultUrlProviderFactory;
     if ($urlProvider == null) {
         $urlProvider = $defaultUrlProviderFactory();
     }
     if ($secretKey == null) {
         $secretKey = $defaultSecretKey;
     }
     if ($queryStringPrefix == null) {
         $queryStringPrefix = $defaultQueryStringPrefix;
     }
     if ($secretKey == null) {
         throw new \InvalidArgumentException("Secret key is null");
     }
     try {
         if ($urlProvider->getQueueId($queryStringPrefix) == null && $urlProvider->getPlaceInQueue($queryStringPrefix) == null && $urlProvider->getTimeStamp($queryStringPrefix) == null) {
             return null;
         }
         if ($urlProvider->getQueueId($queryStringPrefix) == null || $urlProvider->getPlaceInQueue($queryStringPrefix) == null || $urlProvider->getTimeStamp($queryStringPrefix) == null) {
             throw new InvalidKnownUserUrlException();
         }
         KnownUserFactory::verifyUrl($urlProvider->getUrl(), $secretKey);
         return new Md5KnownUser($urlProvider->getQueueId($queryStringPrefix), KnownUserFactory::decryptPlaceInQueue($urlProvider->getPlaceInQueue($queryStringPrefix)), KnownUserFactory::decodeTimestamp($urlProvider->getTimeStamp($queryStringPrefix)), $urlProvider->getCustomerId($queryStringPrefix), $urlProvider->getEventId($queryStringPrefix), KnownUserFactory::decodeRedirectType($urlProvider->getRedirectType($queryStringPrefix)), $urlProvider->getOriginalUrl($queryStringPrefix));
     } catch (KnownUserException $e) {
         $e->setValidationUrl($urlProvider->getUrl());
         $e->setOriginalUrl($urlProvider->getOriginalUrl($queryStringPrefix));
         throw $e;
     }
 }