Author: chathura
Date: Tue Jan 15 00:03:14 2008
New Revision: 12239
Log:
Completed AJAXifying the permissions UI.
Removed:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/AuthorizationAction.java
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/MassAuthorizationAction.java
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/MassRoleAuthorizationAction.java
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/actions/RoleAuthorizationAction.java
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/utils/PermissionUtil.java
trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js
trunk/registry/modules/webapps/src/main/webapp/admin/permisions.jsp
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
==============================================================================
---
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
(original)
+++
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/ControllerServlet.java
Tue Jan 15 00:03:14 2008
@@ -174,7 +174,6 @@
}
response.sendRedirect("/wso2registry/web" + path);
- //forwardToResources(request, response, path);
} else if (command.equals("/authorize")) {
@@ -186,22 +185,6 @@
forwardToResources(request, response, path);
}
- //AuthorizationAction authorizationAction = new
AuthorizationAction();
- //authorizationAction.setPathToAuthorize(path);
-
//authorizationAction.setUserToAuthorize(request.getParameter("userToAuthorize"));
-
//authorizationAction.setActionToAuthorize(request.getParameter("actionToAuthorize"));
-
//authorizationAction.setPermissionType(request.getParameter("permissionType"));
- //
- //try {
- // authorizationAction.execute(request);
- //} catch (Exception e) {
- // setErrorMessage(request, e.getMessage());
- // e.printStackTrace();
- //}
- //
- //response.sendRedirect("/wso2registry/web" + path);
- //forwardToResources(request, response, path);
-
} else if (command.equals("/authorize/mass")) {
try {
@@ -212,20 +195,6 @@
forwardToResources(request, response, path);
}
- //MassAuthorizationAction massAuthorizationAction = new
MassAuthorizationAction();
- //massAuthorizationAction.setResourcePath(path);
-
//massAuthorizationAction.setPermissionString(request.getParameter("permissionInput"));
- //
- //try {
- // massAuthorizationAction.execute(request);
- //} catch (RegistryException e) {
- // setErrorMessage(request, e.getMessage());
- // e.printStackTrace();
- //}
- //
- //response.sendRedirect("/wso2registry/web" + path);
- //forwardToResources(request, response, path);
-
} else if (command.equals("/authorizeRole")) {
try {
@@ -236,38 +205,16 @@
forwardToResources(request, response, path);
}
- //RoleAuthorizationAction roleAuthorizationAction = new
RoleAuthorizationAction();
- //roleAuthorizationAction.setPathToAuthorize(path);
-
//roleAuthorizationAction.setRoleToAuthorize(request.getParameter("roleToAuthorize"));
-
//roleAuthorizationAction.setActionToAuthorize(request.getParameter("actionToAuthorize"));
-
//roleAuthorizationAction.setPermissionType(request.getParameter("permissionType"));
- //
- //try {
- // roleAuthorizationAction.execute(request);
- //} catch (Exception e) {
- // setErrorMessage(request, e.getMessage());
- // e.printStackTrace();
- //}
- //
- //response.sendRedirect("/wso2registry/web" + path);
- //forwardToResources(request, response, path);
-
} else if (command.equals("/authorizeRoles")) {
- MassRoleAuthorizationAction massRoleAuthorizationAction = new
MassRoleAuthorizationAction();
- massRoleAuthorizationAction.setResourcePath(path);
-
massRoleAuthorizationAction.setPermissionString(request.getParameter("permissionInput"));
-
try {
- massRoleAuthorizationAction.execute(request);
+ PermissionUtil.applyMassRolePermissions(request, response);
} catch (RegistryException e) {
+ // todo: implement a general AJAX error segment
setErrorMessage(request, e.getMessage());
- e.printStackTrace();
+ forwardToResources(request, response, path);
}
- response.sendRedirect("/wso2registry/web" + path);
- //forwardToResources(request, response, path);
-
} else if (command.equals("/setDescription")) {
//String resourcePath = path;
Modified:
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/utils/PermissionUtil.java
==============================================================================
---
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/utils/PermissionUtil.java
(original)
+++
trunk/registry/modules/webapps/src/main/java/org/wso2/registry/web/utils/PermissionUtil.java
Tue Jan 15 00:03:14 2008
@@ -264,6 +264,92 @@
sendPermissionHTML(request, response, pathToAuthorize);
}
+ public static void applyMassRolePermissions(
+ HttpServletRequest request, HttpServletResponse response)
+ throws RegistryException, ServletException, IOException {
+
+ String permissionString = request.getParameter("permissionInput");
+ String resourcePath = request.getParameter("resourcePath");
+
+ SecureRegistry secureRegistry = CommonUtil.getUserRegistry(request);
+ Realm realm = secureRegistry.getUserRealm();
+
+ AccessControlAdmin accessControlAdmin = null;
+ try {
+ accessControlAdmin = realm.getAccessControlAdmin();
+ } catch (UserManagerException e) {
+ String msg = "Couldn't get access control admin for changing
authorizations. Caused by: " + e.getMessage();
+ throw new RegistryException(msg);
+ }
+
+ try {
+
+ String[] rolePermissions = permissionString.split("1");
+ for (int i = 0; i < rolePermissions.length; i++) {
+
+ if (rolePermissions[i].trim().length() == 0) {
+ continue;
+ }
+
+ String[] permissions = rolePermissions[i].split("2");
+ String permRole = permissions[0];
+
+ if (!permRole.equals(RegistryConstants.ADMIN_ROLE)) {
+ accessControlAdmin.clearRoleAuthorization(permRole,
resourcePath, ActionConstants.GET);
+ accessControlAdmin.clearRoleAuthorization(permRole,
resourcePath, ActionConstants.PUT);
+ accessControlAdmin.clearRoleAuthorization(permRole,
resourcePath, ActionConstants.DELETE);
+ accessControlAdmin.clearRoleAuthorization(permRole,
resourcePath, UserManagerConstants.AUTHORIZE);
+ }
+
+ for (int j = 1; j < permissions.length; j++) {
+ String[] permission = permissions[j].split("3");
+
+ String action = permission[0];
+ String checked = permission[1];
+
+ if (action.equals("ra")) {
+ if (checked.equals("true")) {
+ accessControlAdmin.authorizeRole(permRole,
resourcePath, ActionConstants.GET);
+ }
+ } else if (action.equals("rd")) {
+ if (checked.equals("true")) {
+ accessControlAdmin.denyRole(permRole,
resourcePath, ActionConstants.GET);
+ }
+ } else if (action.equals("wa")) {
+ if (checked.equals("true")) {
+ accessControlAdmin.authorizeRole(permRole,
resourcePath, ActionConstants.PUT);
+ }
+ } else if (action.equals("wd")) {
+ if (checked.equals("true")) {
+ accessControlAdmin.denyRole(permRole,
resourcePath, ActionConstants.PUT);
+ }
+ } else if (action.equals("da")) {
+ if (checked.equals("true")) {
+ accessControlAdmin.authorizeRole(permRole,
resourcePath, ActionConstants.DELETE);
+ }
+ } else if (action.equals("dd")) {
+ if (checked.equals("true")) {
+ accessControlAdmin.denyRole(permRole,
resourcePath, ActionConstants.DELETE);
+ }
+ } else if (action.equals("aa")) {
+ if (checked.equals("true")) {
+ accessControlAdmin.authorizeRole(permRole,
resourcePath, UserManagerConstants.AUTHORIZE);
+ }
+ } else if (action.equals("ad")) {
+ if (checked.equals("true")) {
+ accessControlAdmin.denyRole(permRole,
resourcePath, UserManagerConstants.AUTHORIZE);
+ }
+ }
+ }
+ }
+ } catch (UserManagerException e) {
+ String msg = "Couldn't set authorizations. Caused by: " +
e.getMessage();
+ throw new RegistryException(msg);
+ }
+
+ sendPermissionHTML(request, response, resourcePath);
+ }
+
private static void sendPermissionHTML(
HttpServletRequest request, HttpServletResponse response, String
resourcePath)
throws RegistryException, ServletException, IOException {
Modified: trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js
==============================================================================
--- trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js
(original)
+++ trunk/registry/modules/webapps/src/main/webapp/admin/js/common.js Tue Jan
15 00:03:14 2008
@@ -147,7 +147,7 @@
new Ajax.Updater('perExpanded', '/wso2registry/system/authorizeRole', {
method: 'post', parameters: {pathToAuthorize: pathToAuthorize, roleToAuthorize:
roleToAuthorize, actionToAuthorize: actionToAuthorize, permissionType:
permissionType} });
}
-function processRolePermissions()
+function processRolePermissions(resourcePath)
{
var pForm = document.forms["rolePermissions"];
var len = pForm.elements.length;
@@ -167,8 +167,7 @@
}
}
- document.getElementById("pRoleInput").value = msgBody;
- pForm.submit();
+ new Ajax.Updater('perExpanded', '/wso2registry/system/authorizeRoles', {
method: 'post', parameters: {permissionInput: msgBody, resourcePath:
resourcePath} });
}
function showHideCommon(divxName){
divx=document.getElementById(divxName);
Modified: trunk/registry/modules/webapps/src/main/webapp/admin/permisions.jsp
==============================================================================
--- trunk/registry/modules/webapps/src/main/webapp/admin/permisions.jsp
(original)
+++ trunk/registry/modules/webapps/src/main/webapp/admin/permisions.jsp Tue Jan
15 00:03:14 2008
@@ -128,7 +128,7 @@
</table>
</form>
<h4 style="margin-top:10px;">Defined Role Permissions</h4>
-<form name="rolePermissions" action="/wso2registry/system/authorizeRoles"
theme="simple" method="post">
+<form name="rolePermissions" theme="simple">
<input type="hidden" id="pRoleInput" name="permissionInput" value=""/>
<input type="hidden" name="pathToAuthorize" value="%{path}"/>
<table width="100%" class="data-table" border="0" cellpadding="3"
cellspacing="0">
@@ -169,7 +169,7 @@
</tr>
<% } %>
<tr>
- <td colspan="7" align="right"><input type="submit" class="button"
value="Apply All Permissions" onclick="processRolePermissions();"
style="float:right;margin-top:5px;" /><span style="clear:both;" /></td>
+ <td colspan="7" align="right"><input type="button" class="button"
value="Apply All Permissions"
onclick="processRolePermissions('<%=resource.getPath()%>');"
style="float:right;margin-top:5px;" /><span style="clear:both;" /></td>
</tr>
</table>
_______________________________________________
Registry-dev mailing list
[email protected]
http://wso2.org/cgi-bin/mailman/listinfo/registry-dev