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) {
  // Control total del desarrollador sobre campos JWT
  final userDepartment = jwtPayload['department'] as String?;
  final jobTitle = jwtPayload['job_title'] as String?;
  final employeeLevel = jwtPayload['employee_level'] as String?;

  // Validar departamento
  if (userDepartment == null || !allowedDepartments.contains(userDepartment)) {
    return ValidationResult.invalid(
      'Access restricted to: ${allowedDepartments.join(", ")} departments'
    );
  }

  // Validar nivel gerencial si es requerido
  if (requireManagerLevel) {
    if (employeeLevel != 'manager' && employeeLevel != 'director') {
      return ValidationResult.invalid('Management level access required');
    }
  }

  return ValidationResult.valid();
}