package com.airlock.iam.factor.application.configuration.airlock2fa;

import com.airlock.iam.factor.domain.service.airlock2fa.displayname.Airlock2FAAccountDisplayNameProvider;
import com.airlock.iam.factor.domain.service.airlock2fa.displayname.Airlock2FAIamUsernameAccountDisplayNameProvider;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import com.airlock.iam.plugin.api.annotation.license.PluginLicenseRestriction;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

@Plugin(
   description = "Provides the user's username stored in IAM as display name during the enrollment for Airlock 2FA.",
   displayName = "IAM Username (Airlock 2FA Account Display Name)"
)
@PluginLicenseRestriction(moduleAffiliation = "Airlock2FA")
public final class Airlock2FAIamUsernameDisplayNameProviderConfig implements Airlock2FAUserAccountDisplayNameProviderConfig {
   @Override
   public Airlock2FAAccountDisplayNameProvider logic() {
      return new Airlock2FAIamUsernameAccountDisplayNameProvider();
   }

   @SuppressFBWarnings(justification = "generated code")
   public static Airlock2FAIamUsernameDisplayNameProviderConfig.Airlock2FAIamUsernameDisplayNameProviderConfigBuilder builder() {
      return new Airlock2FAIamUsernameDisplayNameProviderConfig.Airlock2FAIamUsernameDisplayNameProviderConfigBuilder();
   }

   @SuppressFBWarnings(justification = "generated code")
   public static class Airlock2FAIamUsernameDisplayNameProviderConfigBuilder {
      @SuppressFBWarnings(justification = "generated code")
      Airlock2FAIamUsernameDisplayNameProviderConfigBuilder() {
      }

      @SuppressFBWarnings(justification = "generated code")
      public Airlock2FAIamUsernameDisplayNameProviderConfig build() {
         return new Airlock2FAIamUsernameDisplayNameProviderConfig();
      }

      @SuppressFBWarnings(justification = "generated code")
      @Override
      public String toString() {
         return "Airlock2FAIamUsernameDisplayNameProviderConfig.Airlock2FAIamUsernameDisplayNameProviderConfigBuilder()";
      }
   }
}
