/**
  * {@inheritDoc}
  */
 public function loadUserByEmail($email)
 {
     $user = $this->apiUserRepository->findUserByEmail($email);
     if (!$user) {
         throw new UsernameNotFoundException(sprintf('User "%s" does not exist.', $email));
     }
     return $user;
 }
 /**
  * {@inheritDoc}
  */
 public function loadUserByEmail($email)
 {
     $user = $this->apiUserRepository->findUserByEmail($email);
     if (!$user || true === $user->getDiamanteUser()->isDeleted()) {
         throw new UsernameNotFoundException(sprintf('User "%s" does not exist.', $email));
     }
     return $user;
 }
 /**
  * @param ResetPasswordCommand $command
  * @return void
  * @throws \RuntimeException if given emailAddres is not equal to generated one for user
  */
 public function resetPassword(ResetPasswordCommand $command)
 {
     /**
      * @var DiamanteUser $diamanteUser
      */
     $diamanteUser = $this->diamanteUserRepository->findUserByEmail($command->email);
     if (is_null($diamanteUser)) {
         throw new \RuntimeException('No accounts with that email found.');
     }
     /**
      * @var ApiUser $apiUser
      */
     $apiUser = $this->apiUserRepository->findUserByEmail($command->email);
     if (is_null($apiUser)) {
         $apiUser = $this->apiUserFactory->create($command->email, sha1(microtime(true), true));
     }
     $apiUser->generateHash();
     $this->apiUserRepository->store($apiUser);
     $this->resetPasswordMailer->sendResetEmail($diamanteUser->getEmail(), $apiUser->getHash());
 }