validate method

  1. @override
ValidationResult validate(
  1. Request request,
  2. Map<String, dynamic> jwtPayload
)
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();
}