Files
danyang-match/miniapp/constants/permissionCodes.js
T

79 lines
2.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 权限码常量(规范 §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);
};