package com.airlock.iam.login.app.misc.session;

import jakarta.annotation.Nullable;
import java.util.Objects;
import java.util.Optional;

public class UserIdentityInformation {
   private final String username;
   private final Optional<String> providedUsername;
   private final Optional<String> clientCertSubjectDn;

   public UserIdentityInformation(String username, String providedUsername) {
      this(username, providedUsername, null);
   }

   public UserIdentityInformation(String username, @Nullable String providedUsername, @Nullable String clientCertSubjectDn) {
      Objects.requireNonNull(username, "username must not be null");
      this.username = username;
      this.providedUsername = Optional.ofNullable(providedUsername);
      this.clientCertSubjectDn = Optional.ofNullable(clientCertSubjectDn);
   }

   public String getUsername() {
      return this.username;
   }

   public Optional<String> getProvidedUsername() {
      return this.providedUsername;
   }

   public Optional<String> getClientCertSubjectDn() {
      return this.clientCertSubjectDn;
   }
}
