import { ProjectRole, Role } from './enums' export const NOCO = 'noco' export const SYSTEM_COLUMNS = ['id', 'title', 'created_at', 'updated_at'] export const BASE_URL = import.meta.env.NC_BACKEND_URL || (import.meta.env.NODE_ENV === 'production' ? '..' : 'http://localhost:8080') /** * Each permission value means the following * `*` - which is wildcard, means all permissions are allowed * `include` - which is an object, means only the permissions listed in the object are allowed * `exclude` - which is an object, means all permissions are allowed except the ones listed in the object * `undefined` or `{}` - which is the default value, means no permissions are allowed * */ export const rolePermissions = { // general role permissions [Role.Super]: '*', [Role.Admin]: {} as Record, [Role.Guest]: {} as Record, [Role.User]: { include: { projectCreate: true, projectActions: true, projectSettings: true, }, }, // Project role permissions [ProjectRole.Creator]: { exclude: { appStore: true, }, }, [ProjectRole.Owner]: { exclude: { appStore: true, }, }, [ProjectRole.Editor]: { include: { smartSheet: true, xcDatatableEditable: true, column: true, tableAttachment: true, tableRowUpdate: true, dataInsert: true, rowComments: true, gridViewOptions: true, sortSync: true, fieldsSync: true, gridColUpdate: true, filterSync: true, csvImport: true, apiDocs: true, projectSettings: true, newUser: false, }, }, [ProjectRole.Commenter]: { include: { smartSheet: true, column: true, rowComments: true, projectSettings: true, }, }, [ProjectRole.Viewer]: { include: { smartSheet: true, column: true, projectSettings: true, }, }, } as const