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

ObjectUserProvider::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
c 1
b 0
f 1
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 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