Add js code to check ppolicy (#2249)
This commit is contained in:
parent
cdafab6bfe
commit
3bec9351f0
|
@ -381,6 +381,111 @@ $(window).on 'load', () ->
|
|||
setCookie 'llnglanguage', lang
|
||||
translatePage lang
|
||||
|
||||
isAlphaNumeric = (chr) ->
|
||||
code = chr.charCodeAt(0)
|
||||
if code > 47 and code < 58 or code > 64 and code < 91 or code > 96 and code < 123
|
||||
return true
|
||||
false
|
||||
|
||||
# Password policy
|
||||
checkpassword = (password) ->
|
||||
result = true
|
||||
if window.datas.ppolicy.minsize > 0
|
||||
if password.length >= window.datas.ppolicy.minsize
|
||||
$('#ppolicy-minsize-feedback').addClass 'fa-check text-success'
|
||||
$('#ppolicy-minsize-feedback').removeClass 'fa-times text-danger'
|
||||
else
|
||||
$('#ppolicy-minsize-feedback').removeClass 'fa-check text-success'
|
||||
$('#ppolicy-minsize-feedback').addClass 'fa-times text-danger'
|
||||
result = false
|
||||
if window.datas.ppolicy.minupper > 0
|
||||
upper = password.match(/[A-Z]/g)
|
||||
if upper and upper.length >= window.datas.ppolicy.minupper
|
||||
$('#ppolicy-minupper-feedback').addClass 'fa-check text-success'
|
||||
$('#ppolicy-minupper-feedback').removeClass 'fa-times text-danger'
|
||||
else
|
||||
$('#ppolicy-minupper-feedback').removeClass 'fa-check text-success'
|
||||
$('#ppolicy-minupper-feedback').addClass 'fa-times text-danger'
|
||||
result = false
|
||||
if window.datas.ppolicy.minlower > 0
|
||||
lower = password.match(/[a-z]/g)
|
||||
if lower and lower.length >= window.datas.ppolicy.minlower
|
||||
$('#ppolicy-minlower-feedback').addClass 'fa-check text-success'
|
||||
$('#ppolicy-minlower-feedback').removeClass 'fa-times text-danger'
|
||||
else
|
||||
$('#ppolicy-minlower-feedback').removeClass 'fa-check text-success'
|
||||
$('#ppolicy-minlower-feedback').addClass 'fa-times text-danger'
|
||||
result = false
|
||||
if window.datas.ppolicy.mindigit > 0
|
||||
digit = password.match(/[0-9]/g)
|
||||
if digit and digit.length >= window.datas.ppolicy.mindigit
|
||||
$('#ppolicy-mindigit-feedback').addClass 'fa-check text-success'
|
||||
$('#ppolicy-mindigit-feedback').removeClass 'fa-times text-danger'
|
||||
else
|
||||
$('#ppolicy-mindigit-feedback').removeClass 'fa-check text-success'
|
||||
$('#ppolicy-mindigit-feedback').addClass 'fa-times text-danger'
|
||||
result = false
|
||||
|
||||
if window.datas.ppolicy.allowedspechar
|
||||
nonwhitespechar = window.datas.ppolicy.allowedspechar.replace(/\s/g, '')
|
||||
hasforbidden = false
|
||||
i = 0
|
||||
len = password.length
|
||||
while i < len
|
||||
if !isAlphaNumeric(password.charAt(i))
|
||||
if nonwhitespechar.indexOf(password.charAt(i)) < 0
|
||||
hasforbidden = true
|
||||
i++
|
||||
if hasforbidden == false
|
||||
$('#ppolicy-allowedspechar-feedback').addClass 'fa-check text-success'
|
||||
$('#ppolicy-allowedspechar-feedback').removeClass 'fa-times text-danger'
|
||||
else
|
||||
$('#ppolicy-allowedspechar-feedback').removeClass 'fa-check text-success'
|
||||
$('#ppolicy-allowedspechar-feedback').addClass 'fa-times text-danger'
|
||||
result = false
|
||||
|
||||
if window.datas.ppolicy.minspechar > 0 and window.datas.ppolicy.allowedspechar
|
||||
numspechar = 0
|
||||
nonwhitespechar = window.datas.ppolicy.allowedspechar.replace(/\s/g, '')
|
||||
i = 0
|
||||
while i < password.length
|
||||
if nonwhitespechar.indexOf(password.charAt(i)) >= 0
|
||||
numspechar++
|
||||
i++
|
||||
if numspechar >= window.datas.ppolicy.minspechar
|
||||
$('#ppolicy-minspechar-feedback').addClass 'fa-check text-success'
|
||||
$('#ppolicy-minspechar-feedback').removeClass 'fa-times text-danger'
|
||||
else
|
||||
$('#ppolicy-minspechar-feedback').removeClass 'fa-check text-success'
|
||||
$('#ppolicy-minspechar-feedback').addClass 'fa-times text-danger'
|
||||
result = false
|
||||
if result
|
||||
$('.ppolicy').removeClass('border-danger').addClass 'border-success'
|
||||
$('#newpassword')[0].setCustomValidity('')
|
||||
else
|
||||
$('.ppolicy').removeClass('border-success').addClass 'border-danger'
|
||||
$('#newpassword')[0].setCustomValidity(translate('PE28'))
|
||||
return
|
||||
|
||||
if window.datas.ppolicy?
|
||||
# Initialize display
|
||||
checkpassword ''
|
||||
|
||||
$('#newpassword').keyup (e) ->
|
||||
checkpassword e.target.value
|
||||
return
|
||||
|
||||
checksamepass = () ->
|
||||
if $('#confirmpassword')[0].value == $('#newpassword')[0].value
|
||||
$('#confirmpassword')[0].setCustomValidity('')
|
||||
return true
|
||||
else
|
||||
$('#confirmpassword')[0].setCustomValidity(translate('PE34'))
|
||||
return false
|
||||
|
||||
$('#newpassword').change checksamepass
|
||||
$('#confirmpassword').change checksamepass
|
||||
|
||||
# Ping if asked
|
||||
if datas['pingInterval'] and datas['pingInterval'] > 0
|
||||
window.setTimeout ping, datas['pingInterval']
|
||||
|
|
|
@ -27,11 +27,11 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
}
|
||||
}
|
||||
$("[trspan]").each(function() {
|
||||
var args, i, len, txt;
|
||||
var args, l, len1, txt;
|
||||
args = $(this).attr('trspan').split(',');
|
||||
txt = translate(args.shift());
|
||||
for (i = 0, len = args.length; i < len; i++) {
|
||||
v = args[i];
|
||||
for (l = 0, len1 = args.length; l < len1; l++) {
|
||||
v = args[l];
|
||||
txt = txt.replace(/%[sd]/, v);
|
||||
}
|
||||
return $(this).html(txt);
|
||||
|
@ -156,7 +156,7 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
};
|
||||
|
||||
restoreOrder = function() {
|
||||
var IDs, child, i, item, itemID, items, l, len, len1, list, rebuild, savedOrd, v;
|
||||
var IDs, child, item, itemID, items, l, len1, len2, list, m, rebuild, savedOrd, v;
|
||||
list = $(setSelector);
|
||||
if (!((list != null) && datas['appslistorder'])) {
|
||||
return null;
|
||||
|
@ -164,12 +164,12 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
IDs = datas['appslistorder'].split(',');
|
||||
items = list.sortable("toArray");
|
||||
rebuild = [];
|
||||
for (i = 0, len = items.length; i < len; i++) {
|
||||
v = items[i];
|
||||
for (l = 0, len1 = items.length; l < len1; l++) {
|
||||
v = items[l];
|
||||
rebuild[v] = v;
|
||||
}
|
||||
for (l = 0, len1 = IDs.length; l < len1; l++) {
|
||||
itemID = IDs[l];
|
||||
for (m = 0, len2 = IDs.length; m < len2; m++) {
|
||||
itemID = IDs[m];
|
||||
if (rebuild[itemID]) {
|
||||
item = rebuild[itemID];
|
||||
child = $(setSelector + ".ui-sortable").children("#" + item);
|
||||
|
@ -209,12 +209,12 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
window.ping = ping;
|
||||
|
||||
getCookie = function(cname) {
|
||||
var c, ca, i, len, name, re;
|
||||
var c, ca, l, len1, name, re;
|
||||
name = cname + "=";
|
||||
ca = decodeURIComponent(document.cookie).split(';');
|
||||
re = new RegExp('^ *' + cname + '=');
|
||||
for (i = 0, len = ca.length; i < len; i++) {
|
||||
c = ca[i];
|
||||
for (l = 0, len1 = ca.length; l < len1; l++) {
|
||||
c = ca[l];
|
||||
if (c.match(re)) {
|
||||
c = c.replace(re, '');
|
||||
return c;
|
||||
|
@ -233,7 +233,7 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
datas = {};
|
||||
|
||||
$(window).on('load', function() {
|
||||
var action, al, authMenuIndex, authMenuTabs, back_url, hiddenParams, i, l, lang, langdiv, langs, langs2, len, len1, len2, len3, link, m, menuIndex, menuTabs, method, n, nl, nlangs, queryLang, re, ref, ref1, ref2, setCookieLang;
|
||||
var action, al, authMenuIndex, authMenuTabs, back_url, checkpassword, checksamepass, hiddenParams, isAlphaNumeric, l, lang, langdiv, langs, langs2, len1, len2, len3, len4, link, m, menuIndex, menuTabs, method, n, nl, nlangs, o, queryLang, re, ref, ref1, ref2, setCookieLang;
|
||||
datas = getValues();
|
||||
if ("datas" in window && "choicetab" in window.datas) {
|
||||
datas.choicetab = window.datas.choicetab;
|
||||
|
@ -335,16 +335,16 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
nlangs = navigator.languages;
|
||||
}
|
||||
ref = window.availableLanguages;
|
||||
for (i = 0, len = ref.length; i < len; i++) {
|
||||
al = ref[i];
|
||||
for (l = 0, len1 = ref.length; l < len1; l++) {
|
||||
al = ref[l];
|
||||
langdiv += "<img class=\"langicon\" src=\"" + window.staticPrefix + "common/" + al + ".png\" title=\"" + al + "\" alt=\"[" + al + "]\"> ";
|
||||
}
|
||||
for (l = 0, len1 = nlangs.length; l < len1; l++) {
|
||||
nl = nlangs[l];
|
||||
for (m = 0, len2 = nlangs.length; m < len2; m++) {
|
||||
nl = nlangs[m];
|
||||
console.log('Navigator lang', nl);
|
||||
ref1 = window.availableLanguages;
|
||||
for (m = 0, len2 = ref1.length; m < len2; m++) {
|
||||
al = ref1[m];
|
||||
for (n = 0, len3 = ref1.length; n < len3; n++) {
|
||||
al = ref1[n];
|
||||
console.log(' Available lang', al);
|
||||
re = new RegExp('^' + al + '-?');
|
||||
if (nl.match(re)) {
|
||||
|
@ -389,8 +389,8 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
}
|
||||
langdiv = '';
|
||||
ref2 = window.availableLanguages;
|
||||
for (n = 0, len3 = ref2.length; n < len3; n++) {
|
||||
al = ref2[n];
|
||||
for (o = 0, len4 = ref2.length; o < len4; o++) {
|
||||
al = ref2[o];
|
||||
langdiv += "<img class=\"langicon\" src=\"" + window.staticPrefix + "common/" + al + ".png\" title=\"" + al + "\" alt=\"[" + al + "]\"> ";
|
||||
}
|
||||
$('#languages').html(langdiv);
|
||||
|
@ -399,6 +399,126 @@ LemonLDAP::NG Portal jQuery scripts
|
|||
setCookie('llnglanguage', lang);
|
||||
return translatePage(lang);
|
||||
});
|
||||
isAlphaNumeric = function(chr) {
|
||||
var code;
|
||||
code = chr.charCodeAt(0);
|
||||
if (code > 47 && code < 58 || code > 64 && code < 91 || code > 96 && code < 123) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
checkpassword = function(password) {
|
||||
var digit, hasforbidden, i, len, lower, nonwhitespechar, numspechar, result, upper;
|
||||
result = true;
|
||||
if (window.datas.ppolicy.minsize > 0) {
|
||||
if (password.length >= window.datas.ppolicy.minsize) {
|
||||
$('#ppolicy-minsize-feedback').addClass('fa-check text-success');
|
||||
$('#ppolicy-minsize-feedback').removeClass('fa-times text-danger');
|
||||
} else {
|
||||
$('#ppolicy-minsize-feedback').removeClass('fa-check text-success');
|
||||
$('#ppolicy-minsize-feedback').addClass('fa-times text-danger');
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
if (window.datas.ppolicy.minupper > 0) {
|
||||
upper = password.match(/[A-Z]/g);
|
||||
if (upper && upper.length >= window.datas.ppolicy.minupper) {
|
||||
$('#ppolicy-minupper-feedback').addClass('fa-check text-success');
|
||||
$('#ppolicy-minupper-feedback').removeClass('fa-times text-danger');
|
||||
} else {
|
||||
$('#ppolicy-minupper-feedback').removeClass('fa-check text-success');
|
||||
$('#ppolicy-minupper-feedback').addClass('fa-times text-danger');
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
if (window.datas.ppolicy.minlower > 0) {
|
||||
lower = password.match(/[a-z]/g);
|
||||
if (lower && lower.length >= window.datas.ppolicy.minlower) {
|
||||
$('#ppolicy-minlower-feedback').addClass('fa-check text-success');
|
||||
$('#ppolicy-minlower-feedback').removeClass('fa-times text-danger');
|
||||
} else {
|
||||
$('#ppolicy-minlower-feedback').removeClass('fa-check text-success');
|
||||
$('#ppolicy-minlower-feedback').addClass('fa-times text-danger');
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
if (window.datas.ppolicy.mindigit > 0) {
|
||||
digit = password.match(/[0-9]/g);
|
||||
if (digit && digit.length >= window.datas.ppolicy.mindigit) {
|
||||
$('#ppolicy-mindigit-feedback').addClass('fa-check text-success');
|
||||
$('#ppolicy-mindigit-feedback').removeClass('fa-times text-danger');
|
||||
} else {
|
||||
$('#ppolicy-mindigit-feedback').removeClass('fa-check text-success');
|
||||
$('#ppolicy-mindigit-feedback').addClass('fa-times text-danger');
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
if (window.datas.ppolicy.allowedspechar) {
|
||||
nonwhitespechar = window.datas.ppolicy.allowedspechar.replace(/\s/g, '');
|
||||
hasforbidden = false;
|
||||
i = 0;
|
||||
len = password.length;
|
||||
while (i < len) {
|
||||
if (!isAlphaNumeric(password.charAt(i))) {
|
||||
if (nonwhitespechar.indexOf(password.charAt(i)) < 0) {
|
||||
hasforbidden = true;
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if (hasforbidden === false) {
|
||||
$('#ppolicy-allowedspechar-feedback').addClass('fa-check text-success');
|
||||
$('#ppolicy-allowedspechar-feedback').removeClass('fa-times text-danger');
|
||||
} else {
|
||||
$('#ppolicy-allowedspechar-feedback').removeClass('fa-check text-success');
|
||||
$('#ppolicy-allowedspechar-feedback').addClass('fa-times text-danger');
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
if (window.datas.ppolicy.minspechar > 0 && window.datas.ppolicy.allowedspechar) {
|
||||
numspechar = 0;
|
||||
nonwhitespechar = window.datas.ppolicy.allowedspechar.replace(/\s/g, '');
|
||||
i = 0;
|
||||
while (i < password.length) {
|
||||
if (nonwhitespechar.indexOf(password.charAt(i)) >= 0) {
|
||||
numspechar++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
if (numspechar >= window.datas.ppolicy.minspechar) {
|
||||
$('#ppolicy-minspechar-feedback').addClass('fa-check text-success');
|
||||
$('#ppolicy-minspechar-feedback').removeClass('fa-times text-danger');
|
||||
} else {
|
||||
$('#ppolicy-minspechar-feedback').removeClass('fa-check text-success');
|
||||
$('#ppolicy-minspechar-feedback').addClass('fa-times text-danger');
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
if (result) {
|
||||
$('.ppolicy').removeClass('border-danger').addClass('border-success');
|
||||
$('#newpassword')[0].setCustomValidity('');
|
||||
} else {
|
||||
$('.ppolicy').removeClass('border-success').addClass('border-danger');
|
||||
$('#newpassword')[0].setCustomValidity(translate('PE28'));
|
||||
}
|
||||
};
|
||||
if (window.datas.ppolicy != null) {
|
||||
checkpassword('');
|
||||
$('#newpassword').keyup(function(e) {
|
||||
checkpassword(e.target.value);
|
||||
});
|
||||
}
|
||||
checksamepass = function() {
|
||||
if ($('#confirmpassword')[0].value === $('#newpassword')[0].value) {
|
||||
$('#confirmpassword')[0].setCustomValidity('');
|
||||
return true;
|
||||
} else {
|
||||
$('#confirmpassword')[0].setCustomValidity(translate('PE34'));
|
||||
return false;
|
||||
}
|
||||
};
|
||||
$('#newpassword').change(checksamepass);
|
||||
$('#confirmpassword').change(checksamepass);
|
||||
if (datas['pingInterval'] && datas['pingInterval'] > 0) {
|
||||
window.setTimeout(ping, datas['pingInterval']);
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user