/********************************************************************************** * $URL: https://source.sakaiproject.org/svn/sam/trunk/samigo-app/src/java/org/sakaiproject/tool/assessment/ui/bean/authz/AuthorizationBean.java $ * $Id: AuthorizationBean.java 106463 2012-04-02 12:20:09Z david.horwitz@uct.ac.za $ *********************************************************************************** * * Copyright (c) 2004, 2005, 2006, 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.tool.assessment.ui.bean.authz; import org.sakaiproject.tool.assessment.facade.AgentFacade; import org.sakaiproject.tool.assessment.services.PersistenceService; import org.sakaiproject.tool.assessment.ui.listener.util.ContextUtil; //import org.sakaiproject.spring.SpringBeanLocator; import java.io.Serializable; import java.util.HashMap; import javax.servlet.http.HttpServletRequest; //import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; public class AuthorizationBean implements Serializable { /** * */ private static final long serialVersionUID = -2782949557257727817L; private static Log log = LogFactory.getLog(AuthorizationBean.class); private HashMap map = new HashMap(); private boolean adminPrivilege = false; private boolean adminNewAssessmentPrivilege = false; private boolean adminCoreAssessmentPrivilege = false; private boolean adminPublishedAssessmentPrivilege = false; private boolean adminAssessmentPrivilege = false; private boolean adminTemplatePrivilege = false; private boolean adminQuestionPoolPrivilege = false; public AuthorizationBean(){} public HashMap getAuthzMap(){ return map; } public boolean getAdminPrivilege(){ return getPrivilege("admin_privilege"); } public boolean getAdminNewAssessment(){ return getPrivilege("admin_new_assessment"); } public boolean getAdminCoreAssessment(){ return getPrivilege("admin_core_assessment"); } public boolean getAdminPublishedAssessment(){ return getPrivilege("admin_published_assessment"); } public boolean getAdminAssessment(){ return getPrivilege("admin_assessment"); } public boolean getAdminTemplate(){ return getPrivilege("admin_template"); } public boolean getAdminQuestionPool(){ return getPrivilege("admin_questionpool"); } // This method is called (via jsf/security/roleCheckStaticInclude.jsp) // when user first enter samigo in a site. // This is the time when we determine his permission in the site. // This info is stored in the AuthorizationService HashMap for the entire session. public void addAllPrivilege(String siteId){ // admin functions boolean p1 = canCreateAssessment(siteId); boolean p2 = canEditAnyAssessment(siteId); boolean p3 = canEditOwnAssessment(siteId); boolean p4 = canDeleteAnyAssessment(siteId); boolean p5 = canDeleteOwnAssessment(siteId); boolean p6 = canPublishAnyAssessment(siteId); boolean p7 = canPublishOwnAssessment(siteId); boolean p8 = canGradeAnyAssessment(siteId); boolean p9 = canGradeOwnAssessment(siteId); boolean p10 = canCreateQuestionPool(siteId); boolean p11 = canEditOwnQuestionPool(siteId); boolean p12 = canDeleteOwnQuestionPool(siteId); boolean p13 = canCopyOwnQuestionPool(siteId); boolean p14 = canCreateTemplate(siteId); boolean p15 = canEditOwnTemplate(siteId); boolean p16 = canDeleteOwnTemplate(siteId); // non admin functions canTakeAssessment(siteId); canSubmitAssessmentForGrade(siteId); // set adminPrivilege adminNewAssessmentPrivilege = p1; addAdminPrivilege(adminNewAssessmentPrivilege, "admin_new_assessment", siteId); adminCoreAssessmentPrivilege = p2 || p3 || p4 || p5 || p6 || p7; addAdminPrivilege(adminCoreAssessmentPrivilege, "admin_core_assessment", siteId); adminPublishedAssessmentPrivilege = p8 || p9; addAdminPrivilege(adminPublishedAssessmentPrivilege, "admin_published_assessment", siteId); adminAssessmentPrivilege = p1 || p2 || p3 || p4 || p5 || p6 || p7 || p8 || p9; addAdminPrivilege(adminAssessmentPrivilege, "admin_assessment", siteId); adminQuestionPoolPrivilege = p10 || p11 || p12 || p13; addAdminPrivilege(adminQuestionPoolPrivilege, "admin_questionpool", siteId); adminTemplatePrivilege = p14 ||p15 || p16; addAdminPrivilege(adminTemplatePrivilege, "admin_template", siteId); adminPrivilege = adminAssessmentPrivilege || adminQuestionPoolPrivilege || adminTemplatePrivilege; addAdminPrivilege(adminPrivilege, "admin_privilege", siteId); } public boolean canTakeAssessment(String siteId) { return addPrivilege("take_assessment", siteId); } public boolean canSubmitAssessmentForGrade(String siteId) { return addPrivilege("submit_assessment_for_grade", siteId); } public boolean canCreateAssessment(String siteId) { return addPrivilege("create_assessment", siteId); } public boolean canEditAnyAssessment(String siteId) { return addPrivilege("edit_any_assessment", siteId); } public boolean canEditOwnAssessment(String siteId) { return addPrivilege("edit_own_assessment", siteId); } public boolean canDeleteAnyAssessment(String siteId) { return addPrivilege("delete_any_assessment", siteId); } public boolean canDeleteOwnAssessment(String siteId) { return addPrivilege("delete_own_assessment", siteId); } public boolean canPublishAnyAssessment(String siteId) { return addPrivilege("publish_any_assessment", siteId); } public boolean canPublishOwnAssessment(String siteId) { return addPrivilege("publish_own_assessment", siteId); } public boolean canGradeAnyAssessment(String siteId) { return addPrivilege("grade_any_assessment", siteId); } public boolean canGradeOwnAssessment(String siteId) { return addPrivilege("grade_own_assessment", siteId); } public boolean canCreateQuestionPool(String siteId) { return addPrivilege("create_questionpool", siteId); } public boolean canEditOwnQuestionPool(String siteId) { return addPrivilege("edit_own_questionpool", siteId); } public boolean canDeleteOwnQuestionPool(String siteId) { return addPrivilege("delete_own_questionpool", siteId); } public boolean canCopyOwnQuestionPool(String siteId) { return addPrivilege("copy_own_questionpool", siteId); } public boolean canCreateTemplate(String siteId) { return addPrivilege("create_template", siteId); } public boolean canEditOwnTemplate(String siteId) { return addPrivilege("edit_own_template", siteId); } public boolean canDeleteOwnTemplate(String siteId) { return addPrivilege("delete_own_template", siteId); } public boolean addPrivilege(String functionKey, String siteId){ String functionName=(String)ContextUtil.getLocalizedString("org.sakaiproject.tool.assessment.bundle.AuthzPermissions", functionKey); boolean privilege = PersistenceService.getInstance().getAuthzQueriesFacade().hasPrivilege(functionName); map.put(functionName+"_"+siteId, Boolean.valueOf(privilege)); //log.debug(functionName+"_"+siteId+"="+privilege); return privilege; } public void addAdminPrivilege(boolean privilege, String functionKey, String siteId){ String functionName=(String)ContextUtil.getLocalizedString("org.sakaiproject.tool.assessment.bundle.AuthzPermissions", functionKey); map.put(functionName+"_"+siteId, Boolean.valueOf(privilege)); //log.debug(functionName+"_"+siteId+"="+privilege); } public boolean getTakeAssessment(){ return getPrivilege("take_assessment"); } public boolean getSubmitAssessmentForGrade(){ return getPrivilege("submit_assessment_for_grade"); } public boolean getCreateAssessment(){ return getPrivilege("create_assessment"); } public boolean getEditAnyAssessment() { return getPrivilege("edit_any_assessment"); } public boolean getEditOwnAssessment() { return getPrivilege("edit_own_assessment"); } public boolean getDeleteAnyAssessment() { return getPrivilege("delete_any_assessment"); } public boolean getDeleteOwnAssessment() { return getPrivilege("delete_own_assessment"); } public boolean getPublishAnyAssessment() { return getPrivilege("publish_any_assessment"); } public boolean getPublishOwnAssessment() { return getPrivilege("publish_own_assessment"); } public boolean getGradeAnyAssessment() { boolean priv = getPrivilege("grade_any_assessment"); return priv; } public boolean getGradeOwnAssessment() { boolean priv = getPrivilege("grade_own_assessment"); return priv; } public boolean getCreateQuestionPool() { return getPrivilege("create_questionpool"); } public boolean getEditOwnQuestionPool() { return getPrivilege("edit_own_questionpool"); } public boolean getDeleteOwnQuestionPool() { return getPrivilege("delete_own_questionpool"); } public boolean getCopyOwnQuestionPool() { return getPrivilege("copy_own_questionpool"); } public boolean getCreateTemplate() { return getPrivilege("create_template"); } public boolean getEditOwnTemplate() { return getPrivilege("edit_own_template"); } public boolean getDeleteOwnTemplate() { return getPrivilege("delete_own_template"); } public boolean getPrivilege(String functionKey){ String siteId = AgentFacade.getCurrentSiteId(); String functionName=(String)ContextUtil.getLocalizedString("org.sakaiproject.tool.assessment.bundle.AuthzPermissions", functionKey); boolean privilege = false; Object o = map.get(functionName+"_"+siteId); if (o!=null) privilege = ((Boolean)o).booleanValue(); //log.debug("**** authzBean:"+functionName+"_"+siteId+"="+privilege); return privilege; } // added the follwoing for ShowMediaServlet public boolean getGradeAnyAssessment(HttpServletRequest req, String siteId) { return getPrivilege(req, "grade_any_assessment", siteId); } public boolean getGradeOwnAssessment(HttpServletRequest req, String siteId) { return getPrivilege(req, "grade_own_assessment", siteId); } public boolean getPrivilege(HttpServletRequest req, String functionKey, String siteId){ String functionName=(String)ContextUtil.getLocalizedString(req, "org.sakaiproject.tool.assessment.bundle.AuthzPermissions", functionKey); boolean privilege = false; Object o = map.get(functionName+"_"+siteId); if (o!=null) privilege = ((Boolean)o).booleanValue(); return privilege; } }