vendor/elements/document-http-auth-bundle/src/Elements/Bundle/DocumentHttpAuthBundle/EventSubscriber/DocumentHttpAuth.php line 50

Open in your IDE?
  1. <?php
  2. namespace Elements\Bundle\DocumentHttpAuthBundle\EventSubscriber;
  3. use Pimcore\Bundle\CoreBundle\EventListener\Traits\PimcoreContextAwareTrait;
  4. use Pimcore\Http\Request\Resolver\DocumentResolver;
  5. use Pimcore\Http\Request\Resolver\PimcoreContextResolver;
  6. use Pimcore\Http\RequestHelper;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\HttpKernel\Event\RequestEvent;
  9. use Symfony\Component\HttpKernel\KernelEvents;
  10. use Symfony\Component\Security\Http\EntryPoint\BasicAuthenticationEntryPoint;
  11. class DocumentHttpAuth implements EventSubscriberInterface
  12. {
  13.     use PimcoreContextAwareTrait;
  14.     /**
  15.      * @var DocumentResolver
  16.      */
  17.     protected $documentResolver;
  18.     /**
  19.      * @var RequestHelper
  20.      */
  21.     protected $requestHelper;
  22.     /**
  23.      * @param DocumentResolver $documentResolver
  24.      */
  25.     public function __construct(DocumentResolver $documentResolverRequestHelper $requestHelper)
  26.     {
  27.         $this->documentResolver $documentResolver;
  28.         $this->requestHelper $requestHelper;
  29.     }
  30.     /**
  31.      * @inheritDoc
  32.      */
  33.     public static function getSubscribedEvents()
  34.     {
  35.         return [
  36.             KernelEvents::REQUEST => ['onKernelRequest'17]
  37.         ];
  38.     }
  39.     /**
  40.      * @param RequestEvent $event
  41.      */
  42.     public function onKernelRequest(RequestEvent $event)
  43.     {
  44.         if($event->isMasterRequest() && $this->matchesPimcoreContext($event->getRequest(), PimcoreContextResolver::CONTEXT_DEFAULT)) {
  45.             $document $this->documentResolver->getDocument($event->getRequest());
  46.             if ($document && !$this->requestHelper->isFrontendRequestByAdmin($event->getRequest())) {
  47.                 $username $document->getProperty('auth_username');
  48.                 $password $document->getProperty('auth_password');
  49.                 if ($username && $password) {
  50.                     $request $event->getRequest();
  51.                     if ($authUsername $request->headers->get('PHP_AUTH_USER')) {
  52.                         if ($authUsername === $username && $password === $request->headers->get('PHP_AUTH_PW')) {
  53.                             return;
  54.                         }
  55.                     }
  56.                     $entryPoint = new BasicAuthenticationEntryPoint('doc-auth');
  57.                     $event->setResponse($entryPoint->start($request));
  58.                 }
  59.             }
  60.         }
  61.     }
  62. }