You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

140 lines
5.4 KiB

odoo.define('user_password_strength.signup_user', function (require) {
"use strict";
// Extending the public widget of the signup form for checking the user
// password strength conditions on key up function of the password field in
// the sign up form,Based on the conditions from configuration settings.
var PublicWidget = require('web.public.widget');
var ajax = require("web.ajax");
var password = document.getElementById("password");
var MySignUpForm = PublicWidget.registry.SignUpForm.extend({
selector: '.oe_signup_form',
events: {
'keyup': '_onKeyup',
},
_onKeyup: function () {
// Rendering ajax Rpc call from controller through route
ajax.jsonRpc('/web/config_params', 'call', {
}).then(function (data) {
var list=[]
for (let x in data) {
list.push(data[x]);
}
var flag = 0
for(var i=0;i<=list.length;i++){
if(list[i] == 'True'){
flag +=1
}
}
var prog = [/[$@$!%*#?&]/, /[A-Z]/, /[0-9]/, /[a-z]/]
.reduce((memo, test) => memo + test.test(current_pwd),
0);
if(prog > 2 && current_pwd.length > 7){
prog++;
}
var progress = "";
var colors = ['#FF0000', '#00FF00','#0000FF'];
var currentColor = 0;
//When 5 conditions are enabled in config settings
if (flag == 5){
switch (prog) {
case 0:
case 1:
progress = "20";
currentColor = colors[0];
break;
case 2:
progress = "25";
currentColor = colors[0];
break;
case 3:
progress = "50";
currentColor = colors[1];
break;
case 4:
progress = "75";
currentColor = colors[1];
break;
case 5:
progress = "100";
currentColor = colors[1];
break;
}
}
//When 4 conditions are enabled in config settings
if (flag == 4){
switch (prog) {
case 0:
case 1:
case 2:
progress = "25";
currentColor = colors[0];
break;
case 3:
progress = "50";
currentColor = colors[0];
break;
case 4:
progress = "75";
currentColor = colors[1];
break;
case 5:
progress = "100";
currentColor = colors[1];
break;
}
}
//When 3 conditions are enabled in config settings
if (flag == 3){
switch (prog) {
case 0:
case 1:
case 2:
case 3:
progress = "33.33";
currentColor = colors[0];
break;
case 4:
progress = "66.66";
currentColor = colors[1];
break;
case 5:
progress = "100";
currentColor = colors[1];
break;
}
}
//When 2 conditions are enabled in config settings
if (flag == 2) {
if (prog != 5) {
progress = "50";
currentColor = colors[0];
} else{
progress = "100";
currentColor = colors[1];
}
}
//When only 1 condition is enabled in config settings
if (flag == 1){
progress = "100";
currentColor = colors[1];
}
var val = document.getElementById("progress")
if(val!== null){
document.getElementById("progress").value = progress;
document.getElementById("progress").style
.backgroundColor = currentColor;
}
});
// Reset if password length is zero
var current_pwd = password.value
if (current_pwd.length === 0) {
document.getElementById("progress").value = "0";
return;
}
},
});
PublicWidget.registry.MySignUpForm = MySignUpForm;
return MySignUpForm;
});