|
@@ -5,14 +5,22 @@ namespace Base\OAuthClientBundle\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;
|
|
|
+use Symfony\Component\Security\Core\User\UserInterface;
|
|
|
+use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
|
|
|
|
|
|
class CustomOAuthUserProvider extends OAuthUserProvider
|
|
|
{
|
|
|
|
|
|
+ /**
|
|
|
+ * @var TokenStorage
|
|
|
+ */
|
|
|
protected $securityTokenStorage;
|
|
|
|
|
|
-
|
|
|
- public function __construct($securityTokenStorage)
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param TokenStorage $securityTokenStorage
|
|
|
+ */
|
|
|
+ public function __construct(TokenStorage $securityTokenStorage)
|
|
|
{
|
|
|
$this->securityTokenStorage = $securityTokenStorage;
|
|
|
}
|
|
@@ -24,7 +32,19 @@ class CustomOAuthUserProvider extends OAuthUserProvider
|
|
|
{
|
|
|
return new CustomOAuthUser($username);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+ /**
|
|
|
+ * {@inheritdoc}
|
|
|
+ */
|
|
|
+ public function refreshUser(UserInterface $user)
|
|
|
+ {
|
|
|
+ if (!$this->supportsClass(get_class($user))) {
|
|
|
+ throw new UnsupportedUserException(sprintf('Unsupported user class "%s"', get_class($user)));
|
|
|
+ }
|
|
|
+
|
|
|
+ return $user;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* {@inheritdoc}
|
|
|
*/
|
|
@@ -32,9 +52,10 @@ class CustomOAuthUserProvider extends OAuthUserProvider
|
|
|
{
|
|
|
$user = $this->loadUserByUsername($response->getNickname());
|
|
|
$user->setRoles($response->getRoles());
|
|
|
+ $user->setTenancies($response->getTenancies());
|
|
|
$token = new UsernamePasswordToken($user, null, "secured_area", $user->getRoles());
|
|
|
$this->securityTokenStorage->setToken($token);
|
|
|
-
|
|
|
+
|
|
|
return $user;
|
|
|
}
|
|
|
|