[jboss-svn-commits] JBL Code SVN: r18644 - in labs/jbosslabs/labs-3.0-build: core/core-model/src/main/java/org/jboss/labs/core/model/auth and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Feb 29 14:29:15 EST 2008
Author: szimano
Date: 2008-02-29 14:29:15 -0500 (Fri, 29 Feb 2008)
New Revision: 18644
Added:
labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/auth/NoSuchSuperUserException.java
labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/TestRoles.java
Modified:
labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java
labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java
labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/AuthID.java
labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Binding.java
labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Service.java
labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ServiceRole.java
labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/SuperUsers.java
labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/User.java
labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/UserRole.java
labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java
labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java
labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/CredentialTest.java
labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/UserServiceTest.java
Log:
jblab-901. bigfixes. superusers still do not work
Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/RoleBinderService.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -33,6 +33,7 @@
import org.jboss.labs.core.model.auth.UserRole;
import org.jboss.labs.exception.auth.BindingAlreadyExistsException;
import org.jboss.labs.exception.auth.NoSuchServiceRoleException;
+import org.jboss.labs.exception.auth.NoSuchSuperUserException;
import org.jboss.labs.exception.auth.NoSuchUserException;
import org.jboss.labs.exception.auth.NoSuchUserRoleException;
@@ -81,11 +82,12 @@
* User role
* @param projectId
* Project id
- * @throws NoSuchUserRoleException
+ * @throws NoSuchUserRoleException
* @throws BindingAlreadyExistsException
*/
public <E extends Enum<E>> void bindRolesWithProject(E serviceRole,
- UserRole role, String projectId) throws NoSuchUserRoleException, BindingAlreadyExistsException;
+ UserRole role, String projectId) throws NoSuchUserRoleException,
+ BindingAlreadyExistsException;
/**
* Binds given service role with a user role for a given custom id.
@@ -98,13 +100,16 @@
* User role
* @param customId
* Custom id
- * @throws NoSuchUserRoleException If user role doesn't exist
- * @throws BindingAlreadyExistsException If binding already exists
+ * @throws NoSuchUserRoleException
+ * If user role doesn't exist
+ * @throws BindingAlreadyExistsException
+ * If binding already exists
* @see org.jboss.labs.core.model.auth.CustomID
* @see org.jboss.labs.auth.custom.CustomIDProvider
*/
public <E extends Enum<E>> void bindRolesWithId(E serviceRole,
- UserRole role, CustomID customId) throws NoSuchUserRoleException, BindingAlreadyExistsException;
+ UserRole role, CustomID customId) throws NoSuchUserRoleException,
+ BindingAlreadyExistsException;
/**
* Binds service role to a user role globally. This means that members of
@@ -130,22 +135,48 @@
* User
* @param projectId
* Project id
- * @throws NoSuchUserException When specified user doesn't exist
+ * @throws NoSuchUserException
+ * When specified user doesn't exist
*/
- public void grantUserProjectSuperrole(Principal user, String projectId) throws NoSuchUserException;
+ public void grantUserProjectSuperrole(Principal user, String projectId)
+ throws NoSuchUserException;
/**
+ * Revokes user super role for a project
+ *
+ * @param user
+ * User to revoke
+ * @throws NoSuchUserException
+ * When specified user doesn't exist
+ * @throws NoSuchSuperUserException If the user doesn't have privileges
+ */
+ public void revokeUserProjectSuperrole(Principal user, String projectId)
+ throws NoSuchUserException, NoSuchSuperUserException;
+
+ /**
* Grants global superrole to a user. User with a superrole can perform any
* actions (checking isAllowedProject and isAlloweCustom will always return
* true)
*
* @param user
* User
- * @throws NoSuchUserException When specified user doesn't exist
+ * @throws NoSuchUserException
+ * When specified user doesn't exist
*/
public void grantUserSuperrole(Principal user) throws NoSuchUserException;
/**
+ * Revokes user super role.
+ *
+ * @param user
+ * User to revoke from.
+ * @throws NoSuchUserException
+ * When specified user doesn't exist
+ * @throws NoSuchSuperUserException If the user doesn't have privileges
+ */
+ public void revokeUserSuperrole(Principal user) throws NoSuchUserException, NoSuchSuperUserException;
+
+ /**
* Returns service role object.
*
* @param <E>
@@ -155,14 +186,20 @@
* @return Service role object
*/
public <E extends Enum<E>> ServiceRole getServiceRole(E serviceRole);
-
- /** Returns entity of project id. Creates new one if it's not in the database.
- * @param projectID New project id.
+
+ /**
+ * Returns entity of project id. Creates new one if it's not in the
+ * database.
+ *
+ * @param projectID
+ * New project id.
* @return Project id.
*/
public ProjectID getProjectID(String projectID);
-
- /** Returns object of project id for the global architecture.
+
+ /**
+ * Returns object of project id for the global architecture.
+ *
* @return Object of global project id.
*/
public ProjectID getGlobalProjectID();
Modified: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/auth/UserService.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -201,11 +201,23 @@
throws NoSuchUserException, NoSuchUserRoleException,
NoSuchRoleForUserException;
- /** Removes user from database.
- * @param user User to remove.
- * @throws NoSuchUserException If the user doesn't exist.
+ /**
+ * Removes user from database.
+ *
+ * @param user
+ * User to remove.
+ * @throws NoSuchUserException
+ * If the user doesn't exist.
*/
public void removeUser(Principal user) throws NoSuchUserException;
-
+
+ /**
+ * Gets common role that users are added to when added to a project. Used by
+ * other services - provided for coherence.
+ *
+ * @param projectID
+ * Project id.
+ * @return UserRole object for a project. Will get created if needed.
+ */
public UserRole getCommonRoleForProject(String projectID);
}
Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/AuthID.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/AuthID.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/AuthID.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -55,5 +55,16 @@
public int compareTo(AuthID o) {
return this.authId.compareTo(o.getAuthId());
}
+
+ public boolean equals(Object o) {
+ if (o == null)
+ return false;
+ if (o instanceof AuthID) {
+ return authId.equals(((AuthID) o).getAuthId());
+ }
+
+ return false;
+ }
+
}
Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Binding.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Binding.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Binding.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -97,4 +97,15 @@
public long getBinderId() {
return binderId;
}
+
+ public boolean equals(Object o) {
+ if (o == null)
+ return false;
+
+ if (o instanceof Binding) {
+ return binderId == ((Binding) o).getBinderId();
+ }
+
+ return false;
+ }
}
Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Service.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Service.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/Service.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -145,4 +145,15 @@
public int compareTo(Service o) {
return id.compareTo(o.getId());
}
+
+ public boolean equals(Object o) {
+ if (o == null)
+ return false;
+
+ if (o instanceof Service) {
+ return id.equals(((Service) o).getId());
+ }
+
+ return false;
+ }
}
Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ServiceRole.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ServiceRole.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/ServiceRole.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -80,8 +80,15 @@
return id.compareTo(o.getId());
}
- public boolean equals(ServiceRole o) {
- return id.equals(o.getId());
+ public boolean equals(Object o) {
+ if (o == null)
+ return false;
+
+ if (o instanceof ServiceRole) {
+ return id.equals(((ServiceRole) o).getId());
+ }
+
+ return false;
}
@Override
Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/SuperUsers.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/SuperUsers.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/SuperUsers.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -33,6 +33,8 @@
import javax.persistence.Id;
import javax.persistence.OneToMany;
+import org.jboss.labs.exception.auth.NoSuchSuperUserException;
+
/**
* @author tomaszszymanski
*
@@ -81,4 +83,27 @@
public void setSuperUsers(Set<User> superUsers) {
this.superUsers = superUsers;
}
+
+ public boolean equals(Object o) {
+ if (o == null)
+ return false;
+
+ if (o instanceof SuperUsers) {
+ return id.equals(((SuperUsers) o).getId());
+ }
+
+ return false;
+ }
+
+ /**
+ * @param userEn
+ * @throws NoSuchSuperUserException
+ */
+ public void removeSuperUser(User userEn) throws NoSuchSuperUserException {
+ if (superUsers == null || !superUsers.contains(userEn)) {
+ throw new NoSuchSuperUserException("SuperUsers = "+id+" don't have a user "+userEn);
+ }
+
+ superUsers.remove(userEn);
+ }
}
Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/User.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/User.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/User.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -25,6 +25,7 @@
import org.jboss.labs.exception.auth.NoSuchRoleForUserException;
import javax.persistence.Entity;
+import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Version;
@@ -50,18 +51,19 @@
private String bio;
private String website;
private String pictureURL;
- private String email;
- private String fakeEmail;
- private String firstName;
- private String lastName;
+ private String email;
+ private String fakeEmail;
+ private String firstName;
+ private String lastName;
- private String password;
+ private String password;
- @OneToMany
+ @OneToMany(fetch=FetchType.EAGER)
private Set<UserRole> userRoles = new TreeSet<UserRole>();
- public User () { }
-
+ public User() {
+ }
+
public User(String username) {
this.name = username;
}
@@ -77,7 +79,7 @@
public void setVersion(Integer version) {
this.version = version;
}
-
+
public String getBio() {
return bio;
}
@@ -122,15 +124,15 @@
this.password = password;
}
- public String getEmail() {
- return email;
- }
+ public String getEmail() {
+ return email;
+ }
- public void setEmail(String email) {
- this.email = email;
- }
+ public void setEmail(String email) {
+ this.email = email;
+ }
- /**
+ /**
* Adds role for a user
*
* @param role
@@ -187,7 +189,9 @@
this.lastName = lastName;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
public int compareTo(User o) {
@@ -198,4 +202,22 @@
public int hashCode() {
return name.hashCode();
}
+
+ public String toString() {
+ return "{User::name=" + name + "::first=" + firstName + "::last="
+ + lastName + "::fake=" + fakeEmail + "::bio=" + bio
+ + "::website=" + website + "::pictureurl=" + pictureURL
+ + "::email=" + email + "}";
+ }
+
+ public boolean equals(Object o) {
+ if (o == null)
+ return false;
+
+ if (o instanceof User) {
+ return name.equals(((User) o).getName());
+ }
+
+ return false;
+ }
}
Modified: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/UserRole.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/UserRole.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/core/model/auth/UserRole.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -28,7 +28,7 @@
import javax.persistence.Id;
@Entity
-public class UserRole implements Comparable<UserRole>, Serializable{
+public class UserRole implements Comparable<UserRole>, Serializable {
/**
*
*/
@@ -36,11 +36,12 @@
@Id
private String id;
-
+
private String description;
- public UserRole() { }
-
+ public UserRole() {
+ }
+
public UserRole(String id, String description) {
this.id = id;
this.description = description;
@@ -61,17 +62,24 @@
public String getId() {
return id;
}
-
- public boolean equals(UserRole o) {
- return id.equals(o.getId());
+
+ public boolean equals(Object o) {
+ if (o == null)
+ return false;
+
+ if (o instanceof UserRole) {
+ return id.equals(((UserRole) o).getId());
+ }
+
+ return false;
}
public void setId(String id) {
this.id = id;
}
-
+
public String toString() {
- return "[UserRole::id="+id+"::desctiption="+description+"]";
+ return "{UserRole::id=" + id + "::desctiption=" + description + "}";
}
@Override
@@ -79,5 +87,4 @@
return id.hashCode();
}
-
}
Added: labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/auth/NoSuchSuperUserException.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/auth/NoSuchSuperUserException.java (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/src/main/java/org/jboss/labs/exception/auth/NoSuchSuperUserException.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -0,0 +1,45 @@
+/**
+ *
+ */
+package org.jboss.labs.exception.auth;
+
+import org.jboss.labs.exception.LabsException;
+
+/*
+ * 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
+ */
+
+/**
+ * @author tomaszszymanski
+ *
+ */
+public class NoSuchSuperUserException extends LabsException {
+
+ /**
+ *
+ */
+ private static final long serialVersionUID = 1L;
+
+ public NoSuchSuperUserException(String msg){
+ super(msg);
+ }
+}
Modified: labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/RoleBinderServiceImpl.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -48,6 +48,7 @@
import org.jboss.labs.core.model.auth.UserRole;
import org.jboss.labs.exception.auth.BindingAlreadyExistsException;
import org.jboss.labs.exception.auth.NoSuchServiceRoleException;
+import org.jboss.labs.exception.auth.NoSuchSuperUserException;
import org.jboss.labs.exception.auth.NoSuchUserException;
import org.jboss.labs.exception.auth.NoSuchUserRoleException;
@@ -65,27 +66,30 @@
private final static Logger log = Logger
.getLogger(RoleBinderServiceImpl.class);
-
+
public <E extends Enum<E>> void bindRolesWithId(E serviceRole,
- UserRole role, CustomID customId) throws NoSuchUserRoleException, BindingAlreadyExistsException {
+ UserRole role, CustomID customId) throws NoSuchUserRoleException,
+ BindingAlreadyExistsException {
bindRolesWith(serviceRole, role, customId);
}
public <E extends Enum<E>> void bindRolesWithProject(E serviceRole,
- UserRole role, String projectId) throws NoSuchUserRoleException, BindingAlreadyExistsException {
-
+ UserRole role, String projectId) throws NoSuchUserRoleException,
+ BindingAlreadyExistsException {
+
ProjectID pid = getProjectID(projectId);
-
+
bindRolesWith(serviceRole, role, pid);
-
+
}
-
+
private <E extends Enum<E>> void bindRolesWith(E serviceRole,
- UserRole role, AuthID authID) throws NoSuchUserRoleException, BindingAlreadyExistsException {
+ UserRole role, AuthID authID) throws NoSuchUserRoleException,
+ BindingAlreadyExistsException {
ServiceRole srEn = getServiceRole(serviceRole);
UserRole roleEn = userService.getUserRole(role);
-
+
Service service = getService(serviceRole);
if (manager
@@ -94,11 +98,16 @@
.setParameter("id", authID).setParameter("userRole", roleEn)
.setParameter("serviceRole", srEn).setParameter("service",
service).getResultList().size() > 1) {
- throw new BindingAlreadyExistsException("Binding for servicerole: "+serviceRole+", role: "+role+" and id: "+authID + " already exists");
+ throw new BindingAlreadyExistsException("Binding for servicerole: "
+ + serviceRole + ", role: " + role + " and id: " + authID
+ + " already exists");
}
-
+
Binding b = new Binding();
- b.setAuthId(authID); b.setService(service); b.setServiceRole(srEn); b.setUserRole(roleEn);
+ b.setAuthId(authID);
+ b.setService(service);
+ b.setServiceRole(srEn);
+ b.setUserRole(roleEn);
manager.persist(b);
}
@@ -144,22 +153,24 @@
public <E extends Enum<E>> void bindRolesGlobal(E serviceRole, UserRole role) {
// TODO Auto-generated method stub
- throw new RuntimeException("bindRolesGlobal(...) is not implemented yet");
+ throw new RuntimeException(
+ "bindRolesGlobal(...) is not implemented yet");
}
- public void grantUserProjectSuperrole(Principal user, String projectId) throws NoSuchUserException {
+ public void grantUserProjectSuperrole(Principal user, String projectId)
+ throws NoSuchUserException {
User userEn = userService.getUserByLogin(user.getName());
ProjectID pid = getProjectID(projectId);
-
+
SuperUsers su = manager.find(SuperUsers.class, pid.getAuthId());
-
+
if (su == null) {
su = new SuperUsers(pid);
manager.persist(su);
}
-
+
su.addSuperUser(userEn);
-
+
manager.merge(su);
}
@@ -213,11 +224,45 @@
return pidEn;
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see org.jboss.labs.auth.RoleBinderService#getGlobalProjectID()
*/
public ProjectID getGlobalProjectID() {
return getProjectID(AuthHelper.GLOBAL_PROJECT);
}
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.jboss.labs.auth.RoleBinderService#revokeUserProjectSuperrole(java.security.Principal)
+ */
+ public void revokeUserProjectSuperrole(Principal user, String projectId)
+ throws NoSuchUserException, NoSuchSuperUserException {
+ User userEn = userService.getUserByLogin(user.getName());
+ ProjectID pid = getProjectID(projectId);
+
+ SuperUsers su = manager.find(SuperUsers.class, pid.getAuthId());
+
+ if (su == null) {
+ su = new SuperUsers(pid);
+ manager.persist(su);
+ }
+
+ su.removeSuperUser(userEn);
+
+ manager.merge(su);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.jboss.labs.auth.RoleBinderService#revokeUserSuperrole(java.security.Principal)
+ */
+ public void revokeUserSuperrole(Principal user) throws NoSuchUserException,
+ NoSuchSuperUserException {
+ revokeUserProjectSuperrole(user, AuthHelper.GLOBAL_PROJECT);
+ }
+
}
Modified: labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/services/credential/src/main/java/org/jboss/labs/auth/impl/UserServiceImpl.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -268,7 +268,7 @@
public Set<User> getSuperusers() {
Set<User> usrs = (Set<User>) manager.createQuery(
"SELECT superUsers FROM SuperUsers su WHERE su.id = :project")
- .setParameter("project", binderService.getGlobalProjectID())
+ .setParameter("project", binderService.getGlobalProjectID().getAuthId())
.getSingleResult();
if (usrs != null) {
@@ -287,7 +287,7 @@
public Set<User> getSuperusersForProject(String projectId) {
Set<User> usrs = (Set<User>) manager.createQuery(
"SELECT superUsers FROM SuperUsers su WHERE su.id = :project")
- .setParameter("project", binderService.getProjectID(projectId))
+ .setParameter("project", binderService.getProjectID(projectId).getAuthId())
.getSingleResult();
if (usrs != null) {
Modified: labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/CredentialTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/CredentialTest.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/CredentialTest.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -13,6 +13,7 @@
import org.jboss.labs.core.model.auth.UserRole;
import org.jboss.labs.exception.auth.NoSuchUserException;
import org.jboss.labs.exception.auth.NoSuchUserRoleException;
+import org.jboss.labs.exception.auth.RoleExistsException;
import org.jboss.labs.exception.auth.UserExistsException;
import org.jboss.labs.test.LabsTest;
@@ -60,6 +61,8 @@
private final static String ROLE_ID = "TestRole";
+ protected final static String TEST_PROJECT = "TEST_PROJECT";
+
private Set<User> usersToDelete;
private Set<UserRole> rolesToDelete;
@@ -112,10 +115,12 @@
return u;
}
- protected UserRole getNewUserRole() {
+ protected UserRole getNewUserRole() throws RoleExistsException {
String id = getUniqueRoleID(ROLE_ID);
UserRole ur = new UserRole(id, "test role "+id);
+
+ userService.addUserRole(ur);
rolesToDelete.add(ur);
return ur;
Added: labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/TestRoles.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/TestRoles.java (rev 0)
+++ labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/TestRoles.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -0,0 +1,38 @@
+/**
+ *
+ */
+package org.jboss.labs.test.credential;
+
+/*
+ * 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
+ */
+
+/**
+ * @author tomaszszymanski
+ *
+ */
+public enum TestRoles {
+ ADMIN,
+ USER,
+ KALAFIOR,
+ KOPYTKO
+}
Modified: labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/UserServiceTest.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/UserServiceTest.java 2008-02-29 18:24:17 UTC (rev 18643)
+++ labs/jbosslabs/labs-3.0-build/views/labs-test/src/main/java/org/jboss/labs/test/credential/UserServiceTest.java 2008-02-29 19:29:15 UTC (rev 18644)
@@ -3,8 +3,12 @@
*/
package org.jboss.labs.test.credential;
+import java.util.Set;
+
import org.jboss.labs.core.model.auth.User;
import org.jboss.labs.core.model.auth.UserRole;
+import org.jboss.labs.exception.auth.NoSuchRoleForUserException;
+import org.jboss.labs.exception.auth.NoSuchSuperUserException;
import org.jboss.labs.exception.auth.NoSuchUserException;
import org.jboss.labs.exception.auth.NoSuchUserRoleException;
import org.jboss.labs.exception.auth.RoleExistsException;
@@ -40,7 +44,8 @@
*/
public class UserServiceTest extends CredentialTest {
- public void testAddDelUser() throws UserExistsException, NoSuchUserException {
+ public void testAddDelUser() throws UserExistsException,
+ NoSuchUserException {
String login = getUniqueUserID();
try {
@@ -72,25 +77,26 @@
// it's expected
}
}
-
- public void testAddDelRole() throws RoleExistsException, NoSuchUserRoleException {
+
+ public void testAddDelRole() throws RoleExistsException,
+ NoSuchUserRoleException {
String roleid = getUniqueRoleID();
-
+
try {
userService.getUserRole(roleid);
-
- //shouldn't exist !
- fail("Role with id: '"+roleid+"' already exists");
+
+ // shouldn't exist !
+ fail("Role with id: '" + roleid + "' already exists");
} catch (NoSuchUserRoleException e) {
// expected
}
-
+
// create role
- UserRole ur = new UserRole(roleid, "test role "+roleid);
+ UserRole ur = new UserRole(roleid, "test role " + roleid);
// add role
userService.addUserRole(ur);
-
+
// try to get her
ur = userService.getUserRole(roleid);
@@ -100,17 +106,131 @@
// see if he was removed
try {
userService.getUserRole(roleid);
-
- //shouldn't exist !
- fail("Role with id: '"+roleid+"' already exists");
+
+ // shouldn't exist !
+ fail("Role with id: '" + roleid + "' already exists");
} catch (NoSuchUserRoleException e) {
// expected
}
}
-
+
@Test
- public void testRolesAndUsers() {
-
+ public void testRolesAndUsers() throws UserExistsException,
+ RoleExistsException, NoSuchUserException,
+ NoSuchRoleForUserException, NoSuchUserRoleException {
+ User user = getNewUser();
+ UserRole role = getNewUserRole();
+
+ // this user shouldn't have this role yet
+ assertFalse(userService.getRolesForUser(user).contains(role));
+
+ // give him the role
+ userService.bindRoleToUser(user, role);
+
+ // now it should have the role
+ assertTrue(userService.getRolesForUser(user).contains(role));
+
+ // also if we get him
+ userService.getUserByLogin(user.getName()).getUserRoles()
+ .contains(role);
+
+ // add another role
+ UserRole role2 = getNewUserRole();
+
+ // this user shouldn't have this role yet
+ assertFalse(userService.getRolesForUser(user).contains(role2));
+
+ // give him the role
+ userService.bindRoleToUser(user, role2);
+
+ // now it should have the role
+ assertTrue(userService.getRolesForUser(user).contains(role2));
+
+ // also if we get him
+ assertTrue(userService.getUserByLogin(user.getName()).getUserRoles()
+ .contains(role2));
+
+ // now let's remove first role
+
+ // remember size - we're not assuming he has 2 roles since
+ // add-role-after-creation is allowed and shouldn't have influence on
+ // program
+ int rolesNo = userService.getRolesForUser(user).size();
+
+ // remove
+ userService.removeRoleFromUser(user, role);
+
+ // check if size is -1
+ assertTrue(userService.getRolesForUser(user).size() == rolesNo - 1);
+
+ // and if we removed it
+ assertFalse(userService.getRolesForUser(user).contains(role));
+
+ // also if we get him
+ assertFalse(userService.getUserByLogin(user.getName()).getUserRoles()
+ .contains(role));
+
+ // try removing already removed role
+ try {
+ userService.removeRoleFromUser(user, role);
+ // oops. we should've get an exception here.
+ fail("Removed(?) twice the same role");
+ } catch (NoSuchRoleForUserException e) {
+ // ok
+ }
+
+ // add first role again
+ userService.bindRoleToUser(user, role);
+
+ // remove two roles at a time
+ userService.removeRolesFromUser(user, role, role2);
+
+ // check if they removed properly
+ // and if we removed it
+ assertFalse(userService.getRolesForUser(user).contains(role));
+
+ // also if we get him
+ assertFalse(userService.getUserByLogin(user.getName()).getUserRoles()
+ .contains(role));
+
+ // and if we removed it
+ assertFalse(userService.getRolesForUser(user).contains(role2));
+
+ // also if we get him
+ assertFalse(userService.getUserByLogin(user.getName()).getUserRoles()
+ .contains(role2));
}
+ public void testSuperusers() throws UserExistsException,
+ NoSuchUserException, NoSuchSuperUserException {
+ User global = getNewUser();
+ User prj = getNewUser();
+
+ // grant super user for project
+ binderService.grantUserProjectSuperrole(prj, TEST_PROJECT);
+
+ // grant global superuser
+ binderService.grantUserSuperrole(global);
+
+ // check global
+ assertTrue(userService.getSuperusers().contains(global));
+
+ // check project
+ assertTrue(userService.getSuperusersForProject(TEST_PROJECT).contains(
+ prj));
+
+ // remove global
+ binderService.revokeUserSuperrole(global);
+
+ // check global
+ assertFalse(userService.getSuperusers().contains(global));
+
+ // remove prj
+ binderService.revokeUserProjectSuperrole(prj, TEST_PROJECT);
+
+ // check project
+ assertFalse(userService.getSuperusersForProject(TEST_PROJECT).contains(
+ prj));
+ }
+
}
More information about the jboss-svn-commits
mailing list