Completed
Push — master ( 883ec5...9a51c3 )
by Wouter
02:47
created

ObjectUserProvider   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 1
Bugs 0 Features 1
Metric Value
wmc 6
c 1
b 0
f 1
lcom 1
cbo 1
dl 0
loc 51
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A loadUserByUsername() 0 12 2
A refreshUser() 0 10 2
A supportsClass() 0 4 1
1
<?php
2
3
namespace SumoCoders\FrameworkMultiUserBundle\Security;
4
5
use Symfony\Component\Security\Core\User\UserProviderInterface;
6
use Symfony\Component\Security\Core\User\UserInterface;
7
use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
8
use SumoCoders\FrameworkMultiUserBundle\User\UserRepository;
9
use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
10
11
class ObjectUserProvider implements UserProviderInterface
12
{
13
    /** @var UserRepository */
14
    private $userRepository;
15
16
    /**
17
     * @param UserRepository $userRepository
18
     */
19
    public function __construct(UserRepository $userRepository)
20
    {
21
        $this->userRepository = $userRepository;
22
    }
23
24
    /**
25
     * {@inheritDoc}
26
     */
27
    public function loadUserByUsername($username)
28
    {
29
        $user = $this->userRepository->findByUsername($username);
30
31
        if ($user) {
32
            return $user;
33
        }
34
35
        throw new UsernameNotFoundException(
36
            sprintf('Username "%s" does not exist.', $username)
37
        );
38
    }
39
40
    /**
41
     * {@inheritDoc}
42
     */
43
    public function refreshUser(UserInterface $user)
44
    {
45
        if (!$this->supportsClass(get_class($user))) {
46
            throw new UnsupportedUserException(
47
                sprintf('Instances of "%s" are not supported.', get_class($user))
48
            );
49
        }
50
51
        return $this->loadUserByUsername($user->getUsername());
52
    }
53
54
    /**
55
     * {@inheritDoc}
56
     */
57
    public function supportsClass($class)
58
    {
59
        return $this->userRepository->supportsClass($class);
60
    }
61
}
62