@@ -6,43 +6,20 @@ import { type NextRequest, NextResponse } from 'next/server'
66import { z } from 'zod'
77import { AuditAction , AuditResourceType , recordAudit } from '@/lib/audit/log'
88import { getSession } from '@/lib/auth'
9- import { hasWorkspaceAccessControlAccess } from '@/lib/billing'
9+ import { hasWorkspaceAccessControlAccess , isWorkspaceOnEnterprisePlan } from '@/lib/billing'
1010import {
1111 type PermissionGroupConfig ,
1212 parsePermissionGroupConfig ,
13+ permissionGroupConfigSchema ,
1314} from '@/lib/permission-groups/types'
1415import { checkWorkspaceAccess , hasWorkspaceAdminAccess } from '@/lib/workspaces/permissions/utils'
1516
1617const logger = createLogger ( 'WorkspacePermissionGroup' )
1718
18- const configSchema = z . object ( {
19- allowedIntegrations : z . array ( z . string ( ) ) . nullable ( ) . optional ( ) ,
20- allowedModelProviders : z . array ( z . string ( ) ) . nullable ( ) . optional ( ) ,
21- hideTraceSpans : z . boolean ( ) . optional ( ) ,
22- hideKnowledgeBaseTab : z . boolean ( ) . optional ( ) ,
23- hideTablesTab : z . boolean ( ) . optional ( ) ,
24- hideCopilot : z . boolean ( ) . optional ( ) ,
25- hideIntegrationsTab : z . boolean ( ) . optional ( ) ,
26- hideSecretsTab : z . boolean ( ) . optional ( ) ,
27- hideApiKeysTab : z . boolean ( ) . optional ( ) ,
28- hideInboxTab : z . boolean ( ) . optional ( ) ,
29- hideFilesTab : z . boolean ( ) . optional ( ) ,
30- disableMcpTools : z . boolean ( ) . optional ( ) ,
31- disableCustomTools : z . boolean ( ) . optional ( ) ,
32- disableSkills : z . boolean ( ) . optional ( ) ,
33- disableInvitations : z . boolean ( ) . optional ( ) ,
34- disablePublicApi : z . boolean ( ) . optional ( ) ,
35- hideDeployApi : z . boolean ( ) . optional ( ) ,
36- hideDeployMcp : z . boolean ( ) . optional ( ) ,
37- hideDeployA2a : z . boolean ( ) . optional ( ) ,
38- hideDeployChatbot : z . boolean ( ) . optional ( ) ,
39- hideDeployTemplate : z . boolean ( ) . optional ( ) ,
40- } )
41-
4219const updateSchema = z . object ( {
4320 name : z . string ( ) . trim ( ) . min ( 1 ) . max ( 100 ) . optional ( ) ,
4421 description : z . string ( ) . max ( 500 ) . nullable ( ) . optional ( ) ,
45- config : configSchema . optional ( ) ,
22+ config : permissionGroupConfigSchema . optional ( ) ,
4623 autoAddNewMembers : z . boolean ( ) . optional ( ) ,
4724} )
4825
@@ -85,6 +62,11 @@ export async function GET(
8562 return NextResponse . json ( { error : 'Forbidden' } , { status : 403 } )
8663 }
8764
65+ const entitled = await isWorkspaceOnEnterprisePlan ( workspaceId )
66+ if ( ! entitled ) {
67+ return NextResponse . json ( { error : 'Access Control is an Enterprise feature' } , { status : 403 } )
68+ }
69+
8870 const group = await loadGroupInWorkspace ( id , workspaceId )
8971
9072 if ( ! group ) {
0 commit comments