vendor/pimcore/customer-management-framework-bundle/src/Targeting/DataProvider/Customer.php line 42

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /**
  4.  * Pimcore
  5.  *
  6.  * This source file is available under two different licenses:
  7.  * - GNU General Public License version 3 (GPLv3)
  8.  * - Pimcore Commercial License (PCL)
  9.  * Full copyright and license information is available in
  10.  * LICENSE.md which is distributed with this source code.
  11.  *
  12.  *  @copyright  Copyright (c) Pimcore GmbH (http://www.pimcore.org)
  13.  *  @license    http://www.pimcore.org/license     GPLv3 and PCL
  14.  */
  15. namespace CustomerManagementFrameworkBundle\Targeting\DataProvider;
  16. use CustomerManagementFrameworkBundle\Model\CustomerInterface;
  17. use Pimcore\Targeting\DataProvider\DataProviderInterface;
  18. use Pimcore\Targeting\Model\VisitorInfo;
  19. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  20. class Customer implements DataProviderInterface
  21. {
  22.     const PROVIDER_KEY 'cmf_customer';
  23.     /**
  24.      * @var TokenStorageInterface
  25.      */
  26.     private $tokenStorage;
  27.     public function __construct(TokenStorageInterface $tokenStorage)
  28.     {
  29.         $this->tokenStorage $tokenStorage;
  30.     }
  31.     /**
  32.      * @inheritDoc
  33.      */
  34.     public function load(VisitorInfo $visitorInfo)
  35.     {
  36.         if ($visitorInfo->has(self::PROVIDER_KEY)) {
  37.             return;
  38.         }
  39.         $customer $this->loadCustomer();
  40.         $visitorInfo->set(self::PROVIDER_KEY$customer);
  41.     }
  42.     private function loadCustomer()
  43.     {
  44.         if (null === $token $this->tokenStorage->getToken()) {
  45.             return null;
  46.         }
  47.         if (!is_object($user $token->getUser())) {
  48.             // e.g. anonymous authentication
  49.             return null;
  50.         }
  51.         if ($user instanceof CustomerInterface) {
  52.             return $user;
  53.         }
  54.     }
  55. }