@Override
  public void registerUser(final UserDetails userDetails) {

    final Password password = new Password(userDetails.getPassword());
    final ApplicationRole initialRole = getInitialRole();
    final Boolean enabled = true;
    final String username = userDetails.getUsername();
    final String emailAddress = userDetails.getEmailAddress();
    final ApplicationUser applicationUser =
        applicationUserRepository.newLocalUser(
            username, password, password, initialRole, enabled, emailAddress);

    final Set<ApplicationRole> additionalRoles = getAdditionalInitialRoles();
    if (additionalRoles != null) {
      for (final ApplicationRole additionalRole : additionalRoles) {
        applicationUser.addRole(additionalRole);
      }
    }
  }