From b2053f507a450c759bf8ce479fdb08f7d6406fe6 Mon Sep 17 00:00:00 2001 From: zhangwenjian Date: Fri, 4 Sep 2026 17:24:55 +0800 Subject: [PATCH] =?UTF-8?q?refactor=F0=9F=8E=A8:=20drop=20the=20unused=20s?= =?UTF-8?q?econd=20data=20permission=20implementation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit app/admin/models/datascope.go carried a second copy of the scope logic with no callers. Its department-tree pattern was written as "%" + id + "%" instead of "%/" + id + "/%", so dept_id 1 also matched /11/, /21/ and /100/ - visibility into unrelated subtrees. It sat where someone looking for a data permission example would find it. The copy that is actually wired up stays in common/actions. Claude-Session: https://claude.ai/code/session_01HPTAw8b8tAdFNFn8rKdPYx --- app/admin/models/datascope.go | 81 ----------------------------------- 1 file changed, 81 deletions(-) delete mode 100644 app/admin/models/datascope.go diff --git a/app/admin/models/datascope.go b/app/admin/models/datascope.go deleted file mode 100644 index 6a621f29..00000000 --- a/app/admin/models/datascope.go +++ /dev/null @@ -1,81 +0,0 @@ -package models - -import ( - "errors" - "github.com/go-admin-team/go-admin-core/v2/sdk/pkg" - "gorm.io/gorm" - - log "github.com/go-admin-team/go-admin-core/v2/logger" - "github.com/go-admin-team/go-admin-core/v2/sdk/config" -) - -type DataPermission struct { - DataScope string - UserId int - DeptId int - RoleId int -} - -func (e *DataPermission) GetDataScope(tableName string, db *gorm.DB) (*gorm.DB, error) { - - if !config.ApplicationConfig.EnableDP { - usageStr := `数据权限已经为您` + pkg.Green(`关闭`) + `,如需开启请参考配置文件字段说明` - log.Debug("%s\n", usageStr) - return db, nil - } - user := new(SysUser) - role := new(SysRole) - err := db.Find(user, e.UserId).Error - if err != nil { - return nil, errors.New("获取用户数据出错 msg:" + err.Error()) - } - err = db.Find(role, user.RoleId).Error - if err != nil { - return nil, errors.New("获取用户数据出错 msg:" + err.Error()) - } - if role.DataScope == "2" { - db = db.Where(tableName+".create_by in (select sys_user.user_id from sys_role_dept left join sys_user on sys_user.dept_id=sys_role_dept.dept_id where sys_role_dept.role_id = ?)", user.RoleId) - } - if role.DataScope == "3" { - db = db.Where(tableName+".create_by in (SELECT user_id from sys_user where dept_id = ? )", user.DeptId) - } - if role.DataScope == "4" { - db = db.Where(tableName+".create_by in (SELECT user_id from sys_user where sys_user.dept_id in(select dept_id from sys_dept where dept_path like ? ))", "%"+pkg.IntToString(user.DeptId)+"%") - } - if role.DataScope == "5" || role.DataScope == "" { - db = db.Where(tableName+".create_by = ?", e.UserId) - } - - return db, nil -} - -//func DataScopes(tableName string, userId int) func(db *gorm.DB) *gorm.DB { -// return func(db *gorm.DB) *gorm.DB { -// user := new(SysUser) -// role := new(SysRole) -// user.UserId = userId -// err := db.Find(user, userId).Error -// if err != nil { -// db.Error = errors.New("获取用户数据出错 msg:" + err.Error()) -// return db -// } -// err = db.Find(role, user.RoleId).Error -// if err != nil { -// db.Error = errors.New("获取用户数据出错 msg:" + err.Error()) -// return db -// } -// if role.DataScope == "2" { -// return db.Where(tableName+".create_by in (select sys_user.user_id from sys_role_dept left join sys_user on sys_user.dept_id=sys_role_dept.dept_id where sys_role_dept.role_id = ?)", user.RoleId) -// } -// if role.DataScope == "3" { -// return db.Where(tableName+".create_by in (SELECT user_id from sys_user where dept_id = ? )", user.DeptId) -// } -// if role.DataScope == "4" { -// return db.Where(tableName+".create_by in (SELECT user_id from sys_user where sys_user.dept_id in(select dept_id from sys_dept where dept_path like ? ))", "%"+pkg.IntToString(user.DeptId)+"%") -// } -// if role.DataScope == "5" || role.DataScope == "" { -// return db.Where(tableName+".create_by = ?", userId) -// } -// return db -// } -//}