mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-21 10:13:01 +00:00
update: used gormv2 to handle permission process
This commit is contained in:
@@ -43,7 +43,7 @@ func GetSysJob(c *gin.Context) {
|
||||
var v tools.GeneralGetDto
|
||||
err := c.BindUri(&v)
|
||||
tools.HasError(err, "", 500)
|
||||
data.JobId, _ = tools.StringToInt(v.Id)
|
||||
data.JobId = v.Id
|
||||
err = data.Get(data.JobId)
|
||||
tools.HasError(err, "抱歉未找到相关信息", -1)
|
||||
|
||||
@@ -111,7 +111,7 @@ func StartJob(c *gin.Context) {
|
||||
var v tools.GeneralGetDto
|
||||
err := c.BindUri(&v)
|
||||
tools.HasError(err, "", 500)
|
||||
data.JobId, _ = tools.StringToInt(v.Id)
|
||||
data.JobId = v.Id
|
||||
err = data.Get(data.JobId)
|
||||
tools.HasError(err, "", 500)
|
||||
if data.JobType == 1 {
|
||||
|
||||
@@ -44,12 +44,7 @@ func GetDictTypeList(c *gin.Context) {
|
||||
result, count, err := data.GetPage(pageSize, pageIndex)
|
||||
tools.HasError(err, "", -1)
|
||||
|
||||
var res app.PageResponse
|
||||
res.Data.List = result
|
||||
res.Data.Count = count
|
||||
res.Data.PageIndex = pageIndex
|
||||
res.Data.PageSize = pageSize
|
||||
c.JSON(http.StatusOK, res.ReturnOK())
|
||||
app.PageOK(c,result,count,pageIndex,pageSize,"")
|
||||
}
|
||||
|
||||
// @Summary 通过字典id获取字典类型
|
||||
|
||||
@@ -53,4 +53,3 @@ settings:
|
||||
dbname: dbname
|
||||
# 代码生成是使用前端代码存放位置,需要指定到src文件夹,相对路径
|
||||
frontpath: ../go-admin-ui/src
|
||||
>>>>>>> c396f318ef0649f7231b8ee7b2a70d26159c19c2
|
||||
|
||||
@@ -51,3 +51,35 @@ func (e *DataPermission) GetDataScope(tbname string, table *gorm.DB) (*gorm.DB,
|
||||
|
||||
return table, nil
|
||||
}
|
||||
|
||||
func DataScopes(tableName string, userid int) func(db *gorm.DB) *gorm.DB {
|
||||
return func(db *gorm.DB) *gorm.DB {
|
||||
SysUser := new(SysUser)
|
||||
SysRole := new(SysRole)
|
||||
SysUser.UserId = userid
|
||||
user, err := SysUser.Get()
|
||||
if err != nil {
|
||||
db.Error = errors.New("获取用户数据出错 msg:" + err.Error())
|
||||
return db
|
||||
}
|
||||
SysRole.RoleId = user.RoleId
|
||||
role, err := SysRole.Get()
|
||||
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 ? ))", "%"+tools.IntToString(user.DeptId)+"%")
|
||||
}
|
||||
if role.DataScope == "5" || role.DataScope == "" {
|
||||
return db.Where(tableName+".create_by = ?", userid)
|
||||
}
|
||||
return db
|
||||
}
|
||||
}
|
||||
|
||||
+9
-13
@@ -42,15 +42,17 @@ func (e *SysJob) GetPage(pageSize int, pageIndex int, v interface{}, list interf
|
||||
table := orm.Eloquent.Table(e.TableName()).Scopes(tools.MakeCondition(v))
|
||||
|
||||
// 数据权限控制(如果不需要数据权限请将此处去掉)
|
||||
dataPermission := new(DataPermission)
|
||||
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
|
||||
table, err := dataPermission.GetDataScope(e.TableName(), table)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
//dataPermission := new(DataPermission)
|
||||
userid, _ := tools.StringToInt(e.DataScope)
|
||||
//dataPermission.UserId = userid
|
||||
//table, err := dataPermission.GetDataScope(e.TableName(), table)
|
||||
//if err != nil {
|
||||
// return 0, err
|
||||
//}
|
||||
|
||||
var count int64
|
||||
|
||||
if err := table.Scopes(tools.Paginate(pageSize, pageIndex)).Find(list).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
|
||||
if err := table.Scopes(DataScopes(e.TableName(),userid),tools.Paginate(pageSize, pageIndex)).Find(list).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
|
||||
return 0, err
|
||||
}
|
||||
return int(count), nil
|
||||
@@ -66,9 +68,6 @@ func (e *SysJob) Update(id interface{}) (err error) {
|
||||
}
|
||||
|
||||
func (e *SysJob) RemoveAllEntryID() (update SysJob, err error) {
|
||||
|
||||
//参数1:是要修改的数据
|
||||
//参数2:是修改的数据
|
||||
if err = orm.Eloquent.Table(e.TableName()).Where("entry_id > ?", 0).Update("entry_id", 0).Error; err != nil {
|
||||
return
|
||||
}
|
||||
@@ -76,9 +75,6 @@ func (e *SysJob) RemoveAllEntryID() (update SysJob, err error) {
|
||||
}
|
||||
|
||||
func (e *SysJob) RemoveEntryID(entryID int) (update SysJob, err error) {
|
||||
|
||||
//参数1:是要修改的数据
|
||||
//参数2:是修改的数据
|
||||
if err = orm.Eloquent.Table(e.TableName()).Where("entry_id = ?", entryID).Updates(map[string]interface{}{"entry_id": 0}).Error; err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
+8
-8
@@ -215,16 +215,16 @@ func (e *SysUser) GetPage(pageSize int, pageIndex int) ([]SysUserPage, int, erro
|
||||
table = table.Where("sys_user.dept_id in (select dept_id from sys_dept where dept_path like ? )", "%"+tools.IntToString(e.DeptId)+"%")
|
||||
}
|
||||
|
||||
// 数据权限控制
|
||||
dataPermission := new(DataPermission)
|
||||
dataPermission.UserId, _ = tools.StringToInt(e.DataScope)
|
||||
table, err := dataPermission.GetDataScope("sys_user", table)
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
userid, _ := tools.StringToInt(e.DataScope)
|
||||
//dataPermission.UserId = userid
|
||||
//table, err := dataPermission.GetDataScope(e.TableName(), table)
|
||||
//if err != nil {
|
||||
// return 0, err
|
||||
//}
|
||||
|
||||
var count int64
|
||||
|
||||
if err := table.Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
|
||||
if err := table.Scopes(DataScopes(e.TableName(),userid)).Offset((pageIndex - 1) * pageSize).Limit(pageSize).Find(&doc).Offset(-1).Limit(-1).Count(&count).Error; err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
//table.Where("sys_user.deleted_at IS NULL").Count(&count)
|
||||
|
||||
@@ -16,15 +16,6 @@ type Page struct {
|
||||
PageSize int `json:"pageSize"`
|
||||
}
|
||||
|
||||
type PageResponse struct {
|
||||
// 代码
|
||||
Code int `json:"code" example:"200"`
|
||||
// 数据集
|
||||
Data Page `json:"data"`
|
||||
// 消息
|
||||
Msg string `json:"msg"`
|
||||
}
|
||||
|
||||
func (res *Response) ReturnOK() *Response {
|
||||
res.Code = 200
|
||||
return res
|
||||
@@ -34,8 +25,3 @@ func (res *Response) ReturnError(code int) *Response {
|
||||
res.Code = code
|
||||
return res
|
||||
}
|
||||
|
||||
func (res *PageResponse) ReturnOK() *PageResponse {
|
||||
res.Code = 200
|
||||
return res
|
||||
}
|
||||
|
||||
+6
-9
@@ -27,15 +27,12 @@ func OK(c *gin.Context, data interface{}, msg string) {
|
||||
|
||||
// 分页数据处理
|
||||
func PageOK(c *gin.Context, result interface{}, count int, pageIndex int, pageSize int, msg string) {
|
||||
var res PageResponse
|
||||
res.Data.List = result
|
||||
res.Data.Count = count
|
||||
res.Data.PageIndex = pageIndex
|
||||
res.Data.PageSize = pageSize
|
||||
if msg != "" {
|
||||
res.Msg = msg
|
||||
}
|
||||
c.JSON(http.StatusOK, res.ReturnOK())
|
||||
var res Page
|
||||
res.List = result
|
||||
res.Count = count
|
||||
res.PageIndex = pageIndex
|
||||
res.PageSize = pageSize
|
||||
OK(c, res, msg)
|
||||
}
|
||||
|
||||
// 兼容函数
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ type GeneralDelDto struct {
|
||||
Id string `uri:"id" json:"id" validate:"required"`
|
||||
}
|
||||
type GeneralGetDto struct {
|
||||
Id string `uri:"id" json:"id" validate:"required"`
|
||||
Id int `uri:"id" json:"id" validate:"required"`
|
||||
}
|
||||
|
||||
func MakeCondition(q interface{}) func(db *gorm.DB) *gorm.DB {
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package tools
|
||||
|
||||
import (
|
||||
"log"
|
||||
"runtime"
|
||||
"strconv"
|
||||
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
@@ -50,6 +52,8 @@ func HasError(err error, msg string, code ...int) {
|
||||
if msg == "" {
|
||||
msg = err.Error()
|
||||
}
|
||||
_, file, line, _ := runtime.Caller(1)
|
||||
log.Printf("%s:%v",file, line)
|
||||
panic("CustomError#" + strconv.Itoa(statusCode) + "#" + msg)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user