- 删除 GrantPermissons 与 buildPermissionCode,权限只判断超管、组管理员和应用负责人 - GetHistory 增加权限校验,避免越权读取配置历史 - 配置历史改为分页查询,前端历史弹窗增加分页并处理删除后的页码回退
51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
package service
|
|
|
|
import (
|
|
"errors"
|
|
"kenaito-conf/server/internal/model"
|
|
)
|
|
|
|
type PermissionService struct{}
|
|
|
|
func NewPermissionService() *PermissionService {
|
|
return &PermissionService{}
|
|
}
|
|
|
|
func (s *PermissionService) RequireSuperAdmin(userInfo *model.LoginUserInfo) error {
|
|
if !userInfo.IsSuperAdmin() {
|
|
return errors.New("超级管理员才有权限操作")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (s *PermissionService) RequirePermission(userInfo *model.LoginUserInfo, groupId *int, appId *int) error {
|
|
if userInfo.IsSuperAdmin() {
|
|
return nil
|
|
}
|
|
if userInfo.IsGroupAdmin() && groupId != nil && userInfo.GroupId != nil && *groupId == *userInfo.GroupId {
|
|
return nil
|
|
}
|
|
if appId == nil || *appId == 0 {
|
|
return errors.New("你没有全局配置权限")
|
|
}
|
|
for _, id := range userInfo.GrantAppIds {
|
|
if id == *appId {
|
|
return nil
|
|
}
|
|
}
|
|
return errors.New("你没有该应用权限")
|
|
}
|
|
|
|
func (s *PermissionService) HasPermissionForUser(userInfo *model.LoginUserInfo, targetUser *model.User) error {
|
|
if userInfo.IsSuperAdmin() {
|
|
return nil
|
|
}
|
|
if !userInfo.IsGroupAdmin() {
|
|
return errors.New("你不是业务组管理员")
|
|
}
|
|
if userInfo.GroupId == nil || targetUser.GroupId == nil || *userInfo.GroupId != *targetUser.GroupId {
|
|
return errors.New("不能操作其他组成员")
|
|
}
|
|
return nil
|
|
}
|