diff --git a/api/services/account_service.py b/api/services/account_service.py index cead5e9c9a..3fcfc8cf8a 100644 --- a/api/services/account_service.py +++ b/api/services/account_service.py @@ -604,6 +604,7 @@ class RegisterService: provider: Optional[str] = None, language: Optional[str] = None, status: Optional[AccountStatus] = None, + is_invite_member: Optional[bool] = False, ) -> Account: db.session.begin_nested() """Register account""" @@ -617,12 +618,15 @@ class RegisterService: if open_id is not None or provider is not None: AccountService.link_account_integrate(provider, open_id, account) if dify_config.EDITION != "SELF_HOSTED": - tenant = TenantService.create_tenant(f"{account.name}'s Workspace") + should_create_workspace = not is_invite_member or ( + is_invite_member and dify_config.ALLOW_CREATE_WORKSPACE + ) - TenantService.create_tenant_member(tenant, account, role="owner") - account.current_tenant = tenant - - tenant_was_created.send(tenant) + if should_create_workspace: + tenant = TenantService.create_tenant(f"{account.name}'s Workspace") + TenantService.create_tenant_member(tenant, account, role="owner") + account.current_tenant = tenant + tenant_was_created.send(tenant) db.session.commit() except Exception as e: @@ -643,7 +647,9 @@ class RegisterService: TenantService.check_member_permission(tenant, inviter, None, "add") name = email.split("@")[0] - account = cls.register(email=email, name=name, language=language, status=AccountStatus.PENDING) + account = cls.register( + email=email, name=name, language=language, status=AccountStatus.PENDING, is_invite_member=True + ) # Create new tenant member for invited tenant TenantService.create_tenant_member(tenant, account, role) TenantService.switch_tenant(account, tenant.id)