validate method
override
Método obligatorio que implementa la lógica de validación
request - El request HTTP actual
jwtPayload - El payload decodificado del JWT
Retorna ValidationResult indicando éxito o falla con mensaje
Implementation
@override
ValidationResult validate(Request request, Map<String, dynamic> jwtPayload) {
// Estructura JWT completamente controlada por el desarrollador
final userDepartment = jwtPayload['department'] as String?;
final clearanceLevel = jwtPayload['clearance_level'] as int? ?? 0;
final certifications = jwtPayload['certifications'] as List<dynamic>? ?? [];
final maxTransactionAmount = jwtPayload['max_transaction_amount'] as double? ?? 0.0;
// Validación de departamento
if (userDepartment != 'finance' && userDepartment != 'accounting') {
return ValidationResult.invalid('Access restricted to financial departments');
}
// Validación de nivel de autorización
if (clearanceLevel < 3) {
return ValidationResult.invalid('Insufficient clearance level for financial operations');
}
// Validación de certificaciones
if (!certifications.contains('financial_ops_certified')) {
return ValidationResult.invalid('Financial operations certification required');
}
// Validación específica basada en el monto de la operación
if (minimumAmount > 0 && maxTransactionAmount < minimumAmount) {
return ValidationResult.invalid('Transaction amount exceeds user authorization limit');
}
return ValidationResult.valid();
}