Smail/backend/controllers/config_permissions.go
smail fd475cd88d
Some checks are pending
Security Checks / security (push) Waiting to run
保存角色权限分层改造续审现场
2026-09-09 20:27:50 +08:00

30 lines
945 B
Go

package controllers
import (
"git.pcux.cn/xuans/Smail/config"
"git.pcux.cn/xuans/Smail/services/access"
appcontext "git.pcux.cn/xuans/Smail/utils/context"
)
// 分区权限必须在接口和配置管理器两层检查,不能信任前端菜单。
func authorizeConfigSection(ctx *appcontext.Context, section config.Section, write bool) error {
capability := access.CapabilityConfigRead
if write {
capability = access.CapabilityConfigWriteGlobal
}
if section == config.SectionPlugins {
capability = access.CapabilityPluginReadGlobal
if write {
capability = access.CapabilityPluginWriteGlobal
}
}
return authorizeCapability(ctx, capability, "", false)
}
func authorizeConfigOverview(ctx *appcontext.Context, write bool) error {
if ctx != nil && ctx.EffectiveRole() == access.RoleAdmin {
return authorizeConfigSection(ctx, config.SectionPlugins, write)
}
return authorizeConfigSection(ctx, config.SectionRoot, write)
}