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

Reply via email to