Files

79 lines
2.7 KiB
JavaScript
Raw Permalink Normal View History

2026-09-09 22:05:00 +08:00
/**
* 权限码常量(规范 §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);
};