/** * Handle new user registration * * @param RegisterNewUser $command * @return void */ public function handle(RegisterNewUser $command) { $username = new AccountDomainModels\Username($command->username); $email = new FoundationDomainModels\Email($command->email); $description = new FoundationDomainModels\Description($command->description); $id = $this->userRepository->nextIdentity(); $roles = count($command->roles) ? $this->buildRoles($command->roles) : $this->roleRepository->getDefaultRoles(); $this->ensureUsernameIsUnique($username); $this->ensureEmailIsUnique($email); $user = new AccountDomainModels\User($id, $username, $email, $description, $roles); $this->userRepository->save($user); $this->events->fire([new UserWasRegistered($user)]); }