Author: rgodfrey
Date: Mon Jun 25 12:11:52 2012
New Revision: 1353486

URL: http://svn.apache.org/viewvc?rev=1353486&view=rev
Log:
QPID-3999 : Allow setting of passwords through web management console

Added:
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/authenticationprovider/setPassword.html
      - copied, changed from r1353135, 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/authenticationprovider/addUser.html
Modified:
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
    
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager.js

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java?rev=1353486&r1=1353485&r2=1353486&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/org/apache/qpid/server/management/plugin/servlet/rest/RestServlet.java
 Mon Jun 25 12:11:52 2012
@@ -3,30 +3,13 @@ package org.apache.qpid.server.managemen
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.net.SocketAddress;
-import java.security.AccessControlException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-import java.util.Set;
+import java.util.*;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
 import org.apache.qpid.AMQSecurityException;
-import org.apache.qpid.server.model.Broker;
-import org.apache.qpid.server.model.ConfiguredObject;
-import org.apache.qpid.server.model.Model;
-import org.apache.qpid.server.model.State;
-import org.apache.qpid.server.model.Statistics;
+import org.apache.qpid.server.model.*;
 import org.codehaus.jackson.map.ObjectMapper;
 import org.codehaus.jackson.map.SerializationConfig;
 
@@ -510,8 +493,19 @@ public class RestServlet extends Abstrac
             }
             ConfiguredObject theParent = parents.remove(0);
             ConfiguredObject[] otherParents = parents.toArray(new 
ConfiguredObject[parents.size()]);
+
             try
             {
+
+                Collection<? extends ConfiguredObject> existingChildren = 
theParent.getChildren(objClass);
+                for(ConfiguredObject obj: existingChildren)
+                {
+                    if((providedObject.containsKey("id") && 
String.valueOf(providedObject.get("id")).equals(obj.getId().toString()))
+                       || (obj.getName().equals(providedObject.get("name")) && 
equalParents(obj, otherParents)))
+                    {
+                        doUpdate(obj, providedObject);
+                    }
+                }
                 theParent.createChild(objClass, providedObject, otherParents);
             }
             catch (RuntimeException e)
@@ -524,6 +518,24 @@ public class RestServlet extends Abstrac
         response.setStatus(HttpServletResponse.SC_CREATED);
     }
 
+    private void doUpdate(ConfiguredObject obj, Map<String, Object> 
providedObject)
+    {
+        for(Map.Entry<String,Object> entry : providedObject.entrySet())
+        {
+            obj.setAttribute(entry.getKey(), obj.getAttribute(entry.getKey()), 
entry.getValue());
+        }
+        //TODO - Implement.
+    }
+
+    private boolean equalParents(ConfiguredObject obj, ConfiguredObject[] 
otherParents)
+    {
+        if(otherParents == null || otherParents.length == 0)
+        {
+            return true;
+        }
+        return false;  //TODO - Implement.
+    }
+
     private void setResponseStatus(HttpServletResponse response, 
RuntimeException e) throws IOException
     {
         if (e.getCause() instanceof AMQSecurityException)

Copied: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/authenticationprovider/setPassword.html
 (from r1353135, 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/authenticationprovider/addUser.html)
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/authenticationprovider/setPassword.html?p2=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/authenticationprovider/setPassword.html&p1=qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/authenticationprovider/addUser.html&r1=1353135&r2=1353486&rev=1353486&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/authenticationprovider/addUser.html
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/authenticationprovider/setPassword.html
 Mon Jun 25 12:11:52 2012
@@ -19,23 +19,23 @@
  -
  -->
 <div class="dijitHidden">
-    <div data-dojo-type="dijit.Dialog" style="width:600px;" 
data-dojo-props="title:'Add User'" id="addUser">
-        <form id="formAddUser" method="post" dojoType="dijit.form.Form">
+    <div data-dojo-type="dijit.Dialog" style="width:600px;" 
data-dojo-props="title:'Set Password'" id="setPassword">
+        <form id="formSetPassword" method="post" dojoType="dijit.form.Form">
             <table cellpadding="0" cellspacing="2">
                 <tr>
-                    <td valign="top"><strong>User Name*: </strong></td>
-                    <td><input type="text" required="true" name="name" 
id="formAddUser.name" placeholder="User Name"
-                        dojoType="dijit.form.ValidationTextBox" 
missingMessage="A name must be supplied" /></td>
+                    <td valign="top"><strong>User Name: </strong></td>
+                    <td><input type="text" required="true" name="name" 
id="formSetPassword.name" placeholder="User Name"
+                        dojoType="dijit.form.TextBox" enabled="false" /></td>
                 </tr>
                 <tr>
                     <td valign="top"><strong>Password*</strong></td>
-                    <td><input type="password" required="true" name="password" 
id="formAddUser.password" dojoType="dijit.form.ValidationTextBox"/></td>
+                    <td><input type="password" required="true" name="password" 
id="formSetPassword.password" dojoType="dijit.form.ValidationTextBox"/></td>
                 </tr>
             </table>
             <br/>
 
             <!-- submit buttons -->
-            <input type="submit" value="Create User" label="Create User" 
dojoType="dijit.form.Button" />
+            <input type="submit" value="Set Password" label="Set Password" 
dojoType="dijit.form.Button"  />
 
         </form>
     </div>

Modified: 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager.js
URL: 
http://svn.apache.org/viewvc/qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager.js?rev=1353486&r1=1353485&r2=1353486&view=diff
==============================================================================
--- 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager.js
 (original)
+++ 
qpid/branches/java-config-and-management/qpid/java/broker-plugins/management/src/main/java/resources/js/qpid/management/authenticationprovider/PrincipalDatabaseAuthenticationManager.js
 Mon Jun 25 12:11:52 2012
@@ -113,9 +113,10 @@ define(["dojo/_base/xhr",
                                                 connect.connect(obj.grid, 
"onRowDblClick", obj.grid,
                                                 function(evt){
                                                     var idx = evt.rowIndex,
-                                                        theItem = 
this.getItem(idx);
+                                                    theItem = 
this.getItem(idx);
                                                     var name = 
obj.dataStore.getValue(theItem,"name");
-                                                    
that.controller.show("virtualhost", name, brokerObj);
+                                                    var id = 
obj.dataStore.getValue(theItem,"id");
+                                                    
setPassword.show(authProviderObj.name, {name: name, id: id});
                                                 });
                                         }, gridProperties, EnhancedGrid);
 
@@ -250,10 +251,76 @@ define(["dojo/_base/xhr",
                         }});
 
         addUser.show = function(authProvider) {
-                            addUser.authProvider = authProvider;
-                            registry.byId("formAddUser").reset();
-                            registry.byId("addUser").show();
-                        };
+            addUser.authProvider = authProvider;
+            registry.byId("formAddUser").reset();
+            registry.byId("addUser").show();
+        };
+
+
+        var setPassword = {};
+
+        var setPasswordNode = construct.create("div", null, win.body(), 
"last");
+
+        xhr.get({url: "authenticationprovider/setPassword.html",
+                 sync: true,
+                 load:  function(data) {
+                    var theForm;
+                    setPasswordNode.innerHTML = data;
+                    setPassword.dialogNode = dom.byId("setPassword");
+                    parser.instantiate([setPassword.dialogNode]);
+
+                    var that = this;
+
+                    theForm = registry.byId("formSetPassword");
+                    theForm.on("submit", function(e) {
+
+                        event.stop(e);
+                        if(theForm.validate()){
+
+                            var newUser = convertToUser(theForm.getValues());
+                            newUser.name = setPassword.name;
+                            newUser.id = setPassword.id;
+
+                            var url = 
"rest/user/"+encodeURIComponent(setPassword.authProvider) +
+                                "/"+encodeURIComponent(newUser.name);
+
+                            xhr.put({url: url, sync: true, handleAs: "json",
+                                     headers: { "Content-Type": 
"application/json"},
+                                     putData: json.toJson(newUser),
+                                     load: function(x) {that.success = true; },
+                                     error: function(error) {that.success = 
false; that.failureReason = error;}});
+
+                            if(that.success === true) {
+                                registry.byId("setPassword").hide();
+                            } else {
+                                alert("Error:" + that.failureReason);
+                            }
+
+                            return false;
+
+
+                        }else{
+                            alert('Form contains invalid data.  Please correct 
first');
+                            return false;
+                        }
+
+                    });
+                }});
+
+        setPassword.show = function(authProvider, user) {
+            setPassword.authProvider = authProvider;
+            setPassword.name = user.name;
+            setPassword.id = user.id;
+            registry.byId("formSetPassword").reset();
+
+            var namebox = registry.byId("formSetPassword.name");
+            namebox.set("value", user.name);
+            namebox.set("disabled", true);
+
+            registry.byId("setPassword").show();
+
+        };
+
 
 
         return DatabaseAuthManager;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to