/** * Licensed to Apereo under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright ownership. Apereo * licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use * this file except in compliance with the License. You may obtain a copy of the License at the * following location: * * <p>http://www.apache.org/licenses/LICENSE-2.0 * * <p>Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing permissions and * limitations under the License. */ package org.apereo.portal.security.provider; import org.apereo.portal.AuthorizationException; import org.apereo.portal.groups.IEntityGroup; import org.apereo.portal.portlet.om.PortletLifecycleState; import org.apereo.portal.security.IAuthorizationPrincipal; import org.apereo.portal.security.IAuthorizationService; import org.apereo.portal.security.IPermission; import org.apereo.portal.security.IPermissionPolicy; /** */ public class AuthorizationPrincipalImpl implements IAuthorizationPrincipal { private final String key; private final Class type; private IAuthorizationService authorizationService; private String principalString; /** Constructor for ReferenceAuthorizationPrincipal. */ public AuthorizationPrincipalImpl( String newKey, Class newType, IAuthorizationService authService) { super(); key = newKey; type = newType; authorizationService = authService; initialize(); } /** * Answers if this <code>IAuthorizationPrincipal</code> has permission to manage this channel. * * @return boolean * @param channelPublishId String - the Channel publish ID * @exception AuthorizationException thrown when authorization information could not be * retrieved. */ @Override public boolean canManage(String channelPublishId) throws AuthorizationException { return getAuthorizationService().canPrincipalManage(this, channelPublishId); } /** * Answers if this <code>IAuthorizationPrincipal</code> has permission to publish. * * @return boolean * @exception AuthorizationException thrown when authorization information could not be * retrieved. */ @Override public boolean canManage(PortletLifecycleState state, String categoryId) throws AuthorizationException { return getAuthorizationService().canPrincipalManage(this, state, categoryId); } @Override public boolean canConfigure(String channelPublishId) throws AuthorizationException { return getAuthorizationService().canPrincipalConfigure(this, channelPublishId); } /** * Answers if this <code>IAuthorizationPrincipal</code> has permission to render this channel. * * @return boolean * @param channelPublishId int - the Channel publish ID * @exception AuthorizationException thrown when authorization information could not be * retrieved. */ @Override public boolean canRender(String channelPublishId) throws AuthorizationException { return getAuthorizationService().canPrincipalRender(this, channelPublishId); } /** * Answers if this <code>IAuthorizationPrincipal</code> has permission to subscribe to this * channel. * * @return boolean * @param channelPublishId int - the Channel publish ID * @exception AuthorizationException thrown when authorization information could not be * retrieved. */ @Override public boolean canSubscribe(String channelPublishId) throws AuthorizationException { return getAuthorizationService().canPrincipalSubscribe(this, channelPublishId); } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof IAuthorizationPrincipal)) return false; IAuthorizationPrincipal other = (IAuthorizationPrincipal) obj; if (key == null) { if (other.getKey() != null) return false; } else if (!key.equals(other.getKey())) return false; if (type == null) { if (other.getType() != null) return false; } else if (!type.equals(other.getType())) return false; return true; } /** * Returns the <code>IPermissions</code> for this <code>IAuthorizationPrincipal</code>, * including inherited <code>IPermissions</code>. * * @return org.apereo.portal.security.IPermission[] * @exception AuthorizationException indicates authorization information could not be retrieved. */ @Override public IPermission[] getAllPermissions() throws AuthorizationException { return getAllPermissions(null, null, null); } /** * Returns the <code>IPermissions</code> for this <code>IAuthorizationPrincipal</code> for the * specified <code>owner</code>, <code>activity</code> and <code>target</code>. Inherited <code> * IPermissions</code> are included. Null parameters are ignored, so <code> * getPermissions(null, null, null)</code> should retrieve all <code>IPermissions</code> for an * <code>IAuthorizationPrincipal</code>. * * @return org.apereo.portal.security.IPermission[] * @param owner String * @param activity String * @param target String * @exception AuthorizationException indicates authorization information could not be retrieved. */ @Override public IPermission[] getAllPermissions(String owner, String activity, String target) throws AuthorizationException { return getAuthorizationService() .getAllPermissionsForPrincipal(this, owner, activity, target); } /** @return org.apereo.portal.security.IAuthorization */ IAuthorizationService getAuthorizationService() { return authorizationService; } /** * Return a Vector of IChannels. * * @return a <code>java.util.Vector</code> of IChannels * @exception AuthorizationException indicates authorization information could not be retrieved. */ @Override public java.util.Vector getAuthorizedChannels() throws AuthorizationException { return getAuthorizationService().getAuthorizedChannels(this); } /** @return String */ @Override public String getKey() { return key; } /** * Returns the <code>IPermissions</code> for this <code>IAuthorizationPrincipal</code>. * * @return org.apereo.portal.security.IPermission[] * @exception AuthorizationException indicates authorization information could not be retrieved. */ @Override public IPermission[] getPermissions() throws AuthorizationException { return getPermissions(null, null, null); } /** * Returns the <code>IPermissions</code> for this <code>IAuthorizationPrincipal</code> for the * specified <code>owner</code>, <code>activity</code> and <code>target</code>. Null parameters * are ignored, so <code>getPermissions(null, null, null)</code> should retrieve all <code> * IPermissions</code> for an <code>IAuthorizationPrincipal</code>. * * @return org.apereo.portal.security.IPermission[] * @param owner String * @param activity String * @param target String * @exception AuthorizationException indicates authorization information could not be retrieved. */ @Override public IPermission[] getPermissions(String owner, String activity, String target) throws AuthorizationException { return getAuthorizationService().getPermissionsForPrincipal(this, owner, activity, target); } /** @return String */ @Override public String getPrincipalString() { return principalString; } /** @return Class */ @Override public Class getType() { return type; } @Override public boolean isGroup() { return IEntityGroup.class.equals(type); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((key == null) ? 0 : key.hashCode()); result = prime * result + ((type == null) ? 0 : type.hashCode()); return result; } /** * Answers if this <code>IAuthorizationPrincipal</code> has permission to perform the <code> * activity</code> on the <code>target</code>. Params <code>owner</code> and <code>activity * </code> must be non-null. If <code>target</code> is null, then the target is not checked. * * @return boolean * @param owner String * @param activity String * @param target String * @exception AuthorizationException indicates authorization information could not be retrieved. */ @Override public boolean hasPermission(String owner, String activity, String target) throws AuthorizationException { return getAuthorizationService().doesPrincipalHavePermission(this, owner, activity, target); } /** Set the value of the principal string. */ private void initialize() { principalString = getAuthorizationService().getPrincipalString(this); } /** * Returns a String that represents the value of this object. * * @return a string representation of the receiver */ @Override public String toString() { return getPrincipalString(); } /** * Answers if this <code>IAuthorizationPrincipal</code> has permission to perform the <code> * activity</code> on the <code>target</code>, as evaluated by the <code>policy</code>. Params * <code>policy</code>, <code>owner</code> and <code>activity</code> must be non-null. * * @return boolean * @param owner String * @param activity String * @param target String * @param policy org.apereo.portal.security.IPermissionPolicy * @exception AuthorizationException indicates authorization information could not be retrieved. */ @Override public boolean hasPermission( String owner, String activity, String target, IPermissionPolicy policy) throws AuthorizationException { return getAuthorizationService() .doesPrincipalHavePermission(this, owner, activity, target, policy); } }