/**
  * @param  RegisterUserCommand $command
  *
  * @return User                $user
  */
 private function handleUserRegistration(RegisterUserCommand $command)
 {
     $username = new Username($command->username());
     $password = new Password($command->password());
     $user = $this->registerUserService->registerUser($username, $password);
     $this->userRepository->add($user);
     return $user;
 }
 /**
  * @param ChangeUsernameCommand $command
  *
  * @return User
  */
 private function handleUsernameChange(ChangeUsernameCommand $command)
 {
     $userIdentifier = new UserIdentifier($command->userIdentifier());
     $newUsername = new Username($command->newUsername());
     $user = $this->userRepository->load($userIdentifier);
     $user->changeUsername($newUsername);
     return $user;
 }
 /**
  * @param ChangeUserPasswordCommand $command
  *
  * @return User
  */
 private function handleUserPasswordChange(ChangeUserPasswordCommand $command)
 {
     $userIdentifier = new UserIdentifier($command->userIdentifier());
     $newPassword = new Password($command->newPassword());
     $hashedPassword = $this->passwordHashingService->hashPassword($newPassword);
     $user = $this->userRepository->load($userIdentifier);
     $user->changePassword($hashedPassword);
     return $user;
 }