package com.airlock.iam.flow.shared.application.configuration.valueprovider;

import com.airlock.iam.common.application.configuration.event.EventReadyValueMapProviderConfig;
import com.airlock.iam.flow.api.application.configuration.valueprovider.ValueMapProviderConfig;
import com.airlock.iam.plugin.api.annotation.config.Plugin;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;

@Plugin(
   description = "<p>Provides identity information of the user.</p><p>If a user has been identified, the following values are provided:<ul><li><b>user-id</b>: the ID of the current user.</li><li><b>provided-username</b>: the provided username (if present).</li><li><b>username-to-propagate</b>: the username to propagate for the current user (if present).</li><li><b>representer-user-id</b>: the user ID of the representer (if present).</li></ul></p>",
   displayName = "User Identity Map"
)
public final class UserIdentityValueMapProviderConfig implements ValueMapProviderConfig, EventReadyValueMapProviderConfig {
   public static final String USER_ID_KEY = "user-id";
   public static final String PROVIDED_USERNAME_KEY = "provided-username";
   public static final String USERNAME_TO_PROPAGATE_KEY = "username-to-propagate";
   public static final String REPRESENTER_USER_ID_KEY = "representer-user-id";

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

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

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

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