Skip to content

Commit 8c05e7d

Browse files
authored
fix: 修复普通用户登陆之后菜单未能正常获取的问题 (#166)
1 parent e8c6bc3 commit 8c05e7d

File tree

7 files changed

+66
-36
lines changed

7 files changed

+66
-36
lines changed

.github/workflows/docker-image.yml

+12-13
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ on:
77
push:
88
branches:
99
- main
10+
release:
11+
types: [created,published] # 表示在创建新的 Release 时触发
1012

1113
# Allows you to run this workflow manually from the Actions tab
1214
# 可以手动触发
@@ -24,38 +26,35 @@ jobs:
2426
runs-on: ubuntu-latest
2527
steps:
2628
- name: Checkout
27-
uses: actions/checkout@v2
29+
uses: actions/checkout@v3
2830

29-
- name: Get current date
30-
id: date
31-
run: echo "::set-output name=today::$(date +'%Y-%m-%d_%H-%M')"
31+
- name: Inject slug/short variables
32+
uses: rlespinasse/github-slug-action@v4
3233

3334
- name: Set up QEMU
34-
uses: docker/setup-qemu-action@v1
35+
uses: docker/setup-qemu-action@v2
3536

3637
- name: Set up Docker Buildx
3738
id: buildx
38-
uses: docker/setup-buildx-action@v1
39+
uses: docker/setup-buildx-action@v2
3940

4041
- name: Available platforms
4142
run: echo ${{ steps.buildx.outputs.platforms }}
4243

4344
- name: Login to DockerHub
44-
uses: docker/login-action@v1
45+
uses: docker/login-action@v2
4546
with:
4647
username: ${{ secrets.DOCKERHUB_USERNAME }}
4748
password: ${{ secrets.DOCKERHUB_TOKEN }}
4849

4950
- name: Build and push
50-
uses: docker/build-push-action@v2
51+
uses: docker/build-push-action@v4
5152
with:
5253
context: .
5354
file: ./Dockerfile
5455
# 所需要的体系结构,可以在 Available platforms 步骤中获取所有的可用架构
55-
platforms: linux/amd64,linux/arm64/v8
56-
# 镜像推送时间
57-
push: ${{ github.event_name != 'pull_request' }}
56+
platforms: linux/arm64,linux/amd64
5857
# 给清单打上多个标签
5958
tags: |
60-
eryajf/go-ldap-admin-server:${{ steps.date.outputs.today }}
61-
eryajf/go-ldap-admin-server:latest
59+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.GITHUB_REPOSITORY_NAME_PART }}:latest
60+
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.GITHUB_REPOSITORY_NAME_PART }}:${{ env.GITHUB_REF_NAME }}

controller/menu_controller.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,6 @@ import (
99

1010
type MenuController struct{}
1111

12-
// // List 记录列表
13-
// func (m *MenuController) List(c *gin.Context) {
14-
// req := new(request.MenuListReq)
15-
// Run(c, req, func() (interface{}, interface{}) {
16-
// return logic.Menu.List(c, req)
17-
// })
18-
// }
19-
2012
// GetTree 菜单树
2113
func (m *MenuController) GetTree(c *gin.Context) {
2214
req := new(request.MenuGetTreeReq)
@@ -25,6 +17,14 @@ func (m *MenuController) GetTree(c *gin.Context) {
2517
})
2618
}
2719

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+
2828
// Add 新建
2929
func (m *MenuController) Add(c *gin.Context) {
3030
req := new(request.MenuAddReq)

logic/menu_logic.go

+31-1
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,6 @@ func (l MenuLogic) GetTree(c *gin.Context, req interface{}) (data interface{}, r
168168
return nil, ReqAssertErr
169169
}
170170
_ = c
171-
172171
menus, err := isql.Menu.List()
173172
if err != nil {
174173
return nil, tools.NewMySqlError(fmt.Errorf("获取资源列表失败: " + err.Error()))
@@ -178,3 +177,34 @@ func (l MenuLogic) GetTree(c *gin.Context, req interface{}) (data interface{}, r
178177

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

model/request/group_req.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ type GroupListReq struct {
66
Remark string `json:"remark" form:"remark"`
77
PageNum int `json:"pageNum" form:"pageNum"`
88
PageSize int `json:"pageSize" form:"pageSize"`
9-
SyncState uint `json:"syncState" form:"syncState" `
9+
SyncState uint `json:"syncState" form:"syncState"`
1010
}
1111

1212
// GroupListAllReq 获取资源列表结构体,不分页

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/init_mysql_data.go

+8-12
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,13 @@ func InitData() {
543543
Remark: "获取菜单树",
544544
Creator: "系统",
545545
},
546+
{
547+
Method: "GET",
548+
Path: "/menu/access/tree",
549+
Category: "menu",
550+
Remark: "获取用户菜单树",
551+
Creator: "系统",
552+
},
546553
{
547554
Method: "POST",
548555
Path: "/menu/add",
@@ -667,19 +674,8 @@ func InitData() {
667674
"/base/changePwd",
668675
"/base/dashboard",
669676
"/user/info",
670-
"/user/list",
671677
"/user/changePwd",
672-
"/group/list",
673-
"/group/tree",
674-
"/group/useringroup",
675-
"/group/usernoingroup",
676-
"/role/list",
677-
"/role/getmenulist",
678-
"/role/getapilist",
679-
"/menu/tree",
680-
"/menu/list",
681-
"/api/list",
682-
"/api/tree",
678+
"/menu/access/tree",
683679
"/log/operation/list",
684680
}
685681

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)