左边栏Local菜单只在本地版jingrow中显示

This commit is contained in:
jingrow 2026-03-18 02:09:35 +08:00
parent c6da67971e
commit 69a83c1e0f
3 changed files with 23 additions and 6 deletions

View File

@ -21,6 +21,7 @@ export interface WorkspaceSidebarResponse {
pages: WorkspacePage[]
has_access: boolean
has_create_access: boolean
is_local?: boolean // True if running in jlocal environment
}
/**
@ -48,7 +49,8 @@ export const getWorkspaceSidebarItems = async (): Promise<WorkspaceSidebarRespon
return {
pages: data.pages || [],
has_access: data.has_access || false,
has_create_access: data.has_create_access || false
has_create_access: data.has_create_access || false,
is_local: data.is_local || false
}
} catch (error: any) {
console.error('Failed to fetch workspace sidebar items:', error)

View File

@ -66,6 +66,9 @@ export const useMenuStore = defineStore('menu', () => {
const hasWorkspaceAccess = ref(false)
const hasCreateWorkspaceAccess = ref(false)
// jlocal environment flag - true if running in jlocal, false if in SaaS
const isLocal = ref(false)
// Editable workspace order (for sidebar drag sorting in edit mode)
const editableWorkspaceOrder = ref<AppMenuItem[]>([])
@ -186,6 +189,9 @@ export const useMenuStore = defineStore('menu', () => {
// Store access flags
hasWorkspaceAccess.value = response.has_access || false
hasCreateWorkspaceAccess.value = response.has_create_access || false
// Store jlocal flag
isLocal.value = response.is_local || false
// 直接使用后端返回的菜单数据
items.value = workspaceMenuItems
@ -220,7 +226,12 @@ export const useMenuStore = defineStore('menu', () => {
return items.value.filter(m => {
if (m.hidden) return false
// 权限驱动规则pagetype 类型的菜单仅在有 read 权限时显示
// Filter "Local" menu in SaaS version (only show in jlocal)
if (!isLocal.value && m.type === 'workspace' && m.label === 'Local') {
return false
}
// Permission driven rule: pagetype menu only visible with read permission
if (m.type === 'pagetype' && m.pagetype) {
const pagetypeName = m.pagetype
if (!permissionStore.canRead(pagetypeName)) {
@ -228,7 +239,7 @@ export const useMenuStore = defineStore('menu', () => {
}
}
// workspace 类型暂时不做细粒度 pagetype 检查,由 WorkspacePage 内部再过滤链接
// workspace type doesn't need fine-grained pagetype check, filtered by WorkspacePage internally
return true
})
})
@ -240,6 +251,7 @@ export const useMenuStore = defineStore('menu', () => {
workspaces,
hasWorkspaceAccess,
hasCreateWorkspaceAccess,
isLocal,
editableWorkspaceOrder,
addMenu,
updateMenu,

View File

@ -14,12 +14,15 @@ logger = logging.getLogger(__name__)
@jingrow.whitelist()
def get_workspace_sidebar_items(**kwargs):
"""Get workspace sidebar items - Forward to SaaS"""
"""Get workspace sidebar items - Forward to SaaS and add is_jlocal flag"""
resp = saas_post('/api/action/jingrow.desk.desktop.get_workspace_sidebar_items', json=kwargs)
if resp.status_code == 200:
return resp.json().get("message", {})
result = resp.json().get("message", {})
# Add is_local flag for jlocal frontend to filter menus
result['is_local'] = True
return result
logger.error(f"[get_workspace_sidebar_items] SaaS error: {resp.status_code}")
return {}
return {'is_local': True}
@jingrow.whitelist()