AuthServices constructor

AuthServices({
  1. required TokenManagerBuilder<TokenManager> primaryTokenManagerBuilder,
  2. List<IdentityProviderBuilder<Object>> identityProviderBuilders = const [],
  3. List<TokenManagerBuilder<TokenManager>> additionalTokenManagerBuilders = const [],
  4. AuthUsers authUsers = const AuthUsers(),
  5. UserProfiles userProfiles = const UserProfiles(),
})

Creates a new AuthServices instance.

Use AuthServices.set to create a new instance and set it as the global instance.

primaryTokenManagerBuilder is the primary token manager builder that will build the token manager used by identity providers for issuing new tokens. The builder is used to build the token manager instance with the necessary dependencies.

identityProviderBuilders is a list of IdentityProviderBuilder that build the identity providers used by authentication endpoints. Each one creates a provider instance with the appropriate token manager dependency.

additionalTokenManagerBuilders is a list of additional token manager builders that are used to build additional token managers that handle token lifecycle operations alongside the primaryTokenManagerBuilder. These additional token managers are used to validate tokens in the same order they are represented in the list.

authUsers is the default manager for managing auth users.

userProfiles is the default manager for managing user profiles.

Implementation

AuthServices({
  required final TokenManagerBuilder primaryTokenManagerBuilder,
  final List<IdentityProviderBuilder> identityProviderBuilders = const [],
  final List<TokenManagerBuilder> additionalTokenManagerBuilders = const [],
  this.authUsers = const AuthUsers(),
  this.userProfiles = const UserProfiles(),
}) {
  tokenManager = MultiTokenManager(
    primaryTokenManager: primaryTokenManagerBuilder.build(
      authUsers: authUsers,
    ),
    additionalTokenManagers: additionalTokenManagerBuilders
        .map((final factory) => factory.build(authUsers: authUsers))
        .toList(),
  );

  for (final provider in identityProviderBuilders) {
    _providers[provider.type] = provider.build(
      tokenManager: tokenManager,
      authUsers: authUsers,
      userProfiles: userProfiles,
    );
  }
}