左边栏Local菜单只在本地版jingrow中显示
This commit is contained in:
parent
c6da67971e
commit
69a83c1e0f
@ -21,6 +21,7 @@ export interface WorkspaceSidebarResponse {
|
|||||||
pages: WorkspacePage[]
|
pages: WorkspacePage[]
|
||||||
has_access: boolean
|
has_access: boolean
|
||||||
has_create_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 {
|
return {
|
||||||
pages: data.pages || [],
|
pages: data.pages || [],
|
||||||
has_access: data.has_access || false,
|
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) {
|
} catch (error: any) {
|
||||||
console.error('Failed to fetch workspace sidebar items:', error)
|
console.error('Failed to fetch workspace sidebar items:', error)
|
||||||
|
|||||||
@ -66,6 +66,9 @@ export const useMenuStore = defineStore('menu', () => {
|
|||||||
const hasWorkspaceAccess = ref(false)
|
const hasWorkspaceAccess = ref(false)
|
||||||
const hasCreateWorkspaceAccess = 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)
|
// Editable workspace order (for sidebar drag sorting in edit mode)
|
||||||
const editableWorkspaceOrder = ref<AppMenuItem[]>([])
|
const editableWorkspaceOrder = ref<AppMenuItem[]>([])
|
||||||
|
|
||||||
@ -186,6 +189,9 @@ export const useMenuStore = defineStore('menu', () => {
|
|||||||
// Store access flags
|
// Store access flags
|
||||||
hasWorkspaceAccess.value = response.has_access || false
|
hasWorkspaceAccess.value = response.has_access || false
|
||||||
hasCreateWorkspaceAccess.value = response.has_create_access || false
|
hasCreateWorkspaceAccess.value = response.has_create_access || false
|
||||||
|
|
||||||
|
// Store jlocal flag
|
||||||
|
isLocal.value = response.is_local || false
|
||||||
|
|
||||||
// 直接使用后端返回的菜单数据
|
// 直接使用后端返回的菜单数据
|
||||||
items.value = workspaceMenuItems
|
items.value = workspaceMenuItems
|
||||||
@ -220,7 +226,12 @@ export const useMenuStore = defineStore('menu', () => {
|
|||||||
return items.value.filter(m => {
|
return items.value.filter(m => {
|
||||||
if (m.hidden) return false
|
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) {
|
if (m.type === 'pagetype' && m.pagetype) {
|
||||||
const pagetypeName = m.pagetype
|
const pagetypeName = m.pagetype
|
||||||
if (!permissionStore.canRead(pagetypeName)) {
|
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
|
return true
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
@ -240,6 +251,7 @@ export const useMenuStore = defineStore('menu', () => {
|
|||||||
workspaces,
|
workspaces,
|
||||||
hasWorkspaceAccess,
|
hasWorkspaceAccess,
|
||||||
hasCreateWorkspaceAccess,
|
hasCreateWorkspaceAccess,
|
||||||
|
isLocal,
|
||||||
editableWorkspaceOrder,
|
editableWorkspaceOrder,
|
||||||
addMenu,
|
addMenu,
|
||||||
updateMenu,
|
updateMenu,
|
||||||
|
|||||||
@ -14,12 +14,15 @@ logger = logging.getLogger(__name__)
|
|||||||
|
|
||||||
@jingrow.whitelist()
|
@jingrow.whitelist()
|
||||||
def get_workspace_sidebar_items(**kwargs):
|
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)
|
resp = saas_post('/api/action/jingrow.desk.desktop.get_workspace_sidebar_items', json=kwargs)
|
||||||
if resp.status_code == 200:
|
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}")
|
logger.error(f"[get_workspace_sidebar_items] SaaS error: {resp.status_code}")
|
||||||
return {}
|
return {'is_local': True}
|
||||||
|
|
||||||
|
|
||||||
@jingrow.whitelist()
|
@jingrow.whitelist()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user