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);
 %>

Reply via email to