]> source.dussan.org Git - archiva.git/commitdiff
moderately working authz on many of the important jsp pages and improvements in the...
authorJesse McConnell <jmcconnell@apache.org>
Tue, 12 Sep 2006 18:44:16 +0000 (18:44 +0000)
committerJesse McConnell <jmcconnell@apache.org>
Tue, 12 Sep 2006 18:44:16 +0000 (18:44 +0000)
git-svn-id: https://svn.apache.org/repos/asf/maven/archiva/trunk@442672 13f79535-47bb-0310-9956-ffa450edef68

archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/AbstractConfigureRepositoryAction.java
archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/NewUserAction.java
archiva-webapp/src/main/java/org/apache/maven/archiva/web/action/admin/UserManagementAction.java
archiva-webapp/src/main/java/org/apache/maven/archiva/web/util/DefaultRoleManager.java
archiva-webapp/src/main/resources/xwork.xml
archiva-webapp/src/main/webapp/WEB-INF/jsp/admin/index.jsp
archiva-webapp/src/main/webapp/WEB-INF/jsp/decorators/default.jsp
archiva-webapp/src/main/webapp/WEB-INF/jsp/loginRegister.jsp
archiva-webapp/src/main/webapp/WEB-INF/jsp/user.jsp

index 93c5606192e5e53579fd876937d72dd6ada5ef8d..33b82da30c31bbd5b2acf6bfacb5f69db8cc200d 100644 (file)
@@ -98,7 +98,7 @@ public abstract class AbstractConfigureRepositoryAction
     {
         addRepository();
 
-        roleManager.addRepository( getRepoId() );
+        roleManager.addRepository( repository.getId() );
 
         configurationStore.storeConfiguration( configuration );
 
index 3f28833fc23fcdb624ce287fffaa3cfbbf6b5e96..c3baf970cb39272403c0b2af514ff0fcc58178c3 100644 (file)
@@ -115,6 +115,7 @@ public class NewUserAction
             }
             roleManager.addUser( user.getPrincipal().toString() );
 
+            addActionMessage( "user " + username + " was successfully registered!");
         }
         
         if ( hasActionErrors() )
index 3212e6a53b225e231b34a4d192877592ae803df5..f5faaa4f538b930d44291a1a45c7e3682754e824 100644 (file)
@@ -106,7 +106,7 @@ public class UserManagementAction
         // for displaying the potential repositories to be displayed, remove the global resource
         // from the list
         resources = rbacManager.getAllResources();
-        resources.remove( rbacManager.getGlobalResource() );
+        //resources.remove( rbacManager.getGlobalResource() );
 
         // check if the user has any roles assigned to them, and populate the lists for
         // rendering assign and remove roles links
index 9fc9ac4a76f39c391f3b9471b20ca47b7a3e8c80..c5a3a065ebd36e96980109f1dd32f85f007cf70e 100644 (file)
@@ -112,6 +112,12 @@ public class DefaultRoleManager
             manager.saveOperation( operation );
         }
 
+        if ( !manager.operationExists( "grant-roles" ) )
+        {
+            Operation operation = manager.createOperation( "grant-roles" );
+            manager.saveOperation( operation );
+        }
+
         if ( !manager.operationExists( "remove-roles" ) )
         {
             Operation operation = manager.createOperation( "remove-roles" );
@@ -150,12 +156,20 @@ public class DefaultRoleManager
                 manager.savePermission( editAllUsers );
             }
 
+            if ( !manager.permissionExists( "Grant Roles" ) )
+            {
+                Permission granRoles = manager.createPermission( "Grant Roles", "grant-roles",
+                                                                    manager.getGlobalResource().getIdentifier() );
+
+                manager.savePermission( granRoles );
+            }
+            
             if ( !manager.permissionExists( "Remove Roles" ) )
             {
-                Permission editAllUsers = manager.createPermission( "Remove Roles", "remove-roles",
+                Permission removeRoles = manager.createPermission( "Remove Roles", "remove-roles",
                                                                     manager.getGlobalResource().getIdentifier() );
 
-                manager.savePermission( editAllUsers );
+                manager.savePermission( removeRoles );
             }
 
             if ( !manager.permissionExists( "Regenerate Index" ) )
@@ -171,6 +185,7 @@ public class DefaultRoleManager
                 Role userAdmin = manager.createRole( "User Administrator" );
                 userAdmin.addPermission( manager.getPermission( "Edit All Users" ) );
                 userAdmin.addPermission( manager.getPermission( "Remove Roles" ) );
+                userAdmin.addPermission( manager.getPermission( "Grant Roles" ) );
                 userAdmin.setAssignable( true );
                 manager.saveRole( userAdmin );
             }
@@ -178,7 +193,7 @@ public class DefaultRoleManager
             if ( !manager.roleExists( "System Administrator" ) )
             {
                 Role admin = manager.createRole( "System Administrator" );
-                admin.addChildRole( manager.getRole( "User Administrator" ) );
+                admin.addChildRoleName( manager.getRole( "User Administrator" ).getName() );
                 admin.addPermission( manager.getPermission( "Edit Configuration" ) );
                 admin.addPermission( manager.getPermission( "Run Indexer" ) );
                 admin.addPermission( manager.getPermission( "Add Repository" ) );
@@ -250,7 +265,7 @@ public class DefaultRoleManager
             regenReports = manager.savePermission( regenReports );
 
             // make the roles
-            Role repositoryObserver = manager.createRole( "Repository Manager - " + repositoryName );
+            Role repositoryObserver = manager.createRole( "Repository Observer - " + repositoryName );
             repositoryObserver.addPermission( editRepo );
             repositoryObserver.setAssignable( true );
             repositoryObserver = manager.saveRole( repositoryObserver );
@@ -259,7 +274,7 @@ public class DefaultRoleManager
             repositoryManager.addPermission( editRepo );
             repositoryManager.addPermission( deleteRepo );
             repositoryManager.addPermission( regenReports );
-            repositoryManager.addChildRole( repositoryObserver );
+            repositoryManager.addChildRoleName( repositoryObserver.getName() );
             repositoryManager.setAssignable( true );
             manager.saveRole( repositoryManager );
 
index 3b98abb006743d2bf9fdeaa7ca563087927255cd..4b900e04f8f7a312775ee067d9475c6cad333336 100644 (file)
     </action>
 
 
-    <action name="user" class="userManagement">
+    <action name="user" class="userManagement" method="display">
       <result name="success">/WEB-INF/jsp/user.jsp</result>
     </action>
 
index a70ecbdfbaab63623840761feff8344a96020dcf..f2a220174f28cd023ffef1ad47c3dec35c908489 100644 (file)
 <c:forEach items="${repositories}" var="repository" varStatus="i">
   <div>
     <div style="float: right">
-        <%-- TODO replace with icons --%>
-      <a href="<ww:url action="editRepository" method="input"><ww:param name="repoId" value="%{'${repository.id}'}" /></ww:url>">Edit
-        Repository</a> | <a
-        href="<ww:url action="deleteRepository" method="input"><ww:param name="repoId" value="%{'${repository.id}'}" /></ww:url>">Delete
-      Repository</a>
+      <ww:url id="editRepositoryUrl" action="editRepository" method="input">
+        <ww:param name="repoId" value="%{'${repository.id}'}" />
+      </ww:url>
+      <ww:url id="deleteRepositoryUrl" action="deleteRepository" method="input">
+        <ww:param name="repoId" value="%{'${repository.id}'}" />
+      </ww:url>
+      <%-- TODO replace with icons --%>
+      <pss:ifAuthorized permission="edit-repository" resource="${repository.id}"><ww:a href="%{editRepositoryUrl}">Edit Repository</ww:a></pss:ifAuthorized> | <pss:ifAuthorized permission="delete-repository" resource="${repository.id}"><ww:a href="%{deleteRepositoryUrl}">Delete Repository</ww:a></pss:ifAuthorized>
     </div>
     <h3>${repository.name}</h3>
     <table class="infoTable">
index 3d25084f664855ae5aa6fc95ed76b956698c8ddc..0260c361962de5c839b2afa05acd2d26e4e63386 100644 (file)
         <my:currentWWUrl action="browse" namespace="/">Browse</my:currentWWUrl>
       </li>
     </ul>
-    <h5>Manage</h5>
-    <ul>
-      <li class="none">
-        <my:currentWWUrl action="reports" namespace="/admin">Reports</my:currentWWUrl>
-      </li>
-
-      <%-- TODO
-            <li class="none">
-              <a href="#">Synchronisation</a>
-            </li>
-      --%>
-
-      <li class="expanded">
-        <my:currentWWUrl action="index" namespace="/admin">Administration</my:currentWWUrl>
-        <ul>
+    <pss:ifAnyAuthorized permissions="edit-all-users,get-reports,edit-configuration">
+      <h5>Manage</h5>
+      <ul>
+        <pss:ifAuthorized permission="get-reports">
           <li class="none">
-            <my:currentWWUrl action="proxiedRepositories" namespace="/admin">Proxied Repositories</my:currentWWUrl>
+            <my:currentWWUrl action="reports" namespace="/admin">Reports</my:currentWWUrl>
           </li>
-
-          <%-- TODO: add back after synced repos are implemented
-                    <li class="none">
-                      <my:currentWWUrl action="syncedRepositories" namespace="/admin">Synced Repositories</my:currentWWUrl>
-                    </li>
+        </pss:ifAuthorized>
+          <%-- TODO
+                <li class="none">
+                  <a href="#">Synchronisation</a>
+                </li>
           --%>
-          <pss:ifAuthorized permission="edit-all-users">
-            <li class="none">
-              <my:currentWWUrl action="userManagement" namespace="/admin">User Management</my:currentWWUrl>
-            </li>
-          </pss:ifAuthorized>
-        </ul>
-      </li>
-    </ul>
-
+        <pss:ifAnyAuthorized permissions="edit-configuration,edit-all-users">
+          <li class="expanded">
+            <pss:ifAuthorized permission="edit-all-users">
+              <my:currentWWUrl action="userManagement" namespace="/admin">User Management</my:currentWWUrl>               
+            </pss:ifAuthorized>
+          </li>
+          <li>
+            <pss:ifAuthorized permission="edit-configuration">
+              <my:currentWWUrl action="index" namespace="/admin">Administration</my:currentWWUrl>
+            </pss:ifAuthorized>
+
+            <ul>
+              <li class="none">
+                <my:currentWWUrl action="proxiedRepositories" namespace="/admin">Proxied Repositories</my:currentWWUrl>
+              </li>
+
+                <%-- TODO: add back after synced repos are implemented
+                          <li class="none">
+                            <my:currentWWUrl action="syncedRepositories" namespace="/admin">Synced Repositories</my:currentWWUrl>
+                          </li>
+                --%>
+            </ul>
+          </li>
+        </pss:ifAnyAuthorized>
+      </ul>
+    </pss:ifAnyAuthorized>
     <br/>
   </div>
 </div>
index 32965c5c6f32e2aebac6a4dccc743b17129d1008..c81485cd33ace1fc61f499a09495706a0e0444ad 100644 (file)
 
     </div>
 
+    <p>
+      <ww:actionmessage/>
+    </p>
+
     <h2>Login</h2>
     <ww:form action="login">
       <table class="bodyTable">
index fa8e5a853576a3d65afa5d2636813ad4bcc4f6b9..ef0c9df95e5f7a4e36275e59263f147a57dd34ad 100644 (file)
 
         <table class="bodyTable">
           <ww:iterator id="role" value="assignedRoles">
-            <ww:url id="removeAssignedRoleUrl" action="removeRoleFromUser">
-              <ww:param name="principal">${sessionScope.SecuritySessionUser.principal}</ww:param>
-              <ww:param name="roleName">${sessionScope.SecuritySessionUser.name}</ww:param>
-            </ww:url>
+
             <tr class="a">
              <td>
                <em>${role.name}</em><br/>
              </td>
               <td>
-                <ww:a href="%{removeAssignedRoleUrl}">Delete</ww:a>
+                <pss:ifAuthorized permission="remove-roles">
+                  <ww:url id="removeAssignedRoleUrl" action="removeRoleFromUser">
+                    <ww:param name="principal">${sessionScope.SecuritySessionUser.principal}</ww:param>
+                    <ww:param name="roleName">${role.name}</ww:param>
+                  </ww:url>
+                  <ww:a href="%{removeAssignedRoleUrl}">Delete</ww:a>
+                </pss:ifAuthorized>
               </td>
             </tr>
           </ww:iterator>
         </table>
 
+        <%-- this is for debug purposes only --%>
+         <div id="sidebar">
+           <ww:iterator id="role" value="availableRoles">
+              <ww:url id="addRoleUrl" action="assignRoleToUser">
+                <ww:param name="principal">${sessionScope.SecuritySessionUser.principal}</ww:param>
+                <ww:param name="roleName">${role.name}</ww:param>
+              </ww:url>
+              <ww:a href="%{addRoleUrl}">${role.name}</ww:a>
+              <br/>
+           </ww:iterator>
+         </div>
+
         <h2>Grant Roles</h2>
 
         <p>
-          <ww:iterator id="role" value="availableRoles">
-            <ww:url id="addRoleUrl" action="assignRoleToUser">
-              <ww:param name="principal">${sessionScope.SecuritySessionUser.principal}</ww:param>
-              <ww:param name="roleName">${role.name}</ww:param>
-            </ww:url>
-            <ww:a href="%{addRoleUrl}">${role.name}</ww:a><br/>
-          </ww:iterator>
+
            </p>
+         <pss:ifAuthorized permission="grant-roles">
+            <ww:iterator id="role" value="availableRoles">
+              <ww:url id="addRoleUrl" action="assignRoleToUser">
+                <ww:param name="principal">${sessionScope.SecuritySessionUser.principal}</ww:param>
+                <ww:param name="roleName">${role.name}</ww:param>
+              </ww:url>
+              <ww:a href="%{addRoleUrl}">${role.name}</ww:a>
+              <br/>
+            </ww:iterator>
+          </pss:ifAuthorized>
            <%--
           <p>
             This following screen needs have the various roles worked into it.
 
               </td>
             </tr>
-            --%>
+
             <tr class="a">
               <td></td>
               <td>
             </tr>
 
           </table>
-
+             --%>
       </div>
   </div>