verifyToken method

  1. @override
Future<Authenticatable> verifyToken(
  1. String token
)
override

Verifies an authentication token

token The token to verify Returns the user associated with the token

Implementation

@override
Future<Authenticatable> verifyToken(String token) async {
  final tokenRecord = await _tokenService.findToken(token);

  if (tokenRecord == null) {
    throw AuthException('Invalid token');
  }

  // Check token expiry
  final expiresAt = tokenRecord['expires_at'] as String?;
  if (expiresAt != null) {
    final expiry = DateTime.parse(expiresAt);
    if (DateTime.now().isAfter(expiry)) {
      await _tokenService.deleteToken(token);
      throw AuthException('Token has expired');
    }
  }

  // Get user data
  final provider = await _getProviderConfig();
  final table = provider['table'] as String;
  final primaryKey = provider['primary_key'] as String;
  final userId = tokenRecord['tokenable_id'];

  final userData = await _repository.findUserById(userId, table, primaryKey);

  if (userData == null) {
    throw AuthException('User not found');
  }

  return DatabaseAuthenticatable.fromProviderConfig(
    userData,
    provider,
  );
}