/units/urb-account-management/scripts/scorePassword_Simple.js

https://gitlab.com/ronal2do/UniversalRelayBoilerplate · JavaScript · 36 lines · 27 code · 6 blank · 3 comment · 5 complexity · 8a14ffa7ab7f3f34faa5228f6f21b825 MD5 · raw file

  1. /* @flow weak */
  2. export default function scorePassword_Simple(
  3. pass,
  4. uniqueLettersAwardUntilRepetitions,
  5. variationAwardCoefficient,
  6. )
  7. {
  8. let score = 0
  9. if (!pass)
  10. return 0
  11. // award every unique letter until 5 repetitions
  12. let letters = new Object()
  13. for (var i=0; i<pass.length; i++)
  14. {
  15. letters[pass[i]] = (letters[pass[i]] || 0) + 1
  16. score += uniqueLettersAwardUntilRepetitions / letters[pass[i]]
  17. }
  18. // bonus points for mixing it up
  19. let variations = {
  20. digits: /\d/.test(pass),
  21. lower: /[a-z]/.test(pass),
  22. upper: /[A-Z]/.test(pass),
  23. nonWords: /\W/.test(pass),
  24. }
  25. let variationCount = 0
  26. for (var check in variations)
  27. variationCount += (variations[check] == true) ? 1 : 0
  28. score += (variationCount - 1) * variationAwardCoefficient
  29. return score
  30. }