call method

Implementation

FutureOr<PasswordStrength> call(FutureOr<String> password) async {
  PasswordStrength response = PasswordStrength.veryWeek;
  final realPassword = (await password).trim();
  if (realPassword.length < minPasswordLength) {
    response = PasswordStrength.tiny;
  } else {
    int points = 0;
    if (_lowerCase.hasMatch(realPassword)) {
      points += 1;
    }

    if (_upperCase.hasMatch(realPassword)) {
      points += 1;
    }

    if (_numberCase.hasMatch(realPassword)) {
      points += 1;
    }

    if (_symbolsCase.hasMatch(realPassword)) {
      points += 1;
    }

    switch (points) {
      case 0:
        response = PasswordStrength.veryWeek;
        break;
      case 1:
        response = PasswordStrength.veryWeek;
        break;
      case 2:
        response = PasswordStrength.week;
        break;
      case 3:
        response = PasswordStrength.good;
        break;
      case 4:
        response = PasswordStrength.strong;
        break;
    }
  }

  return response;
}