Author: sree Date: 2006-08-20 11:26:35 +0000 (Sun, 20 Aug 2006) New Revision: 17619
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17619 Log: Fix a minor bug in usermgmt.js Properties dialog now loads user groups, as well as allowing deletion of membership. Warning: Group deletion is instantaneous, independent of Ok and Apply. Modified: branches/SOC/sree/ui/usermgmt.esp branches/SOC/sree/ui/userprop.js branches/SOC/sree/usermgmt.js Changeset: Modified: branches/SOC/sree/ui/usermgmt.esp =================================================================== --- branches/SOC/sree/ui/usermgmt.esp 2006-08-20 03:56:27 UTC (rev 17618) +++ branches/SOC/sree/ui/usermgmt.esp 2006-08-20 11:26:35 UTC (rev 17619) @@ -4,15 +4,9 @@ libinclude("server_call.js"); libinclude("usermgmt.js"); - -// temporary function __user_get_all(attrs) { - /*var options = GetOptions(ARGV, "POPT_COMMON_CREDENTIALS"); - var system_session = system_session(); - var creds = options.get_credentials(); - sam = user_init(system_session.authinfo.session_info, creds); - */ + printf("user_get_all\n"); var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); var user_dn = sprintf("CN=Users,%s", sam.domain_dn); @@ -30,10 +24,10 @@ function __user_add(username, fullname, description, password, flags, otherflags, unixname) { - printVars(session); - var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); printf("user_add: %s, %s, %s, %s, %d, %d, %s\n", username, fullname, description , password, flags, otherflags, unixname); + + var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); result = user_add(sam, username, fullname, description, password, flags, otherflags, unixname); user_deinit(sam); @@ -42,8 +36,8 @@ function __user_password_set(username, password) { + printf("user_password_set: %s (secret)\n", username); var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); - printf("user_password_set: %s (secret)\n", username); result = user_password_set(sam, username, password); user_deinit(sam); @@ -52,8 +46,8 @@ function __user_rename(username, newusername) { + printf("user_rename: %s %s\n", username, newusername); var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); - printf("user_rename: %s %s\n", username, newusername); result = user_rename(sam, username, newusername); user_deinit(sam); @@ -62,8 +56,8 @@ function __user_delete(username) { + printf("user_delete: %s\n", username); var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); - printf("user_delete: %s\n", username); result = user_delete(sam, username); user_deinit(sam); @@ -72,15 +66,46 @@ function __user_get(username, attrs) { - var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); printf("user_get: %s\n", username); + var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); result = user_get(sam, username, attrs); user_deinit(sam); return result; } +function __user_group_get(username) +{ + printf("user_group_get: %s\n", username); + + var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); + result = user_group_get(sam, username); + printVars(result); + user_deinit(sam); + return result; +} + +function __user_group_add(username, groupname) +{ + printf("user_group_add: %s %s\n", username, groupname); + var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); + result = user_group_add(sam, username, groupname); + + user_deinit(sam); + return result; +} + +function __user_group_remove(username, groupname) +{ + printf("user_group_remove: %s %s\n", username, groupname); + var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); + result = user_group_remove(sam, username, groupname); + + user_deinit(sam); + return result; +} + var call = servCallObj(); call.add('user_get_all', __user_get_all); call.add('user_add', __user_add); @@ -88,6 +113,8 @@ call.add('user_rename', __user_rename); call.add('user_delete', __user_delete); call.add('user_get', __user_get); - +call.add('user_group_get', __user_group_get); +call.add('user_group_add', __user_group_add); +call.add('user_group_remove', __user_group_remove); call.run(); %> Modified: branches/SOC/sree/ui/userprop.js =================================================================== --- branches/SOC/sree/ui/userprop.js 2006-08-20 03:56:27 UTC (rev 17618) +++ branches/SOC/sree/ui/userprop.js 2006-08-20 11:26:35 UTC (rev 17619) @@ -59,6 +59,22 @@ tv.getPane().add(gp); } +function __load_user_groups(groups, lstGroups) +{ + if(groups) + { + lstGroups.removeAll(); + for(var i = 0; i < groups.length; i++) + { + var item = new QxListItem(groups[i][1], null, groups[i][0]); + lstGroups.add(item); + } + } + else + { + window.alert("Could not load user's groups!"); + } +} function __create_memberof_pane(tv, tb, user_data) { var mp = new QxTabViewPage(tb); @@ -82,13 +98,45 @@ var btnAdd = new QxButton("Add..."); var btnRemove = new QxButton("Remove"); + btnRemove.addEventListener("click", function() { + var item = grpList.getSelectedItem(); + + if(item == null) + { + window.alert("Please select an item!"); + return; + } + + if(window.confirm("Remove user " + mp.getUserData('username') + " from group " + + item.getLabel() + "?")) + { + server_call_url("/user_manager/usermgmt.esp", 'user_group_remove', + function(result) { + if(result) + server_call_url("/user_manager/usermgmt.esp", 'user_group_get', + function(results) { __load_user_groups(results, grpList);}, + mp.getUserData('username')); + else + window.alert("Could not remove user from group!"); + }, mp.getUserData('username'), item.getLabel()); + } + }); + btnAdd.setWidth(80); btnRemove.setWidth(80); bl2.add(btnAdd, btnRemove); bl.add(grpList); bl.add(bl2); + mp.setUserData('username', user_data['sAMAccountName']); mp.add(bl); + if(user_data['memberOf']) + { + server_call_url("/user_manager/usermgmt.esp", 'user_group_get', + function(results) { __load_user_groups(results, grpList);}, + mp.getUserData('username')); + } + tv.getPane().add(mp); } Modified: branches/SOC/sree/usermgmt.js =================================================================== --- branches/SOC/sree/usermgmt.js 2006-08-20 03:56:27 UTC (rev 17618) +++ branches/SOC/sree/usermgmt.js 2006-08-20 11:26:35 UTC (rev 17619) @@ -129,6 +129,7 @@ //TODO: Check if user already exists? if(sam.ldb.add(ldif) != true) { + print(sam.ldb.errstring()); print("Failed to add user!\n"); sam.ldb.transaction_cancel(); return false; @@ -309,7 +310,7 @@ sam.ldb.transaction_start(); - var user = user_get(sam, username, new Array("sAMAccount")); + var user = user_get(sam, username, new Array("sAMAccountName")); if(user == false) {
