summaryrefslogtreecommitdiff
path: root/src/static/js/jquery/password_strength.js
diff options
context:
space:
mode:
authorMarkus Krogh <markus@nordu.net>2017-06-02 13:19:30 +0200
committerMarkus Krogh <markus@nordu.net>2017-06-02 13:19:30 +0200
commit934702f61f1cbdbf001ebb598c22c75efa247645 (patch)
treeb0c6725a8c8a682b421aa35eea9662d7fff31bd6 /src/static/js/jquery/password_strength.js
parent41afbaae97384968df6312cbe570305208b2216e (diff)
Django 1.11 compatible and cleaned up
Diffstat (limited to 'src/static/js/jquery/password_strength.js')
-rw-r--r--src/static/js/jquery/password_strength.js136
1 files changed, 136 insertions, 0 deletions
diff --git a/src/static/js/jquery/password_strength.js b/src/static/js/jquery/password_strength.js
new file mode 100644
index 0000000..24e1dad
--- /dev/null
+++ b/src/static/js/jquery/password_strength.js
@@ -0,0 +1,136 @@
+/*
+ * Password Strength (0.1.1)
+ * by Sagie Maoz (n0nick.net)
+ * n0nick@php.net
+ *
+ * This plugin will check the value of a password field and evaluate the
+ * strength of the typed password. This is done by checking for
+ * the diversity of character types: numbers, lowercase and uppercase
+ * letters and special characters.
+ *
+ * Copyright (c) 2010 Sagie Maoz <n0nick@php.net>
+ * Licensed under the GPL license, see http://www.gnu.org/licenses/gpl-3.0.html
+ *
+ *
+ * NOTE: This script requires jQuery to work. Download jQuery at www.jquery.com
+ *
+ */
+
+(function($){
+
+var passwordStrength = new function()
+{
+ this.countRegexp = function(val, rex)
+ {
+ var match = val.match(rex);
+ return match ? match.length : 0;
+ }
+
+ this.getStrength = function(val, minLength)
+ {
+ var len = val.length;
+
+ // too short =(
+ if (len < minLength)
+ {
+ return 0;
+ }
+
+ var nums = this.countRegexp(val, /\d/g),
+ lowers = this.countRegexp(val, /[a-z]/g),
+ uppers = this.countRegexp(val, /[A-Z]/g),
+ specials = len - nums - lowers - uppers,
+ others = nums + specials;
+
+ // upper case, lower case and three nums or specials used
+ if (lowers == 0 || uppers == 0 || others < 3)
+ {
+ return 0;
+ }
+
+ var strength = len;
+ /*
+ if (nums) { strength+= 2; }
+ if (lowers) { strength+= uppers? 4 : 3; }
+ if (uppers) { strength+= lowers? 4 : 3; }
+ if (specials) { strength+= 5; }
+ if (len > 10) { strength+= 1; }
+ */
+
+ return strength;
+ }
+
+ this.getStrengthLevel = function(val, minLength)
+ {
+ var strength = this.getStrength(val, minLength);
+ switch (true)
+ {
+ case (strength <= 0):
+ return 1;
+ break;
+ case (strength > 0 && strength <= 8):
+ return 2;
+ break;
+ case (strength > 10 && strength <= 12):
+ return 3;
+ break;
+ case (strength > 12 && strength <= 15):
+ return 4;
+ break;
+ case (strength > 15):
+ return 5;
+ break;
+ }
+
+ return 1;
+ }
+}
+
+$.fn.password_strength = function(options)
+{
+ var settings = $.extend({
+ 'container' : null,
+ 'minLength' : 10,
+ 'texts' : {
+ 1 : 'Too weak',
+ 2 : 'Weak password',
+ 3 : 'Normal strength',
+ 4 : 'Strong password',
+ 5 : 'Very strong password'
+ }
+ }, options);
+
+ return this.each(function()
+ {
+ if (settings.container)
+ {
+ var container = $(settings.container);
+ }
+ else
+ {
+ var container = $('<span/>').attr('class', 'password_strength');
+ $(this).after(container);
+ }
+
+ $(this).keyup(function()
+ {
+ var val = $(this).val();
+ if (val.length > 0)
+ {
+ var level = passwordStrength.getStrengthLevel(val, settings.minLength);
+ var _class = 'password_strength_' + level;
+
+ if (!container.hasClass(_class) && level in settings.texts)
+ {
+ container.text(settings.texts[level]).attr('class', 'password_strength ' + _class);
+ }
+ }
+ else
+ {
+ container.text('').attr('class', 'password_strength');
+ }
+ });
+ });
+};
+
+})(jQuery);