123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- export default function access(initialState: { currentUser?: API.CurrentUser | undefined, menu?: any }) {
- const { currentUser, menu } = initialState || {};
- let obj = {}
- let bdObj = {}
-
- function btnMap(btns: any) {
- btns?.map((btn:any)=>{
- Object.keys(btn).forEach((key: string) => {
- if(key === 'name'){
- obj[btn[key]] = true
- }
- })
- })
- }
- function btnMaps(btns: any) {
- btns?.map((btn:any)=>{
- Object.keys(btn).forEach((key: string) => {
- if(key === 'name'){
- obj[btn[key]] = true
- }
- })
- })
- }
- function nameMap(menu: any[]) {
- menu?.forEach((item: any) => {
- let arr = item?.path?.split('/')
- if (Array.isArray(arr)) {
- obj[arr[arr?.length - 1]] = item?.roles?.indexOf(currentUser?.access) !== -1
- }
- if (item.routes) {
- nameMap(item.routes)
- }
- if (item?.routes?.length >0 && !item?.routes[0].path) {
- btnMap(item.routes)
- }
- })
- }
- function nameMaps(menu: any[]) {
- menu?.forEach((item: any) => {
- let arr = item?.path?.split('/')
- if (Array.isArray(arr)) {
- bdObj[arr[arr.length - 1]] = ['admin'].indexOf(currentUser?.access) !== -1
- }
- if (item.routes) {
- nameMaps(item.routes)
- }
- if (item?.routes?.length >0 && !item?.routes[0].path) {
- btnMaps(item.routes)
- }
- })
- }
- if (menu) {
- nameMap(menu.data)
- }
- return { ...bdObj, ...obj };
- }
|