Author: tchemit Date: 2012-08-13 12:11:34 +0200 (Mon, 13 Aug 2012) New Revision: 3601 Url: http://chorem.org/repositories/revision/pollen/3601 Log: refs #746: Improve security model (more methods to instanciate a security context) Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/PollenUserSecurityContext.java Modified: trunk/pollen-services/src/main/java/org/chorem/pollen/PollenUserSecurityContext.java =================================================================== --- trunk/pollen-services/src/main/java/org/chorem/pollen/PollenUserSecurityContext.java 2012-08-13 10:10:10 UTC (rev 3600) +++ trunk/pollen-services/src/main/java/org/chorem/pollen/PollenUserSecurityContext.java 2012-08-13 10:11:34 UTC (rev 3601) @@ -23,6 +23,7 @@ */ import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; import org.apache.commons.collections.CollectionUtils; import org.chorem.pollen.bean.PollUri; import org.chorem.pollen.bean.PollUrl; @@ -31,6 +32,7 @@ import org.chorem.pollen.services.impl.SecurityService; import java.io.Serializable; +import java.util.Collections; import java.util.Set; /** @@ -72,10 +74,27 @@ protected Set<PollenUserSecurityRole> userRoles; public static PollenUserSecurityContext newContext(UserAccount userAccount, PollUri pollUri) { + return newContext(userAccount, pollUri, null); + } + + public static PollenUserSecurityContext newContext(UserAccount userAccount, + String pollId, + String accountId, + Poll poll) { + return newContext(userAccount, + PollUri.newPollUri(pollId, accountId), + poll); + } + + public static PollenUserSecurityContext newContext(UserAccount userAccount, + PollUri pollUri, + Poll poll) { PollenUserSecurityContext result = new PollenUserSecurityContext( - userAccount, - pollUri + userAccount, pollUri ); + if (poll != null) { + result.setPoll(poll); + } return result; } @@ -97,21 +116,27 @@ } public boolean isCreator() { - return userRoles.contains(PollenUserSecurityRole.CREATOR); + return userRoles != null && userRoles.contains(PollenUserSecurityRole.CREATOR); } public boolean isVoter() { - return userRoles.contains(PollenUserSecurityRole.VOTER); + return userRoles != null && userRoles.contains(PollenUserSecurityRole.VOTER); } public boolean isRestrictedVoter() { - return userRoles.contains(PollenUserSecurityRole.RESTRICTED_VOTER); + return userRoles != null && userRoles.contains(PollenUserSecurityRole.RESTRICTED_VOTER); } public boolean hasNoRole() { return CollectionUtils.isEmpty(userRoles); } + public Set<PollenUserSecurityRole> getUserRoles() { + return CollectionUtils.isEmpty(userRoles) ? + Collections.<PollenUserSecurityRole>emptySet() : + ImmutableSet.copyOf(userRoles); + } + public UserAccount getUserAccount() { return userAccount; }