svn commit: samba r16451 - in branches/SOC/sree: .
sree at samba.org
sree at samba.org
Wed Jun 21 22:45:17 GMT 2006
Author: sree
Date: 2006-06-21 22:45:15 +0000 (Wed, 21 Jun 2006)
New Revision: 16451
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16451
Log:
user_delete() now removes user from all groups
preliminary code for supporting userAccountControl flags
new function user_get(), retrieves user details
Modified:
branches/SOC/sree/usermgmt.js
Changeset:
Modified: branches/SOC/sree/usermgmt.js
===================================================================
--- branches/SOC/sree/usermgmt.js 2006-06-21 21:28:07 UTC (rev 16450)
+++ branches/SOC/sree/usermgmt.js 2006-06-21 22:45:15 UTC (rev 16451)
@@ -2,6 +2,12 @@
libinclude("base.js");
+
+// userAccountFlags constants, decl here for now
+var UF_ACCOUNTDISABLE = 0x2;
+var UF_PASSWORD_CANT_CHANGE = 0x40;
+var UF_DONT_EXPIRE_PASSWORD = 0x10000;
+
// initialize user functions, and return opaque value to be used by
// other functions
function user_init(session_info, credentials)
@@ -59,13 +65,31 @@
sam.ldb.transaction_start();
- //TODO: Remove the user from all groups
- if(sam.ldb.modify(ldifmod) != true)
+ user = user_get(sam, username, new Array("memberOf"))
+ if(user == false)
{
- print("Failed to remove user from group!\n");
+ print("Failed to get user's groups, no such user?");
sam.ldb.transaction_cancel();
return false;
}
+
+ var ldifmod;
+
+ for(i = 0; i < user["memberOf"].length; i++)
+ {
+ ldifmod = sprintf("
+dn: %s
+delete: member
+member: %s
+", user["memberOf"][i], user_dn);
+
+ if(sam.ldb.modify(ldifmod) != true)
+ {
+ print("Failed to remove user from group!\n");
+ sam.ldb.transaction_cancel();
+ return false;
+ }
+ }
if(sam.ldb.del(user_dn) != true)
{
@@ -120,12 +144,62 @@
sam.ldb.transaction_cancel();
return false;
}
-
- //TODO: Handle flags
+
+ var user = user_get(sam, username, new Array("userAccountControl"));
+ if(user == false)
+ {
+ print("Something went wrong, couldn't retrieve user!");
+ sam.ldb.transaction_cancel();
+ return false;
+ }
+ var userAccountControl = user['userAccountControl'];
+
+ //TODO: Finish up mapping flags and uac, without bitwise operators
+ //:-(
+
+ ldifmod = sprintf("
+dn: %s
+changetype: modify
+replace: userAccountControl
+userAccountControl: %u", user_dn, userAccountControl);
+
+ if(sam.ldb.modify(ldifmod) != true)
+ {
+ print("Failed to modify user flags!\n");
+ sam.ldb.transaction_cancel();
+ return false;
+ }
+
return(sam.ldb.transaction_commit());
}
+// returns a user array
+// result format same as ldb.search for now
+function user_get(sam, username, attrs)
+{
+ var user_dn = sprintf("CN=%s,CN=Users,%s",
+ username, sam.domain_dn);
+ var results;
+
+ if(attrs.length == 0)
+ results = sam.ldb.search(NULL, user_dn);
+ else
+ results = sam.ldb.search(NULL, user_dn,
+ sam.ldb.SCOPE_ONELEVEL, attrs);
+
+ if(results.length == 1)
+ {
+ var user = results[0];
+ return user;
+ }
+ else
+ {
+ print("User not found.\n");
+ return false;
+ }
+}
+
// --- MAIN ---
var options = GetOptions(ARGV, "POPT_COMMON_CREDENTIALS");
@@ -135,19 +209,19 @@
sam = user_init(system_session, creds);
-
if(user_add(sam, "sree", "Sreepathi Pai",
"First Test User", "simple", 0, "sree"))
print("User successfully added!\n");
else
print("Failed to add user!\n");
-/*
+printVars(user_get(sam, "sree", new Array("useraccountcontrol")));
+
if(user_delete(sam, "sree"))
print("User successfully deleted!\n");
else
print("Failed to delete user!\n");
-*/
+
user_deinit(sam);
More information about the samba-cvs
mailing list