createJWTValidationMiddleware static method
Detecta y procesa anotaciones JWT en controladores y endpoints
controllerType - Tipo del controlador a analizar
methodName - Nombre del método/endpoint a analizar
Retorna lista de middlewares JWT que deben aplicarse a este endpoint
Implementation
static Future<List<Middleware>> createJWTValidationMiddleware(
Type controllerType,
String methodName,
) async {
final middlewares = <Middleware>[];
try {
Log.d('Creating JWT validation middleware for: $controllerType.$methodName');
// Verificar anotación @JWTPublic primero (mayor prioridad)
if (_hasJWTPublicAnnotation(controllerType, methodName)) {
Log.i('🔓 Public endpoint detected: $controllerType.$methodName - No JWT validation required');
return middlewares; // Sin middleware de validación
}
// Obtener validadores del método (endpoint-level)
final endpointValidators = _getJWTEndpointValidators(controllerType, methodName);
// Si hay validadores a nivel de endpoint, usarlos (sobrescriben controller)
if (endpointValidators != null) {
Log.i('🔐 Endpoint-level JWT validation: $controllerType.$methodName');
middlewares.add(_createValidationMiddleware(
endpointValidators.validators,
endpointValidators.requireAll,
'$controllerType.$methodName'
));
return middlewares;
}
// Obtener validadores del controlador (controller-level)
final controllerValidators = _getJWTControllerValidators(controllerType);
if (controllerValidators != null) {
Log.i('🔐 Controller-level JWT validation: $controllerType.$methodName');
middlewares.add(_createValidationMiddleware(
controllerValidators.validators,
controllerValidators.requireAll,
'$controllerType.$methodName'
));
return middlewares;
}
// Sin validación JWT configurada
Log.d('🔓 No JWT validation configured for: $controllerType.$methodName');
return middlewares;
} catch (e, stackTrace) {
Log.e('Error creating JWT validation middleware for $controllerType.$methodName: $e');
return middlewares;
}
}