左边栏Local菜单只在本地版jingrow中显示
This commit is contained in:
parent
c6da67971e
commit
69a83c1e0f
@ -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)
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user