validatePin method
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),
};
}