From 21caedde72cf4236401e32124896e092d87602de Mon Sep 17 00:00:00 2001 From: Ong Chung Yau <33013947+chungyau97@users.noreply.github.com> Date: Tue, 10 Jun 2025 23:12:09 +0800 Subject: [PATCH] feature/single-organization-limit (#4620) feat: enforce single organization limit during registration --- packages/server/src/enterprise/services/account.service.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/server/src/enterprise/services/account.service.ts b/packages/server/src/enterprise/services/account.service.ts index 268326542..5cc1107e6 100644 --- a/packages/server/src/enterprise/services/account.service.ts +++ b/packages/server/src/enterprise/services/account.service.ts @@ -104,6 +104,11 @@ export class AccountService { } } + private async ensureOneOrganizationOnly(queryRunner: QueryRunner) { + const organizations = await this.organizationservice.readOrganization(queryRunner) + if (organizations.length > 0) throw new InternalFlowiseError(StatusCodes.BAD_REQUEST, 'You can only have one organization') + } + private async createRegisterAccount(data: AccountDTO, queryRunner: QueryRunner) { data = this.initializeAccountDTO(data) @@ -111,6 +116,7 @@ export class AccountService { switch (platform) { case Platform.OPEN_SOURCE: + await this.ensureOneOrganizationOnly(queryRunner) data.organization.name = OrganizationName.DEFAULT_ORGANIZATION data.organizationUser.role = await this.roleService.readGeneralRoleByName(GeneralRole.OWNER, queryRunner) data.workspace.name = WorkspaceName.DEFAULT_WORKSPACE @@ -196,6 +202,7 @@ export class AccountService { data.workspace.name = WorkspaceName.DEFAULT_PERSONAL_WORKSPACE data.workspaceUser.role = await this.roleService.readGeneralRoleByName(GeneralRole.PERSONAL_WORKSPACE, queryRunner) } else { + await this.ensureOneOrganizationOnly(queryRunner) data.organizationUser.role = await this.roleService.readGeneralRoleByName(GeneralRole.OWNER, queryRunner) data.workspace.name = WorkspaceName.DEFAULT_WORKSPACE data.workspaceUser.role = data.organizationUser.role