Completed
Push — master ( 2798f7...d9c10c )
by
unknown
06:53 queued 04:03
created

InMemoryUserRepository::findByEmailAddress()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

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