Class AbstractPlatformSecurityService
java.lang.Object
com.flowable.platform.security.service.AbstractPlatformSecurityService
- All Implemented Interfaces:
PermissionServiceRegistryAware
,org.springframework.beans.factory.Aware
- Direct Known Subclasses:
CasePermissionServiceImpl
,ExternalWorkerJobPermissionService
,PlatformAppService
,PlatformCaseDefinitionService
,PlatformCaseInstanceService
,PlatformCasePageService
,PlatformCommentService
,PlatformContentItemService
,PlatformFolderItemService
,PlatformProcessDefinitionService
,PlatformProcessInstanceService
,PlatformTaskService
,ProcessPermissionServiceImpl
,TaskPermissionServiceImpl
,WorkDefinitionService
,WorkIndexService
public abstract class AbstractPlatformSecurityService extends java.lang.Object implements PermissionServiceRegistryAware
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.String[]
additionalAdminUsers
protected static java.lang.String
CASE_PREFIX
protected org.flowable.cmmn.api.CmmnRepositoryService
cmmnRepositoryService
protected org.flowable.cmmn.api.CmmnRuntimeService
cmmnRuntimeService
protected org.flowable.cmmn.api.CmmnTaskService
cmmnTaskService
protected java.lang.String
defaultSecurityPolicyKey
protected SecurityPolicyModel
defaultSecurityPolicyModel
protected boolean
inspectEnabled
protected PermissionServiceRegistry
permissionServiceRegistry
protected com.flowable.core.spring.security.interceptor.PlatformSecurityInterceptor
platformSecurityInterceptor
protected PolicyRepositoryService
policyRepositoryService
protected static java.lang.String
PROCESS_PREFIX
protected org.flowable.engine.RepositoryService
repositoryService
protected org.flowable.engine.RuntimeService
runtimeService
protected static java.lang.String
SECURITY_POLICY_MODEL
protected static java.lang.String
TASK_PREFIX
protected org.flowable.engine.TaskService
taskService
-
Constructor Summary
Constructors Constructor Description AbstractPlatformSecurityService()
-
Method Summary
Modifier and Type Method Description protected boolean
currentUserHasAdminRights()
protected boolean
currentUserIsSuperAdmin()
protected java.util.List<java.lang.String>
fetchCasePermissionMappings(java.lang.String caseInstanceId, java.lang.String startUserId, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, org.flowable.cmmn.api.repository.CaseDefinition caseDefinition, java.lang.String tenantId)
protected java.util.List<java.lang.String>
fetchCasePermissionMappings(org.flowable.cmmn.api.runtime.CaseInstance caseInstance, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks)
protected SecurityPolicyModel
fetchCaseSecurityPolicyModel(org.flowable.cmmn.api.repository.CaseDefinition caseDefinition, java.lang.String tenantId)
protected java.util.List<java.lang.String>
fetchPermissions(SecurityPolicyModel securityPolicyModel, java.lang.String prefix, java.lang.String startUserId, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, java.lang.String userId, java.util.Set<java.lang.String> groupKeys)
protected java.util.List<java.lang.String>
fetchPermissionsForTask(SecurityPolicyModel securityPolicyModel, java.lang.String assignee, java.lang.String owner, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, java.lang.String userId, java.util.Set<java.lang.String> groupKeys)
protected java.util.List<java.lang.String>
fetchProcessPermissionMappings(java.lang.String processInstanceId, java.lang.String startUserId, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, org.flowable.engine.repository.ProcessDefinition processDefinition, java.lang.String tenantId)
protected java.util.List<java.lang.String>
fetchProcessPermissionMappings(org.flowable.engine.runtime.ProcessInstance processInstance, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks)
protected SecurityPolicyModel
fetchProcessSecurityPolicyModel(org.flowable.engine.repository.ProcessDefinition processDefinition, java.lang.String tenantId)
protected SecurityPolicyModel
fetchSecurityPolicyModel(org.flowable.bpmn.model.Process process, java.lang.String tenantId)
protected SecurityPolicyModel
fetchSecurityPolicyModel(org.flowable.cmmn.model.Case caze, java.lang.String tenantId)
protected SecurityPolicyModel
fetchSecurityPolicyModelForCaseInstance(java.lang.String caseInstanceId)
protected SecurityPolicyModel
fetchSecurityPolicyModelForProcessInstance(java.lang.String processInstanceId)
protected SecurityPolicyModel
fetchSecurityPolicyModelForTask(org.flowable.bpmn.model.FlowElement flowElement, org.flowable.bpmn.model.Process process, java.lang.String tenantId)
protected SecurityPolicyModel
fetchSecurityPolicyModelForTask(org.flowable.cmmn.model.PlanItemDefinition planItemDefinition, org.flowable.cmmn.model.Case caze, java.lang.String tenantId)
protected java.util.List<java.lang.String>
fetchTaskPermissionMappings(java.lang.String taskId, java.lang.String taskDefinitionKey, java.lang.String assignee, java.lang.String owner, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, org.flowable.cmmn.api.repository.CaseDefinition caseDefinition, java.lang.String tenantId)
protected java.util.List<java.lang.String>
fetchTaskPermissionMappings(java.lang.String taskId, java.lang.String taskDefinitionKey, java.lang.String assignee, java.lang.String owner, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, org.flowable.engine.repository.ProcessDefinition processDefinition, java.lang.String tenantId)
protected java.util.List<java.lang.String>
fetchTaskPermissionMappings(org.flowable.task.api.Task task, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks)
protected java.util.List<java.lang.String>
fetchTaskPermissionMappingsForCase(java.lang.String taskDefinitionKey, java.lang.String caseDefinitionId, java.lang.String assignee, java.lang.String owner, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, java.lang.String tenantId)
protected java.util.List<java.lang.String>
fetchTaskPermissionMappingsForProcess(java.lang.String taskDefinitionKey, java.lang.String processDefinitionId, java.lang.String assignee, java.lang.String owner, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, java.lang.String tenantId)
protected SecurityPolicyModel
fetchTaskSecurityPolicyModelForCase(java.lang.String taskDefinitionKey, java.lang.String caseDefinitionId, java.lang.String tenantId)
protected SecurityPolicyModel
fetchTaskSecurityPolicyModelForProcess(java.lang.String taskDefinitionKey, java.lang.String processDefinitionId, java.lang.String tenantId)
protected java.util.List<java.lang.String>
filterPermissionsForRole(java.lang.String role, java.lang.String prefix, SecurityPolicyModel securityPolicyModel)
protected java.lang.String
getCmmnExtensionElementValue(java.lang.String name, java.util.Map<java.lang.String,java.util.List<org.flowable.cmmn.model.ExtensionElement>> extensionElements)
protected java.util.Set<java.lang.String>
getCurrentGroupKeys()
protected java.lang.String
getCurrentTenantId()
protected java.lang.String
getCurrentUserId()
protected SecurityPolicyModel
getDefaultSecurityPolicyModel(java.lang.String tenantId)
protected java.lang.String
getExtensionElementValue(java.lang.String name, java.util.Map<java.lang.String,java.util.List<org.flowable.bpmn.model.ExtensionElement>> extensionElements)
protected SecurityPolicyModel
getSecurityPolicyModelByKey(java.lang.String securityPolicyModelKey, java.lang.String tenantId)
protected boolean
groupOrUserMatches(java.lang.String identityLinkUser, java.lang.String identityLinkGroup, java.lang.String userId, java.util.Set<java.lang.String> groupKeys)
protected boolean
groupOrUserMatches(org.flowable.identitylink.api.IdentityLinkInfo identityLink, java.lang.String userId, java.util.Set<java.lang.String> groupKeys)
protected boolean
hasAnyMatchingIdentityLink(java.util.Collection<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, java.lang.String userId, java.util.Set<java.lang.String> groupKeys)
protected boolean
hasAssigneeOrOwnerIdentityLink(java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks)
protected boolean
hasPermissionForEntityLinks(java.lang.String permission, java.util.List<org.flowable.entitylink.api.EntityLink> entityLinks, java.lang.String userId, java.util.Set<java.lang.String> groupKeys, java.lang.String tenantId)
protected boolean
hasPermissionForHistoricEntityLinks(java.lang.String permission, java.util.List<org.flowable.entitylink.api.history.HistoricEntityLink> entityLinks, java.lang.String userId, java.util.Set<java.lang.String> groupKeys, java.lang.String tenantId)
void
setPermissionServiceRegistry(PermissionServiceRegistry permissionServiceRegistry)
Set the PermissionRegistry that this object should use.protected java.lang.String
translatePermissionForScope(java.lang.String permission, java.lang.String scopeType)
-
Field Details
-
SECURITY_POLICY_MODEL
protected static final java.lang.String SECURITY_POLICY_MODEL- See Also:
- Constant Field Values
-
CASE_PREFIX
protected static final java.lang.String CASE_PREFIX- See Also:
- Constant Field Values
-
PROCESS_PREFIX
protected static final java.lang.String PROCESS_PREFIX- See Also:
- Constant Field Values
-
TASK_PREFIX
protected static final java.lang.String TASK_PREFIX- See Also:
- Constant Field Values
-
repositoryService
@Autowired(required=false) protected org.flowable.engine.RepositoryService repositoryService -
cmmnRepositoryService
@Autowired(required=false) protected org.flowable.cmmn.api.CmmnRepositoryService cmmnRepositoryService -
runtimeService
@Autowired(required=false) protected org.flowable.engine.RuntimeService runtimeService -
cmmnRuntimeService
@Autowired(required=false) protected org.flowable.cmmn.api.CmmnRuntimeService cmmnRuntimeService -
taskService
@Autowired(required=false) protected org.flowable.engine.TaskService taskService -
cmmnTaskService
@Autowired(required=false) protected org.flowable.cmmn.api.CmmnTaskService cmmnTaskService -
policyRepositoryService
-
platformSecurityInterceptor
@Autowired(required=false) protected com.flowable.core.spring.security.interceptor.PlatformSecurityInterceptor platformSecurityInterceptor -
additionalAdminUsers
@Value("${flowable.platform.idm.additional-admin-users:}") protected java.lang.String[] additionalAdminUsers -
permissionServiceRegistry
-
defaultSecurityPolicyKey
@Value("${flowable.policy.default-security-policy:basic-security-policy}") protected java.lang.String defaultSecurityPolicyKey -
defaultSecurityPolicyModel
-
inspectEnabled
@Value("${flowable.inspect.enabled:false}") protected boolean inspectEnabled
-
-
Constructor Details
-
AbstractPlatformSecurityService
public AbstractPlatformSecurityService()
-
-
Method Details
-
fetchCasePermissionMappings
protected java.util.List<java.lang.String> fetchCasePermissionMappings(org.flowable.cmmn.api.runtime.CaseInstance caseInstance, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks) -
fetchCasePermissionMappings
protected java.util.List<java.lang.String> fetchCasePermissionMappings(java.lang.String caseInstanceId, java.lang.String startUserId, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, org.flowable.cmmn.api.repository.CaseDefinition caseDefinition, java.lang.String tenantId) -
fetchCaseSecurityPolicyModel
protected SecurityPolicyModel fetchCaseSecurityPolicyModel(org.flowable.cmmn.api.repository.CaseDefinition caseDefinition, java.lang.String tenantId) -
fetchProcessPermissionMappings
protected java.util.List<java.lang.String> fetchProcessPermissionMappings(org.flowable.engine.runtime.ProcessInstance processInstance, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks) -
fetchProcessPermissionMappings
protected java.util.List<java.lang.String> fetchProcessPermissionMappings(java.lang.String processInstanceId, java.lang.String startUserId, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, org.flowable.engine.repository.ProcessDefinition processDefinition, java.lang.String tenantId) -
fetchProcessSecurityPolicyModel
protected SecurityPolicyModel fetchProcessSecurityPolicyModel(org.flowable.engine.repository.ProcessDefinition processDefinition, java.lang.String tenantId) -
fetchTaskPermissionMappingsForProcess
protected java.util.List<java.lang.String> fetchTaskPermissionMappingsForProcess(java.lang.String taskDefinitionKey, java.lang.String processDefinitionId, java.lang.String assignee, java.lang.String owner, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, java.lang.String tenantId) -
fetchTaskPermissionMappingsForCase
protected java.util.List<java.lang.String> fetchTaskPermissionMappingsForCase(java.lang.String taskDefinitionKey, java.lang.String caseDefinitionId, java.lang.String assignee, java.lang.String owner, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, java.lang.String tenantId) -
fetchTaskSecurityPolicyModelForProcess
protected SecurityPolicyModel fetchTaskSecurityPolicyModelForProcess(java.lang.String taskDefinitionKey, java.lang.String processDefinitionId, java.lang.String tenantId) -
fetchSecurityPolicyModelForProcessInstance
protected SecurityPolicyModel fetchSecurityPolicyModelForProcessInstance(java.lang.String processInstanceId) -
fetchTaskSecurityPolicyModelForCase
protected SecurityPolicyModel fetchTaskSecurityPolicyModelForCase(java.lang.String taskDefinitionKey, java.lang.String caseDefinitionId, java.lang.String tenantId) -
fetchSecurityPolicyModelForCaseInstance
protected SecurityPolicyModel fetchSecurityPolicyModelForCaseInstance(java.lang.String caseInstanceId) -
fetchTaskPermissionMappings
protected java.util.List<java.lang.String> fetchTaskPermissionMappings(org.flowable.task.api.Task task, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks) -
fetchTaskPermissionMappings
protected java.util.List<java.lang.String> fetchTaskPermissionMappings(java.lang.String taskId, java.lang.String taskDefinitionKey, java.lang.String assignee, java.lang.String owner, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, org.flowable.engine.repository.ProcessDefinition processDefinition, java.lang.String tenantId) -
fetchTaskPermissionMappings
protected java.util.List<java.lang.String> fetchTaskPermissionMappings(java.lang.String taskId, java.lang.String taskDefinitionKey, java.lang.String assignee, java.lang.String owner, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, org.flowable.cmmn.api.repository.CaseDefinition caseDefinition, java.lang.String tenantId) -
fetchPermissions
protected java.util.List<java.lang.String> fetchPermissions(SecurityPolicyModel securityPolicyModel, java.lang.String prefix, java.lang.String startUserId, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, java.lang.String userId, java.util.Set<java.lang.String> groupKeys) -
fetchPermissionsForTask
protected java.util.List<java.lang.String> fetchPermissionsForTask(SecurityPolicyModel securityPolicyModel, java.lang.String assignee, java.lang.String owner, java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, java.lang.String userId, java.util.Set<java.lang.String> groupKeys) -
hasAssigneeOrOwnerIdentityLink
protected boolean hasAssigneeOrOwnerIdentityLink(java.util.List<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks) -
filterPermissionsForRole
protected java.util.List<java.lang.String> filterPermissionsForRole(java.lang.String role, java.lang.String prefix, SecurityPolicyModel securityPolicyModel) -
fetchSecurityPolicyModel
protected SecurityPolicyModel fetchSecurityPolicyModel(org.flowable.cmmn.model.Case caze, java.lang.String tenantId) -
fetchSecurityPolicyModel
protected SecurityPolicyModel fetchSecurityPolicyModel(org.flowable.bpmn.model.Process process, java.lang.String tenantId) -
fetchSecurityPolicyModelForTask
protected SecurityPolicyModel fetchSecurityPolicyModelForTask(org.flowable.bpmn.model.FlowElement flowElement, org.flowable.bpmn.model.Process process, java.lang.String tenantId) -
fetchSecurityPolicyModelForTask
protected SecurityPolicyModel fetchSecurityPolicyModelForTask(org.flowable.cmmn.model.PlanItemDefinition planItemDefinition, org.flowable.cmmn.model.Case caze, java.lang.String tenantId) -
getCurrentGroupKeys
protected java.util.Set<java.lang.String> getCurrentGroupKeys() -
getCurrentUserId
protected java.lang.String getCurrentUserId() -
getCurrentTenantId
protected java.lang.String getCurrentTenantId() -
currentUserHasAdminRights
protected boolean currentUserHasAdminRights() -
currentUserIsSuperAdmin
protected boolean currentUserIsSuperAdmin() -
groupOrUserMatches
protected boolean groupOrUserMatches(org.flowable.identitylink.api.IdentityLinkInfo identityLink, java.lang.String userId, java.util.Set<java.lang.String> groupKeys) -
groupOrUserMatches
protected boolean groupOrUserMatches(java.lang.String identityLinkUser, java.lang.String identityLinkGroup, java.lang.String userId, java.util.Set<java.lang.String> groupKeys) -
hasAnyMatchingIdentityLink
protected boolean hasAnyMatchingIdentityLink(java.util.Collection<? extends org.flowable.identitylink.api.IdentityLinkInfo> identityLinks, java.lang.String userId, java.util.Set<java.lang.String> groupKeys) -
hasPermissionForEntityLinks
protected boolean hasPermissionForEntityLinks(java.lang.String permission, java.util.List<org.flowable.entitylink.api.EntityLink> entityLinks, java.lang.String userId, java.util.Set<java.lang.String> groupKeys, java.lang.String tenantId) -
hasPermissionForHistoricEntityLinks
protected boolean hasPermissionForHistoricEntityLinks(java.lang.String permission, java.util.List<org.flowable.entitylink.api.history.HistoricEntityLink> entityLinks, java.lang.String userId, java.util.Set<java.lang.String> groupKeys, java.lang.String tenantId) -
setPermissionServiceRegistry
Description copied from interface:PermissionServiceRegistryAware
Set the PermissionRegistry that this object should use.- Specified by:
setPermissionServiceRegistry
in interfacePermissionServiceRegistryAware
- Parameters:
permissionServiceRegistry
- to be used by this object
-
getSecurityPolicyModelByKey
protected SecurityPolicyModel getSecurityPolicyModelByKey(java.lang.String securityPolicyModelKey, java.lang.String tenantId) -
getDefaultSecurityPolicyModel
-
getCmmnExtensionElementValue
protected java.lang.String getCmmnExtensionElementValue(java.lang.String name, java.util.Map<java.lang.String,java.util.List<org.flowable.cmmn.model.ExtensionElement>> extensionElements) -
getExtensionElementValue
protected java.lang.String getExtensionElementValue(java.lang.String name, java.util.Map<java.lang.String,java.util.List<org.flowable.bpmn.model.ExtensionElement>> extensionElements) -
translatePermissionForScope
protected java.lang.String translatePermissionForScope(java.lang.String permission, java.lang.String scopeType)
-