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;
 }