summaryrefslogtreecommitdiff
path: root/modules/user/js
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-10-27 12:23:48 -0700
committerTim Almdal <tnalmdal@shaw.ca>2009-10-27 12:23:48 -0700
commit1347a300509b2ab3083bb88193987c18b33187ad (patch)
tree739a29a66185b9cbc1263c66434c7cba3b467599 /modules/user/js
parent156a99beef968a22167502bb6389b4df7526feb0 (diff)
Add a password strength meter.
Diffstat (limited to 'modules/user/js')
-rw-r--r--modules/user/js/password_strength.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/modules/user/js/password_strength.js b/modules/user/js/password_strength.js
new file mode 100644
index 00000000..2442b8de
--- /dev/null
+++ b/modules/user/js/password_strength.js
@@ -0,0 +1,39 @@
+(function($) {
+ // Based on the Password Strength Indictor By Benjamin Sterling
+ // http://benjaminsterling.com/password-strength-indicator-and-generator/
+ $.widget("ui.user_password_strength", {
+ _init: function() {
+ var self = this;
+ $(this.element).keyup(function() {
+ var strength = self.calculateStrength (this.value);
+ var index = Math.min(Math.floor( strength / 10 ), 10);
+ $("#g-password-gauge")
+ .removeAttr('class')
+ .addClass( "g-password-strength0" )
+ .addClass( self.options.classes[ index ] );
+ }).after("<div id='g-password-gauge' class='g-password-strength0'></div>");
+ },
+
+ calculateStrength: function(value) {
+ // Factor in the length of the password
+ var strength = Math.min(5, value.length) * 10 - 20;
+ // Factor in the number of numbers
+ strength += Math.min(3, value.length - value.replace(/[0-9]/g,"").length) * 10;
+ // Factor in the number of non word characters
+ strength += Math.min(3, value.length - value.replace(/\W/g,"").length) * 15;
+ // Factor in the number of Upper case letters
+ strength += Math.min(3, value.length - value.replace(/[A-Z]/g,"").length) * 10;
+
+ // Normalizxe between 0 and 100
+ return Math.max(0, Math.min(100, strength));
+ }
+ });
+ $.extend($.ui.user_password_strength, {
+ defaults: {
+ classes : ['g-password-strength10', 'g-password-strength20', 'g-password-strength30',
+ 'g-password-strength40', 'g-password-strength50', 'g-password-strength60',
+ 'g-password-strength70',' g-password-strength80',' g-password-strength90',
+ 'g-password-strength100']
+ }
+ });
+ })(jQuery);