|
@@ -0,0 +1,49 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace Base\OAuthBundle\Security\Core\User;
|
|
|
+
|
|
|
+use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface;
|
|
|
+use HWI\Bundle\OAuthBundle\Security\Core\User\OAuthUserProvider;
|
|
|
+use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
|
|
+
|
|
|
+class CustomOAuthUserProvider extends OAuthUserProvider
|
|
|
+{
|
|
|
+
|
|
|
+ protected $securityTokenStorage;
|
|
|
+
|
|
|
+
|
|
|
+ public function __construct($securityTokenStorage)
|
|
|
+ {
|
|
|
+ $this->securityTokenStorage = $securityTokenStorage;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function loadUserByUsername($username)
|
|
|
+ {
|
|
|
+ return new CustomOAuthUser($username);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function loadUserByOAuthUserResponse(UserResponseInterface $response)
|
|
|
+ {
|
|
|
+ $user = $this->loadUserByUsername($response->getNickname());
|
|
|
+ $user->setRoles($response->getRoles());
|
|
|
+ $token = new UsernamePasswordToken($user, null, "secured_area", $user->getRoles());
|
|
|
+ $this->securityTokenStorage->setToken($token);
|
|
|
+
|
|
|
+ return $user;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function supportsClass($class)
|
|
|
+ {
|
|
|
+ return $class === 'Base\\OAuthBundle\\Security\\Core\\User\\CustomOAuthUser';
|
|
|
+ }
|
|
|
+
|
|
|
+}
|