fix(core): fix permission checks for export workspace (#10401)
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user