validatePin method

Map<String, dynamic> validatePin(
  1. String pin
)

Validate PIN according to requirements

Implementation

Map<String, dynamic> validatePin(String pin) {
  OnairosDebugHelper.log('🔐 Validating PIN requirements');

  final errors = <String>[];

  // Check minimum length
  if (pin.length < minimumLength) {
    errors.add('PIN must be at least $minimumLength characters long');
  }

  // Check for numbers
  if (requireNumbers && !RegExp(r'\d').hasMatch(pin)) {
    errors.add('PIN must contain at least one number');
  }

  // Check for special characters
  if (requireSpecialChars && !RegExp(r'[!@#$%^&*(),.?":{}|<>]').hasMatch(pin)) {
    errors.add('PIN must contain at least one special character');
  }

  // Check for uppercase letters
  if (requireUppercase && !RegExp(r'[A-Z]').hasMatch(pin)) {
    errors.add('PIN must contain at least one uppercase letter');
  }

  // Check for lowercase letters
  if (requireLowercase && !RegExp(r'[a-z]').hasMatch(pin)) {
    errors.add('PIN must contain at least one lowercase letter');
  }

  final isValid = errors.isEmpty;

  OnairosDebugHelper.log(isValid ? '✅ PIN validation passed' : '❌ PIN validation failed');

  return {
    'isValid': isValid,
    'errors': errors,
    'strength': _calculatePinStrength(pin),
  };
}