| Conditions | 5 |
| Paths | 3 |
| Total Lines | 15 |
| Code Lines | 10 |
| Lines | 0 |
| Ratio | 0 % |
| Tests | 0 |
| CRAP Score | 30 |
| Changes | 0 | ||
| 1 | <?php |
||
| 28 | public function connect(UserInterface $user, UserResponseInterface $response) |
||
| 29 | { |
||
| 30 | $service = ucfirst($response->getResourceOwner()->getName()); |
||
| 31 | $serviceUserId = $response->getData()['id']; |
||
| 32 | |||
| 33 | if (($id = $user->{"get{$service}Id"}()) !== null && $id !== $serviceUserId) { |
||
| 34 | throw new ConnectException('users.connection.account_mismatch'); |
||
| 35 | } elseif ($id === null && $this->em->getRepository(User::class)->{"findOneBy{$service}Id"}($serviceUserId) !== null) { |
||
| 36 | throw new ConnectException('users.connection.account_already_bound'); |
||
| 37 | } |
||
| 38 | $user |
||
| 39 | ->{"set{$service}Id"}($response->getData()['id']) |
||
| 40 | ->{"set{$service}AccessToken"}($response->getAccessToken()) |
||
| 41 | ; |
||
| 42 | $this->userManager->updateUser($user); |
||
| 43 | } |
||
| 44 | } |