AuthManager class
Authentication manager for handling user authentication
This class acts as a facade for authentication operations, providing a unified interface for different authentication guards (web, api, etc.). It implements the Strategy pattern and Factory pattern for better maintainability and extensibility.
Features:
- Multi-guard support (web, api, etc.)
- Provider-specific authentication
- Configuration-driven guard selection
- Unified authentication interface
- Guard caching for performance
- Extensible guard registration
Example usage:
// Using default guard and provider
final authManager = AuthManager();
final result = await authManager.attempt({'email': 'user@example.com', 'password': 'password'});
// Using specific guard
final webAuth = AuthManager(guard: 'web');
final webResult = await webAuth.attempt(credentials);
// Using specific guard and provider
final adminAuth = AuthManager(guard: 'web', provider: 'admins_web');
final adminResult = await adminAuth.attempt(credentials);
// Verifying tokens
final user = await authManager.user(token);
// Logging out
await authManager.logout(token);
Constructors
- AuthManager({String? guard, String? provider, AuthConfig? authConfig})
- Creates an enhanced authentication manager instance
Properties
- config → AuthConfig
-
Gets the authentication configuration
no setter
- guard → String
-
Gets the current authentication guard name
no setter
- guardInstance → Guard
-
Gets the current authentication guard
no setter
- hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
attempt(
Map< String, dynamic> credentials) → Future<AuthResponse> - Attempts to authenticate a user with the provided credentials
-
attemptWithGuard(
String guardName, Map< String, dynamic> credentials) → Future<AuthResponse> - This method provides secure token refresh functionality with:
-
check(
String token) → Future< bool> - Checks if a token is valid
-
getAvailableGuards(
) → List< String> - Gets a list of available guards
-
getGuard(
String guardName) → Guard - Gets a guard instance by name
-
logout(
String token) → Future< void> - Logs out the user with the current guard.
-
logoutAll(
dynamic token) → Future< void> - Logs out the current user from all devices
-
logoutAllWithGuard(
String guardName, dynamic token) → Future< void> - Logs out the current user from all devices with a specific guard
-
logoutOthers(
dynamic userId, String currentToken) → Future< void> - Logs out the user from other devices (keeps current session)
-
logoutWithGuard(
String guardName, String token) → Future< void> - Logs out with a specific guard
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
refresh(
String refreshToken) → Future< AuthResponse> - Refreshes an access token using a refresh token
-
toString(
) → String -
A string representation of this object.
inherited
-
user(
String token) → Future< Authenticatable> - Verifies the validity of an authentication token
-
userWithGuard(
String guardName, String token) → Future< Authenticatable> - Verifies a token with a specific guard
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited
Static Methods
-
clearGuardCache(
) → void - Clears the guard cache
-
registerGuardFactory(
String guardName, Guard factory(AuthConfig config, String guardName)) → void - Registers a custom guard factory