NIHVIVO-3523 Create HasPermissionSet identifier -- not needed, but helps in diagnostics.
This commit is contained in:
parent
97a878d3c9
commit
c2f869cc45
3 changed files with 121 additions and 0 deletions
|
@ -0,0 +1,74 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.auth.identifier.common;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.Identifier;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.IdentifierBundle;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.auth.permissions.Permission;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.beans.PermissionSet;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The current user has this Permission, through one or more PermissionSets.
|
||||||
|
*/
|
||||||
|
public class HasPermissionSet extends AbstractCommonIdentifier implements
|
||||||
|
Identifier, Comparable<HasPermissionSet> {
|
||||||
|
public static Collection<HasPermission> getIdentifiers(IdentifierBundle ids) {
|
||||||
|
return getIdentifiersForClass(ids, HasPermission.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Collection<Permission> getPermissions(IdentifierBundle ids) {
|
||||||
|
Set<Permission> set = new HashSet<Permission>();
|
||||||
|
for (HasPermission id : getIdentifiers(ids)) {
|
||||||
|
set.add(id.getPermission());
|
||||||
|
}
|
||||||
|
return set;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final PermissionSet permissionSet; // never null
|
||||||
|
|
||||||
|
public HasPermissionSet(PermissionSet permissionSet) {
|
||||||
|
if (permissionSet == null) {
|
||||||
|
throw new NullPointerException("permissionSet may not be null.");
|
||||||
|
}
|
||||||
|
this.permissionSet = permissionSet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public PermissionSet getPermissionSet() {
|
||||||
|
return permissionSet;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "HasPermissionSet[" + permissionSet.getLabel() + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return permissionSet.getUri().hashCode();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (obj == this) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (obj == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (!(obj instanceof HasPermissionSet)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
HasPermissionSet that = (HasPermissionSet) obj;
|
||||||
|
return this.permissionSet.getUri().equals(that.permissionSet.getUri());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(HasPermissionSet that) {
|
||||||
|
return this.permissionSet.getUri().compareTo(
|
||||||
|
that.permissionSet.getUri());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
/* $This file is distributed under the terms of the license in /doc/license.txt$ */
|
||||||
|
|
||||||
|
package edu.cornell.mannlib.vitro.webapp.auth.identifier.factory;
|
||||||
|
|
||||||
|
import javax.servlet.ServletContext;
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
|
import org.apache.commons.logging.Log;
|
||||||
|
import org.apache.commons.logging.LogFactory;
|
||||||
|
|
||||||
|
import edu.cornell.mannlib.vedit.beans.LoginStatusBean;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.ArrayIdentifierBundle;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.IdentifierBundle;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.common.HasPermissionSet;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.beans.PermissionSet;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.beans.UserAccount;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Figure out what PermissionSets the user is entitled to have.
|
||||||
|
*/
|
||||||
|
public class HasPermissionSetFactory extends BaseIdentifierBundleFactory {
|
||||||
|
private static final Log log = LogFactory
|
||||||
|
.getLog(HasPermissionFactory.class);
|
||||||
|
|
||||||
|
public HasPermissionSetFactory(ServletContext ctx) {
|
||||||
|
super(ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IdentifierBundle getIdentifierBundle(HttpServletRequest req) {
|
||||||
|
IdentifierBundle ids = new ArrayIdentifierBundle();
|
||||||
|
UserAccount user = LoginStatusBean.getCurrentUser(req);
|
||||||
|
if (user != null) {
|
||||||
|
|
||||||
|
for (String psUri: user.getPermissionSetUris()) {
|
||||||
|
PermissionSet ps = uaDao.getPermissionSetByUri(psUri);
|
||||||
|
if (ps != null) {
|
||||||
|
ids.add(new HasPermissionSet(ps));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ids;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ import javax.servlet.ServletContextListener;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.identifier.ActiveIdentifierBundleFactories;
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.ActiveIdentifierBundleFactories;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.identifier.IdentifierBundleFactory;
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.IdentifierBundleFactory;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.identifier.factory.HasPermissionFactory;
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.factory.HasPermissionFactory;
|
||||||
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.factory.HasPermissionSetFactory;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.identifier.factory.HasProfileOrIsBlacklistedFactory;
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.factory.HasProfileOrIsBlacklistedFactory;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.identifier.factory.HasProxyEditingRightsFactory;
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.factory.HasProxyEditingRightsFactory;
|
||||||
import edu.cornell.mannlib.vitro.webapp.auth.identifier.factory.IsRootUserFactory;
|
import edu.cornell.mannlib.vitro.webapp.auth.identifier.factory.IsRootUserFactory;
|
||||||
|
@ -38,6 +39,7 @@ public class CommonPolicyFamilySetup implements ServletContextListener {
|
||||||
factory(ctx, new IsUserFactory(ctx));
|
factory(ctx, new IsUserFactory(ctx));
|
||||||
factory(ctx, new IsRootUserFactory(ctx));
|
factory(ctx, new IsRootUserFactory(ctx));
|
||||||
factory(ctx, new HasProfileOrIsBlacklistedFactory(ctx));
|
factory(ctx, new HasProfileOrIsBlacklistedFactory(ctx));
|
||||||
|
factory(ctx, new HasPermissionSetFactory(ctx));
|
||||||
factory(ctx, new HasPermissionFactory(ctx));
|
factory(ctx, new HasPermissionFactory(ctx));
|
||||||
factory(ctx, new HasProxyEditingRightsFactory(ctx));
|
factory(ctx, new HasProxyEditingRightsFactory(ctx));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue