hku-class/miniprogram/utils/permissions.js
2026-05-13 00:36:39 +08:00

48 lines
1.4 KiB
JavaScript

const MODULE_MANAGE_PERMISSIONS = {
announcements: "announcement_manage",
schedule: "schedule_manage",
resources: "resource_manage",
fund: "fund_manage",
timeline: "timeline_manage",
votes: "vote_manage",
reading_corner: "reading_corner_manage"
};
const TEACHER_DEFAULT_PERMISSIONS = new Set([
"member_view",
"member_manage",
"committee_manage",
"announcement_manage",
"timeline_manage",
"vote_manage",
"schedule_manage",
"resource_manage",
"reading_corner_manage",
"assignment_manage",
"module_manage"
]);
function activeMembership(user, classId) {
if (!user) return null;
const memberships = Array.isArray(user.memberships) ? user.memberships : [];
return memberships.find((item) => item.class_id === classId) || user.active_membership || null;
}
function hasManagePermission(user, classId, moduleKey) {
const permission = MODULE_MANAGE_PERMISSIONS[moduleKey];
if (!permission || !user) return false;
if (user.role === "super_admin") return true;
const membership = activeMembership(user, classId);
const membershipPermissions = membership && Array.isArray(membership.class_permissions)
? membership.class_permissions
: [];
if (user.role === "teacher") {
return TEACHER_DEFAULT_PERMISSIONS.has(permission) || membershipPermissions.includes(permission);
}
return membershipPermissions.includes(permission);
}
module.exports = {
hasManagePermission
};