Skip to content

Commit 394326f

Browse files
authored
fix: 用户权限等问题 (#4)
1 parent fcd0913 commit 394326f

File tree

7 files changed

+60
-14
lines changed

7 files changed

+60
-14
lines changed

Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,6 @@ FROM centos:centos7
1212
RUN mkdir /app
1313
WORKDIR /app
1414
COPY --from=builder /app/ .
15-
RUN chmod +x wait xirang && yum -y install vim net-tools telnet wget curl && yum clean all
15+
RUN chmod +x wait xirang && yum -y install vim net-tools telnet wget curl sqlite && yum clean all
1616

1717
CMD ./wait && ./xirang

controller/menu_controller.go

+8
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ func (m *MenuController) GetTree(c *gin.Context) {
1717
})
1818
}
1919

20+
// GetUserMenuTreeByUserId 获取用户菜单树
21+
func (m *MenuController) GetAccessTree(c *gin.Context) {
22+
req := new(request.MenuGetAccessTreeReq)
23+
Run(c, req, func() (interface{}, interface{}) {
24+
return logic.Menu.GetAccessTree(c, req)
25+
})
26+
}
27+
2028
// Add 新建
2129
func (m *MenuController) Add(c *gin.Context) {
2230
req := new(request.MenuAddReq)

logic/menu_logic.go

+31
Original file line numberDiff line numberDiff line change
@@ -178,3 +178,34 @@ func (l MenuLogic) GetTree(c *gin.Context, req interface{}) (data interface{}, r
178178

179179
return tree, nil
180180
}
181+
182+
// GetAccessTree 获取用户菜单树
183+
func (l MenuLogic) GetAccessTree(c *gin.Context, req interface{}) (data interface{}, rspError interface{}) {
184+
r, ok := req.(*request.MenuGetAccessTreeReq)
185+
if !ok {
186+
return nil, ReqAssertErr
187+
}
188+
_ = c
189+
// 校验
190+
filter := tools.H{"id": r.ID}
191+
if !isql.User.Exist(filter) {
192+
return nil, tools.NewValidatorError(fmt.Errorf("该用户不存在"))
193+
}
194+
user := new(model.User)
195+
err := isql.User.Find(filter, user)
196+
if err != nil {
197+
return nil, tools.NewMySqlError(fmt.Errorf("在MySQL查询用户失败: " + err.Error()))
198+
}
199+
var roleIds []uint
200+
for _, role := range user.Roles {
201+
roleIds = append(roleIds, role.ID)
202+
}
203+
menus, err := isql.Menu.ListUserMenus(roleIds)
204+
if err != nil {
205+
return nil, tools.NewMySqlError(fmt.Errorf("获取资源列表失败: " + err.Error()))
206+
}
207+
208+
tree := isql.GenMenuTree(0, menus)
209+
210+
return tree, nil
211+
}

model/request/menu_req.go

+5
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,8 @@ type MenuDeleteReq struct {
4949
// MenuGetTreeReq 获取菜单树结构体
5050
type MenuGetTreeReq struct {
5151
}
52+
53+
// MenuGetAccessTreeReq 获取用户菜单树
54+
type MenuGetAccessTreeReq struct {
55+
ID uint `json:"id" form:"id"`
56+
}

public/common/database.go

+6
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,12 @@ func ConnSqlite() *gorm.DB {
4545
if err != nil {
4646
Log.Panicf("failed to connect sqlite3: %v", err)
4747
}
48+
dbObj, err := db.DB()
49+
if err != nil {
50+
Log.Panicf("failed to get sqlite3 obj: %v", err)
51+
}
52+
// 参见: https://github.com/glebarez/sqlite/issues/52
53+
dbObj.SetMaxOpenConns(1)
4854
return db
4955
}
5056

public/common/init_mysql_data.go

+8-12
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,13 @@ func InitData() {
451451
Remark: "获取菜单树",
452452
Creator: "系统",
453453
},
454+
{
455+
Method: "GET",
456+
Path: "/menu/access/tree",
457+
Category: "menu",
458+
Remark: "获取用户菜单树",
459+
Creator: "系统",
460+
},
454461
{
455462
Method: "POST",
456463
Path: "/menu/add",
@@ -547,19 +554,8 @@ func InitData() {
547554
"/base/changePwd",
548555
"/base/dashboard",
549556
"/user/info",
550-
"/user/list",
551557
"/user/changePwd",
552-
"/group/list",
553-
"/group/tree",
554-
"/group/useringroup",
555-
"/group/usernoingroup",
556-
"/role/list",
557-
"/role/getmenulist",
558-
"/role/getapilist",
559-
"/menu/tree",
560-
"/menu/list",
561-
"/api/list",
562-
"/api/tree",
558+
"/menu/access/tree",
563559
"/log/operation/list",
564560
}
565561

routes/menu_routes.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ func InitMenuRoutes(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) gi
1616
menu.Use(middleware.CasbinMiddleware())
1717
{
1818
menu.GET("/tree", controller.Menu.GetTree)
19-
// menu.GET("/list", controller.Menu.List)
19+
menu.GET("/access/tree", controller.Menu.GetAccessTree)
2020
menu.POST("/add", controller.Menu.Add)
2121
menu.POST("/update", controller.Menu.Update)
2222
menu.POST("/delete", controller.Menu.Delete)

0 commit comments

Comments
 (0)