/** * @param ConsumerRegistrationRequestInterface $request * * @return Consumer * * @throws DomainException */ public function handle(ConsumerRegistrationRequestInterface $request) { $consumerEntity = $request->getConsumerEntity(); $gguid = UUID::generate(); $username = new Username($consumerEntity->getUsername()); $password = new Password($consumerEntity->getPassword()); $this->validateUsernameIsUnique($username); $consumer = new Consumer($gguid, $username, $password); $this->consumerRepository->persist($consumer); $this->getEventDispatcher()->trigger(new ConsumerRegisteredEvent($gguid)); return $consumer; }
/** * @param HttpRequest $httpRequest */ protected function validateHttpRequest(HttpRequest $httpRequest) { parent::validateHttpRequest($httpRequest); if ($httpRequest->attributes->has('uuid') === false) { throw new NotFoundHttpException('Missing required attribute \'uuid\''); } $uuid = $httpRequest->attributes->get('uuid'); $consumer = $this->consumerRepository->getOneByUUID($uuid); if ($consumer instanceof Consumer === false) { throw new NotFoundHttpException('No consumer found with id: ' . $uuid); } $this->consumer = $consumer; }
/** * @param Username $username * * @return bool */ public function isStatisfiedBy(Username $username) { return $this->consumerRepository->hasConsumerWithUsername($username) === false; }