refactor: 移除未使用的 user_permission 表及权限加载逻辑

- 删除 UserPermission 模型与 xorm Sync2 注册
- 移除登录/鉴权时从 user_permission 加载授权的逻辑
- 应用列表查询去掉 user_permission 子查询,仅保留负责人和业务组条件
- SQL 导出文件删除建表语句,新增 drop_user_permission.sql 升级脚本
This commit is contained in:
2026-08-29 21:11:20 +08:00
parent d6a052e0a4
commit d2c0afa20e
6 changed files with 11 additions and 56 deletions
-1
View File
@@ -37,7 +37,6 @@ func Init() error {
new(model.AppConfig),
new(model.AppConfigHistory),
new(model.User),
new(model.UserPermission),
new(model.ClientInstance),
); err != nil {
return err
+6 -6
View File
@@ -45,10 +45,10 @@ func (h *AppHandler) List(c *gin.Context) {
if userInfo.IsGroupAdmin() && userInfo.GroupId != nil {
// 组管理员:本组应用 + 自己是负责人的应用
query = query.And("(group_id = ? OR FIND_IN_SET('" + userIdStr + "', owner_ids) > 0 OR id IN (SELECT app_id FROM user_permission WHERE user_id = ?))", *userInfo.GroupId, userId)
query = query.And("(group_id = ? OR FIND_IN_SET('" + userIdStr + "', owner_ids) > 0)", *userInfo.GroupId)
} else {
// 普通用户:自己是负责人的应用 + 被授权的应用
query = query.And("(FIND_IN_SET('" + userIdStr + "', owner_ids) > 0 OR id IN (SELECT app_id FROM user_permission WHERE user_id = ?))", userId)
// 普通用户:自己是负责人的应用
query = query.And("FIND_IN_SET('" + userIdStr + "', owner_ids) > 0")
}
}
@@ -60,10 +60,10 @@ func (h *AppHandler) List(c *gin.Context) {
if userInfo.IsGroupAdmin() && userInfo.GroupId != nil {
// 组管理员:本组应用 + 自己是负责人的应用
whereClause += " AND (group_id = " + strconv.Itoa(*userInfo.GroupId) + " OR FIND_IN_SET('" + userIdStr + "', owner_ids) > 0 OR id IN (SELECT app_id FROM user_permission WHERE user_id = " + strconv.Itoa(userId) + "))"
whereClause += " AND (group_id = " + strconv.Itoa(*userInfo.GroupId) + " OR FIND_IN_SET('" + userIdStr + "', owner_ids) > 0)"
} else {
// 普通用户:自己是负责人的应用 + 被授权的应用
whereClause += " AND (FIND_IN_SET('" + userIdStr + "', owner_ids) > 0 OR id IN (SELECT app_id FROM user_permission WHERE user_id = " + strconv.Itoa(userId) + "))"
// 普通用户:自己是负责人的应用
whereClause += " AND (FIND_IN_SET('" + userIdStr + "', owner_ids) > 0)"
}
}
if req.AppType != "" {
-12
View File
@@ -22,18 +22,6 @@ func (User) TableName() string {
return "user"
}
type UserPermission struct {
Id int `xorm:"int autoincr pk" json:"id"`
UserId int `xorm:"int" json:"userId"`
Env string `xorm:"varchar(16)" json:"env"`
AppId int `xorm:"int" json:"appId"`
Operate string `xorm:"varchar(8) default 'RW'" json:"operate"` // RO, RW
}
func (UserPermission) TableName() string {
return "user_permission"
}
type LoginUserInfo struct {
Id string `json:"id"`
Name string `json:"name"`
-28
View File
@@ -148,34 +148,6 @@ func (s *AuthService) loadPermissions(userInfo *model.LoginUserInfo, userId int)
userInfo.GrantAppIds = append(userInfo.GrantAppIds, app.Id)
userInfo.GrantPermissons = append(userInfo.GrantPermissons, buildPermissionCode(app.Id, "RW"))
}
// load granted permissions
var perms []model.UserPermission
dao.Engine.Where("user_id = ?", userId).Find(&perms)
for _, p := range perms {
permCode := buildPermissionCode(p.AppId, p.Operate)
// avoid duplicate
found := false
for _, existing := range userInfo.GrantPermissons {
if existing == permCode {
found = true
break
}
}
if !found {
userInfo.GrantPermissons = append(userInfo.GrantPermissons, permCode)
}
appIdFound := false
for _, id := range userInfo.GrantAppIds {
if id == p.AppId {
appIdFound = true
break
}
}
if !appIdFound {
userInfo.GrantAppIds = append(userInfo.GrantAppIds, p.AppId)
}
}
}
func buildPermissionCode(appId int, operate string) string {