hku-class/miniprogram/utils/permissions.js
2026-05-12 23:10:05 +08:00

43 lines
1.2 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) {
return user?.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 membershipPermissions = activeMembership(user, classId)?.class_permissions || [];
if (user.role === "teacher") {
return TEACHER_DEFAULT_PERMISSIONS.has(permission) || membershipPermissions.includes(permission);
}
return membershipPermissions.includes(permission);
}
module.exports = {
hasManagePermission
};