budibase/packages/backend-core/src/middleware/builderOnly.ts

21 lines
584 B
TypeScript
Raw Normal View History

import { UserCtx } from "@budibase/types"
import { isBuilder, hasBuilderPermissions } from "../users"
import { getAppId } from "../context"
import env from "../environment"
export default async (ctx: UserCtx, next: any) => {
const appId = getAppId()
const builderFn = env.isWorker()
? hasBuilderPermissions
: env.isApps()
? isBuilder
: undefined
if (!builderFn) {
throw new Error("Service name unknown - middleware inactive.")
}
if (!ctx.internal && !isBuilder(ctx.user, appId)) {
2022-02-10 00:16:24 +01:00
ctx.throw(403, "Builder user only endpoint.")
}
return next()
}