* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShopBundle\Service\DataProvider; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; use Symfony\Component\Security\Core\User\User; /** * Convenient way to access User, if exists. */ class UserProvider { public const ANONYMOUS_USER = 'ANONYMOUS_USER'; private $tokenStorage; public function __construct(TokenStorageInterface $tokenStorage) { $this->tokenStorage = $tokenStorage; } /** * @see \Symfony\Bundle\FrameworkBundle\Controller::getUser() */ public function getUser() { if (null === $token = $this->tokenStorage->getToken()) { return; } if (!is_object($user = $token->getUser())) { // e.g. anonymous authentication return; } return $user; } public function getUsername() { if ($this->getUser() instanceof User) { return $this->getUser()->getUsername(); } return self::ANONYMOUS_USER; } }