blob: 3b2cf42078c5dabffbf5c253e9c452da5df4ec78 [file] [log] [blame]
/*
* 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", "")
}
}