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]