From 6760e24677de7b951da48beed0b43799f8edf543 Mon Sep 17 00:00:00 2001 From: Karel Sommer Date: Wed, 23 Nov 2016 16:50:33 +0100 Subject: [PATCH] Add email provider --- .../Resources/config/services.yml | 4 ++ .../Provider/EmailUserProvider.php | 41 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/Uecode/Bundle/ApiKeyBundle/Security/Authentication/Provider/EmailUserProvider.php diff --git a/src/Uecode/Bundle/ApiKeyBundle/Resources/config/services.yml b/src/Uecode/Bundle/ApiKeyBundle/Resources/config/services.yml index dcc1cca..4bca6de 100644 --- a/src/Uecode/Bundle/ApiKeyBundle/Resources/config/services.yml +++ b/src/Uecode/Bundle/ApiKeyBundle/Resources/config/services.yml @@ -1,5 +1,6 @@ parameters: uecode.api_key.provider.user_provider.class: Uecode\Bundle\ApiKeyBundle\Security\Authentication\Provider\UserProvider + uecode.api_key.provider.email_user_provider.class: Uecode\Bundle\ApiKeyBundle\Security\Authentication\Provider\EmailUserProvider uecode.api_key.provider.api_key.class: Uecode\Bundle\ApiKeyBundle\Security\Authentication\Provider\ApiKeyProvider uecode.api_key.listener.api_key.class: Uecode\Bundle\ApiKeyBundle\Security\Firewall\ApiKeyListener @@ -12,6 +13,9 @@ services: uecode.api_key.provider.user_provider: class: %uecode.api_key.provider.user_provider.class% arguments: ["@fos_user.user_manager"] + uecode.api_key.provider.email_user_provider: + class: %uecode.api_key.provider.email_user_provider.class% + arguments: ["@fos_user.user_manager"] uecode.api_key.provider.api_key: class: %uecode.api_key.provider.api_key.class% arguments: [""] diff --git a/src/Uecode/Bundle/ApiKeyBundle/Security/Authentication/Provider/EmailUserProvider.php b/src/Uecode/Bundle/ApiKeyBundle/Security/Authentication/Provider/EmailUserProvider.php new file mode 100644 index 0000000..d5ca26d --- /dev/null +++ b/src/Uecode/Bundle/ApiKeyBundle/Security/Authentication/Provider/EmailUserProvider.php @@ -0,0 +1,41 @@ + + */ +class EmailUserProvider extends FOSUserProvider implements ApiKeyUserProviderInterface +{ + /** + * @var bool Stateless Authentication? + */ + private $stateless = false; + + /** + * {@inheritdoc} + */ + public function loadUserByApiKey($apiKey) + { + $this->stateless = true; + + return $this->userManager->findUserBy(array('apiKey' => $apiKey)); + } + + /** + * @param SecurityUserInterface $user + * + * @return SecurityUserInterface + * @throws UnsupportedUserException + */ + public function refreshUser(SecurityUserInterface $user) + { + if ($this->stateless) { + throw new UnsupportedUserException(); + } + return parent::refreshUser($user); + } +}