package com.airlock.iam.oauth2.application.configuration.valueprovider;

import com.airlock.iam.flow.shared.application.configuration.valueprovider.RoleProviderConfig;
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 all roles of the OAuth 2.0 / OpenID Connect credential that have been collected during authentication. The credential contains all mapped data from the resource requests (in case of OpenID Connect, additionally the ID Token resources), that were configured in the client settings.",
   displayName = "OAuth 2.0 Credential Roles Provider"
)
@PluginLicenseRestriction(moduleAffiliation = "OAuthClient")
public final class OAuth2CredentialRolesProviderConfig implements RoleProviderConfig {
   public static final String OAUTH2_CREDENTIAL_ROLES_PROVIDER = "OAuth 2.0 Credential Roles Provider";

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

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

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

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