Completed
Push — master ( da680b...0969a6 )
by
unknown
13s
created

InMemoryBaseUserRepository::__construct()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 25
Code Lines 18

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 25
rs 8.8571
cc 1
eloc 18
nc 1
nop 1
1
<?php
2
3
namespace SumoCoders\FrameworkMultiUserBundle\User;
4
5
use SumoCoders\FrameworkMultiUserBundle\Entity\BaseUser;
6
use SumoCoders\FrameworkMultiUserBundle\Security\PasswordResetToken;
7
use SumoCoders\FrameworkMultiUserBundle\User\Interfaces\User;
8
use SumoCoders\FrameworkMultiUserBundle\User\Interfaces\UserRepository as UserRepositoryInterface;
9
use Symfony\Component\Security\Core\Encoder\EncoderFactory;
10
11
class InMemoryBaseUserRepository implements UserRepositoryInterface
12
{
13
    /** @var BaseUser[] */
14
    private $users = [];
15
16
    public function __construct(EncoderFactory $encoderFactory)
17
    {
18
        $user = new BaseUser(
19
            'wouter',
20
            'test',
21
            'Wouter Sioen',
22
            '[email protected]',
23
            1
24
        );
25
        $user->encodePassword($encoderFactory->getEncoder($user));
26
27
        $this->users[] = $user;
28
29
        $passwordResetUser = new BaseUser(
30
            'reset',
31
            'reset',
32
            'reset',
33
            '[email protected]',
34
            2,
35
            PasswordResetToken::generate()
36
        );
37
        $passwordResetUser->encodePassword($encoderFactory->getEncoder($passwordResetUser));
38
39
        $this->users[] = $passwordResetUser;
40
    }
41
42
    public function findByUsername(string $username): ?User
43
    {
44
        foreach ($this->users as $user) {
45
            if ($user->getUsername() === $username) {
46
                return $user;
47
            }
48
        }
49
50
        return null;
51
    }
52
53
    public function findByEmailAddress(string $emailAddress): ?User
54
    {
55
        foreach ($this->users as $user) {
56
            if ($user->getEmail() === $emailAddress) {
57
                return $user;
58
            }
59
        }
60
61
        return null;
62
    }
63
64
    /**
65
     * @param int $id
66
     *
67
     * @return null|User
68
     */
69
    public function find($id): ?User
70
    {
71
        foreach ($this->users as $user) {
72
            if ($user->getId() === $id) {
73
                return $user;
74
            }
75
        }
76
77
        return null;
78
    }
79
80
    public function supportsClass(string $class): bool
81
    {
82
        return $class === BaseUser::class;
83
    }
84
85
    public function findByPasswordResetToken(PasswordResetToken $token): ?User
86
    {
87
        return $this->findByUsername('reset');
88
    }
89
90
    public function add(User $user): void
91
    {
92
        $this->users[] = $user;
93
    }
94
95
    /**
96
     * This does nothing here since the objects get updated by reference when changing them in the tests
97
     */
98
    public function save(User $user): void
99
    {
100
    }
101
102
    public function delete(User $user): void
103
    {
104
        foreach ($this->users as $key => $row) {
105
            if ($row->getUserName() === $user->getUserName()) {
106
                unset($this->users[$key]);
107
                break;
108
            }
109
        }
110
    }
111
}
112