30 lines
945 B
Go
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)
|
|
}
|