diff --git a/packages/server/src/sdk/app/permissions/index.ts b/packages/server/src/sdk/app/permissions/index.ts new file mode 100644 index 0000000000..ad78310bb5 --- /dev/null +++ b/packages/server/src/sdk/app/permissions/index.ts @@ -0,0 +1,32 @@ +import { + DocumentType, + PermissionLevel, + VirtualDocumentType, +} from "@budibase/types" +import { isViewID } from "../../../db/utils" + +type ResourceActionAllowedResult = + | { allowed: true } + | { + allowed: false + level: PermissionLevel + resourceType: DocumentType | VirtualDocumentType + } + +export async function resourceActionAllowed({ + resourceId, + level, +}: { + resourceId: string + level: PermissionLevel +}): Promise { + if (!isViewID(resourceId)) { + return { allowed: true } + } + + return { + allowed: false, + level, + resourceType: VirtualDocumentType.VIEW, + } +} diff --git a/packages/server/src/sdk/index.ts b/packages/server/src/sdk/index.ts index 85ac483c05..24eb1ebf3c 100644 --- a/packages/server/src/sdk/index.ts +++ b/packages/server/src/sdk/index.ts @@ -8,6 +8,7 @@ import { default as rows } from "./app/rows" import { default as users } from "./users" import { default as plugins } from "./plugins" import * as views from "./app/views" +import * as permissions from "./app/permissions" const sdk = { backups, @@ -20,6 +21,7 @@ const sdk = { queries, plugins, views, + permissions, } // default export for TS