import { TagDataType } from './pages/Customer/Company/components/PersonLabel/const' // eslint-disable-next-line func-names export default function (initialState) { const { roles = [], currentUser = {}, permData = {} } = initialState || {} const authPermDataFilter = route => { if (currentUser.isAdmin) { return true } const name = route.path?.match(/\/(\w*)\//)?.[1] if (name && permData[name] && permData[name]?.length) { return true } return false } const authRouteFilter = route => { if (currentUser.isAdmin) { return true } if (roles.filter(r => r.endsWith('_access')).includes(`${route.name}_access`)) { if (route.validatePerm) { return authPermDataFilter(route) } return true } return false } /** 协作标签 */ const canEditTag = (type: TagDataType): boolean => { if (type === TagDataType.CLIENT) return roles.includes('client_edit_team_tags') if (type === TagDataType.COMPANY) return roles.includes('company_edit_team_tags') return false } const validatePermByType = (type: string): boolean => { return roles.includes(type) } return { authRouteFilter, authPermDataFilter, canEditTag, validatePermByType } }