2023-08-21 16:56:40 +02:00
|
|
|
import {
|
|
|
|
DocumentType,
|
|
|
|
PermissionLevel,
|
|
|
|
VirtualDocumentType,
|
|
|
|
} from "@budibase/types"
|
|
|
|
import { isViewID } from "../../../db/utils"
|
2023-08-22 10:27:06 +02:00
|
|
|
import { features } from "@budibase/pro"
|
2023-08-21 16:56:40 +02:00
|
|
|
|
|
|
|
type ResourceActionAllowedResult =
|
|
|
|
| { allowed: true }
|
|
|
|
| {
|
|
|
|
allowed: false
|
|
|
|
level: PermissionLevel
|
|
|
|
resourceType: DocumentType | VirtualDocumentType
|
|
|
|
}
|
|
|
|
|
|
|
|
export async function resourceActionAllowed({
|
|
|
|
resourceId,
|
|
|
|
level,
|
|
|
|
}: {
|
|
|
|
resourceId: string
|
|
|
|
level: PermissionLevel
|
|
|
|
}): Promise<ResourceActionAllowedResult> {
|
|
|
|
if (!isViewID(resourceId)) {
|
|
|
|
return { allowed: true }
|
|
|
|
}
|
|
|
|
|
2023-08-22 10:27:06 +02:00
|
|
|
if (await features.isViewPermissionEnabled()) {
|
|
|
|
return { allowed: true }
|
|
|
|
}
|
|
|
|
|
2023-08-21 16:56:40 +02:00
|
|
|
return {
|
|
|
|
allowed: false,
|
|
|
|
level,
|
|
|
|
resourceType: VirtualDocumentType.VIEW,
|
|
|
|
}
|
|
|
|
}
|