-
Notifications
You must be signed in to change notification settings - Fork 4
/
FOSUBUserProvider.php
41 lines (29 loc) · 1.26 KB
/
FOSUBUserProvider.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<?php
namespace LMammino\Bundle\JHACBundle\Security\Core\User;
use HWI\Bundle\OAuthBundle\OAuth\Response\UserResponseInterface;
use HWI\Bundle\OAuthBundle\Security\Core\User\FOSUBUserProvider as BaseClass;
class FOSUBUserProvider extends BaseClass
{
/**
* {@inheritDoc}
*/
public function connect($user, UserResponseInterface $response)
{
$property = $this->getProperty($response);
$setter = 'set'.ucfirst($property);
if (!method_exists($user, $setter)) {
throw new \RuntimeException(sprintf("Class '%s' should have a method '%s'.", get_class($user), $setter));
}
$username = $response->getUsername();
if (null !== $previousUser = $this->userManager->findUserBy(array($property => $username))) {
$previousUser->$setter(null);
$this->userManager->updateUser($previousUser);
}
$user->$setter($username);
$serviceAccessTokenName = $response->getResourceOwner()->getName() . 'AccessToken';
$serviceAccessTokenSetter = 'set' . ucfirst($serviceAccessTokenName);
if(method_exists($user, $serviceAccessTokenSetter))
$user->$serviceAccessTokenSetter($response->getAccessToken());
$this->userManager->updateUser($user);
}
}