初次提交
This commit is contained in:
@@ -0,0 +1,105 @@
|
||||
// 硬编码的四个角色配置
|
||||
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 }
|
||||
Reference in New Issue
Block a user