[jboss-svn-commits] JBL Code SVN: r18829 - in labs/jbosslabs/labs-3.0-build/views/admin/src/main: webapp/WEB-INF and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 11 10:41:58 EDT 2008


Author: wrzep
Date: 2008-03-11 10:41:57 -0400 (Tue, 11 Mar 2008)
New Revision: 18829

Added:
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/ProjectAdminRoles.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityInitializer.java
Modified:
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/Authenticator.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityManager.java
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/pages.xml
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/jbpm/createProject.jpdl.xml
   labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/jbpm/joinProject.jpdl.xml
Log:
JBLAB-935 - finished


Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/Authenticator.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/Authenticator.java	2008-03-11 14:32:48 UTC (rev 18828)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/Authenticator.java	2008-03-11 14:41:57 UTC (rev 18829)
@@ -25,9 +25,9 @@
 
 import com.google.inject.Inject;
 import org.jboss.labs.admin.Pages;
+import org.jboss.labs.auth.AuthenticationService;
 import org.jboss.labs.auth.UserService;
 import org.jboss.labs.core.model.auth.User;
-import org.jboss.labs.core.model.auth.UserRole;
 import org.jboss.labs.core.service.ProjectService;
 import org.jboss.labs.exception.auth.NoSuchUserException;
 import org.jboss.labs.injection.seam.Guice;
@@ -43,7 +43,6 @@
 import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 import java.io.IOException;
-import java.util.Set;
 import java.util.Collection;
 
 
@@ -60,35 +59,40 @@
     @In("#{userPrincipal.name}") private String login;
 
     @Inject private UserService userService;
-
+    @Inject private AuthenticationService authenticationService;
     @Inject private ProjectService projectService;
 
     @In private Session session;
 
     @Logger private Log log;
+    
+    private static final String SUPERUSER_ACTOR_ID = "Superuser";
+    private static final String PROJECT_ADMIN_ACTOR_ID_SUFFIX = "admin";
 
     public void autoLogin() throws NoSuchUserException {
 
-        //if ((actor.getId() == null) || (!actor.getId().equals(login))) {
-            actor.setId(login);
-        //}
+        actor.setId(login);
 
-        if (user == null) {
+        if ((user == null) || (!user.getName().equals(login))) {
             user = userService.getUserByLogin(login);
         }
 
-        //final Set<UserRole> roles = user.getUserRoles();
-        final Set<UserRole> roles = userService.getRolesForUser(user);
+    }
 
-        for (UserRole role : roles) {
-            actor.getGroupActorIds().add(role.getId());
+    public void assignActorRoles() throws NoSuchUserException {
+
+        if (userService.getSuperusers().contains(user)) {
+            actor.getGroupActorIds().add(SUPERUSER_ACTOR_ID);
         }
 
         final Collection<String> projectIds = projectService.getProjectIds();
+
         for (String projectId : projectIds) {
-            if (userService.getSuperusersForProject(projectId).contains(user)) {
-                final String roleName = projectId + "_" + "SUPERUSER";
-                actor.getGroupActorIds().add(roleName);
+            if (authenticationService
+                        .isAllowedProject(user,
+                                ProjectAdminRoles.PROJECT_ADMIN,
+                                projectId)) {
+                actor.getGroupActorIds().add(roleName(projectId));
             }
         }
     }
@@ -108,4 +112,8 @@
 
         return Pages.ERROR_PAGE;
     }
+
+    private static String roleName(String projectId) {
+        return projectId + "_" + PROJECT_ADMIN_ACTOR_ID_SUFFIX;
+    }
 }

Added: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/ProjectAdminRoles.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/ProjectAdminRoles.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/ProjectAdminRoles.java	2008-03-11 14:41:57 UTC (rev 18829)
@@ -0,0 +1,44 @@
+/*
+* JBoss Labs. http://labs.jboss.com/jbosslabs
+*
+* Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
+*
+* This copyrighted material is made available to anyone wishing to use,
+* modify, copy, or redistribute it subject to the terms and conditions
+* of the GNU Lesser General Public License, v. 2.1.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT A WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License, v.2.1 along with this distribution; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+* 02110-1301, USA.
+*
+* Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik,
+*     Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+*/
+
+package org.jboss.labs.admin.auth;
+
+import org.jboss.labs.auth.ServiceDescriptor;
+
+public enum ProjectAdminRoles implements ServiceDescriptor {
+
+    PROJECT_ADMIN;
+
+    public <E extends Enum<E> & ServiceDescriptor> String getDescription(E role) {
+
+       if (role.equals(PROJECT_ADMIN)) {
+           return "Project lead";
+       }
+
+       return null;
+    }
+
+    public String getServiceDescription() {
+        return "Project Administration";
+    }
+}
\ No newline at end of file

Added: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityInitializer.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityInitializer.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityInitializer.java	2008-03-11 14:41:57 UTC (rev 18829)
@@ -0,0 +1,49 @@
+/*
+* JBoss Labs. http://labs.jboss.com/jbosslabs
+*
+* Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
+*
+* This copyrighted material is made available to anyone wishing to use,
+* modify, copy, or redistribute it subject to the terms and conditions
+* of the GNU Lesser General Public License, v. 2.1.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT A WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License for more details.
+*
+* You should have received a copy of the GNU Lesser General Public
+* License, v.2.1 along with this distribution; if not, write to the Free
+* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+* 02110-1301, USA.
+*
+* Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik,
+*     Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
+*/
+
+package org.jboss.labs.admin.auth;
+
+import org.jboss.seam.annotations.*;
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.log.Log;
+import org.jboss.labs.auth.RoleBinderService;
+import org.jboss.labs.injection.seam.Guice;
+import com.google.inject.Inject;
+
+
+ at Name("securityInitializer")
+ at Scope(ScopeType.APPLICATION)
+ at Startup
+ at Guice
+public class SecurityInitializer {
+
+    @Inject private RoleBinderService roleBinderService;
+
+    @Logger private Log log;
+
+    @Create
+    public void init() {
+        roleBinderService.exposeServiceRoles(ProjectAdminRoles.values());
+        log.info("Registered Project Admin roles.");
+    }
+}
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityManager.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityManager.java	2008-03-11 14:32:48 UTC (rev 18828)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/java/org/jboss/labs/admin/auth/SecurityManager.java	2008-03-11 14:41:57 UTC (rev 18829)
@@ -23,22 +23,29 @@
 
 package org.jboss.labs.admin.auth;
 
+import org.jboss.seam.annotations.Name;
 import org.jboss.seam.annotations.In;
-import org.jboss.seam.annotations.Name;
-import org.jboss.seam.security.Identity;
-import org.jboss.seam.bpm.Actor;
+import org.jboss.labs.injection.seam.Guice;
+import org.jboss.labs.auth.AuthenticationService;
+import org.jboss.labs.exception.auth.NoSuchUserException;
+import com.google.inject.Inject;
 
+import java.security.Principal;
 
+
 @Name("securityManager")
+ at Guice
 public class SecurityManager {
 
-   @In private Actor actor;
+   @Inject private AuthenticationService authenticationService;
 
-   public boolean canEdit(String projectId) {
+   @In private Principal userPrincipal; 
 
-       final String editRole = projectId + "_" + "SUPERUSER";
+   public boolean canEdit(String projectId) throws NoSuchUserException {
        
-       return actor.getGroupActorIds().contains(editRole) || 
-              actor.getGroupActorIds().contains("Administrators");  
+       return authenticationService.
+                    isAllowedProject(userPrincipal,
+                                     ProjectAdminRoles.PROJECT_ADMIN,
+                                     projectId);
    }
 }
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/pages.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/pages.xml	2008-03-11 14:32:48 UTC (rev 18828)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/WEB-INF/pages.xml	2008-03-11 14:41:57 UTC (rev 18829)
@@ -6,6 +6,8 @@
 
     <page view-id="/*" action="#{authenticator.autoLogin()}"/>
 
+    <page view-id="/requests.xhtml" action="#{authenticator.assignActorRoles()}"/>
+
     <exception class="org.jboss.labs.exception.admin.ProjectNotFoundException">
         <redirect view-id="/error.xhtml">
             <message>Project not found</message>

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/jbpm/createProject.jpdl.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/jbpm/createProject.jpdl.xml	2008-03-11 14:32:48 UTC (rev 18828)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/jbpm/createProject.jpdl.xml	2008-03-11 14:41:57 UTC (rev 18829)
@@ -12,7 +12,7 @@
 
    <task-node name="decide">
         <task name="approve" description="#{projectRequest.description}">
-           <assignment pooled-actors="Administrators"/>
+           <assignment pooled-actors="Superuser"/>
         </task>
         <transition name="approve" to="done">
              <action expression="#{notifier.projectApproved}"/>

Modified: labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/jbpm/joinProject.jpdl.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/jbpm/joinProject.jpdl.xml	2008-03-11 14:32:48 UTC (rev 18828)
+++ labs/jbosslabs/labs-3.0-build/views/admin/src/main/webapp/jbpm/joinProject.jpdl.xml	2008-03-11 14:41:57 UTC (rev 18829)
@@ -12,7 +12,7 @@
 
    <task-node name="decide">
         <task name="approve" description="#{joinRequest.description}">
-           <assignment pooled-actors="#{joinRequest.projectId}_SUPERUSER, Administrators"/>
+           <assignment pooled-actors="#{joinRequest.projectId}_admin, Superuser"/>
         </task>
         <transition name="approve" to="done">
              <action expression="#{joinNotifier.approved}"/>




More information about the jboss-svn-commits mailing list