Browse Source

Nov 06: [FIX] Bug Fixed 'user_password_strength'

pull/345/merge
Cybrosys Technologies 6 months ago
parent
commit
3b5350e7a5
  1. 2
      user_password_strength/README.rst
  2. 4
      user_password_strength/__manifest__.py
  3. BIN
      user_password_strength/static/description/assets/screenshots/PSCO5.png
  4. BIN
      user_password_strength/static/description/assets/screenshots/hero.gif
  5. BIN
      user_password_strength/static/description/assets/screenshots/hero.png
  6. 19
      user_password_strength/static/description/index.html
  7. 110
      user_password_strength/static/src/js/signup_user.js
  8. 2
      user_password_strength/views/restrict_password.xml
  9. 8
      user_password_strength/views/signup_page_view.xml

2
user_password_strength/README.rst

@ -1,4 +1,4 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg .. image:: https://img.shields.io/badge/license-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3 :alt: License: AGPL-3

4
user_password_strength/__manifest__.py

@ -39,7 +39,9 @@
], ],
'images': ['static/description/banner.png'], 'images': ['static/description/banner.png'],
'assets': { 'assets': {
'web.assets_frontend': ['user_password_strength/static/src/js/signup_user.js', ], 'web.assets_frontend': [
'user_password_strength/static/src/js/signup_user.js',
],
}, },
'license': "AGPL-3", 'license': "AGPL-3",
'installable': True, 'installable': True,

BIN
user_password_strength/static/description/assets/screenshots/PSCO5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

BIN
user_password_strength/static/description/assets/screenshots/hero.gif

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

BIN
user_password_strength/static/description/assets/screenshots/hero.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

19
user_password_strength/static/description/index.html

@ -38,7 +38,7 @@
</p> </p>
<!-- END OF APP HERO --> <!-- END OF APP HERO -->
<img src="./assets/screenshots/hero.png" class="img-responsive" width="100%" height="auto" /> <img src="./assets/screenshots/hero.gif" class="img-responsive" width="100%" height="auto" />
</div> </div>
</div> </div>
<!-- NAVIGATION SECTION --> <!-- NAVIGATION SECTION -->
@ -290,6 +290,19 @@
<img src="assets/screenshots/PSC03.png" class="img-responsive img-thumbnail border" width="100%" <img src="assets/screenshots/PSC03.png" class="img-responsive img-thumbnail border" width="100%"
height="auto" /> height="auto" />
</div> </div>
<div class="col-lg-12 my-2">
<h4 class="my-2"
style="font-family: 'Roboto', sans-serif !important; font-weight: 600 !important; color: #282F33 !important; font-size: 1.3rem !important;">
Create a New Password</h4>
<p
style="font-family: 'Roboto', sans-serif !important; font-weight: 400 !important; color: #282F33 !important; font-size: 1rem !important;">
Users can create a new password by ensuring it is strong, using a mix of uppercase
and lowercase letters, numbers, and special characters.
</p>
<img src="assets/screenshots/PSCO5.png"
class="img-responsive img-thumbnail border" width="100%"
height="auto" />
</div>
<div class="col-lg-12 my-3"> <div class="col-lg-12 my-3">
@ -489,7 +502,7 @@
</div> </div>
</div> </div>
</section> </section>
<!-- END OF END OF OUR SERVICES --> <!-- END OF OUR SERVICES -->
<!-- OUR INDUSTRIES --> <!-- OUR INDUSTRIES -->
<section class="container" style="margin-top: 6rem !important;"> <section class="container" style="margin-top: 6rem !important;">
@ -622,7 +635,7 @@
</div> </div>
</section> </section>
<!-- END OF END OF OUR INDUSTRIES --> <!-- END OF OUR INDUSTRIES -->
<!-- FOOTER --> <!-- FOOTER -->
<!-- Footer Section --> <!-- Footer Section -->

110
user_password_strength/static/src/js/signup_user.js

@ -1,42 +1,66 @@
odoo.define('user_password_strength.signup_user', function (require) { odoo.define('user_password_strength.reset_user', function (require) {
"use strict"; "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 PublicWidget = require('web.public.widget');
var ajax = require("web.ajax"); var ajax = require("web.ajax");
var password = document.getElementById("password");
var MySignUpForm = PublicWidget.registry.SignUpForm.extend({ var ResetForm = PublicWidget.Widget.extend({
selector: '.oe_signup_form', selector: '.oe_website_login_container',
events: { events: {
'keyup': '_onKeyup', 'input input[type="password"]': '_onPasswordInput',
},
_onPasswordInput: function () {
var passwordField = document.getElementById("password");
var confirmPasswordField = document.getElementById("confirm_password");
// Call function to update password strength progress for both password and confirm password fields
this._updateProgress(passwordField);
this._updateProgress(confirmPasswordField);
}, },
_onKeyup: function () {
// Rendering ajax Rpc call from controller through route _updateProgress: function (passwordField) {
ajax.jsonRpc('/web/config_params', 'call', { var current_pwd = passwordField ? passwordField.value : "";
}).then(function (data) {
var list=[] // Reset if password length is zero
if (current_pwd.length === 0) {
var progressBar = document.getElementById("progress");
if (progressBar) {
progressBar.value = "0";
progressBar.style.backgroundColor = "#FF0000"; // Red for no input
}
return;
}
// AJAX call to get configuration settings
ajax.jsonRpc('/web/config_params', 'call', {}).then(function (data) {
var list = [];
for (let x in data) { for (let x in data) {
list.push(data[x]); list.push(data[x]);
} }
var flag = 0
for(var i=0;i<=list.length;i++){ // Count the number of enabled password conditions
if(list[i] == 'True'){ var flag = 0;
flag +=1 for (var i = 0; i < list.length; i++) {
if (list[i] === 'True') {
flag++;
} }
} }
// Check how many conditions the current password satisfies
var prog = [/[$@$!%*#?&]/, /[A-Z]/, /[0-9]/, /[a-z]/] var prog = [/[$@$!%*#?&]/, /[A-Z]/, /[0-9]/, /[a-z]/]
.reduce((memo, test) => memo + test.test(current_pwd), .reduce((memo, test) => memo + test.test(current_pwd), 0);
0);
// Increase progress if password length is greater than 7 characters
if (prog > 2 && current_pwd.length > 7) { if (prog > 2 && current_pwd.length > 7) {
prog++; prog++;
} }
var progress = ""; var progress = "";
var colors = ['#FF0000', '#00FF00', '#0000FF']; var colors = ['#FF0000', '#00FF00', '#0000FF'];
var currentColor = 0; var currentColor = colors[0]; // Default to red
//When 5 conditions are enabled in config settings
if (flag == 5){ // Update progress and color based on the number of conditions (flag)
if (flag === 5) {
switch (prog) { switch (prog) {
case 0: case 0:
case 1: case 1:
@ -49,7 +73,7 @@ odoo.define('user_password_strength.signup_user', function (require) {
break; break;
case 3: case 3:
progress = "50"; progress = "50";
currentColor = colors[1]; currentColor = colors[1]; // Green
break; break;
case 4: case 4:
progress = "75"; progress = "75";
@ -60,9 +84,7 @@ odoo.define('user_password_strength.signup_user', function (require) {
currentColor = colors[1]; currentColor = colors[1];
break; break;
} }
} } else if (flag === 4) {
//When 4 conditions are enabled in config settings
if (flag == 4){
switch (prog) { switch (prog) {
case 0: case 0:
case 1: case 1:
@ -83,9 +105,7 @@ odoo.define('user_password_strength.signup_user', function (require) {
currentColor = colors[1]; currentColor = colors[1];
break; break;
} }
} } else if (flag === 3) {
//When 3 conditions are enabled in config settings
if (flag == 3){
switch (prog) { switch (prog) {
case 0: case 0:
case 1: case 1:
@ -103,38 +123,28 @@ odoo.define('user_password_strength.signup_user', function (require) {
currentColor = colors[1]; currentColor = colors[1];
break; break;
} }
} } else if (flag === 2) {
//When 2 conditions are enabled in config settings if (prog !== 5) {
if (flag == 2) {
if (prog != 5) {
progress = "50"; progress = "50";
currentColor = colors[0]; currentColor = colors[0];
} else { } else {
progress = "100"; progress = "100";
currentColor = colors[1]; currentColor = colors[1];
} }
} } else if (flag === 1) {
//When only 1 condition is enabled in config settings
if (flag == 1){
progress = "100"; progress = "100";
currentColor = colors[1]; currentColor = colors[1]; // Green for fully satisfied
} }
var val = document.getElementById("progress") // Update the progress bar
if(val!== null){ var progressBar = document.getElementById("progress");
document.getElementById("progress").value = progress; if (progressBar) {
document.getElementById("progress").style progressBar.value = progress;
.backgroundColor = currentColor; progressBar.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; PublicWidget.registry.ResetForm = ResetForm;
return MySignUpForm; return ResetForm;
}); });

2
user_password_strength/views/restrict_password.xml

@ -1,10 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<odoo> <odoo>
<!-- Inherit and Extend Base Settings Form View -->
<record id="res_config_settings_inherit_view_form" model="ir.ui.view"> <record id="res_config_settings_inherit_view_form" model="ir.ui.view">
<field name="name">res.config.settings.inherit.view</field> <field name="name">res.config.settings.inherit.view</field>
<field name="model">res.config.settings</field> <field name="model">res.config.settings</field>
<field name="inherit_id" ref="base.res_config_settings_view_form"/> <field name="inherit_id" ref="base.res_config_settings_view_form"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<!-- Insert our new settings after the existing password reset section -->
<xpath expr="//div[@id='enable_password_reset']" position="after"> <xpath expr="//div[@id='enable_password_reset']" position="after">
<div class="col-12 col-lg-6 o_setting_box" <div class="col-12 col-lg-6 o_setting_box"
id="enable_password_restrict"> id="enable_password_restrict">

8
user_password_strength/views/signup_page_view.xml

@ -1,11 +1,15 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<odoo> <odoo>
<template id="document_fields" inherit_id="auth_signup.fields"> <template id="document_fields" inherit_id="auth_signup.fields">
<!-- Inherit and Extend the Standard Auth Signup Fields Template -->
<xpath expr="//input[@name='password']" position="after"> <xpath expr="//input[@name='password']" position="after">
<br>
</br>
<div> <div>
<progress id="progress" value="0" max="100" <progress id="progress" value="0" max="100" style="color: red;">70</progress>
style="color: red;">70</progress>
</div> </div>
</xpath> </xpath>
</template> </template>
</odoo> </odoo>
Loading…
Cancel
Save