1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-07 07:06:30 +02:00

Password Generator/Meter now uses bootstrap css. Password strength improved.

This commit is contained in:
Cameron
2012-12-09 00:50:58 -08:00
parent d162707716
commit 8814055e84
4 changed files with 102 additions and 30 deletions

View File

@@ -704,7 +704,8 @@ class users_admin_ui extends e_admin_ui
</tr> </tr>
<tr> <tr>
<td>".USRLAN_62."</td> <td>".USRLAN_62."</td>
<td>".$frm->password('password','',20, array('size'=>40,'class'=>'tbox e-password','generate'=>1,'strength'=>1 ))."
</td> </td>
</tr>"; </tr>";

View File

@@ -716,11 +716,23 @@ class e_form
function password($name, $value = '', $maxlength = 50, $options = array()) function password($name, $value = '', $maxlength = 50, $options = array())
{ {
if($options['generate'])
{
$addon .= '&nbsp;<a href="#" class="smalltext" id="Spn_PasswordGenerator" >Generate</a> | <a class="smalltext" href="#" id="showPwd">Show</a><br />';
}
if($options['strength'])
{
$addon .= "<div><div id='pwdColor' class='progress' style='float:left;display:inline-block;width:215px'><div class='bar' id='pwdMeter' style='width:0%' ></div></div> <div id='pwdStatus' class='smalltext' style='float:left;display:inline-block;width:150px;margin-left:5px'></span></div>";
}
$options = $this->format_options('text', $name, $options); $options = $this->format_options('text', $name, $options);
$options['class'] = vartrue($options['class'],'e-password'); $options['class'] = vartrue($options['class'],'e-password');
//never allow id in format name-value for text fields //never allow id in format name-value for text fields
return "<input type='password' name='{$name}' value='{$value}' maxlength='{$maxlength}'".$this->get_attributes($options, $name)." />"; $text = "<input type='password' name='{$name}' value='{$value}' maxlength='{$maxlength}'".$this->get_attributes($options, $name)." />";
return $text.$addon;
} }
// autoexpand done // autoexpand done

View File

@@ -118,7 +118,7 @@ $(document).ready(function()
// backend // backend
$(".e-password-admin").pwdMeter({ $(".e-password").pwdMeter({
minLength: 6, minLength: 6,
displayGeneratePassword: true, displayGeneratePassword: true,
generatePassText: "Generate", generatePassText: "Generate",

View File

@@ -16,14 +16,14 @@ jQuery.fn.pwdMeter = function(options){
displayGeneratePassword: false, displayGeneratePassword: false,
generatePassText: 'Generate', generatePassText: 'Generate',
generatePassClass: 'GeneratePasswordLink', generatePassClass: 'GeneratePasswordLink',
randomPassLength: 13, randomPassLength: 12,
passwordBox: this passwordBox: this
}, options); }, options);
var pwdObj = this; var pwdObj = this;
$(pwdObj).after("<span id=\"pwdMeter\" class=\"neutral\">Very Weak</span>"); // $(pwdObj).after("<span class='progress progress-info span2' ><span class='bar' id=\"pwdMeter\" style='width:20%'></span></span>");
return this.each(function(index){ return this.each(function(index){
@@ -39,53 +39,69 @@ jQuery.fn.pwdMeter = function(options){
$("#showPwdBox").val(password); $("#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.length >= options.minLength) passwordStrength++;
if ((password.match(/[a-z]/)) && (password.match(/[A-Z]/)) ) passwordStrength++; if ((password.match(/[A-Z]/)) ) passwordStrength++;
if (password.match(/\d+/)) passwordStrength++; if ((password.match(/[a-z]/)) ) passwordStrength++;
if (password.match(/\d+/) && password.length > 5) passwordStrength++;
if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/)) passwordStrength++; if (password.match(/.[!,@,#,$,%,^,&,*,?,_,~,-,(,)]/)) passwordStrength++;
if (password.length > 12) passwordStrength++; if (password.length > 11) passwordStrength++;
$('#pwdMeter').removeClass(); $('#pwdColor').removeClass();
$('#pwdMeter').addClass('neutral'); $('#pwdColor').addClass('progress');
$('#pwdMeter').css("width",'1%');
// $('#pwdMeter').removeStyle();
switch(passwordStrength){ switch(passwordStrength){
case 1: case 1:
$('#pwdMeter').addClass('veryweak'); $('#pwdColor').addClass('progress-danger');
$('#pwdMeter').text('Very Weak'); $('#pwdMeter').css("width",'10%');
$('#pwdStatus').text('Very Weak');
break; break;
case 2: case 2:
$('#pwdMeter').addClass('weak'); $('#pwdColor').addClass('progress-danger');
$('#pwdMeter').text('Weak'); $('#pwdMeter').css("width",'25%');
$('#pwdStatus').text('Weak');
break; break;
case 3: case 3:
$('#pwdMeter').addClass('medium'); $('#pwdColor').addClass('progress-warning');
$('#pwdMeter').text('Medium'); $('#pwdMeter').css("width",'30%');
$('#pwdStatus').text('Medium');
break; break;
case 4: case 4:
$('#pwdMeter').addClass('strong'); $('#pwdColor').addClass('progress-warning');
$('#pwdMeter').text('Strong'); $('#pwdMeter').css("width",'50%');
$('#pwdStatus').text('Medium');
break; break;
case 5: case 5:
$('#pwdMeter').addClass('verystrong'); $('#pwdColor').addClass('progress-success');
$('#pwdMeter').text('Very Strong'); $('#pwdMeter').css("width",'75%');
$('#pwdStatus').text('Strong');
break;
case 6:
$('#pwdColor').addClass('progress-success');
$('#pwdMeter').css("width",'100%');
$('#pwdStatus').text('Very Strong');
break; break;
default: default:
$('#pwdMeter').addClass('neutral'); $('#pwdMeter').css("width",'0px');
$('#pwdMeter').text('Very Weak'); // $('#pwdStatus').text('Strong');
} }
} }
if(options.displayGeneratePassword){ if(options.displayGeneratePassword)
$('#pwdMeter').before('&nbsp;<a href="#" id="Spn_PasswordGenerator" class="'+options.generatePassClass+'">'+ options.generatePassText +'</a><br />'); {
$('#pwdMeter').after('&nbsp;<a href="#" id="showPwd">Show</a>'); // $('#pwdMeter').before('&nbsp;<a href="#" id="Spn_PasswordGenerator" class="'+options.generatePassClass+'">'+ options.generatePassText +'</a><br />');
$(pwdObj).after('<input id="showPwdBox" type="text" class="'+ $(pwdObj).attr('class') +'" style="display:none" size="'+ $(pwdObj).attr('size') +'" value="" />'); $(pwdObj).after('<input id="showPwdBox" type="text" class="'+ $(pwdObj).attr('class') +'" style="display:none" size="'+ $(pwdObj).attr('size') +'" value="" />');
} }
@@ -107,9 +123,51 @@ jQuery.fn.pwdMeter = function(options){
}); });
function random_password()
{
var length = options.randomPassLength;
function random_password() { var pchars = "abcdefghijklmnopqrstuvwxyz";
var pchars1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var pchars2 = "1234567890";
var pchars3 = "~!@#$%^&*-<>=_+,./?;':";
ret_pass = "";
for(x=0;x<Math.abs(length/4);x++) {
i = Math.floor(Math.random() * pchars.length);
ret_pass += pchars.charAt(i);
}
for(x=0;x<Math.abs(length/4);x++) {
i = Math.floor(Math.random() * pchars1.length);
ret_pass += pchars1.charAt(i);
}
for(x=0;x<Math.abs(length/4);x++) {
i = Math.floor(Math.random() * pchars2.length);
ret_pass += pchars2.charAt(i);
}
for(x=0;x<Math.abs(length/4);x++) {
i = Math.floor(Math.random() * pchars3.length);
ret_pass += pchars3.charAt(i);
}
// shuffle the string a bit
var a = ret_pass.split(""),
n = a.length;
for(var i = n - 1; i > 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_chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz!?$?%^&*()_-+={[}]:;@~#|\<,>.?/";
var allowed_upper = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ";
var allowed_lower = "abcdefghiklmnopqrstuvwxyz";
var allower_symb = "!?$?%^&*()_-+={[}]:;@~#|\<,>.?";
var pwd_length = options.randomPassLength; var pwd_length = options.randomPassLength;
var rnd_pwd = ''; var rnd_pwd = '';
for (var i=0; i<pwd_length; i++) { for (var i=0; i<pwd_length; i++) {
@@ -118,6 +176,7 @@ jQuery.fn.pwdMeter = function(options){
} }
return rnd_pwd; return rnd_pwd;
} }
*/
}); });