custom/static-plugins/WabsAuth/src/Subscriber/LoginSubscriber.php line 89

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace WabsAuth\Subscriber;
  3. use Shopware\Storefront\Page\GenericPageLoadedEvent;
  4. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  5. use Symfony\Component\HttpFoundation\RedirectResponse;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. use Symfony\Component\HttpFoundation\Session\Session;
  8. use WabsAuth\Helper\AuthHelper;
  9. use WabsAuth\Helper\DebugHelper;
  10. class LoginSubscriber implements EventSubscriberInterface
  11. {
  12.     /**
  13.      * @var Session
  14.      */
  15.     private $session;
  16.     /**
  17.      * @var AuthHelper
  18.      */
  19.     private $authHelper;
  20.     /**
  21.      * @var DebugHelper
  22.      */
  23.     private $logger;
  24.     /**
  25.      * @var RequestStack
  26.      */
  27.     private $requestStack;
  28.     /**
  29.      * LoginSubscriber constructor.
  30.      * @param Session $session
  31.      * @param AuthHelper $authHelper
  32.      * @param RequestStack $requestStack
  33.      * @param DebugHelper $logger
  34.      */
  35.     public function __construct(
  36.         Session $session,
  37.         AuthHelper $authHelper,
  38.         RequestStack $requestStack,
  39.         DebugHelper $logger
  40.     ) {
  41.         $this->session $session;
  42.         $this->authHelper $authHelper;
  43.         $this->logger $logger;
  44.         $this->requestStack $requestStack;
  45.     }
  46.     public static function getSubscribedEvents()
  47.     {
  48.         return [
  49. //            NestedEvent::class => [
  50. //            SalesChannelContextResolvedEvent::class => [
  51. //            PageLoadedEvent::class => [
  52. //            StorefrontRenderEvent::class => [
  53.             GenericPageLoadedEvent::class => [
  54.                 ['addOAuthURL'],
  55.                 ['checkIntranetParameter'],
  56.                 ['loadCustomerGroup']
  57.             ],
  58.         ];
  59.     }
  60.     /**
  61.      * Adds the customer group to the customer and adds the customer back to the context to use in twig.
  62.      *
  63.      * @param GenericPageLoadedEvent $event
  64.      */
  65.     public function loadCustomerGroup(GenericPageLoadedEvent $event): void
  66.     {
  67.         // Check if we have a logged in customer
  68.         $customer $event->getSalesChannelContext()->getCustomer();
  69.         if ($customer === null) {
  70.             return;
  71.         }
  72.         // Customer Group is not loaded by default, so we add it here
  73.         $customer $this->authHelper->loadCustomerGroupToCustomer($customer$event->getSalesChannelContext());
  74.         if ($customer === null) {
  75.             return;
  76.         }
  77.         // Assign the customer to the customer in the context
  78.         $event->getContext()->assign(['customer' => $customer]);
  79.     }
  80.     public function addOAuthURL(GenericPageLoadedEvent $event): void
  81.     {
  82.     }
  83.     public function checkIntranetParameter(GenericPageLoadedEvent $event)
  84.     {
  85.         $hamParameter $event->getRequest()->query->get('ham'null);
  86.         if(!$hamParameter) {
  87.             return;
  88.         }
  89.         $this->session->set('oauth_redirect_to'$event->getRequest()->getPathInfo());
  90.         $this->session->set('oauth_auto_group''Hauptamtlicher');
  91.         // Redirect Customer directly to the login oAuth page
  92.         $provider $this->authHelper->getProvider();
  93.         $url $provider->getAuthorizationUrl();
  94.         $this->session->set('oauthState'$provider->getState());
  95.         $response = new RedirectResponse($url);
  96.         $response->send();
  97.     }
  98. }