CASL-based authorization with role-based access control.
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';enum OrganizationMemberRole {
MEMBER = 'member',
VIEWER = 'viewer',
INTERACTIVE_VIEWER = 'interactive_viewer',
EDITOR = 'editor',
DEVELOPER = 'developer',
ADMIN = 'admin'
}enum ProjectMemberRole {
VIEWER = 'viewer',
INTERACTIVE_VIEWER = 'interactive_viewer',
EDITOR = 'editor',
DEVELOPER = 'developer',
ADMIN = 'admin'
}enum SpaceMemberRole {
VIEWER = 'viewer',
EDITOR = 'editor',
ADMIN = 'admin'
}