public function newUser($email) { $element = new Email('email'); if (!$element->getEmailValidator()->isValid($email)) { throw new \Exception("Invalid email"); } $user = $this->getRepository()->findOneBy(['email' => $email]); if ($user) { if ($user->getState() !== self::USER_STATE_NOT_CONFIRMED_NOT_COMPLETE) { throw new UserAlreadyExists("User with provided email already exists"); } } else { $user = $this->factoryUser(); $user->setEmail($email); $user->setState(self::USER_STATE_NOT_CONFIRMED_NOT_COMPLETE); $this->em->persist($user); } //generate new password $password = $this->createPassword(); $passwordHash = $this->getPasswordHash($password); $user->setPassword($passwordHash); $this->em->flush(); // $this->codeIssuer->issue($user->getId(), 'email', $email, 'default', [ // 'email' => $user->getEmail(), // 'password' => $password // ]); $this->issueCode($user, $password); $this->getEventManager()->trigger('register.post', $this, ['user' => $user]); return true; }