mirror of
https://github.com/APIParkLab/APIPark.git
synced 2026-06-12 18:11:34 +08:00
Merge remote-tracking branch 'origin/main' into feature/permit
This commit is contained in:
@@ -121,7 +121,6 @@ const generateTree = (
|
||||
return loop(dataSource);
|
||||
},[dataSource, state.language, searchWord])
|
||||
|
||||
console.log(dataSource)
|
||||
|
||||
const getInitExpandKeys = (data:T[], expandKeys:string[] = [])=>{
|
||||
data.forEach((item)=>{
|
||||
|
||||
@@ -276,252 +276,252 @@ export const PERMISSION_DEFINITION = [
|
||||
},
|
||||
"team.service.api_doc.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.api_doc.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.view_all","team.service.api_doc.view"] }]
|
||||
}
|
||||
},
|
||||
"team.service.api_doc.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.api_doc.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.api_doc.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.api_doc.edit": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.api_doc.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.api_doc.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.service_intro.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.service_intro.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.view_all","team.service.service_intro.view"] }]
|
||||
}
|
||||
},
|
||||
"team.service.service_intro.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.service_intro.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.service_intro.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.service_intro.edit": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.service_intro.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.service_intro.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.api_doc.import": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.api_doc.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.api_doc.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.router.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.api.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.view_all","team.service.api.view"] }]
|
||||
}
|
||||
},
|
||||
"team.service.router.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.api.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.api.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.router.edit": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.api.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.api.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.router.delete": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.api.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.api.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.upstream.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.upstream.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.view_all","team.service.upstream.view"] }]
|
||||
}
|
||||
},
|
||||
"team.service.upstream.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.upstream.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.upstream.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.upstream.edit": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.upstream.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.upstream.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.upstream.delete": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.upstream.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.upstream.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.release.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.release.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.view_all","team.service.release.view"] }]
|
||||
}
|
||||
},
|
||||
"team.service.release.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.release.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.release.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.release.online": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.release.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.release.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.release.stop": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.release.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.release.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.release.cancel": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.release.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.release.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.release.rollback": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.release.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.release.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.release.delete": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.release.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.release.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.release.approval": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.release.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.release.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.subscription.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.subscription.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.view_all","team.service.subscription.view"] }]
|
||||
}
|
||||
},
|
||||
"team.service.subscription.approval": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.subscription.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.subscription.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.subscription.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.subscription.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.subscription.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.subscription.delete": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.service.subscription.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.service.subscription.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.service.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.service.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","system.workspace.service.view_all","team.team.service.view"] }]
|
||||
}
|
||||
},
|
||||
"team.service.service.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.service.manager","team.service.service.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.team.service.manager","team.service.service.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.service.edit": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.service.manager","team.service.service.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.team.service.manager","team.service.service.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.service.service.delete": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.service.manager","team.service.service.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.service.manager_all","team.team.service.manager","team.service.service.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.application.subscription.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.consumer.subscription.view_subscribed_service"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.view_all","team.consumer.subscription.view_subscribed_service"] }]
|
||||
}
|
||||
},
|
||||
"team.application.subscription.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.consumer.subscription.subscribe"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al","team.consumer.subscription.subscribe"] }]
|
||||
}
|
||||
},
|
||||
"team.application.subscription.edit": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.consumer.subscription.manager_subscribed_services"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al","team.consumer.subscription.manager_subscribed_services"] }]
|
||||
}
|
||||
},
|
||||
"team.application.subscription.delete": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.consumer.subscription.manager_subscribed_services"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al","team.team.consumer.subscription.manager_subscribed_services"] }]
|
||||
}
|
||||
},
|
||||
"team.application.application.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.consumer.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.view_all","team.team.consumer.view"] }]
|
||||
}
|
||||
},
|
||||
"team.application.application.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ['team.team.consumer.manager',"team.consumer.application.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al",'team.team.consumer.manager',"team.consumer.application.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.application.application.edit": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ['team.team.consumer.manager',"team.consumer.application.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al",'team.team.consumer.manager',"team.consumer.application.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.application.application.delete": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ['team.team.consumer.manager',"team.consumer.application.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al",'team.team.consumer.manager',"team.consumer.application.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.consumer.authorization.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.consumer.authorization.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al","system.workspace.application.view_all","team.consumer.authorization.view"] }]
|
||||
}
|
||||
},
|
||||
"team.application.authorization.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.consumer.authorization.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al","team.consumer.authorization.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.application.authorization.edit": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.consumer.authorization.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al","team.consumer.authorization.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.application.authorization.delete": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.consumer.authorization.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al","team.consumer.authorization.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.application.authorization.cancelSubApply": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.consumer.authorization.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al","team.consumer.authorization.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.application.authorization.cancelSub": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.consumer.authorization.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.application.manager_al","team.consumer.authorization.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.team.team.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.team.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.team.view_all","team.team.team.view"] }]
|
||||
}
|
||||
},
|
||||
"team.team.team.edit": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.team.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.team.manager","team.team.team.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.team.member.view": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.member.view"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.team.view_all","team.team.member.view"] }]
|
||||
}
|
||||
},
|
||||
"team.team.member.add": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.member.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.team.manager","team.team.member.manager"] }]
|
||||
}
|
||||
},
|
||||
"team.team.member.edit": {
|
||||
"granted": {
|
||||
"anyOf": [{ "backend": ["team.team.member.manager"] }]
|
||||
"anyOf": [{ "backend": ["system.workspace.team.manager","team.team.member.manager"] }]
|
||||
}
|
||||
},
|
||||
"project.mySystem.topology.view": {
|
||||
|
||||
@@ -13,10 +13,15 @@ export const checkAccess:(access:AccessDataType, accessData:Map<string,string[]>
|
||||
return false
|
||||
}
|
||||
const neededBackendAccessArr = PERMISSION_DEFINITION[0]?.[access]?.granted?.anyOf[0].backend || []
|
||||
return accessData?.has(accLevel)&& accessData.get(accLevel)!.length > 0 ? hasIntersection(neededBackendAccessArr, accessData.get(accLevel)!) : false
|
||||
let accessSet = new Set(accessData.get('system'))
|
||||
if(accLevel === 'team'){
|
||||
accessSet = new Set(Array.from(accessSet).concat(accessData?.get('team') || []))
|
||||
}
|
||||
return accessSet!.size > 0 ? hasIntersection(neededBackendAccessArr, accessSet) : false
|
||||
}
|
||||
|
||||
const hasIntersection = (arr1:string[], arr2:string[])=> {
|
||||
const hasIntersection = (arr1:string[], set1:Set<string>)=> {
|
||||
const arr2 = Array.from(set1)
|
||||
const set = new Set(arr1.length > arr2.length ? arr2:arr1)
|
||||
const arr = arr1.length > arr2.length ? arr1:arr2
|
||||
for (const item of arr) {
|
||||
|
||||
@@ -84,19 +84,22 @@ const AiServiceInsidePage:FC = ()=> {
|
||||
const filterMenu = (menu:MenuItemGroupType<MenuItemType>[])=>{
|
||||
const newMenu = cloneDeep(menu)
|
||||
return newMenu!.filter((m:MenuItemGroupType )=>{
|
||||
if(m.children && m.children.length > 0){
|
||||
if(m&&m.children && m.children.length > 0){
|
||||
m.children = m.children.filter(
|
||||
(c)=>(c&&(c as MenuItemType&{access:string} ).access ?
|
||||
(c)=>{
|
||||
if(!c) return false
|
||||
return (((c as MenuItemType&{access:string} ).access ?
|
||||
checkPermission((c as MenuItemType&{access:string} ).access as keyof typeof PERMISSION_DEFINITION[0]):
|
||||
true))
|
||||
true))})
|
||||
}
|
||||
return m.children && m.children.length > 0
|
||||
})
|
||||
}
|
||||
const filteredMenu = filterMenu(SYSTEM_PAGE_MENU_ITEMS as MenuItemGroupType<MenuItemType>[])
|
||||
setActiveMenu((pre)=>{
|
||||
return pre ?? 'route'
|
||||
})
|
||||
const menu = activeMenu ?? filteredMenu[0]?.children ? filteredMenu[0]?.children?.[0]?.key : filteredMenu[0]?.key
|
||||
if(menu && currentUrl.split('/')[-1] !== menu){
|
||||
navigateTo(`/service/${teamId}/aiInside/${serviceId}/${menu}`)
|
||||
}
|
||||
return filteredMenu || []
|
||||
},[accessData,accessInit, SYSTEM_PAGE_MENU_ITEMS])
|
||||
|
||||
|
||||
@@ -84,19 +84,20 @@ const SystemInsidePage:FC = ()=> {
|
||||
const filterMenu = (menu:MenuItemGroupType<MenuItemType>[])=>{
|
||||
const newMenu = cloneDeep(menu)
|
||||
return newMenu!.filter((m:MenuItemGroupType )=>{
|
||||
if(m.children && m.children.length > 0){
|
||||
if(m&&m.children && m.children.length > 0){
|
||||
m.children = m.children.filter(
|
||||
(c)=>(c&&(c as MenuItemType&{access:string} ).access ?
|
||||
(c)=>{
|
||||
if(!c) return false
|
||||
return (((c as MenuItemType&{access:string} ).access ?
|
||||
checkPermission((c as MenuItemType&{access:string} ).access as keyof typeof PERMISSION_DEFINITION[0]):
|
||||
true))
|
||||
true))})
|
||||
}
|
||||
return m.children && m.children.length > 0
|
||||
})
|
||||
}
|
||||
const filteredMenu = filterMenu(SYSTEM_PAGE_MENU_ITEMS as MenuItemGroupType<MenuItemType>[])
|
||||
setActiveMenu((pre)=>{
|
||||
return pre ?? 'route'
|
||||
})
|
||||
const menu = activeMenu ?? filteredMenu[0]?.children ? filteredMenu[0]?.children?.[0]?.key : filteredMenu[0]?.key
|
||||
if(menu && currentUrl.split('/')[-1] !== menu) navigateTo(`/service/${teamId}/inside/${serviceId}/${menu}`)
|
||||
return filteredMenu || []
|
||||
},[accessData,accessInit, SYSTEM_PAGE_MENU_ITEMS])
|
||||
|
||||
|
||||
@@ -89,10 +89,10 @@ const ServiceHubDetail = ()=>{
|
||||
|
||||
const getMySelectList = ()=>{
|
||||
setMySystemOptionList([])
|
||||
fetchData<BasicResponse<{ apps: SimpleSystemItem[] }>>('simple/apps/mine',{method:'GET'}).then(response=>{
|
||||
fetchData<BasicResponse<{ apps: EntityItem[] }>>('apps/can_subscribe',{method:'GET'}).then(response=>{
|
||||
const {code,data,msg} = response
|
||||
if(code === STATUS_CODE.SUCCESS){
|
||||
setMySystemOptionList(data.apps?.map((x:SimpleSystemItem)=>{return {
|
||||
setMySystemOptionList(data.apps?.map((x:EntityItem)=>{return {
|
||||
label:x.name, value:x.id
|
||||
}}))
|
||||
}else{
|
||||
|
||||
@@ -14,7 +14,9 @@ import { ManagementConfigFieldType } from "./ManagementConfig";
|
||||
import { useGlobalContext } from "@common/contexts/GlobalStateContext";
|
||||
import { $t } from "@common/locales";
|
||||
import { getItem } from "@common/utils/navigation";
|
||||
import { MenuItemType } from "antd/es/menu/interface";
|
||||
import { MenuItemGroupType, MenuItemType } from "antd/es/menu/interface";
|
||||
import { PERMISSION_DEFINITION } from "@common/const/permissions";
|
||||
import { cloneDeep } from "lodash-es";
|
||||
|
||||
export default function ManagementInsidePage(){
|
||||
const { message } = App.useApp()
|
||||
@@ -27,17 +29,35 @@ export default function ManagementInsidePage(){
|
||||
const [openKeys, setOpenKeys] = useState<string[]>([])
|
||||
const [loading, setLoading] = useState<boolean>(false)
|
||||
const {appName,setAppName} = useTenantManagementContext()
|
||||
const {getTeamAccessData,cleanTeamAccessData,state} = useGlobalContext()
|
||||
const {getTeamAccessData,cleanTeamAccessData,state,accessData,checkPermission,accessInit} = useGlobalContext()
|
||||
|
||||
const TENANT_MANAGEMENT_APP_MENU: MenuProps['items'] = useMemo(()=>[
|
||||
getItem($t('订阅的服务'), 'service'),
|
||||
getItem($t('访问授权'), 'authorization'),
|
||||
getItem($t('消费者管理'), 'setting'),
|
||||
getItem($t('订阅的服务'), 'service',undefined, undefined, undefined, 'team.application.subscription.view'),
|
||||
getItem($t('访问授权'), 'authorization',undefined, undefined, undefined, 'team.consumer.authorization.view'),
|
||||
getItem($t('消费者管理'), 'setting',undefined, undefined, undefined, 'team.application.application.view'),
|
||||
],[state.language])
|
||||
|
||||
|
||||
const menuData = useMemo(()=>{
|
||||
return TENANT_MANAGEMENT_APP_MENU
|
||||
},[])
|
||||
const filterMenu = (menu:MenuItemGroupType<MenuItemType>[])=>{
|
||||
const newMenu = cloneDeep(menu)
|
||||
return newMenu!.filter((m:MenuItemGroupType )=>{
|
||||
if(m&&m.children && m.children.length > 0){
|
||||
m.children = m.children.filter(
|
||||
(c)=>{
|
||||
if(!c) return false
|
||||
return (((c as MenuItemType&{access:string} ).access ?
|
||||
checkPermission((c as MenuItemType&{access:string} ).access as keyof typeof PERMISSION_DEFINITION[0]):
|
||||
true))})
|
||||
}
|
||||
return m.children && m.children.length > 0
|
||||
})
|
||||
}
|
||||
const filteredMenu = filterMenu(TENANT_MANAGEMENT_APP_MENU as MenuItemGroupType<MenuItemType>[])
|
||||
const menu = activeMenu ?? filteredMenu[0]?.children ? filteredMenu[0]?.children?.[0]?.key : filteredMenu[0]?.key
|
||||
if(menu && currentUrl.split('/')[-1] !== menu) navigateTo(`/consumer/${teamId}/inside/${appId}/${menu}`)
|
||||
return filteredMenu || []
|
||||
},[accessData,accessInit, TENANT_MANAGEMENT_APP_MENU])
|
||||
|
||||
useEffect(()=>{
|
||||
setActiveMenu(currentUrl.split('/').pop() || 'service')
|
||||
|
||||
Reference in New Issue
Block a user