Valtimo documentation v1
Valtimo 11
Valtimo 11
  • Introduction
    • Overview
    • Architectural overview
    • Available modules
      • Dashboards
      • Documents
      • Form flow
      • Form links (deprecated)
      • Plugins
    • How to contribute
    • Style guide for contributing
  • Getting started
    • First dive into Valtimo
      • Start as Docker containers
      • Creating your own Valtimo implementation
    • Compatibility matrix
    • Components
      • Valtimo List
    • Configure database
    • Modules
      • Core
        • Audit
        • Authorization
        • Camunda
        • Case
        • Connector
        • Contract
        • Core
        • Dashboard
        • Document
        • Document generation
        • Exporter
        • Form
        • Form flow
        • Form link (deprecated)
        • Importer
        • Local document generation
        • Local mail
        • Mail
        • Mandrill
        • Milestones
        • Plugins
        • Outbox
          • Outbox RabbitMQ
        • Process document
        • Resource
        • Temporary resource storage
        • Test utils common
        • Value resolvers
        • Valtimo dependencies
        • Web
          • CORS
      • ZGW
        • Besluit
        • Besluiten API
        • Catalogi API
        • Contactmoment
        • Documenten API
        • Haalcentraal BRP
        • Klant
        • Notificaties API
        • Notificaties API Authentication
        • Objecten API
        • Objecten API Authentication
        • Object management
        • Objects API
        • Objecttypen API
        • OpenZaak
        • OpenZaak resource
        • Portaaltaak
        • SmartDocuments
        • Valtimo GZAC dependencies
        • Verzoek
        • Wordpress mail
        • Zaken API
    • Exchange
      • Building blocks
      • Process blueprints
  • Using Valtimo
    • Access control
      • Auto-deployment for access control
      • Configuring permissions
      • Configuring roles
      • Front-end access control
    • Case
      • Creating case settings
      • Case tabs
      • Exporting and importing case definitions
    • Dashboard
      • Auto deploying dashboards
      • Create dashboard
    • Documents
      • Assigning a user to a document
      • Automatic task assignment
      • Creating a document definition
      • Creating case settings
      • Custom case list columns
      • Custom case headers
      • How to link a process to a case
      • How to start a process for a case
      • Search fields
      • Case search
    • Forms
      • Creating FormIO forms in Valtimo
      • Interpolating data in Form.io
      • Configuring an Objecten API object form
    • Form flow
      • Creating a form flow definition
      • Creating a custom form flow component
    • Form links (deprecated)
      • How to refer to external data from a form
      • How to link a form to a task
    • Keycloak
      • Configuring Keycloak
    • Pending Changes mechanism
    • Plugins
      • Catalogi API plugin
      • Configuring plugins
      • SmartDocuments plugin
      • OpenZaak plugin
      • Documenten API plugin
      • Zaken API plugin
      • Object Token Auhentication Plugin
      • Objecten API Plugin
      • Objecttypen API Plugin
      • Portaaltaak Plugin
      • Exact Plugin
      • Verzoek Plugin
      • Besluiten Plugin
    • Process
      • System processes
      • Correlating messages
      • Job service
    • Process links
      • Creating a process link
      • Editing a process link
      • Unlinking a process link
    • Upload
      • Temporary file storage
      • Uploading to Documenten API with metadata
    • Web
      • Configure CORS in Valtimo
  • Extending Valtimo
    • Access control
      • Creating a resource
      • Creating a relation to another resource
    • Dashboard
      • Creating custom data sources
      • Creating custom display types
      • Widget translations
    • Document
      • Assigning and unassigning a user
      • Search fields
    • Forms
      • Creating a form field data resolver
    • Form flow
      • Whitelisting Spring beans for Form flow
    • Making Valtimo multi instance ready
    • Modals (external docs)
    • Creating a custom outbox message publisher
    • Plugins
      • Custom plugin definitions
    • Process
      • Whitelisting Spring beans for Camunda
    • Tabs
      • Customizing case details tabs
      • Customizing case list tabs
      • Setting extra tabs for Zaak object type
    • Integrating spring beans in a process
    • Creating a custom dashboard
    • Creating a custom value resolver
    • Security testing
  • References
    • Modules
      • Authorization
      • Outbox
      • Dashboard
      • Case
      • Core
        • ZonedLocalDateTimeDeserializer
      • Document
      • Form
      • Form flow
      • Form links (deprecated)
      • Object management
      • Value resolvers
    • User interface
      • Design philosophy
      • Carbon design system
      • v-button
      • Breadcrumbs
    • Feature toggles
    • Supported databases
    • Process beans
    • Content Security Policy (CSP)
    • Troubleshoot
  • Release notes
    • Release notes
    • 11.x.x
      • 11.3.3
        • Valtimo backend libraries
      • 11.3.2
        • Valtimo frontend libraries
      • 11.3.1
        • Valtimo frontend libraries
      • 11.3.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 11.2.2
        • Valtimo frontend libraries
      • 11.2.1
        • Valtimo frontend libraries
      • 11.2.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 11.1.6
        • Valtimo frontend libraries
      • 11.1.5
        • Valtimo frontend libraries
      • 11.1.4
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 11.1.1
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 11.1.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 11.0.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
        • Migration
    • 10.x.x
      • 10.8.5
        • Valtimo backend libraries
      • 10.8.4
        • Valtimo frontend libraries
      • 10.8.3
        • Valtimo backend libraries
      • 10.8.2
        • Valtimo frontend libraries
      • 10.8.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.7.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.6.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
        • Migration
      • 10.5.3
        • Valtimo backend libraries
      • 10.5.2
        • Valtimo backend libraries
      • 10.5.1
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.5.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
        • Migration
      • 10.4.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.3.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.2.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
      • 10.1.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
        • Migration
      • 10.0.1
        • Valtimo frontend libraries
      • 10.0.0
        • Valtimo backend libraries
        • Valtimo frontend libraries
        • Migration
    • 9.x.x
      • 9.26.2/5.15.2
        • Valtimo backend libraries (9.26.2)
        • Valtimo frontend libraries (5.15.2)
        • Migration
      • 9.26.1/5.15.1
        • Valtimo backend libraries (9.26.1)
        • Valtimo frontend libraries (5.15.1)
      • 9.26.0/5.15.0
        • Valtimo backend libraries (9.26.0)
        • Valtimo frontend libraries (5.15.0)
        • Migration
      • 9.25.0/5.14.0
        • Valtimo backend libraries (9.25.0)
        • Valtimo frontend libraries (5.14.0)
      • 9.24.0/5.13.0
        • Valtimo backend libraries (9.24.0)
        • Valtimo frontend libraries (5.13.0)
      • 9.23.0/5.12.0
        • Valtimo backend libraries (9.23.0)
        • Valtimo frontend libraries (5.12.0)
      • 9.22.0/5.11.0
        • Valtimo backend libraries (9.22.0)
        • Valtimo frontend libraries (5.11.0)
        • Migration
      • 9.21.0/5.10.0
        • Valtimo backend libraries (9.21.0)
        • Valtimo frontend libraries (5.10.0)
        • Migration
      • 9.20.0/5.9.1
        • Valtimo backend libraries (9.20.0)
        • Valtimo frontend libraries (5.9.1)
        • Migration
      • 9.19.0/5.8.0
        • Valtimo backend libraries (9.19.0)
        • Valtimo frontend libraries (5.8.0)
        • Migration
      • 9.18.0/5.6.0
        • Valtimo backend libraries (9.18.0)
        • Valtimo frontend libraries (5.6.0)
        • Migration
      • 9.17.0/5.5.0
        • Valtimo backend libraries (9.17.0)
        • Valtimo frontend libraries (5.5.0)
      • 9.16.0/5.4.0
        • Valtimo backend libraries (9.16.0)
        • Valtimo frontend libraries (5.4.0)
Powered by GitBook
On this page
  • How to create permissions
  • Permission structure
  • Exporting permissions
  • Deleting permissions
  • Examples
  • Expression permission with contains operator
  • Create case permissions
  • Create process instance permissions
  • User task candidate groups permissions
  • User task document property permissions
  1. Using Valtimo
  2. Access control

Configuring permissions

PreviousAuto-deployment for access controlNextConfiguring roles

Last updated 1 year ago

In order to allow users to perform certain actions, permissions have to be set up for a specific role. For information on how to configure roles, see .

How to create permissions

Creating permissions is done for a specific role. Assuming a role is present, clicking on that role in the Access control interface will allow permissions to be configured.

The image above shows all the permissions that have been configured for ROLE_USER. Here, permissions can be added, edited and removed. Since the list shown here is the full list of permissions for this role, removing a permission from the list and saving it will also result in the removal of that permission in Valtimo.

Permission structure

There are a lot of elements that can be specified for permissions. As an example, someone with ROLE_USER can have access to cases of type example-document-definition, or if that someone has been assigned to the case. The following two permissions are used to define this:

[
    {
        "resourceType": "com.ritense.document.domain.impl.JsonSchemaDocument",
        "action": "view_list",
        "conditions": [
            {
                "type": "field",
                "field": "documentDefinitionId.name",
                "operator": "==",
                "value": "example-document-definition"
            }
        ]
    },
    {
        "resourceType": "com.ritense.document.domain.impl.JsonSchemaDocument",
        "action": "view_list",
        "conditions": [
            {
                "type": "field",
                "field": "assigneeId",
                "operator": "==",
                "value": "${currentUserId}"
            }
        ]
    }
]

Going over each element:

Exporting permissions

Deleting permissions

Deleting permissions will also delete the accompanying role. Deleting roles will not delete the role in Keycloak.

Examples

Expression permission with contains operator

In the example below, the list_contains operator is used to check if a specific flower is present inside the JsonSchemaDocument. Where the JsonSchemaDocument content could look like this: {"flowers": ["lily", "rose", "daisy"]}.

If the flower 'rose' is present in the JsonSchemaDocument, any user with the role ROLE_USER will be able to view that document.

[
    {
        "resourceType": "com.ritense.document.domain.impl.JsonSchemaDocument",
        "action": "view_list",
        "roleKey": "ROLE_USER",
        "conditions": [
            {
                "type": "expression",
                "field": "content.content",
                "path": "$.flowers",
                "operator": "list_contains",
                "value": "rose",
                "clazz": "java.util.Collection"
            }
        ]
    }
]

Create case permissions

The following example demonstrates how to allow any user with ROLE_USER to create a case of type leningen. When trying to create a case, the case itself does not yet exist. So in order for conditions to be evaluated, they have to be defined based on the relation between the two resources,JsonSchemaDocument and JsonSchemaDocumentDefinition.

[
    {
        "resourceType": "com.ritense.document.domain.impl.JsonSchemaDocument",
        "action": "create",
        "roleKey": "ROLE_USER",
        "conditions": [
            {
                "type": "container",
                "resourceType": "com.ritense.document.domain.impl.JsonSchemaDocumentDefinition",
                "conditions": [
                    {
                        "type": "field",
                        "field": "id.name",
                        "operator": "==",
                        "value": "leningen"
                    }
                ]
            }
        ]
    }
]

Create process instance permissions

The example below shows how to allow users with ROLE_USER to create a process instance of process definition type GenericProces. When trying to create a process instance, the execution itself does not yet exist. So in order for conditions to be evaluated, they have to be defined based on the relation between the two resources, CamundaExecution and CamundaProcessDefinition.

[
    {
        "resourceType": "com.ritense.valtimo.camunda.domain.CamundaExecution",
        "action": "create",
        "roleKey": "ROLE_USER",
        "conditions": [
            {
                "type": "container",
                "resourceType": "com.ritense.valtimo.camunda.domain.CamundaProcessDefinition",
                "conditions": [
                    {
                        "type": "field",
                        "field": "key",
                        "operator": "==",
                        "value": "GeneriekProces"
                    }
                ]
            }
        ]
    }
]

User task candidate groups permissions

Access to a user task is usually controlled by setting the 'Candidate groups' to a role. To make sure that the user task candidate groups work together with PBAC, an additional permission should be set. The example below shows how that can be done.

[
    {
        "resourceType": "com.ritense.valtimo.camunda.domain.CamundaTask",
        "action": "view_list",
        "roleKey": "ROLE_USER",
        "conditions": [
            {
                "type": "container",
                "resourceType": "com.ritense.valtimo.camunda.domain.CamundaIdentityLink",
                "conditions": [
                    {
                        "type": "field",
                        "field": "groupId",
                        "operator": "==",
                        "value": "ROLE_USER"
                    }
                ]
            }
        ]
    }
]

User task document property permissions

Access to a user task can be controlled based on properties inside the JsonSchemaDocument. The example below shows how that can be done.

[
    {
        "resourceType": "com.ritense.valtimo.camunda.domain.CamundaTask",
        "action": "view_list",
        "roleKey": "ROLE_USER",
        "conditions": [
            {
                "type": "container",
                "resourceType": "com.ritense.document.domain.impl.JsonSchemaDocument",
                "conditions": [
                    {
                        "type": "expression",
                        "field": "content.content",
                        "path": "$.city",
                        "operator": "==",
                        "value": "Amsterdam",
                        "clazz": "java.lang.String"
                    }
                ]
            }
        ]
    }
]

resourceType is required to specify what resource type this permission applies to. For information on the resource types Valtimo provides out of the box, see . For information on how to register custom resource types, see .

actionKey specifies the kind of action that is being done. In this case, viewing a list. For a list of actions, see .

conditions is a list describing all the conditions that apply to this particular permission. This requires knowledge of the code for the resource type, as fields can be specified in here correspond to fields inside the class. For information on the kinds of conditions that can be specified, as well as the fields, see . Permission is only granted when all conditions for that permission are met.

Exporting permissions for a specific role can be done here, or on the . When exporting permissions from the permission configuration page, be sure to save the configurations first if any edits have been made. Exporting will add a few more fields that are not necessary when configuring permissions via the UI, but are necessary when doing auto-deployment. For information on auto-deployment, see .

here
here
here
this page
list in bulk
this page
this page
configuring-permissions-example
exporting-permissions-example
deleting-permissions-example