79 lines
2.7 KiB
JavaScript
79 lines
2.7 KiB
JavaScript
/**
|
||
* 权限码常量(规范 §98-99 前端权限不能代替后端权限)
|
||
*
|
||
* 前端隐藏按钮只是用户体验,真正权限由后端校验。
|
||
* 即使用户手动访问 URL,无权限仍拒绝。
|
||
* 用户端小程序本身权限较少,主要场景:是否可发消息、是否可申请红娘、是否可报名活动。
|
||
*/
|
||
|
||
// 用户端功能权限码(用于前端按钮显隐与路由守卫)
|
||
exports.USER_PERMISSION = {
|
||
CAN_VIEW_DISCOVER: 'can_view_discover', // 进入找对象
|
||
CAN_RECEIVE_RECOMMENDATIONS: 'can_receive_recommendations', // 被系统推荐
|
||
CAN_LIKE: 'can_like', // 表达喜欢
|
||
CAN_CHAT: 'can_chat', // 发起聊天(需 mutual_match)
|
||
CAN_APPLY_ACTIVITY: 'can_apply_activity', // 报名活动
|
||
CAN_APPLY_MATCHMAKER: 'can_apply_matchmaker', // 申请红娘
|
||
CAN_REPORT: 'can_report', // 提交举报
|
||
CAN_VIEW_SENSITIVE_OWN: 'can_view_sensitive_own', // 查看本人敏感字段
|
||
};
|
||
|
||
// 后台/红娘端权限码(预留,规范 §93、§97)
|
||
// 后台路由绑定 permissionCode,按 currentOperator.permissions 动态生成菜单
|
||
exports.ADMIN_PERMISSION = {
|
||
// 用户与审核
|
||
USER_VIEW: 'user.view',
|
||
USER_REVIEW: 'user.review',
|
||
USER_SENSITIVE_VIEW: 'user.sensitive.view',
|
||
USER_BAN: 'user.ban',
|
||
|
||
// 匹配
|
||
MATCH_RULE_EDIT: 'match.rule.edit',
|
||
|
||
// 红娘
|
||
MATCHMAKER_SERVICE: 'matchmaker.service',
|
||
MATCHMAKER_ASSIGN: 'matchmaker.assign',
|
||
|
||
// 活动
|
||
ACTIVITY_VIEW: 'activity.view',
|
||
ACTIVITY_CREATE: 'activity.create',
|
||
ACTIVITY_EDIT: 'activity.edit',
|
||
ACTIVITY_REVIEW: 'activity.review',
|
||
ACTIVITY_CHECKIN: 'activity.checkin',
|
||
|
||
// 风控
|
||
RISK_REPORT_VIEW: 'risk.report.view',
|
||
RISK_REPORT_PROCESS: 'risk.report.process',
|
||
|
||
// 组织与权限
|
||
ORG_MANAGE: 'org.manage',
|
||
ROLE_MANAGE: 'role.manage',
|
||
OPERATOR_MANAGE: 'operator.manage',
|
||
|
||
// 系统
|
||
ANALYTICS_VIEW: 'analytics.view',
|
||
SETTING_MANAGE: 'setting.manage',
|
||
};
|
||
|
||
/**
|
||
* 判断当前权限列表是否包含指定权限码
|
||
* @param {string[]} permissions 当前用户/操作员权限列表
|
||
* @param {string} code 权限码
|
||
* @returns {boolean}
|
||
*/
|
||
exports.hasPermission = (permissions, code) => {
|
||
if (!Array.isArray(permissions) || !code) return false;
|
||
return permissions.indexOf(code) >= 0;
|
||
};
|
||
|
||
/**
|
||
* 判断当前权限列表是否包含任意一个权限码
|
||
* @param {string[]} permissions
|
||
* @param {string[]} codes
|
||
* @returns {boolean}
|
||
*/
|
||
exports.hasAnyPermission = (permissions, codes) => {
|
||
if (!Array.isArray(permissions) || !Array.isArray(codes)) return false;
|
||
return codes.some((c) => permissions.indexOf(c) >= 0);
|
||
};
|