diff --git a/e107_admin/users.php b/e107_admin/users.php index 29b15e94e..bdfa0bbf8 100644 --- a/e107_admin/users.php +++ b/e107_admin/users.php @@ -704,7 +704,8 @@ class users_admin_ui extends e_admin_ui ".USRLAN_62." - ".$frm->password('password','',20,array('size'=>40,'class'=>'tbox e-password-admin'))." + ".$frm->password('password','',20, array('size'=>40,'class'=>'tbox e-password','generate'=>1,'strength'=>1 ))." + "; diff --git a/e107_handlers/form_handler.php b/e107_handlers/form_handler.php index 20c7a6298..a59ff7a69 100644 --- a/e107_handlers/form_handler.php +++ b/e107_handlers/form_handler.php @@ -716,11 +716,23 @@ class e_form function password($name, $value = '', $maxlength = 50, $options = array()) { + if($options['generate']) + { + $addon .= ' Generate | Show
'; + } + + if($options['strength']) + { + $addon .= "
"; + } $options = $this->format_options('text', $name, $options); $options['class'] = vartrue($options['class'],'e-password'); //never allow id in format name-value for text fields - return "get_attributes($options, $name)." />"; + $text = "get_attributes($options, $name)." />"; + + return $text.$addon; + } // autoexpand done diff --git a/e107_web/js/core/admin.jquery.js b/e107_web/js/core/admin.jquery.js index 68c83e11d..42ffe410c 100644 --- a/e107_web/js/core/admin.jquery.js +++ b/e107_web/js/core/admin.jquery.js @@ -118,7 +118,7 @@ $(document).ready(function() // backend - $(".e-password-admin").pwdMeter({ + $(".e-password").pwdMeter({ minLength: 6, displayGeneratePassword: true, generatePassText: "Generate", diff --git a/e107_web/js/password/jquery.pwdMeter.js b/e107_web/js/password/jquery.pwdMeter.js index dcf3bedb2..87c046d19 100644 --- a/e107_web/js/password/jquery.pwdMeter.js +++ b/e107_web/js/password/jquery.pwdMeter.js @@ -16,14 +16,14 @@ jQuery.fn.pwdMeter = function(options){ displayGeneratePassword: false, generatePassText: 'Generate', generatePassClass: 'GeneratePasswordLink', - randomPassLength: 13, + randomPassLength: 12, passwordBox: this }, options); var pwdObj = this; - $(pwdObj).after("Very Weak"); +// $(pwdObj).after(""); return this.each(function(index){ @@ -39,53 +39,69 @@ jQuery.fn.pwdMeter = function(options){ $("#showPwdBox").val(password); - if ((password.length >0) && (password.length <=5)) passwordStrength=1; + if ((password.length >3) && (password.length <=5)) passwordStrength=1; if (password.length >= options.minLength) passwordStrength++; - if ((password.match(/[a-z]/)) && (password.match(/[A-Z]/)) ) passwordStrength++; + if ((password.match(/[A-Z]/)) ) passwordStrength++; + + if ((password.match(/[a-z]/)) ) passwordStrength++; - if (password.match(/\d+/)) passwordStrength++; + if (password.match(/\d+/) && password.length > 5) passwordStrength++; if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/)) passwordStrength++; - if (password.length > 12) passwordStrength++; + if (password.length > 11) passwordStrength++; - $('#pwdMeter').removeClass(); - $('#pwdMeter').addClass('neutral'); + $('#pwdColor').removeClass(); + $('#pwdColor').addClass('progress'); + $('#pwdMeter').css("width",'1%'); + // $('#pwdMeter').removeStyle(); switch(passwordStrength){ case 1: - $('#pwdMeter').addClass('veryweak'); - $('#pwdMeter').text('Very Weak'); + $('#pwdColor').addClass('progress-danger'); + $('#pwdMeter').css("width",'10%'); + $('#pwdStatus').text('Very Weak'); break; case 2: - $('#pwdMeter').addClass('weak'); - $('#pwdMeter').text('Weak'); + $('#pwdColor').addClass('progress-danger'); + $('#pwdMeter').css("width",'25%'); + $('#pwdStatus').text('Weak'); + break; case 3: - $('#pwdMeter').addClass('medium'); - $('#pwdMeter').text('Medium'); + $('#pwdColor').addClass('progress-warning'); + $('#pwdMeter').css("width",'30%'); + $('#pwdStatus').text('Medium'); break; case 4: - $('#pwdMeter').addClass('strong'); - $('#pwdMeter').text('Strong'); + $('#pwdColor').addClass('progress-warning'); + $('#pwdMeter').css("width",'50%'); + $('#pwdStatus').text('Medium'); break; - case 5: - $('#pwdMeter').addClass('verystrong'); - $('#pwdMeter').text('Very Strong'); + case 5: + $('#pwdColor').addClass('progress-success'); + $('#pwdMeter').css("width",'75%'); + $('#pwdStatus').text('Strong'); + break; + case 6: + $('#pwdColor').addClass('progress-success'); + $('#pwdMeter').css("width",'100%'); + $('#pwdStatus').text('Very Strong'); break; default: - $('#pwdMeter').addClass('neutral'); - $('#pwdMeter').text('Very Weak'); + $('#pwdMeter').css("width",'0px'); + // $('#pwdStatus').text('Strong'); } } - if(options.displayGeneratePassword){ - $('#pwdMeter').before(' '+ options.generatePassText +'
'); - $('#pwdMeter').after(' Show'); + if(options.displayGeneratePassword) + { + // $('#pwdMeter').before(' '+ options.generatePassText +'
'); + $(pwdObj).after(''); } @@ -107,9 +123,51 @@ jQuery.fn.pwdMeter = function(options){ }); - - function random_password() { + function random_password() + { + var length = options.randomPassLength; + + var pchars = "abcdefghijklmnopqrstuvwxyz"; + var pchars1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + var pchars2 = "1234567890"; + var pchars3 = "~!@#$%^&*-<>=_+,./?;':"; + + ret_pass = ""; + for(x=0;x 0; i--) { + var j = Math.floor(Math.random() * (i + 1)); + var tmp = a[i]; + a[i] = a[j]; + a[j] = tmp; + } + return a.join(""); + } + + + /* + function random_password_old() { var allowed_chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz!?$?%^&*()_-+={[}]:;@~#|\<,>.?/"; + var allowed_upper = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ"; + var allowed_lower = "abcdefghiklmnopqrstuvwxyz"; + var allower_symb = "!?$?%^&*()_-+={[}]:;@~#|\<,>.?"; var pwd_length = options.randomPassLength; var rnd_pwd = ''; for (var i=0; i