/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/msgcntr/trunk/messageforums-component-impl/src/java/org/sakaiproject/component/app/messageforums/DefaultPermissionsManagerImpl.java $ * $Id: DefaultPermissionsManagerImpl.java 9227 2006-05-15 15:02:42Z cwen@iupui.edu $ *********************************************************************************** * * Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008 The Sakai Foundation * * Licensed under the Educational Community 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 * * http://www.opensource.org/licenses/ECL-2.0 * * 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.sakaiproject.component.app.messageforums; import java.util.ArrayList; import java.util.Collection; import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.sakaiproject.api.app.messageforums.DefaultPermissionsManager; import org.sakaiproject.authz.api.AuthzGroup; import org.sakaiproject.authz.api.AuthzGroupService; import org.sakaiproject.authz.api.FunctionManager; import org.sakaiproject.tool.cover.ToolManager; /** * @author <a href="mailto:rshastri@iupui.edu">Rashmi Shastri</a> * */ public class DefaultPermissionsManagerImpl implements DefaultPermissionsManager { private static final Log LOG = LogFactory.getLog(DefaultPermissionsManagerImpl.class); //Dependency injected private FunctionManager functionManager; private AuthzGroupService authzGroupService; public void init() { LOG.info("init()"); Collection registered = functionManager.getRegisteredFunctions(DefaultPermissionsManager.MESSAGE_FUNCTION_PREFIX); if (!registered.contains(DefaultPermissionsManager.MESSAGE_FUNCTION_EMAIL)) { functionManager.registerFunction(DefaultPermissionsManager.MESSAGE_FUNCTION_EMAIL); } if (!registered.contains(DefaultPermissionsManager.MESSAGE_FUNCTION_ALLOW_TO_FIELD_ALL_PARTICIPANTS)) { functionManager.registerFunction(DefaultPermissionsManager.MESSAGE_FUNCTION_ALLOW_TO_FIELD_ALL_PARTICIPANTS); } if (!registered.contains(DefaultPermissionsManager.MESSAGE_FUNCTION_ALLOW_TO_FIELD_GROUPS)) { functionManager.registerFunction(DefaultPermissionsManager.MESSAGE_FUNCTION_ALLOW_TO_FIELD_GROUPS); } if (!registered.contains(DefaultPermissionsManager.MESSAGE_FUNCTION_ALLOW_TO_FIELD_ROLES)) { functionManager.registerFunction(DefaultPermissionsManager.MESSAGE_FUNCTION_ALLOW_TO_FIELD_ROLES); } if (!registered.contains(DefaultPermissionsManager.MESSAGE_FUNCTION_VIEW_HIDDEN_GROUPS)) { functionManager.registerFunction(DefaultPermissionsManager.MESSAGE_FUNCTION_VIEW_HIDDEN_GROUPS); } /* functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_NEW_FORUM); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_NEW_TOPIC); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_NEW_RESPONSE); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_NEW_RESPONSE_TO_RESPONSE); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_MOVE_POSTINGS); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_CHANGE_SETTINGS); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_POST_TO_GRADEBOOK); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_READ); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_REVISE_ANY); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_REVISE_OWN); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_DELETE_ANY); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_DELETE_OWN); functionManager.registerFunction(DefaultPermissionsManager.FUNCTION_MARK_AS_READ);*/ } /** * @param functionManager The functionManager to set. */ public void setFunctionManager(FunctionManager functionManager) { this.functionManager = functionManager; } /** * @param authzGroupService The authzGroupService to set. */ public void setAuthzGroupService(AuthzGroupService authzGroupService) { this.authzGroupService = authzGroupService; } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isNewForum(java.lang.String) */ public boolean isNewForum(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_NEW_FORUM); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isNewTopic(java.lang.String) */ public boolean isNewTopic(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_NEW_TOPIC); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isNewResponse(java.lang.String) */ public boolean isNewResponse(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_NEW_RESPONSE); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isResponseToResponse(java.lang.String) */ public boolean isResponseToResponse(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_NEW_RESPONSE_TO_RESPONSE); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isMovePostings(java.lang.String) */ public boolean isMovePostings(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_MOVE_POSTINGS); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isChangeSettings(java.lang.String) */ public boolean isChangeSettings(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_CHANGE_SETTINGS); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isPostToGradeBook(java.lang.String) */ public boolean isPostToGradebook(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_POST_TO_GRADEBOOK); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isRead(java.lang.String) */ public boolean isRead(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_READ); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isReviseAny(java.lang.String) */ public boolean isReviseAny(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_REVISE_ANY); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isReviseOwn(java.lang.String) */ public boolean isReviseOwn(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_REVISE_OWN); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isDeleteAny(java.lang.String) */ public boolean isDeleteAny(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_DELETE_ANY); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isDeleteOwn(java.lang.String) */ public boolean isDeleteOwn(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_DELETE_OWN); } /* (non-Javadoc) * @see org.sakaiproject.api.app.messageforums.DefaultPermissionsManager#isMarkAsRead(java.lang.String) */ public boolean isMarkAsRead(String role) { return hasPermission(role, DefaultPermissionsManager.FUNCTION_MARK_AS_READ); } private boolean hasPermission(String role, String permission) { Collection realmList = new ArrayList(); realmList.add(getContextSiteId()); AuthzGroup authzGroup=null; try { authzGroup = authzGroupService.getAuthzGroup("!site.helper"); } catch (Exception e) { LOG.info("No site helper template found"); } if(authzGroup!=null) { realmList.add(authzGroup.getId()); } Set allowedFunctions = authzGroupService.getAllowedFunctions(role, realmList); return allowedFunctions.contains(permission); } /** * @return siteId */ private String getContextSiteId() { LOG.debug("getContextSiteId()"); return ("/site/" + ToolManager.getCurrentPlacement().getContext()); } }