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:
@@ -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>";
|
||||||
|
|
||||||
|
@@ -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 .= ' <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
|
||||||
|
@@ -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",
|
||||||
|
@@ -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(' <a href="#" id="Spn_PasswordGenerator" class="'+options.generatePassClass+'">'+ options.generatePassText +'</a><br />');
|
{
|
||||||
$('#pwdMeter').after(' <a href="#" id="showPwd">Show</a>');
|
// $('#pwdMeter').before(' <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;
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user