Files
Henry_Du 4ce4649aaf
Build VoiceHub FPK / build-fpk (push) Failing after 56m5s
Build and Push Docker Image / build-and-push (push) Canceled after 1h9m35s
初次提交
2026-09-06 08:19:02 +08:00

106 lines
2.7 KiB
JavaScript

// 硬编码的四个角色配置
const ROLES = {
USER: {
displayName: '普通用户',
description: '普通用户,只能访问主页功能',
pages: [], // 不能访问后台页面
canAccessAdmin: false
},
SONG_ADMIN: {
displayName: '歌曲管理员',
description: '负责歌曲和排期管理',
pages: [
'schedule', // 排期管理
'print', // 打印排期
'songs' // 歌曲管理
],
canAccessAdmin: true
},
ADMIN: {
displayName: '管理员',
description: '系统管理员,拥有大部分权限',
pages: [
'overview', // 数据概览
'schedule', // 排期管理
'print', // 打印排期
'songs', // 歌曲管理
'users', // 用户管理
'data-analysis' // 数据分析
],
canAccessAdmin: true
},
SUPER_ADMIN: {
displayName: '超级管理员',
description: '拥有所有权限的超级管理员',
pages: [
'overview', // 数据概览
'schedule', // 排期管理
'print', // 打印排期
'songs', // 歌曲管理
'users', // 用户管理
'notifications', // 通知管理
'playtimes', // 播出时段
'semesters', // 学期管理
'blacklist', // 黑名单管理
'site-config', // 站点配置
'database', // 数据库操作
'data-analysis' // 数据分析
],
canAccessAdmin: true
}
}
// 检查用户是否可以访问后台
function canAccessAdmin(user) {
if (!user || !user.role) return false
const roleConfig = ROLES[user.role]
if (!roleConfig) return false
return roleConfig.canAccessAdmin
}
// 检查用户是否可以访问指定页面
function canAccessPage(user, page) {
if (!user || !user.role) return false
// 超级管理员可以访问所有页面
if (user.role === 'SUPER_ADMIN') return true
const roleConfig = ROLES[user.role]
if (!roleConfig) return false
return roleConfig.pages.includes(page)
}
// 获取用户可访问的页面列表
function getUserPages(user) {
if (!user || !user.role) return []
const roleConfig = ROLES[user.role]
if (!roleConfig) return []
return roleConfig.pages
}
// 获取角色信息
function getRoleInfo(roleName) {
return ROLES[roleName] || null
}
// 检查用户是否可以管理其他用户角色
function canManageUserRole(currentUser, targetRole) {
if (!currentUser || !currentUser.role) return false
// 只有超级管理员可以分配角色
if (currentUser.role === 'SUPER_ADMIN') {
// 超级管理员可以分配除自己以外的所有角色
return ['USER', 'SONG_ADMIN', 'ADMIN'].includes(targetRole)
}
return false
}
// 导出所有函数和常量
export { ROLES, canAccessAdmin, canAccessPage, getUserPages, getRoleInfo, canManageUserRole }