Skip to content
On this page

所属模块

设置中心-权限管理

配置文件路径

/src/components/settings/views/auth/config.js

权限分类

BaseAuth

权限名称keycode
查看view1 << 1
编辑edit1 << 2
删除delete1 << 3

各模块权限清单

模块名称moduleName可供编辑的权限
首页homeview
联系人管理contact_managementBaseAuth
智能标签contact_segmentview
workflowcampaign_workflowview
会议campaign_conferenceview
微信看板platform_wechat_kanbanview
用户管理platform_wechat_usersview | edit
消息管理platform_wechat_messageview | edit
群发platform_wechat_groupSendview | edit
批量互动platform_wechat_batchInteractionview | edit
自定义菜单platform_wechat_selfMenuBaseAuth
自动回复platform_wechat_replyBaseAuth
素材管理platform_wechat_materialBaseAuth
小程序看板platform_miniprogram_kanbanview
小程序访客platform_miniprogram_visitorview
邮件platform_mailview
短信platform_messageview
企业微信platform_wwview
数据统计platform_callCenter_dashboardview
管理中心platform_callCenter_configview
通话记录platform_callCenter_callRecordview
回电计划platform_callCenter_callScheduleview
问卷material_questionnaireview
自定义微站material_minisite_customview
模板微站material_minisite_templateview
CMSmaterial_minisite_dataPoolview
着陆页material_landingpageview
直播material_webinarview
全员营销material_fullMarketingview
抽奖market_luckydrawview
数据看板market_membercenter_dashboardview
所有会员market_membercenter_managementview
会员审核market_membercenter_examineview
订单管理market_membercenter_ordersview
礼品管理market_membercenter_rulesview
会员体系market_membercenter_settingsview
通知设置market_membercenter_notificationview
裂变海报market_posterview
编辑小程序market_miniapp_Editview
资料中心market_miniapp_FileStorageview
员工管理market_miniapp_Managementview
版本管理market_miniapp_Versionsview
访客管理market_miniapp_Visitorview
业务流market_ticketview
礼品库market_giftview
证书market_certificateview
签到码market_signInCodeview
排行榜market_rankingview
机器人market_robotview
视频列表market_learning_videosview
课程管理market_learning_coursesview
数据统计market_learning_dashboardview
图片管理resource_imageBaseAuth
文档管理resource_documentBaseAuth
视频管理resource_videoBaseAuth
音频管理resource_audioBaseAuth
员工管理settings_staffview
应用账密settings_wesite-accountview
通知设置settings_notificationview
服务配置settings_intergrationview
系统标签system-tagBaseAuth

系统角色

  • 部门管理员
  • 部门成员

模块访问权限配置

  • 配置常量:AuthMap
    • 数据结构
js
{
	platform: {
        name: '营销平台',
        children: {
            wechat: {
                name: '微信公众号',
                children: {
                    kanban: {
                        name: '微信看板',
                        ...BaseAuth(),
                    },
					...some code
                }
            },
            miniprogram: {
                name: '微信小程序',
                ...BaseAuth()
            },
			...some code
        }
    },
	...some code
}```
- 匹配规则:!!#ff0000 键名需要一一包含在**route.path**里!!
⚠️Header菜单栏路由需要与模块权限名称匹配,否则会出现展示异常
- 新增配置代码示例
```js
// 包含platform&wechat&groupSend的path可以配置查看,例如path: '/platform/wechat/groupSend'
platform: {
        name: '营销平台',
        children: {
            wechat: {
                name: '微信公众号',
                children: {
				...some code
                    groupSend: {
                        name: '群发',
                        ...BaseAuth(),
                    }
				...some code

// 包含contact且包含management的path可以配置基础规则(查看/编辑/删除),例如path: '/contact/management/leads'
contact: {
        name: '联系人',
        children: {
            management: {
                name: '联系人管理',
                ...BaseAuth()
            }
        }
    }

模块内的权限调用和判断

路由配置(默认为查看权限)

import { Edit } from '@/components/settings/views/auth/config'
...
meta: {
		title: '新建互动',
		menuTitle: '新建互动',
		hidden: false,
		// 编辑权限才能访问
		auth: Edit.value
	}

忽略权限校验

js
meta:{
	...
	skip:true
}

403前的重定向尝试

当某个模块包含在其他模块内且它有自己的权限配置时,可进行重定向,一般配置在菜单栏导向的模块

js
meta:{
	...
	// 访问微站模块时如果为403结果,重定向到authAttempts中第一个能访问的模块
	authAttempts: ['/material/minisite/dataPool','/material/minisite/template']
}

vue指令:v-auth

  • 功能:直接调用指令展示/隐藏元素/组件
  • 参数
    • arg:
    • value:
html
<a-button v-auth:delete="module" type="danger">删除</a-button>

vue指令:v-auth-wrapper

  • 功能:直接调用指令禁用容器事件并降低不透明度
  • 参数
    • arg:
    • value:
html
<div v-auth-wrapper:edit="module">
	...
</div>

方法调用:hasAuth

  • 功能:调用方法判断是否具有某个模块的某项权限
  • 参数 hasAuth('{BaseAuth.key}', {moduleName})
js
import { hasAuth } from '@/directives/auth'
hasAuth('edit', this.module)

组件容器(适用于单一页面展示的页面含有不同权限,比如资源管理)

vue
//template
<PageErrorVue :is-allowed="isPathAllowed('image')" :show-button="false">
     //..这里面放要展示的内容
</PageErrorVue>
//script
import { isPathAllowed } from '@/permission'
import PageErrorVue from '@/components/exceptions/PageError.vue'

module名称定义和引用方式

为了代码的可维护和一致性,先规定配置module的方式

  • 定义 在各模块的路由文件上方配置权限名称,以微信模块举例
js
// router/platform.js
export const WechatUsersModule = 'platform_wechat_users'
export const WechatMessageModule = 'platform_wechat_message'
export const WechatGroupSendModule = 'platform_wechat_groupSend'
export const WechatBatchInteractionModule = 'platform_wechat_batchInteraction'
export const WechatSelfMenuModule = 'platform_wechat_selfMenu'
export const WechatReplyModule = 'platform_wechat_reply'
export const WechatMaterialModule = 'platform_wechat_material'
  • 本模块组件引用
js
// router/platform.js
{
	path: '/platform/wechat/users/management',
	...省略部分代码
	meta: {
		...省略部分代码
		// 在此处注入,组件通过route.meta.module引用
		module: WechatUsersModule
	}
}
  • 其他组件引用
js
import {WechatUsersModule} from '@/router/routers/platform'

全局无权限错误提示

参数:(403,{BaseAuth.key}, {moduleName})

js
this.$requestWarning(403, 'view', 'resource_image')