or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

authorization.mdcharts.mdcompiler.mdconditional-formatting.mddashboards.mddbt.mdee-features.mdexplore-fields.mdfilters.mdformatting.mdindex.mdmetric-queries.mdparameters.mdpivot.mdprojects-spaces.mdsql-runner.mdtemplating.mdtypes.mdutilities.mdvisualizations.mdwarehouse.md
tile.json

authorization.mddocs/

Authorization and Permissions

CASL-based authorization with role-based access control.

Core Functions

function defineUserAbility(
  user: Pick<LightdashUser, 'role' | 'organizationUuid' | 'userUuid' | 'roleUuid'>,
  projectProfiles: Pick<ProjectMemberProfile, 'projectUuid' | 'role' | 'userUuid' | 'roleUuid'>[],
  customRoleScopes?: Record<Role['roleUuid'], RoleWithScopes['scopes']>
): MemberAbility;

function getUserAbilityBuilder(args: UserAbilityBuilderArgs): AbilityBuilder<MemberAbility>;

function getScopes(options?: { isEnterprise?: boolean }): Scope[];

const JWT_HEADER_NAME = 'lightdash-embed-token';

Organization Roles

enum OrganizationMemberRole {
  MEMBER = 'member',
  VIEWER = 'viewer',
  INTERACTIVE_VIEWER = 'interactive_viewer',
  EDITOR = 'editor',
  DEVELOPER = 'developer',
  ADMIN = 'admin'
}

Project Roles

enum ProjectMemberRole {
  VIEWER = 'viewer',
  INTERACTIVE_VIEWER = 'interactive_viewer',
  EDITOR = 'editor',
  DEVELOPER = 'developer',
  ADMIN = 'admin'
}

Space Roles

enum SpaceMemberRole {
  VIEWER = 'viewer',
  EDITOR = 'editor',
  ADMIN = 'admin'
}