defaultRole = (int) $defaultRole; } /** * @return UserInterface|null */ public function createUser(Response $response): User { if (empty($this->defaultRole)) { throw new BadCredentialsException('User does not exist.'); } /** @var Role $defaultRole */ $defaultRole = $this->entityManager->getReference(Role::class, $this->defaultRole); $user = $this->userMapper->getUser($response); $user->setPassword($this->userModel->checkNewPassword($user, $this->hasher, EncryptionHelper::generateKey())); $user->setRole($defaultRole); $this->validateUser($user); $this->userModel->saveEntity($user); return $user; } /** * @throws BadCredentialsException */ private function validateUser(User $user): void { // Validate that the user has all that's required foreach ($this->requiredFields as $field) { $getter = 'get'.ucfirst($field); if (!$user->$getter()) { throw new BadCredentialsException('User does not include required fields.'); } } } }