Exemplo n.º 1
0
  private void registerAdministratorFor(
      Tenant aTenant,
      FullName anAdministorName,
      EmailAddress anEmailAddress,
      PostalAddress aPostalAddress,
      Telephone aPrimaryTelephone,
      Telephone aSecondaryTelephone) {

    RegistrationInvitation invitation = aTenant.offerRegistrationInvitation("init").openEnded();

    String strongPassword = DomainRegistry.passwordService().generateStrongPassword();

    User admin =
        aTenant.registerUser(
            invitation.invitationId(),
            "admin",
            strongPassword,
            Enablement.indefiniteEnablement(),
            new Person(
                aTenant.tenantId(),
                anAdministorName,
                new ContactInformation(
                    anEmailAddress, aPostalAddress, aPrimaryTelephone, aSecondaryTelephone)));

    aTenant.withdrawInvitation(invitation.invitationId());

    this.userRepository().add(admin);

    Role adminRole =
        aTenant.provisionRole("Administrator", "Default " + aTenant.name() + " administrator.");

    adminRole.assignUser(admin);

    this.roleRepository().add(adminRole);

    DomainEventPublisher.instance()
        .publish(
            new TenantAdministratorRegistered(
                aTenant.tenantId(),
                aTenant.name(),
                anAdministorName,
                anEmailAddress,
                admin.username(),
                strongPassword));
  }