[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