svn commit: samba r17621 - in branches/SOC/sree/ui: .
sree at samba.org
sree at samba.org
Sun Aug 20 17:19:56 GMT 2006
Author: sree
Date: 2006-08-20 17:19:55 +0000 (Sun, 20 Aug 2006)
New Revision: 17621
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17621
Log:
Added function user_group_get_all() to enumerate all groups.
Added server calls for setting user profile and general information.
Added function user_props_update() as support functions for user properties dialog.
User properties dialog now saves information.
Modified:
branches/SOC/sree/ui/usermgmt.esp
branches/SOC/sree/ui/userprop.js
Changeset:
Modified: branches/SOC/sree/ui/usermgmt.esp
===================================================================
--- branches/SOC/sree/ui/usermgmt.esp 2006-08-20 17:08:37 UTC (rev 17620)
+++ branches/SOC/sree/ui/usermgmt.esp 2006-08-20 17:19:55 UTC (rev 17621)
@@ -4,6 +4,7 @@
libinclude("server_call.js");
libinclude("usermgmt.js");
+// enumerate all users
function __user_get_all(attrs)
{
printf("user_get_all\n");
@@ -13,7 +14,7 @@
var results;
if(attrs.length == 0)
- results = sam.ldb.search(NULL, user_dn);
+ results = sam.ldb.search('(objectClass=user)', user_dn);
else
results = sam.ldb.search('(objectClass=user)', user_dn, sam.ldb.SCOPE_DEFAULT, attrs);
@@ -22,6 +23,26 @@
return results;
}
+// enumerate all groups
+function __user_group_get_all(attrs)
+{
+ printf("user_group_get_all\n");
+ var sam = user_init(session.authinfo.session_info, session.authinfo.credentials);
+
+ var user_dn = sprintf("%s", sam.domain_dn);
+ var results;
+
+ if(attrs.length == 0)
+ results = sam.ldb.search('(objectClass=group)', user_dn);
+ else
+ results = sam.ldb.search('(objectClass=group)', user_dn, sam.ldb.SCOPE_DEFAULT, attrs);
+
+ printVars(results);
+ user_deinit(sam);
+ return results;
+}
+
+
function __user_add(username, fullname, description, password, flags, otherflags, unixname)
{
printf("user_add: %s, %s, %s, %s, %d, %d, %s\n", username, fullname, description
@@ -106,6 +127,52 @@
return result;
}
+function __user_general_set(username, fullname, description, flags, unixname)
+{
+ printf("user_general_set: %s, %s, %s, %s, %d, %s\n", username, fullname, description, flags, unixname);
+ var sam = user_init(session.authinfo.session_info, session.authinfo.credentials);
+ result = user_general_set(sam, username, fullname, description, flags, unixname);
+
+ user_deinit(sam);
+ return result;
+}
+
+function __user_profile_set(username, profilepath, logonscript, homepath, homedrive)
+{
+ printf("user_profile_set: %s, %s, %s, %s, %s, %s\n", username, profilepath, logonscript, homepath, homedrive);
+ var sam = user_init(session.authinfo.session_info, session.authinfo.credentials);
+ result = user_profile_set(sam, username, profilepath, logonscript, homepath, homedrive);
+ user_deinit(sam);
+ return result;
+}
+
+function __user_props_update(username, userprops)
+{
+ printf("user_props_update: \n");
+ printVars(userprops);
+ var sam = user_init(session.authinfo.session_info, session.authinfo.credentials);
+ var g = userprops.general;
+ var p = userprops.profile;
+ if(!g || !p) return false;
+
+ //TODO: nested transactions do not yet work
+ sam.ldb.transaction_start();
+ printf("setting general properties ");
+ var r = user_general_set(sam, username, g.fullname, g.description, g.flags, g.unixname);
+ if(!r) { sam.ldb.transaction_cancel(); return false; }
+ printf("done\n");
+
+ printf("setting profile properties ");
+ if(p.homedrive == "*") p.homedrive = "";
+ r = user_profile_set(sam, username, p.profilepath, p.logonscript, p.homepath, p.homedrive);
+ if(!r) { sam.ldb.transaction_cancel(); return false; }
+ printf("done\n");
+
+ r = sam.ldb.transaction_commit();
+ user_deinit(sam);
+ return r;
+}
+
var call = servCallObj();
call.add('user_get_all', __user_get_all);
call.add('user_add', __user_add);
@@ -116,5 +183,9 @@
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.add('user_profile_set', __user_profile_set);
+call.add('user_general_set', __user_general_set);
+call.add('user_group_get_all', __user_group_get_all);
+call.add('user_props_update', __user_props_update);
call.run();
%>
Modified: branches/SOC/sree/ui/userprop.js
===================================================================
--- branches/SOC/sree/ui/userprop.js 2006-08-20 17:08:37 UTC (rev 17620)
+++ branches/SOC/sree/ui/userprop.js 2006-08-20 17:19:55 UTC (rev 17621)
@@ -52,10 +52,37 @@
var chkAccountDisabled = new QxCheckBox("Account is disabled", "2", "", (uac & 2) > 0);
var chkAccountLocked = new QxCheckBox("Account is locked out", "", "");
+ function pack()
+ {
+ var o = new Object();
+ if(!txtUnixname.getValue())
+ {
+ window.alert("Unixname cannot be empty!");
+ return null;
+ }
+
+ o.fullname = txtFullname.getValue();
+ o.description = txtDescription.getValue();
+ o.unixname = txtUnixname.getValue();
+
+ //TODO: Implement account locking, next logon change
+ var chkboxes = [chkNoChangePassword, chkNoPasswordExpire, chkAccountDisabled];
+ var uaf = 0;
+ for(var i = 0; i < chkboxes.length; i++)
+ {
+ if(chkboxes[i].getChecked())
+ uaf = uaf | chkboxes[i].getValue();
+ }
+
+ o.flags = uaf;
+ return o;
+ }
+
bl.add(user);
bl.add(gl);
bl.add(chkChangePassword, chkNoChangePassword, chkNoPasswordExpire, chkAccountDisabled, chkAccountLocked);
gp.add(bl);
+ gp.pack = pack;
tv.getPane().add(gp);
}
@@ -90,6 +117,7 @@
bl.add(new QxLabel("Member of:", "m"));
var grpList = new QxList;
+ grpList.getManager().setMultiSelection(false);
grpList.setHeight("80%");
var bl2 = new QxBoxLayout(QxConst.ORIENTATION_HORIZONTAL);
@@ -261,6 +289,25 @@
txtLocalPath.setValue(user_data['homeDirectory']);
}
+
+ function pack()
+ {
+ var o = new Object();
+ if(rm.getSelected() == rb2 && !txtNetworkPath.getValue())
+ {
+ window.alert("No network path specified!");
+ return null;
+ }
+
+ o.profilepath = txtProfilePath.getValue();
+ o.logonscript = txtLogonScript.getValue();
+ o.homepath = (rm.getSelected() == rb1) ? txtLocalPath.getValue() : txtNetworkPath.getValue();
+ //TODO: remove the *, put in to workaround a bug
+ o.homedrive = (rm.getSelected() == rb2) ? cbDrive.getSelected().getLabel() : "*";
+
+ return o;
+ }
+
gl2.add(rb1, 0, 0);
gl2.add(txtLocalPath, 1, 0);
gl2.add(rb2, 0, 1);
@@ -270,6 +317,7 @@
fs2.add(gl2);
bl.add(fs1, fs2);
pp.add(bl);
+ pp.pack = pack;
tv.getPane().add(pp);
}
@@ -321,9 +369,32 @@
btnCancel.setWidth(80);
btnApply.setWidth(80);
+ function _save_props(close)
+ {
+ var gp = tv.getPane().getChildren()[0];
+ var pp = tv.getPane().getChildren()[2];
+
+ var props = new Object();
+ props.general = gp.pack();
+ if(props.general == null) return;
+ props.profile = pp.pack();
+ if(props.profile == null) return;
+
+ server_call_url('/user_manager/usermgmt.esp', 'user_props_update',
+ function (result) {
+ if(result)
+ {
+ if(close) w1.close();
+ }
+ else
+ window.alert("Could not update properties");
+ }, username, props);
+ }
+
btnCancel.addEventListener("click", function() { w1.close(); });
+ btnOk.addEventListener("click", function() { _save_props(true); });
+ btnApply.addEventListener("click", function () { _save_props(false); });
-
bl2.add(btnOk);
bl2.add(btnCancel);
bl2.add(btnApply);
More information about the samba-cvs
mailing list