fix(core): fix permission checks for export workspace (#10401)

This commit is contained in:
JimmFly
2025-02-25 09:50:43 +08:00
committed by GitHub
parent 40104f2f87
commit abda70d2c8
2 changed files with 5 additions and 14 deletions

View File

@@ -4,12 +4,11 @@ import { Button } from '@affine/component/ui/button';
import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks'; import { useAsyncCallback } from '@affine/core/components/hooks/affine-async-hooks';
import { useSystemOnline } from '@affine/core/components/hooks/use-system-online'; import { useSystemOnline } from '@affine/core/components/hooks/use-system-online';
import { DesktopApiService } from '@affine/core/modules/desktop-api'; import { DesktopApiService } from '@affine/core/modules/desktop-api';
import { WorkspacePermissionService } from '@affine/core/modules/permissions';
import type { Workspace } from '@affine/core/modules/workspace'; import type { Workspace } from '@affine/core/modules/workspace';
import { useI18n } from '@affine/i18n'; import { useI18n } from '@affine/i18n';
import { universalId } from '@affine/nbstore'; import { universalId } from '@affine/nbstore';
import track from '@affine/track'; import track from '@affine/track';
import { useLiveData, useService } from '@toeverything/infra'; import { useService } from '@toeverything/infra';
import { useState } from 'react'; import { useState } from 'react';
interface ExportPanelProps { interface ExportPanelProps {
@@ -17,13 +16,6 @@ interface ExportPanelProps {
} }
export const DesktopExportPanel = ({ workspace }: ExportPanelProps) => { export const DesktopExportPanel = ({ workspace }: ExportPanelProps) => {
const workspacePermissionService = useService(
WorkspacePermissionService
).permission;
const isTeam = useLiveData(workspacePermissionService.isTeam$);
const isOwner = useLiveData(workspacePermissionService.isOwner$);
const isAdmin = useLiveData(workspacePermissionService.isAdmin$);
const t = useI18n(); const t = useI18n();
const [saving, setSaving] = useState(false); const [saving, setSaving] = useState(false);
const isOnline = useSystemOnline(); const isOnline = useSystemOnline();
@@ -63,10 +55,6 @@ export const DesktopExportPanel = ({ workspace }: ExportPanelProps) => {
} }
}, [desktopApi, isOnline, saving, t, workspace]); }, [desktopApi, isOnline, saving, t, workspace]);
if (isTeam && !isOwner && !isAdmin) {
return null;
}
return ( return (
<SettingRow name={t['Export']()} desc={t['Export Description']()}> <SettingRow name={t['Export']()} desc={t['Export Description']()}>
<Button <Button

View File

@@ -23,6 +23,9 @@ export const WorkspaceSettingStorage = ({
WorkspacePermissionService WorkspacePermissionService
).permission; ).permission;
const isTeam = useLiveData(workspacePermissionService.isTeam$); const isTeam = useLiveData(workspacePermissionService.isTeam$);
const isOwner = useLiveData(workspacePermissionService.isOwner$);
const canExport = !isTeam || isOwner;
return ( return (
<> <>
<SettingHeader <SettingHeader
@@ -46,7 +49,7 @@ export const WorkspaceSettingStorage = ({
</SettingWrapper> </SettingWrapper>
) : null} ) : null}
{BUILD_CONFIG.isElectron && ( {BUILD_CONFIG.isElectron && canExport && (
<SettingWrapper> <SettingWrapper>
<DesktopExportPanel workspace={workspace} /> <DesktopExportPanel workspace={workspace} />
</SettingWrapper> </SettingWrapper>