diff --git a/packages/backend/src/core/RoleService.ts b/packages/backend/src/core/RoleService.ts index 2ffee69c21..faf80a5641 100644 --- a/packages/backend/src/core/RoleService.ts +++ b/packages/backend/src/core/RoleService.ts @@ -47,6 +47,7 @@ export type RolePolicies = { canSearchUsers: boolean; canUseTranslator: boolean; canHideAds: boolean; + canCreateChannel: boolean; driveCapacityMb: number; maxFileSizeMb: number; alwaysMarkNsfw: boolean; @@ -88,6 +89,7 @@ export const DEFAULT_POLICIES: RolePolicies = { canSearchUsers: true, canUseTranslator: true, canHideAds: false, + canCreateChannel: true, driveCapacityMb: 100, maxFileSizeMb: 30, alwaysMarkNsfw: false, diff --git a/packages/backend/src/models/json-schema/role.ts b/packages/backend/src/models/json-schema/role.ts index b9000152d4..eaed3ac710 100644 --- a/packages/backend/src/models/json-schema/role.ts +++ b/packages/backend/src/models/json-schema/role.ts @@ -224,6 +224,10 @@ export const packedRolePoliciesSchema = { type: 'boolean', optional: false, nullable: false, }, + canCreateChannel: { + type: 'boolean', + optional: false, nullable: false, + }, driveCapacityMb: { type: 'integer', optional: false, nullable: false, diff --git a/packages/backend/src/server/api/endpoints/channels/create.ts b/packages/backend/src/server/api/endpoints/channels/create.ts index 8d49b6fd0f..0536f7a775 100644 --- a/packages/backend/src/server/api/endpoints/channels/create.ts +++ b/packages/backend/src/server/api/endpoints/channels/create.ts @@ -22,6 +22,8 @@ export const meta = { kind: 'write:channels', + requiredRolePolicy: 'canCreateChannel', + limit: { duration: ms('1hour'), max: 10,