Completed
Push — user-bundle-roles-adjustments ( 7857fa...bbe29f )
by
unknown
05:13
created

User::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 0
cts 2
cp 0
rs 9.9332
c 0
b 0
f 0
cc 1
nc 1
nop 6
crap 2
1
<?php
2
3
namespace SumoCoders\FrameworkUserBundle\Entity;
4
5
use Doctrine\Common\Collections\ArrayCollection;
6
use Doctrine\Common\Collections\Collection;
7
use Doctrine\ORM\Mapping as ORM;
8
use SumoCoders\FrameworkMultiUserBundle\DataTransferObject\Interfaces\UserDataTransferObject;
9
use SumoCoders\FrameworkMultiUserBundle\Entity\BaseUser;
10
use SumoCoders\FrameworkMultiUserBundle\Entity\UserRole;
11
use SumoCoders\FrameworkMultiUserBundle\Security\PasswordResetToken;
12
13
/**
14
 * @ORM\Entity(repositoryClass="SumoCoders\FrameworkUserBundle\Repository\UserRepository")
15
 * @ORM\Table()
16
 */
17
class User extends BaseUser
18
{
19
    public function __construct(
20
        string $plainPassword,
21
        string $displayName,
22
        string $email,
23
        Collection $roles,
24
        int $id = null,
25
        PasswordResetToken $token = null
26
    ) {
27
        parent::__construct($email, $plainPassword, $displayName, $email, $roles, $id, $token);
28
    }
29
30
    public function hasRole(string $roleName): bool
31
    {
32
        if (empty($this->roles)) {
33
            return false;
34
        }
35
36
        /** @var UserRole $role */
37
        foreach ($this->roles as $role) {
38
            if ($role->getRole() === $roleName) {
39
                return true;
40
            }
41
        }
42
43
        return false;
44
    }
45
46
    public function change(UserDataTransferObject $data): void
47
    {
48
        parent::change($data);
49
50
        if ($data instanceof UserDataTransferObject) {
51
            if (is_array($data->getRoles())) {
52
                $this->roles = new ArrayCollection($data->getRoles());
53
            } else {
54
                $this->roles = $data->getRoles();
55
            }
56
        }
57
    }
58
}
59