calculatePasswordStrength function

NicePasswordLevel calculatePasswordStrength(
  1. String password
)

Calculate password strength.

Implementation

NicePasswordLevel calculatePasswordStrength(String password) {
  if (password.isEmpty) return NicePasswordLevel.none;
  var score = 0;
  if (password.length >= 8) score++;
  if (password.length >= 12) score++;
  if (RegExp(r'[a-z]').hasMatch(password)) score++;
  if (RegExp(r'[A-Z]').hasMatch(password)) score++;
  if (RegExp(r'[0-9]').hasMatch(password)) score++;
  if (RegExp(r'[!@#$%^&*(),.?":{}|<>]').hasMatch(password)) score++;
  if (password.length >= 16) score++;

  return switch (score) {
    0 => NicePasswordLevel.none,
    1 => NicePasswordLevel.weak,
    2 || 3 => NicePasswordLevel.fair,
    4 => NicePasswordLevel.good,
    5 => NicePasswordLevel.strong,
    _ => NicePasswordLevel.veryStrong,
  };
}