diff --git a/web/app/components/header/account-setting/members-page/index.tsx b/web/app/components/header/account-setting/members-page/index.tsx
index fb5bbbd8ad..a878582bd4 100644
--- a/web/app/components/header/account-setting/members-page/index.tsx
+++ b/web/app/components/header/account-setting/members-page/index.tsx
@@ -136,9 +136,12 @@ const MembersPage = () => {
{dayjs(Number((account.last_active_at || account.created_at)) * 1000).locale(locale === 'zh-Hans' ? 'zh-cn' : 'en').fromNow()}
- {isCurrentWorkspaceOwner && account.role === 'owner' && (
+ {isCurrentWorkspaceOwner && account.role === 'owner' && !systemFeatures.is_allow_transfer_workspace && (
setShowTransferOwnershipModal(true)}>
)}
+ {/* {isCurrentWorkspaceOwner && account.role === 'owner' && !systemFeatures.is_allow_transfer_workspace && (
+
{RoleMap[account.role] || RoleMap.normal}
+ )} */}
{isCurrentWorkspaceOwner && account.role !== 'owner' && (
)}
diff --git a/web/service/common.ts b/web/service/common.ts
index 700cd4bf51..01b9d51e84 100644
--- a/web/service/common.ts
+++ b/web/service/common.ts
@@ -131,6 +131,15 @@ export const deleteMemberOrCancelInvitation: Fetcher
(url)
}
+export const sendOwnerEmail = (memberID: string, body: { language?: string }) =>
+ post(`/workspaces/current/members/${memberID}/send-owner-transfer-confirm-email`, { body })
+
+export const verifyOwnerEmail = (body: { code: string; token: string }) =>
+ post('/workspaces/current/members/owner-transfer-check', { body })
+
+export const ownershipTransfer = (memberID: string, body: { token: string }) =>
+ post(`/workspaces/current/members/${memberID}/owner-transfer`, { body })
+
export const fetchFilePreview: Fetcher<{ content: string }, { fileID: string }> = ({ fileID }) => {
return get<{ content: string }>(`/files/${fileID}/preview`)
}
diff --git a/web/types/feature.ts b/web/types/feature.ts
index 5787c2661f..9a6598cada 100644
--- a/web/types/feature.ts
+++ b/web/types/feature.ts
@@ -39,6 +39,7 @@ export type SystemFeatures = {
enable_email_password_login: boolean
enable_social_oauth_login: boolean
is_allow_create_workspace: boolean
+ is_allow_transfer_workspace: boolean
is_allow_register: boolean
is_email_setup: boolean
license: License
@@ -74,6 +75,7 @@ export const defaultSystemFeatures: SystemFeatures = {
enable_email_password_login: false,
enable_social_oauth_login: false,
is_allow_create_workspace: false,
+ is_allow_transfer_workspace: false,
is_allow_register: false,
is_email_setup: false,
license: {