From 870b144557af9b8a21b60d2f247223046d51ab21 Mon Sep 17 00:00:00 2001 From: zhangwenjian Date: Fri, 23 Oct 2020 23:33:57 +0800 Subject: [PATCH] =?UTF-8?q?feat=20:=20admin=20=E8=A7=92=E8=89=B2=E6=9D=83?= =?UTF-8?q?=E9=99=90=E8=B0=83=E6=95=B4=E9=BB=98=E8=AE=A4=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/admin/middleware/permission.go | 25 +- app/admin/models/menu.go | 11 +- .../version/1599190683670_migrate.go | 228 ------------------ 3 files changed, 24 insertions(+), 240 deletions(-) diff --git a/app/admin/middleware/permission.go b/app/admin/middleware/permission.go index a0566310..e3c2be17 100644 --- a/app/admin/middleware/permission.go +++ b/app/admin/middleware/permission.go @@ -1,7 +1,8 @@ package middleware import ( - "fmt" + "go-admin/common/log" + "go-admin/tools/app" "net/http" "github.com/gin-gonic/gin" @@ -17,16 +18,20 @@ func AuthCheckRole() gin.HandlerFunc { data, _ := c.Get(jwtauth.JwtPayloadKey) v := data.(jwtauth.MapClaims) e := mycasbin.Casbin() + var res bool + var err error + msgID := tools.GenerateMsgIDFromContext(c) //检查权限 - res, err := e.Enforce(v["rolekey"], c.Request.URL.Path, c.Request.Method) - tools.HasError(err, "", 500) - - fmt.Printf("%s [INFO] %s %s %s \r\n", - tools.GetCurrentTimeStr(), - c.Request.Method, - c.Request.URL.Path, - v["rolekey"], - ) + if v["rolekey"]=="admin" { + res = true + log.Infof("msgID[%s] info:%s method:%s path:%s", msgID, v["rolekey"], c.Request.Method, c.Request.URL.Path) + }else { + res, err = e.Enforce(v["rolekey"], c.Request.URL.Path, c.Request.Method) + if err != nil { + log.Errorf("msgID[%s] error:%s method:%s path:%s", msgID, err, c.Request.Method, c.Request.URL.Path) + app.Error(c, 500, err, "") + } + } if res { c.Next() diff --git a/app/admin/models/menu.go b/app/admin/models/menu.go index 64e0919e..667d847c 100644 --- a/app/admin/models/menu.go +++ b/app/admin/models/menu.go @@ -2,6 +2,7 @@ package models import ( "errors" + "gorm.io/gorm" orm "go-admin/common/global" "go-admin/tools" @@ -216,8 +217,14 @@ func (e *MenuRole) Get() (Menus []MenuRole, err error) { } func (e *Menu) GetByRoleName(rolename string) (Menus []Menu, err error) { - table := orm.Eloquent.Table(e.TableName()).Select("sys_menu.*").Joins("left join sys_role_menu on sys_role_menu.menu_id=sys_menu.menu_id") - table = table.Where("sys_role_menu.role_name=? and menu_type in ('M','C')", rolename) + var table *gorm.DB + if rolename == "admin" { + table = orm.Eloquent.Table(e.TableName()).Select("sys_menu.*") + table = table.Where(" menu_type in ('M','C')") + } else { + table = orm.Eloquent.Table(e.TableName()).Select("sys_menu.*").Joins("left join sys_role_menu on sys_role_menu.menu_id=sys_menu.menu_id") + table = table.Where("sys_role_menu.role_name=? and menu_type in ('M','C')", rolename) + } if err = table.Order("sort").Find(&Menus).Error; err != nil { return } diff --git a/cmd/migrate/migration/version/1599190683670_migrate.go b/cmd/migrate/migration/version/1599190683670_migrate.go index 63f505cb..a1756592 100644 --- a/cmd/migrate/migration/version/1599190683670_migrate.go +++ b/cmd/migrate/migration/version/1599190683670_migrate.go @@ -21,236 +21,8 @@ func _1599190683670Test(db *gorm.DB, version string) error { return db.Transaction(func(tx *gorm.DB) error { list1 := []models.RoleMenu{ - {RoleId: 1, MenuId: 2, RoleName: "admin"}, - {RoleId: 1, MenuId: 3, RoleName: "admin"}, - {RoleId: 1, MenuId: 43, RoleName: "admin"}, - {RoleId: 1, MenuId: 44, RoleName: "admin"}, - {RoleId: 1, MenuId: 45, RoleName: "admin"}, - {RoleId: 1, MenuId: 46, RoleName: "admin"}, - {RoleId: 1, MenuId: 51, RoleName: "admin"}, - {RoleId: 1, MenuId: 52, RoleName: "admin"}, - {RoleId: 1, MenuId: 56, RoleName: "admin"}, - {RoleId: 1, MenuId: 57, RoleName: "admin"}, - {RoleId: 1, MenuId: 58, RoleName: "admin"}, - {RoleId: 1, MenuId: 59, RoleName: "admin"}, - {RoleId: 1, MenuId: 60, RoleName: "admin"}, - {RoleId: 1, MenuId: 61, RoleName: "admin"}, - {RoleId: 1, MenuId: 62, RoleName: "admin"}, - {RoleId: 1, MenuId: 63, RoleName: "admin"}, - {RoleId: 1, MenuId: 64, RoleName: "admin"}, - {RoleId: 1, MenuId: 66, RoleName: "admin"}, - {RoleId: 1, MenuId: 67, RoleName: "admin"}, - {RoleId: 1, MenuId: 68, RoleName: "admin"}, - {RoleId: 1, MenuId: 69, RoleName: "admin"}, - {RoleId: 1, MenuId: 70, RoleName: "admin"}, - {RoleId: 1, MenuId: 71, RoleName: "admin"}, - {RoleId: 1, MenuId: 72, RoleName: "admin"}, - {RoleId: 1, MenuId: 73, RoleName: "admin"}, - {RoleId: 1, MenuId: 74, RoleName: "admin"}, - {RoleId: 1, MenuId: 75, RoleName: "admin"}, - {RoleId: 1, MenuId: 76, RoleName: "admin"}, - {RoleId: 1, MenuId: 77, RoleName: "admin"}, - {RoleId: 1, MenuId: 78, RoleName: "admin"}, - {RoleId: 1, MenuId: 79, RoleName: "admin"}, - {RoleId: 1, MenuId: 80, RoleName: "admin"}, - {RoleId: 1, MenuId: 81, RoleName: "admin"}, - {RoleId: 1, MenuId: 82, RoleName: "admin"}, - {RoleId: 1, MenuId: 83, RoleName: "admin"}, - {RoleId: 1, MenuId: 84, RoleName: "admin"}, - {RoleId: 1, MenuId: 85, RoleName: "admin"}, - {RoleId: 1, MenuId: 86, RoleName: "admin"}, - {RoleId: 1, MenuId: 87, RoleName: "admin"}, - {RoleId: 1, MenuId: 89, RoleName: "admin"}, - {RoleId: 1, MenuId: 90, RoleName: "admin"}, - {RoleId: 1, MenuId: 91, RoleName: "admin"}, - {RoleId: 1, MenuId: 92, RoleName: "admin"}, - {RoleId: 1, MenuId: 93, RoleName: "admin"}, - {RoleId: 1, MenuId: 94, RoleName: "admin"}, - {RoleId: 1, MenuId: 95, RoleName: "admin"}, - {RoleId: 1, MenuId: 96, RoleName: "admin"}, - {RoleId: 1, MenuId: 97, RoleName: "admin"}, - {RoleId: 1, MenuId: 103, RoleName: "admin"}, - {RoleId: 1, MenuId: 104, RoleName: "admin"}, - {RoleId: 1, MenuId: 105, RoleName: "admin"}, - {RoleId: 1, MenuId: 106, RoleName: "admin"}, - {RoleId: 1, MenuId: 107, RoleName: "admin"}, - {RoleId: 1, MenuId: 108, RoleName: "admin"}, - {RoleId: 1, MenuId: 109, RoleName: "admin"}, - {RoleId: 1, MenuId: 110, RoleName: "admin"}, - {RoleId: 1, MenuId: 111, RoleName: "admin"}, - {RoleId: 1, MenuId: 112, RoleName: "admin"}, - {RoleId: 1, MenuId: 113, RoleName: "admin"}, - {RoleId: 1, MenuId: 114, RoleName: "admin"}, - {RoleId: 1, MenuId: 115, RoleName: "admin"}, - {RoleId: 1, MenuId: 116, RoleName: "admin"}, - {RoleId: 1, MenuId: 117, RoleName: "admin"}, - {RoleId: 1, MenuId: 118, RoleName: "admin"}, - {RoleId: 1, MenuId: 119, RoleName: "admin"}, - {RoleId: 1, MenuId: 120, RoleName: "admin"}, - {RoleId: 1, MenuId: 121, RoleName: "admin"}, - {RoleId: 1, MenuId: 122, RoleName: "admin"}, - {RoleId: 1, MenuId: 123, RoleName: "admin"}, - {RoleId: 1, MenuId: 138, RoleName: "admin"}, - {RoleId: 1, MenuId: 142, RoleName: "admin"}, - {RoleId: 1, MenuId: 201, RoleName: "admin"}, - {RoleId: 1, MenuId: 202, RoleName: "admin"}, - {RoleId: 1, MenuId: 203, RoleName: "admin"}, - {RoleId: 1, MenuId: 204, RoleName: "admin"}, - {RoleId: 1, MenuId: 205, RoleName: "admin"}, - {RoleId: 1, MenuId: 206, RoleName: "admin"}, - {RoleId: 1, MenuId: 211, RoleName: "admin"}, - {RoleId: 1, MenuId: 212, RoleName: "admin"}, - {RoleId: 1, MenuId: 213, RoleName: "admin"}, - {RoleId: 1, MenuId: 214, RoleName: "admin"}, - {RoleId: 1, MenuId: 215, RoleName: "admin"}, - {RoleId: 1, MenuId: 216, RoleName: "admin"}, - {RoleId: 1, MenuId: 217, RoleName: "admin"}, - {RoleId: 1, MenuId: 220, RoleName: "admin"}, - {RoleId: 1, MenuId: 221, RoleName: "admin"}, - {RoleId: 1, MenuId: 222, RoleName: "admin"}, - {RoleId: 1, MenuId: 223, RoleName: "admin"}, - {RoleId: 1, MenuId: 224, RoleName: "admin"}, - {RoleId: 1, MenuId: 225, RoleName: "admin"}, - {RoleId: 1, MenuId: 226, RoleName: "admin"}, - {RoleId: 1, MenuId: 227, RoleName: "admin"}, - {RoleId: 1, MenuId: 228, RoleName: "admin"}, - {RoleId: 1, MenuId: 229, RoleName: "admin"}, - {RoleId: 1, MenuId: 230, RoleName: "admin"}, - {RoleId: 1, MenuId: 231, RoleName: "admin"}, - {RoleId: 1, MenuId: 232, RoleName: "admin"}, - {RoleId: 1, MenuId: 233, RoleName: "admin"}, - {RoleId: 1, MenuId: 234, RoleName: "admin"}, - {RoleId: 1, MenuId: 235, RoleName: "admin"}, - {RoleId: 1, MenuId: 236, RoleName: "admin"}, - {RoleId: 1, MenuId: 237, RoleName: "admin"}, - {RoleId: 1, MenuId: 238, RoleName: "admin"}, - {RoleId: 1, MenuId: 239, RoleName: "admin"}, - {RoleId: 1, MenuId: 240, RoleName: "admin"}, - {RoleId: 1, MenuId: 241, RoleName: "admin"}, - {RoleId: 1, MenuId: 242, RoleName: "admin"}, - {RoleId: 1, MenuId: 243, RoleName: "admin"}, - {RoleId: 1, MenuId: 244, RoleName: "admin"}, - {RoleId: 1, MenuId: 245, RoleName: "admin"}, - {RoleId: 1, MenuId: 246, RoleName: "admin"}, - {RoleId: 1, MenuId: 247, RoleName: "admin"}, - {RoleId: 1, MenuId: 248, RoleName: "admin"}, - {RoleId: 1, MenuId: 249, RoleName: "admin"}, - {RoleId: 1, MenuId: 250, RoleName: "admin"}, - {RoleId: 1, MenuId: 251, RoleName: "admin"}, - {RoleId: 1, MenuId: 252, RoleName: "admin"}, - {RoleId: 1, MenuId: 253, RoleName: "admin"}, - {RoleId: 1, MenuId: 254, RoleName: "admin"}, - {RoleId: 1, MenuId: 255, RoleName: "admin"}, - {RoleId: 1, MenuId: 256, RoleName: "admin"}, - {RoleId: 1, MenuId: 257, RoleName: "admin"}, - {RoleId: 1, MenuId: 258, RoleName: "admin"}, - {RoleId: 1, MenuId: 259, RoleName: "admin"}, - {RoleId: 1, MenuId: 260, RoleName: "admin"}, - {RoleId: 1, MenuId: 261, RoleName: "admin"}, - {RoleId: 1, MenuId: 262, RoleName: "admin"}, - {RoleId: 1, MenuId: 263, RoleName: "admin"}, - {RoleId: 1, MenuId: 264, RoleName: "admin"}, - {RoleId: 1, MenuId: 267, RoleName: "admin"}, - {RoleId: 1, MenuId: 269, RoleName: "admin"}, - {RoleId: 1, MenuId: 459, RoleName: "admin"}, - {RoleId: 1, MenuId: 460, RoleName: "admin"}, - {RoleId: 1, MenuId: 461, RoleName: "admin"}, - {RoleId: 1, MenuId: 462, RoleName: "admin"}, - {RoleId: 1, MenuId: 463, RoleName: "admin"}, - {RoleId: 1, MenuId: 464, RoleName: "admin"}, - {RoleId: 1, MenuId: 465, RoleName: "admin"}, - {RoleId: 1, MenuId: 466, RoleName: "admin"}, - {RoleId: 1, MenuId: 467, RoleName: "admin"}, - {RoleId: 1, MenuId: 468, RoleName: "admin"}, - {RoleId: 1, MenuId: 469, RoleName: "admin"}, - {RoleId: 1, MenuId: 470, RoleName: "admin"}, - {RoleId: 1, MenuId: 471, RoleName: "admin"}, - {RoleId: 1, MenuId: 473, RoleName: "admin"}, - {RoleId: 1, MenuId: 474, RoleName: "admin"}, - {RoleId: 1, MenuId: 475, RoleName: "admin"}, - {RoleId: 1, MenuId: 476, RoleName: "admin"}, - {RoleId: 1, MenuId: 477, RoleName: "admin"}, - {RoleId: 1, MenuId: 478, RoleName: "admin"}, - {RoleId: 1, MenuId: 479, RoleName: "admin"}, - {RoleId: 1, MenuId: 480, RoleName: "admin"}, - {RoleId: 1, MenuId: 481, RoleName: "admin"}, - {RoleId: 1, MenuId: 482, RoleName: "admin"}, - {RoleId: 1, MenuId: 483, RoleName: "admin"}, } list2 := []models.CasbinRule{ - {PType: "p", V0: "admin", V1: "/api/v1/menulist", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/menu", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/databytype/", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/menu", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/menu/:id", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysUserList", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysUser/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysUser/", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysUser", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysUser", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysUser/:id", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/user/profile", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/rolelist", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/role/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/role", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/role", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/role/:id", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/configList", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/config/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/config", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/config", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/config/:id", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/menurole", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/roleMenuTreeselect/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/menuTreeselect", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/rolemenu", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/rolemenu", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/rolemenu/:id", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/deptList", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/dept/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/dept", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/dept", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/dept/:id", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/datalist", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/data/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/databytype/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/data", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/data/", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/data/:id", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/typelist", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/type/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/type", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/type", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/type/:id", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/postlist", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/post/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/post", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/post", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/post/:id", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/menu/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/menuids", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/loginloglist", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/loginlog/:id", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/operloglist", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/getinfo", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/roledatascope", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/roleDeptTreeselect/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/deptTree", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/configKey/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/logout", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/user/avatar", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/user/pwd", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/dict/typeoptionselect", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysjob", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysjob/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysjob", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysjob", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/sysjob", V2: "DELETE"}, - {PType: "p", V0: "admin", V1: "/api/v1/syssettingList", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/syssetting/:id", V2: "GET"}, - {PType: "p", V0: "admin", V1: "/api/v1/syssetting", V2: "POST"}, - {PType: "p", V0: "admin", V1: "/api/v1/syssetting", V2: "PUT"}, - {PType: "p", V0: "admin", V1: "/api/v1/syssetting/:id", V2: "DELETE"}, } list3 := []models.SysDept{