/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF 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 * * http://www.apache.org/licenses/LICENSE-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. */ import java.util.ArrayList import java.util.Collection import java.util.HashMap import java.util.Iterator import java.util.LinkedList import java.util.List import java.util.Map import java.util.Set import java.util.TreeSet import org.apache.ofbiz.base.util.* import org.apache.ofbiz.entity.* import org.apache.ofbiz.security.* import org.apache.ofbiz.service.* import org.apache.ofbiz.entity.model.* import org.apache.ofbiz.content.content.PermissionRecorder import org.apache.ofbiz.content.ContentManagementWorker import javax.servlet.* import javax.servlet.http.* paramMap = UtilHttp.getParameterMap(request) //Debug.logInfo("in permprep, userLogin(0):" + userLogin, null) // Get permission from pagedef config file permission = context.permission permissionType = context.permissionType ?: "simple" entityName = context.entityName entityOperation = context.entityOperation targetOperation = context.targetOperation //Debug.logInfo("in permprep, targetOperation(0):" + targetOperation, null) mode = paramMap.mode //Debug.logInfo("in permprep, contentId(0):" + request.getAttribute("contentId"),"") currentValue = request.getAttribute("currentValue") //Debug.logInfo("in permprep, paramMap(1):" + paramMap, null) //Debug.logInfo("in permprep, currentValue(1):" + currentValue, null) if ("add".equals(mode)) { entityOperation = context.addEntityOperation ?: context.entityOperation ?: "_CREATE" targetOperation = context.addTargetOperation ?: context.get("targetOperation") ?: "CONTENT_CREATE" //org.apache.ofbiz.base.util.Debug.logInfo("in permprep, targetOperation:" + targetOperation, null) } else { if (!entityOperation) { entityOperation = "_UPDATE" } if (!targetOperation) { targetOperation = "CONTENT_UPDATE" } } if (permissionType.equals("complex")) { mapIn = [:] mapIn.userLogin = userLogin targetOperationList = StringUtil.split(targetOperation, "|") mapIn.targetOperationList = targetOperationList thisContentId = null //Debug.logInfo("in permprep, userLogin(1):" + userLogin, null) //if (userLogin != null) { //Debug.logInfo("in permprep, userLoginId(1):" + userLogin.get("userLoginId"), null) //} if (!currentValue || !"Content".equals(entityName)) { permissionIdName = context.permissionIdName //org.apache.ofbiz.base.util.Debug.logInfo("in permprep, permissionIdName(1):" + permissionIdName, null) if (!permissionIdName) { thisContentId = ContentManagementWorker.getFromSomewhere(permissionIdName, paramMap, request, context) } else if (!thisContentId) { thisContentId = ContentManagementWorker.getFromSomewhere("subContentId", paramMap, request, context) } else if (!thisContentId) { thisContentId = ContentManagementWorker.getFromSomewhere("contentIdTo", paramMap, request, context) } else if (!thisContentId) { thisContentId = ContentManagementWorker.getFromSomewhere("contentId", paramMap, request, context) } //org.apache.ofbiz.base.util.Debug.logInfo("in permprep, thisContentId(2):" + thisContentId, null) } else { thisContentId = currentValue.contentId } //org.apache.ofbiz.base.util.Debug.logInfo("in permprep, thisContentId(3):" + thisContentId, null) if (!currentValue || !"Content".equals(entityName)) { if (thisContentId) { currentValue = from("Content").where("contentId", thisContentId).queryOne() } } if ("add".equals(mode)) { addEntityOperation = context.addEntityOperation if (addEntityOperation) { entityOperation = addEntityOperation } } else { editEntityOperation = context.editEntityOperation if (editEntityOperation) { entityOperation = editEntityOperation } } //org.apache.ofbiz.base.util.Debug.logInfo("in permprep, currentValue(2):" + currentValue, null) if ("Content".equals(currentValue?.getEntityName())) { mapIn.currentContent = currentValue } mapIn.entityOperation = entityOperation contentPurposeTypeId = context.contentPurposeTypeId if (contentPurposeTypeId) { mapIncontentPurposeList = StringUtil.split(contentPurposeTypeId, "|") } //org.apache.ofbiz.base.util.Debug.logInfo("in permprep, mapIn:" + mapIn, null) result = runService('checkContentPermission', mapIn) permissionStatus = result.permissionStatus //org.apache.ofbiz.base.util.Debug.logInfo("in permprep, permissionStatus:" + permissionStatus, null) if ("granted".equals(permissionStatus)) { context.hasPermission = true request.setAttribute("hasPermission", true) request.setAttribute("permissionStatus", "granted") } else { context.hasPermission = false request.setAttribute("hasPermission", false) request.setAttribute("permissionStatus", "") errorMessage = "Permission to display:" + page.getPageName() + " is denied." recorder = result.permissionRecorder //Debug.logInfo("recorder(0):" + recorder, "") if (recorder) { permissionMessage = recorder.toHtml() //Debug.logInfo("permissionMessage(0):" + permissionMessage, "") errorMessage += " \n " + permissionMessage } request.setAttribute("errorMsgReq", errorMessage) } //Debug.logInfo("in permprep, contentId(1):" + request.getAttribute("contentId"),"") } else { //org.apache.ofbiz.base.util.Debug.logInfo("permission:" + permission , null) //org.apache.ofbiz.base.util.Debug.logInfo("entityOperation:" + entityOperation , null) if (security.hasEntityPermission(permission, entityOperation, session)) { //org.apache.ofbiz.base.util.Debug.logInfo("hasEntityPermission is true:" , null) context.hasPermission = true request.setAttribute("hasPermission", true) request.setAttribute("permissionStatus", "granted") } else { //org.apache.ofbiz.base.util.Debug.logInfo("hasEntityPermission is false:" , null) context.hasPermission = false request.setAttribute("hasPermission", false) request.setAttribute("permissionStatus", "") } }