1 | <?php |
||
8 | class UserManager extends FOSUserManager |
||
9 | { |
||
10 | 2 | public function loadUserByUsername($username) |
|
11 | { |
||
12 | 2 | $user = $this->findUserByUsernameOrEmail($username); |
|
13 | |||
14 | 2 | if (is_null($user)) { |
|
15 | // if not username or email, we now try phone number |
||
16 | 1 | $phoneNumber = $this->normalizePhone($username); |
|
17 | 1 | $user = $this->repository->findOneByPhoneNumber($phoneNumber); |
|
18 | } |
||
19 | |||
20 | 2 | if (is_null($user) || !$user->isEnabled()) { |
|
21 | 1 | return; |
|
22 | } |
||
23 | |||
24 | 1 | return $user; |
|
25 | } |
||
26 | |||
27 | /** |
||
28 | * If a User already exists with the same email or phone number but |
||
29 | * that it was never enabled, we delete that previous user (this case |
||
30 | * may happen if the user stop the registration process before sending |
||
31 | * the validation code and then change phone etc.). |
||
32 | * However to not confuse user, we keep the same confirmation token. |
||
33 | * |
||
34 | * @param User $user User to check the existence of |
||
35 | * |
||
36 | * @return string|null |
||
37 | */ |
||
38 | 10 | public function deleteIfNonEnabledExists(User $user) |
|
39 | { |
||
40 | 10 | $email = $user->getEmail(); |
|
41 | 10 | $inDatabaseUser = null; |
|
42 | 10 | if (!is_null($email)) { |
|
43 | 5 | $inDatabaseUser = $this->findUserByUsernameOrEmail($email); |
|
44 | } |
||
45 | |||
46 | 10 | $phoneNumber = $user->getPhoneNumber(); |
|
47 | 10 | if (is_null($inDatabaseUser) && !is_null($phoneNumber)) { |
|
48 | 5 | $phoneNumber = $this->normalizePhone($phoneNumber); |
|
49 | 5 | $inDatabaseUser = $this->repository->findOneByPhoneNumber($phoneNumber); |
|
50 | } |
||
51 | |||
52 | 10 | $token = null; |
|
53 | 10 | if (!is_null($inDatabaseUser) && !$inDatabaseUser->isEnabled()) { |
|
54 | 2 | $token = $inDatabaseUser->getConfirmationToken(); |
|
55 | 2 | $this->deleteUser($inDatabaseUser); |
|
56 | } |
||
57 | |||
58 | 10 | return $token; |
|
59 | } |
||
60 | |||
61 | 6 | private function normalizePhone($phoneNumber) |
|
67 | } |
||
68 |