Author: sree Date: 2006-08-19 20:37:39 +0000 (Sat, 19 Aug 2006) New Revision: 17611
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=17611 Log: This release enables the following GUI functionality * creation of new users * reset password * rename user * delete user Note that automatic refresh of the user list is not yet coded, you need to manually refresh for now. Added: branches/SOC/sree/ui/usermanager.esp Removed: branches/SOC/sree/ui/test.html Modified: branches/SOC/sree/ui/newuser.js branches/SOC/sree/ui/userbrowser.js branches/SOC/sree/ui/usermgmt.esp Changeset: Modified: branches/SOC/sree/ui/newuser.js =================================================================== --- branches/SOC/sree/ui/newuser.js 2006-08-19 01:04:54 UTC (rev 17610) +++ branches/SOC/sree/ui/newuser.js 2006-08-19 20:37:39 UTC (rev 17611) @@ -3,10 +3,37 @@ Client-side routines for the New User Dialog. */ -function __create_user() +function __create_user(txtUsername, txtUnixname, txtFullname, txtDescription, txtPassword, + chkChangePassword, chkAccountFlags, w1) { - //TODO: call server to create user - return false; + var flags = 0; + var otherflags = 0; + + for(var i = 0; i < chkAccountFlags.length; i++) + { + if(chkAccountFlags[i].getChecked()) + flags = flags | chkAccountFlags[i].getValue(); + } + + if(chkChangePassword.getChecked()) + otherflags = 1; + + + window.alert(flags + ' ' + otherflags); + + server_call_url("/user_manager/usermgmt.esp", 'user_add', + function(rval) { + if(rval) + { + //do ui callback + w1.close(); + } + else + { + window.alert("Could not create user!"); + } + }, txtUsername.getValue(), txtFullname.getValue(), txtDescription.getValue(), + txtPassword.getValue(), flags, otherflags, txtUnixname.getValue()); } function __validate_form(txtBoxes, txtPassword1, txtPassword2) @@ -113,12 +140,12 @@ g2.add(txtConfirmPassword, 1, 1); var chkChangePassword = new QxCheckBox("User must change password at next logon", "", "", true); - var chkNoChangePassword = new QxCheckBox("User cannot change password", "", ""); - var chkNoPasswordExpire = new QxCheckBox("Password never expires", "", ""); - var chkAccountDisabled = new QxCheckBox("Account is disabled", "", ""); + var chkNoChangePassword = new QxCheckBox("User cannot change password", "64", ""); + var chkNoPasswordExpire = new QxCheckBox("Password never expires", "65536", ""); + var chkAccountDisabled = new QxCheckBox("Account is disabled", "2", ""); - chkNoChangePassword.setEnabled(false); - chkNoPasswordExpire.setEnabled(false); + /* chkNoChangePassword.setEnabled(false); + chkNoPasswordExpire.setEnabled(false);*/ var bl2 = new QxBoxLayout; with (bl2) @@ -145,15 +172,9 @@ btnCreate.addEventListener("click", function() { if(__validate_form(txtBoxes, txtPassword, txtConfirmPassword)) { - if(__create_user(txtUsername, txtUnixname, txtFullname, txtDescription, txtPassword)) - { - //TODO: do UI client callback - - // and then close - w1.close(); - } - else - window.alert("Unable to create user!"); + __create_user(txtUsername, txtUnixname, txtFullname, txtDescription, txtPassword, + chkChangePassword, [chkNoChangePassword, chkNoPasswordExpire, chkAccountDisabled], w1); + } }); Deleted: branches/SOC/sree/ui/test.html =================================================================== --- branches/SOC/sree/ui/test.html 2006-08-19 01:04:54 UTC (rev 17610) +++ branches/SOC/sree/ui/test.html 2006-08-19 20:37:39 UTC (rev 17611) @@ -1,31 +0,0 @@ -<html> -<head> -<script type="text/javascript"> -var QxSettings = { - imageCorePath : "/style/qooxdoo0.5.3/images", - imageLocalPath : "/style/qooxdoo0.5.3/script/", - imageIconPath : "/style/qooxdoo0.5.3/themes/icons", - imageWidgetPath : "/style/qooxdoo0.5.3/themes/widgets" -}; -</script> -<script type="text/javascript" src="/style/qooxdoo0.5.3/script/qooxdoo.js"></script> -<script type="text/javascript" src="newuser.js"></script> -<script type="text/javascript" src="userprop.js"></script> -<script type="text/javascript" src="userbrowser.js"></script> -<script type="text/javascript" src="/scripting/client/encoder.js"></script> -<script type="text/javascript" src="/scripting/client/call.js"></script> - -</head> -<body> - <script type="text/javascript"> - window.application.main = function() - { - var d = this.getClientWindow().getClientDocument(); - var usrbrowser = UserBrowser(d); - - d.add(usrbrowser); - usrbrowser.open(); - } -</script> -</body> -</head> Modified: branches/SOC/sree/ui/userbrowser.js =================================================================== --- branches/SOC/sree/ui/userbrowser.js 2006-08-19 01:04:54 UTC (rev 17610) +++ branches/SOC/sree/ui/userbrowser.js 2006-08-19 20:37:39 UTC (rev 17611) @@ -58,6 +58,29 @@ btnCancel.addEventListener("click", function() { w.close() }); + btnOk.addEventListener("click", function() { + if(!txtPassword1.getValue()) + { + window.alert("You must provide a password!"); + return; + } + + if(txtPassword1.getValue() != txtPassword2.getValue()) + { + window.alert("Passwords do not match!"); + return; + } + + server_call_url("/user_manager/usermgmt.esp", 'user_password_set', + function(result) { + if(result) + w.close(); + else + window.alert("Could not change password!"); + + }, w.getUserData('username'), txtPassword1.getValue()); + }); + var bl = new QxBoxLayout(); bl.setWidth("auto"); bl.setSpacing(5); @@ -71,7 +94,7 @@ txtPassword1.focus(); w.add(gl); - + w.setUserData('username', username); return w; } @@ -103,7 +126,6 @@ setColumnVerticalAlignment(0, "middle"); setColumnVerticalAlignment(1, "middle"); - mergeCells(0, 1, 2, 1); setPadding(2); } @@ -114,7 +136,26 @@ var btnCancel = new QxButton("Cancel"); btnCancel.addEventListener("click", function() { w.close(); }); + btnOk.addEventListener("click", function() { + if(txtUsername.getValue()) + { + server_call_url("/user_manager/usermgmt.esp", 'user_rename', + function(result) { + if(result) + { + //TODO: ui refresh + w.close(); + } + else + window.alert("Unable to rename user"); + }, w.getUserData('username'), txtUsername.getValue()); + + } + else + window.alert("You must provide a username"); + }); + var bl = new QxBoxLayout(); bl.setWidth("auto"); bl.setSpacing(5); @@ -123,15 +164,20 @@ gl.add(l1, 0, 0); gl.add(txtUsername, 1, 0); gl.add(bl, 0, 1); - + w.setUserData('username', username); w.add(gl); return w; } function __load_users(lv, list) { +/* // DEBUG + list = {0: {'sAMAccountName' : 'sree', 'displayName' : 'Sreepathi Pai', + 'unixName' : 'sree2', 'description' : 'who left his computer behind'}, length: 1}; + // END DEBUG */ + var ld = lv.getData(); - + for(var i = 0; i < list.length; i++) { var obj = new Object(); @@ -141,6 +187,10 @@ obj.unixname = {text: list[i]['unixName']}; obj.description = {text: list[i]['description']}; + if(obj.fullname.text == undefined) obj.fullname.text = null; + if(obj.unixname.text == undefined) obj.unixname.text = null; + if(obj.description.text == undefined) obj.description.text = null; + ld.push(obj); } @@ -251,7 +301,23 @@ var q3 = new QxCommand(); q3.addEventListener("execute", function(e) { - window.alert("Delete"); + var user = lv.getPane().getSelectedItem(); + if(window.confirm("Do you wish to delete user " + user.username.text + "?")) + { + server_call_url("/user_manager/usermgmt.esp", 'user_delete', + function(result) { + if(result) + { + lv.getData().length = 0; + lv.update(); + + server_call_url("/user_manager/usermgmt.esp", 'user_get_all', + function(list) { __load_users(lv, list);}, attrs); + } + else + window.alert("Could not delete user!"); + }, user.username.text); + } }); var q4 = new QxCommand(); @@ -276,15 +342,26 @@ user.propertiesdialog = prop; } }); + + var q5 = new QxCommand(); + q5.addEventListener("execute", function(e) { + lv.getData().length = 0; + lv.update(); + server_call_url("/user_manager/usermgmt.esp", 'user_get_all', + function(list) { __load_users(lv, list);}, attrs); + }); + var mb2_00 = new QxMenuButton("New User...", null, q0); - var mb2_s = new QxMenuSeparator(); + var mb2_s1 = new QxMenuSeparator(); var mb2_01 = new QxMenuButton("Reset Password", null, q1); var mb2_02 = new QxMenuButton("Rename", null, q2); var mb2_03 = new QxMenuButton("Delete", null, q3); var mb2_04 = new QxMenuButton("Properties...", null, q4); + var mb2_s2 = new QxMenuSeparator(); + var mb2_05 = new QxMenuButton("Refresh", null, q5); - m2.add(mb2_00, mb2_s, mb2_01, mb2_02, mb2_03, mb2_04); + m2.add(mb2_00, mb2_s1, mb2_01, mb2_02, mb2_03, mb2_04, mb2_s2, mb2_05); d.add(m2); Added: branches/SOC/sree/ui/usermanager.esp =================================================================== --- branches/SOC/sree/ui/usermanager.esp 2006-08-19 01:04:54 UTC (rev 17610) +++ branches/SOC/sree/ui/usermanager.esp 2006-08-19 20:37:39 UTC (rev 17611) @@ -0,0 +1,23 @@ +<% + requiredQooxdoo = "0.5.3"; + page_header("columns", "User Manager", "esptest"); +%> + +<script type="text/javascript" src="/user_manager/userbrowser.js"></script> +<script type="text/javascript" src="/user_manager/newuser.js"></script> +<script type="text/javascript" src="/user_manager/userprop.js"></script> +<script type="text/javascript" src="/scripting/client/encoder.js"></script> +<script type="text/javascript" src="/scripting/client/call.js"></script> + +<script type="text/javascript"> + window.application.main = function() + { + var d = this.getClientWindow().getClientDocument(); + var usrbrowser = UserBrowser(d); + + d.add(usrbrowser); + usrbrowser.open(); + } +</script> + +<% page_footer(); %> Modified: branches/SOC/sree/ui/usermgmt.esp =================================================================== --- branches/SOC/sree/ui/usermgmt.esp 2006-08-19 01:04:54 UTC (rev 17610) +++ branches/SOC/sree/ui/usermgmt.esp 2006-08-19 20:37:39 UTC (rev 17611) @@ -11,9 +11,9 @@ /*var options = GetOptions(ARGV, "POPT_COMMON_CREDENTIALS"); var system_session = system_session(); var creds = options.get_credentials(); - sam = user_init(system_session, creds); + sam = user_init(system_session.authinfo.session_info, creds); */ - var sam = user_init(session, session.authinfo.credentials); + var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); var user_dn = sprintf("CN=Users,%s", sam.domain_dn); var results; @@ -28,10 +28,65 @@ return results; } +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); + result = user_add(sam, username, fullname, description, password, flags, otherflags, unixname); + user_deinit(sam); + return result; +} + +function __user_password_set(username, password) +{ + 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); + return result; +} + +function __user_rename(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); + return result; +} + +function __user_delete(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); + return result; +} + +function __user_get(username, attrs) +{ + var sam = user_init(session.authinfo.session_info, session.authinfo.credentials); + + result = user_get(sam, username, attrs); + + user_deinit(sam); + return result; +} + var call = servCallObj(); call.add('user_get_all', __user_get_all); +call.add('user_add', __user_add); +call.add('user_password_set', __user_password_set); +call.add('user_rename', __user_rename); +call.add('user_delete', __user_delete); +call.add('user_get', __user_get); + call.run(); - -//__user_get_all(null); %>