svn commit: samba r16618 - in branches/SOC/sree: .
sree at samba.org
sree at samba.org
Wed Jun 28 09:55:28 GMT 2006
Author: sree
Date: 2006-06-28 09:55:28 +0000 (Wed, 28 Jun 2006)
New Revision: 16618
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16618
Log:
Add example code for user_general_set() which was missing in last check-in
Change mistakenly-made-global user variable into local variable
New functions:
user_group_get() -> get a user's groups
user_group_add() -> add a user to a group
user_group_remove() -> remove a user from a group
This commit largely wraps up the complete functionality intended to be
in M1, as well as in usermgmt.js (from the UI point of view).
Modified:
branches/SOC/sree/test.js
branches/SOC/sree/usermgmt.js
Changeset:
Modified: branches/SOC/sree/test.js
===================================================================
--- branches/SOC/sree/test.js 2006-06-28 07:43:43 UTC (rev 16617)
+++ branches/SOC/sree/test.js 2006-06-28 09:55:28 UTC (rev 16618)
@@ -34,6 +34,30 @@
else
print("Failed to set user profile properties");
+if(user_general_set(sam, "sreetest", "Pai Sreepathi", "Still testing...", 0x202, "another_sree"))
+{
+ print("Set user's general properties!");
+ printVars(user_get(sam, "sreetest", new Array("displayName", "description", "userAccountControl", "unixName")));
+}
+else
+ print("Failed to set user's general properties");
+
+if(user_group_add(sam, "sreetest", "Domain Admins"))
+{
+ print("Successfully added to group Domain Admins\n");
+ printVars(user_group_get(sam, "sreetest"));
+}
+else
+ print("Failed to add to group!");
+
+if(user_group_remove(sam, "sreetest", "Domain Admins"))
+{
+ print("Successfully removed from group Domain Admins\n");
+ printVars(user_group_get(sam, "sreetest"));
+}
+else
+ print("Failed to remove from group!");
+
if(user_delete(sam, "sreetest"))
print("User successfully deleted!\n");
else
Modified: branches/SOC/sree/usermgmt.js
===================================================================
--- branches/SOC/sree/usermgmt.js 2006-06-28 07:43:43 UTC (rev 16617)
+++ branches/SOC/sree/usermgmt.js 2006-06-28 09:55:28 UTC (rev 16618)
@@ -63,7 +63,8 @@
sam.ldb.transaction_start();
- user = user_get(sam, username, new Array("memberOf"))
+ var user = user_get(sam, username, new Array("memberOf"));
+
if(user == false)
{
print("Failed to get user's groups, no such user?");
@@ -229,7 +230,8 @@
sam.ldb.transaction_start();
- user = user_get(sam, username, new Array("memberOf"))
+ var user = user_get(sam, username, new Array("memberOf"));
+
if(user == false)
{
print("Failed to get user's groups, no such user?\n");
@@ -301,7 +303,7 @@
sam.ldb.transaction_start();
- user = user_get(sam, username, new Array("sAMAccount"));
+ var user = user_get(sam, username, new Array("sAMAccount"));
if(user == false)
{
@@ -384,7 +386,7 @@
sam.ldb.transaction_start();
- user = user_get(sam, username, new Array("displayName"));
+ var user = user_get(sam, username, new Array("displayName"));
if(user == false)
{
@@ -453,3 +455,142 @@
return(sam.ldb.transaction_commit());
}
+
+// get a user's groups
+function user_group_get(sam, username)
+{
+ var user_dn = sprintf("CN=%s,CN=Users,%s",
+ username, sam.domain_dn);
+ var k = 0;
+ var group_dn = "";
+ var out = new Array();
+ var attrs = new Array("cn");
+ var results;
+
+ var user = user_get(sam, username, new Array("memberOf"));
+
+ if(user == false)
+ return false;
+
+ for(k = 0; k < user['memberOf'].length; k++)
+ {
+ group_dn = user['memberOf'][k];
+
+ results = sam.ldb.search(NULL, group_dn,
+ sam.ldb.SCOPE_ONELEVEL, attrs);
+
+ assert(results.length == 1);
+
+ out[k] = new Array(results[0]['dn'], results[0]['cn']);
+ }
+
+ return out;
+}
+
+// add a user to a group
+function user_group_add(sam, username, groupname)
+{
+ var user_dn = sprintf("CN=%s,CN=Users,%s",
+ username, sam.domain_dn);
+ var group_dn = sprintf("CN=%s,CN=Users,%s",
+ groupname, sam.domain_dn);
+
+ sam.ldb.transaction_start();
+
+ var user = user_get(sam, username, new Array("memberOf"));
+
+ if(user == false)
+ {
+ print("No such user\n");
+ sam.ldb.transaction_cancel();
+ return false;
+ }
+
+ var results = sam.ldb.search(NULL, group_dn,
+ sam.ldb.SCOPE_ONELEVEL, new Array("cn"));
+
+ if(results.length != 1)
+ {
+ print("No such group!");
+ sam.ldb.transaction_cancel();
+ return false;
+ }
+
+ var ldifmod = sprintf("
+dn: %s
+changeType: modify
+add: member
+member: %s
+
+dn: %s
+changeType: modify
+add: memberOf
+memberOf: %s
+", group_dn, user_dn, user_dn, group_dn);
+
+ if(sam.ldb.modify(ldifmod) != true)
+ {
+ print("Failed to add user to group!\n");
+ sam.ldb.transaction_cancel();
+ return false;
+ }
+
+ return(sam.ldb.transaction_commit());
+}
+
+// remove a user from a group
+function user_group_remove(sam, username, groupname)
+{
+ var user_dn = sprintf("CN=%s,CN=Users,%s",
+ username, sam.domain_dn);
+ var group_dn = sprintf("CN=%s,CN=Users,%s",
+ groupname, sam.domain_dn);
+
+ sam.ldb.transaction_start();
+
+ var user = user_get(sam, username, new Array("memberOf"));
+ var found = false;
+
+ if(user == false)
+ {
+ print("No such user\n");
+ sam.ldb.transaction_cancel();
+ return false;
+ }
+
+ for(var k = 0; !found && (k < user['memberOf'].length); k++)
+ {
+ if(strlower(user['memberOf'][k]) ==
+ strlower(group_dn))
+ found = true;
+ }
+
+ if(!found)
+ {
+ print("User does not belong to this group!\n");
+ sam.ldb.transaction_cancel();
+ return false;
+ }
+
+
+ var ldifmod = sprintf("
+dn: %s
+changeType: delete
+delete: member
+member: %s
+
+dn: %s
+changeType: delete
+delete: memberOf
+memberOf: %s
+", group_dn, user_dn, user_dn, group_dn);
+
+ if(sam.ldb.modify(ldifmod) != true)
+ {
+ print("Failed to remove user from group!\n");
+ sam.ldb.transaction_cancel();
+ return false;
+ }
+
+ return(sam.ldb.transaction_commit());
+}
More information about the samba-cvs
mailing list