Ver Fonte

Se setean las tenencias al usuario

Guillermo Espinoza há 7 anos atrás
pai
commit
d9eac05641

+ 9 - 0
OAuth/Response/PathUserResponse.php

@@ -17,6 +17,7 @@ class PathUserResponse extends \HWI\Bundle\OAuthBundle\OAuth\Response\PathUserRe
         'email' => null,
         'profilepicture' => null,
         'roles' => null,
+        'tenancies' => null,
     );
 
     /**
@@ -27,4 +28,12 @@ class PathUserResponse extends \HWI\Bundle\OAuthBundle\OAuth\Response\PathUserRe
         return $this->getValueForPath('roles');
     }
 
+    /**
+     * {@inheritdoc}
+     */
+    public function getTenancies()
+    {
+        return $this->getValueForPath('tenancies');
+    }
+
 }

+ 1 - 0
Resources/config/hwioauthbundle/config.yml

@@ -16,6 +16,7 @@ hwi_oauth:
                 firstname: firstname
                 lastname: lastname
                 roles: roles
+                tenancies: tenancies
     firewall_names: [secured_area]
 
 doctrine:

+ 21 - 0
Security/Core/User/CustomOAuthUser.php

@@ -12,6 +12,11 @@ class CustomOAuthUser extends OAuthUser
      */
     protected $roles = array('ROLE_USER');
 
+    /**
+     * @var array
+     */
+    protected $tenancies = array();
+
 
     /**
      * {@inheritdoc}
@@ -29,4 +34,20 @@ class CustomOAuthUser extends OAuthUser
         $this->roles = $roles;
     }
 
+    /**
+     * @return array
+     */
+    public function getTenancies()
+    {
+        return $this->tenancies;
+    }
+
+    /**
+     * @param array $tenancies
+     */
+    public function setTenancies($tenancies)
+    {
+        $this->tenancies = $tenancies;
+    }
+
 }

+ 25 - 4
Security/Core/User/CustomOAuthUserProvider.php

@@ -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;
     }