-
Notifications
You must be signed in to change notification settings - Fork 40
/
User.php
132 lines (113 loc) · 3 KB
/
User.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
declare(strict_types=1);
namespace App\Entity;
use App\Repository\UserRepository;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\PasswordAuthenticatedUserInterface;
use Symfony\Component\Security\Core\User\UserInterface;
#[ORM\Entity(repositoryClass: UserRepository::class)]
class User implements UserInterface, \JsonSerializable, PasswordAuthenticatedUserInterface
{
#[ORM\Id]
#[ORM\GeneratedValue]
#[ORM\Column]
private int|null $id = null;
#[ORM\Column(length: 180)]
private string $password;
/** @param array<string> $roles */
public function __construct(
#[ORM\Column(length: 180, unique: true)]
private string $email,
#[ORM\Column]
private array $roles = ['ROLE_USER'],
) {
}
public function getId(): int|null
{
return $this->id;
}
public function getEmail(): string
{
return $this->email;
}
public function setEmail(string $email): void
{
$this->email = $email;
}
/**
* A visual identifier that represents this user.
*
* @see UserInterface
*/
public function getUserIdentifier(): string
{
return $this->email;
}
/** @deprecated since Symfony 5.3, use getUserIdentifier instead */
public function getUsername(): string
{
return $this->email;
}
/**
* This is "primary" role
*
* @see UserInterface
*
* @return array<string>
*/
public function getRoles(): array
{
return $this->roles;
}
/** @param array<string> $roles */
public function setRoles(array $roles): void
{
$this->roles = $roles;
}
/**
* DO NOT USE this method, it is required for the interface UserInterface
* This method can be removed in Symfony 6.0 - is not needed for apps that do not check user passwords.
*
* @see PasswordAuthenticatedUserInterface
*/
public function getPassword(): string
{
return $this->password;
}
public function setPassword(string $password): void
{
$this->password = $password;
}
/**
* DO NOT USE this method, it is required for the interface UserInterface
* This method can be removed in Symfony 6.0 - is not needed for apps that do not check user passwords.
*
* @see UserInterface
*/
public function getSalt(): string|null
{
return null;
}
/**
* called after authentication
*
* @see UserInterface
*/
public function eraseCredentials(): void
{
// If you store any temporary, sensitive data on the user, clear it here
// $this->plainPassword = null;
}
public function jsonSerialize(): mixed
{
return [
'id' => $this->getId(),
'email' => $this->getEmail(),
'username' => $this->getUsername(),
];
}
public function hasRole(string $role): bool
{
return \in_array($role, $this->getRoles());
}
}