/** * Register new Diamante User and grant API access for it. * Sends confirmation email. While registration is not confirmed API access is not active * @param Command\RegisterCommand $command * @return void */ public function register(Command\RegisterCommand $command) { $diamanteUser = $this->diamanteUserFactory->create($command->email, $command->firstName, $command->lastName); $apiUser = $this->apiUserFactory->create($command->email, $command->password); if ($this->diamanteUserRepository->findUserByEmail($command->email)) { throw new \RuntimeException('An account with this email address already exists'); } $diamanteUser->setApiUser($apiUser); $this->diamanteUserRepository->store($diamanteUser); $this->registrationMailer->sendConfirmationEmail($diamanteUser->getEmail(), $apiUser->getHash()); }
/** * @param Message $message * @param Ticket $ticket */ private function processWatchers(Message $message, $ticket) { if (!$ticket) { return; } /** @var Message\MessageRecipient $recipient */ foreach ($message->getRecipients() as $recipient) { $email = $recipient->getEmail(); if ($email == $this->configManager->get(self::EMAIL_NOTIFIER_CONFIG_PATH)) { continue; } $diamanteUser = $this->diamanteUserRepository->findUserByEmail($email); $oroUser = $this->oroUserManager->findUserByEmail($email); if ($oroUser) { $user = new User($oroUser->getId(), User::TYPE_ORO); } elseif ($diamanteUser) { $user = new User($diamanteUser->getId(), User::TYPE_DIAMANTE); } else { $diamanteUser = $this->diamanteUserFactory->create($email, $recipient->getFirstName(), $recipient->getLastName()); $this->diamanteUserRepository->store($diamanteUser); $user = new User($diamanteUser->getId(), User::TYPE_DIAMANTE); } $this->watchersService->addWatcher($ticket, $user); } }
/** * @param ApiUser $apiUser * @return DiamanteUser */ private function loadDiamanteUser(ApiUser $apiUser) { $diamanteUser = $this->diamanteUserRepository->findUserByEmail($apiUser->getEmail()); if (is_null($diamanteUser)) { throw new \RuntimeException('User loading failed, user not found.'); } return $diamanteUser; }
/** * @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()); }
/** * @param ApiUser $apiUser * @return DiamanteUser|null */ public function getUserFromApiUser(ApiUser $apiUser) { return $this->diamanteUserRepository->findUserByEmail($apiUser->getEmail()); }