Completed
Pull Request — master (#60)
by
unknown
02:04
created

InMemoryBaseUserRepository   A

Complexity

Total Complexity 17

Size/Duplication

Total Lines 101
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 0
Metric Value
wmc 17
c 0
b 0
f 0
lcom 1
cbo 3
dl 0
loc 101
rs 10

9 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 23 1
A findByUsername() 0 10 3
A findByEmailAddress() 0 10 3
A find() 0 10 3
A supportsClass() 0 4 1
A findByPasswordResetToken() 0 4 1
A add() 0 4 1
A save() 0 3 1
A delete() 0 9 3
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
10
class InMemoryBaseUserRepository implements UserRepositoryInterface
11
{
12
    /** @var BaseUser[] */
13
    private $users = [];
14
15
    public function __construct()
16
    {
17
        $user = new BaseUser(
18
            'wouter',
19
            'test',
20
            'Wouter Sioen',
21
            '[email protected]',
22
            1
23
        );
24
25
        $this->users[] = $user;
26
27
        $passwordResetUser = new BaseUser(
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 User|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 === BaseUser::class;
80
    }
81
82
    public function findByPasswordResetToken(PasswordResetToken $token)
83
    {
84
        return $this->findByUsername('reset');
85
    }
86
87
    public function add(User $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(User $user)
98
    {
99
    }
100
101
    public function delete(User $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