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.
 
 
 
 
 

82 lines
3.2 KiB

/** @odoo-module **/
import { Component, useState, mount } from "@odoo/owl";
import { DropdownItem } from "@web/core/dropdown/dropdown_item";
import { patch } from "@web/core/utils/patch";
var Dialog = require('web.Dialog');
var core = require('web.core');
var QWeb = core.qweb;
var rpc = require('web.rpc');
var _t = core._t;
//patching the menu items
patch(DropdownItem.prototype, "menu_lock", {
//onclick function of menu item
async onClick(ev) {
var _super = this._super;
ev.preventDefault()
var session = require('web.session');
var userId = session.uid;
var currentMenu = this.props.dataset.section
//rpc query to get values about password lock from res.users
await rpc.query({
model: 'res.users',
method: 'menu_lock_search',
args: [
[userId]
],
}).then(function(data) {
//checking the current menu in menus to lock
var menu = data.multi_lock_ids.filter(obj => {
return parseInt(obj.id) === parseInt(currentMenu)
})
//if current menu is lock menu
if (menu.length != 0 && menu[0].id && menu[0].password) {
//Open dialog box to login
var dialog = new Dialog(this, {
title: "Menu Security PIN",
$content: $(QWeb.render('menuLockPopup', {
role: 'alert',
})),
size: 'medium',
buttons: [{
text: _t("confirm"),
classes: 'btn-primary check_password',
click: false,
},
{
text: _t("Cancel"),
close: true
},
],
});
dialog.opened().then(() => {
//show and hide the password on click of eye icon.
dialog.$el.find('.toggle_eye').click(function(){
var securityPin = dialog.$el.find('#password')[0];
if (securityPin.type === "password") {
securityPin.type = "text";
} else {
securityPin.type = "password";
}
})
//dialog box confirm button function, if matches
//successfully logins to the menu, otherwise show error warning.
dialog.buttons[0].click = function(event) {
var current_pwd = dialog.$el.find('#password').val()
//if password matches close the modal and enter into the
//model
if (current_pwd == menu[0].password) {
dialog.close();
_super(ev);
} else {
dialog.$el.find('#wrong_password_alert').show();
}
};
});
dialog.open();
} else {
_super(ev);
}
})
},
});