Permissions handling in views

Overview

Airplane Views execute tasks (e.g. manually executed or in a task-backed component) according to the permissions of the current user. This means that views often don't need any additional permissions, provided that:
  • All sensitive data access is done through tasks, and
  • The backing tasks have properly configured permissions.
Tasks are treated differently depending on whether they are queries or mutations. Queries simply return data without producing side effects, and are the tasks passed as input to components like Table and Select. By contrast, mutations are designed to produce side effects, such as in Buttons backed by tasks or runbooks. The distinction matters for requesting execution—In the context of a view, only mutations can be requested.

Permission-aware rendering

The backend always ensures that the caller has the right permissions when a task is executed, but views also proactively check permissions and render according to the user's permissions/roles.

Can execute

Views are rendered as normal.

Can request but not execute

View components that are backed by task queries don't render any data, and instead display an error message saying that permissions are missing. Buttons are rendered as normal, but clicking on a button opens up a dialog that enables users to request that task or runbook.

Can neither request nor execute

View components that are backed by task queries don't render any data, and instead display an error message saying that permissions are missing. Buttons are disabled.