Merge pull request #87 from anandpdoshi/master
Allow system managers to change password of other users
diff --git a/home/doctype/company_control/company_control.py b/home/doctype/company_control/company_control.py
index cab8e7c..246b07e 100644
--- a/home/doctype/company_control/company_control.py
+++ b/home/doctype/company_control/company_control.py
@@ -53,6 +53,15 @@
pr.role = r
pr.parentfield = 'userroles'
pr.save(1)
+
+ # Update Membership Type at Gateway
+ if cint(webnotes.conn.get_value('Control Panel', None, 'sync_with_gateway')):
+ if 'System Manager' in role_list : membership_type = 'Administrator'
+ else : membership_type = 'Member'
+
+ import server_tools.gateway_utils
+ server_tools.gateway_utils.update_membership_type(cstr(arg['usr']), membership_type)
+
sql("delete from __SessionCache where user=%s", cstr(arg['usr']))
# Save profile
diff --git a/home/page/my_company/my_company.js b/home/page/my_company/my_company.js
index 9da7e9b..40bf155 100644
--- a/home/page/my_company/my_company.js
+++ b/home/page/my_company/my_company.js
@@ -322,7 +322,7 @@
// show securty settings
this.set_security = function() {
- var d = new wn.widgets.Dialog({
+ var sd = new wn.widgets.Dialog({
title: 'Set User Security',
width: 500,
fields: [
@@ -362,30 +362,72 @@
}
]
});
- d.onshow = function() {
- d.set_values({
+
+ me.sec_dialog = sd
+
+ sd.onshow = function() {
+ me.sec_dialog.set_values({
restrict_ip: me.profile.restrict_ip || '',
login_before: me.profile.login_before || '',
login_after: me.profile.login_after || '',
new_password: ''
- })
- }
- d.fields_dict.update.input.onclick = function() {
+ });
+ };
+ sd.fields_dict.update.input.onclick = function() {
var btn = this;
this.set_working();
- var args = d.get_values();
+ var args = me.sec_dialog.get_values();
args.user = me.profile.name;
- $c_page('home', 'my_company', 'update_security', JSON.stringify(args), function(r,rt) {
- if(r.exc) {
- msgprint(r.exc);
+
+ if (args.new_password) {
+ var pass_d = new wn.widgets.Dialog({
+ title: 'Your Password',
+ width: 300,
+ fields: [
+ {
+ label: 'Please Enter Your Password',
+ description: "Your password is required to update the concerned user's password",
+ fieldtype: 'Password',
+ fieldname: 'sys_admin_pwd',
+ reqd: 1
+ },
+
+ {
+ label: 'Continue',
+ fieldtype: 'Button',
+ fieldname: 'continue'
+ }
+ ]
+ });
+
+ pass_d.fields_dict.continue.input.onclick = function() {
+ btn.pwd_dialog.hide();
+ args.sys_admin_pwd = btn.pwd_dialog.get_values().sys_admin_pwd;
+ btn.set_working();
+ me.update_security(args);
btn.done_working();
- return;
}
- $.extend(me.profile, d.get_values());
- d.hide();
- });
- }
- d.show();
+
+ pass_d.show();
+ btn.pwd_dialog = pass_d;
+ btn.done_working();
+ } else {
+ btn.done_working();
+ me.update_security(args);
+ }
+ };
+ sd.show();
+ }
+
+ this.update_security = function(args) {
+ $c_page('home', 'my_company', 'update_security', JSON.stringify(args), function(r,rt) {
+ if(r.exc) {
+ msgprint(r.exc);
+ return;
+ }
+ me.sec_dialog.hide();
+ $.extend(me.profile, me.sec_dialog.get_values());
+ });
}
// delete user
diff --git a/home/page/my_company/my_company.py b/home/page/my_company/my_company.py
index 5d5ed80..3ff1482 100644
--- a/home/page/my_company/my_company.py
+++ b/home/page/my_company/my_company.py
@@ -140,8 +140,7 @@
if 'new_password' in args:
if cint(webnotes.conn.get_value('Control Panel',None,'sync_with_gateway')):
import server_tools.gateway_utils
- webnotes.msgprint(server_tools.gateway_utils.change_password('', args['new_password'])['message'])
+ webnotes.msgprint(server_tools.gateway_utils.change_password('', args['new_password'], args['user'], args['sys_admin_pwd'])['message'])
else:
webnotes.conn.sql("update tabProfile set password=password(%s) where name=%s", (args['new_password'], args['user']))
-
- webnotes.msgprint('Settings Updated')
\ No newline at end of file
+ else: webnotes.msgprint('Settings Updated')
\ No newline at end of file