tokenBlacklist static method

Middleware tokenBlacklist({
  1. required Set<String> blacklistedTokens,
})

Middleware para verificar tokens en blacklist

blacklistedTokens - Set de tokens revocados/blacklisteados

Implementation

static Middleware tokenBlacklist({
  required Set<String> blacklistedTokens,
}) {
  return (Handler innerHandler) {
    return (Request request) async {
      final requestId = request.context['request_id'] as String? ?? 'unknown';

      try {
        // Obtener token del contexto
        final authHeader = request.headers['authorization'];
        if (authHeader != null && authHeader.startsWith('Bearer ')) {
          final token = authHeader.substring(7);

          if (blacklistedTokens.contains(token)) {
            Log.w('[$requestId] Blacklisted token attempted access');
            return Response(
              401,
              body: jsonEncode({
                'success': false,
                'error': {
                  'code': 'TOKEN_BLACKLISTED',
                  'message': 'Token has been revoked',
                  'status_code': 401,
                },
                'timestamp': DateTime.now().toIso8601String(),
                'request_id': requestId,
              }),
              headers: {
                'Content-Type': 'application/json',
                'X-Request-ID': requestId,
              },
            );
          }
        }

        return await innerHandler(request);

      } catch (e) {
        Log.e('[$requestId] Token blacklist check error: $e');
        return await innerHandler(request);
      }
    };
  };
}