permissions.js
2.92 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/**
* 权限配置中心
*
* @description 统一管理应用中的权限类型和提示文案
* @module config/permissions
* @author Claude Code
* @created 2026-02-13
*/
/**
* 权限类型枚举
* @description 定义应用中的各种权限类型
* @enum {string}
*
* @example
* import { PermissionType } from '@/config/permissions'
*
* if (needLogin) {
* checkPermission(PermissionType.LOGIN, callback)
* }
*/
export const PermissionType = {
/** 登录权限 */
LOGIN: 'login',
/** VIP 权限(预留) */
VIP: 'vip',
/** 实名认证权限(预留) */
VERIFIED: 'verified'
}
/**
* 权限提示文案配置
* @description 为每种权限类型配置对应的提示文案
*
* @example
* import { PermissionMessages } from '@/config/permissions'
*
* const message = PermissionMessages[PermissionType.LOGIN]
* console.log(message.content) // "登录后即可查看完整内容"
*/
export const PermissionMessages = {
/** 登录权限提示 */
[PermissionType.LOGIN]: {
/** 弹窗标题 */
title: '温馨提示',
/** 弹窗内容 */
content: '登录后即可查看完整内容',
/** 确认按钮文案 */
confirmText: '去登录',
/** 取消按钮文案 */
cancelText: '暂不登录'
},
/** VIP 权限提示(预留) */
[PermissionType.VIP]: {
title: 'VIP 专享',
content: '此功能仅对 VIP 用户开放',
confirmText: '开通 VIP',
cancelText: '取消'
},
/** 实名认证权限提示(预留) */
[PermissionType.VERIFIED]: {
title: '需要实名认证',
content: '请先完成实名认证',
confirmText: '去认证',
cancelText: '取消'
}
}
export const ActionPermissionMap = {
view_material: {
permission_type: PermissionType.LOGIN,
options: {}
}
}
/**
* 获取权限提示配置
* @description 根据权限类型获取对应的提示配置,支持自定义覆盖
* @param {string} permissionType - 权限类型
* @param {Object} customOptions - 自定义配置选项
* @returns {Object} 合并后的权限配置
*
* @example
* const config = getPermissionConfig(PermissionType.LOGIN, {
* content: '请先登录后查看资料详情'
* })
*/
export function getPermissionConfig(permissionType, customOptions = {}) {
const defaultConfig = PermissionMessages[permissionType]
if (!defaultConfig) {
console.warn(`[Permission] 未找到权限类型配置: ${permissionType}`)
return {
title: '提示',
content: '您没有相应的权限',
confirmText: '确定',
cancelText: '取消'
}
}
return {
...defaultConfig,
...customOptions
}
}
export function getActionPermissionConfig(action, customOptions = {}) {
const actionConfig = ActionPermissionMap[action] || {
permission_type: PermissionType.LOGIN,
options: {}
}
return {
permission_type: actionConfig.permission_type,
options: {
...actionConfig.options,
...customOptions
}
}
}