| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import { TagDataTypeEnum } 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: 0 | 1): boolean => {
- if (type === TagDataTypeEnum.CLIENT) return roles.includes('client_edit_team_tags')
- if (type === TagDataTypeEnum.COMPANY) return roles.includes('company_edit_team_tags')
- return false
- }
- const validatePermByType = (type: string): boolean => {
- return roles.includes(type)
- }
- return {
- authRouteFilter,
- authPermDataFilter,
- canEditTag,
- validatePermByType
- }
- }
|