(c *gin.Context, minRole int)
| 26 | } |
| 27 | |
| 28 | func authHelper(c *gin.Context, minRole int) { |
| 29 | session := sessions.Default(c) |
| 30 | username := session.Get("username") |
| 31 | role := session.Get("role") |
| 32 | id := session.Get("id") |
| 33 | status := session.Get("status") |
| 34 | useAccessToken := false |
| 35 | if username == nil { |
| 36 | // Check access token |
| 37 | accessToken := c.Request.Header.Get("Authorization") |
| 38 | if accessToken == "" { |
| 39 | c.JSON(http.StatusUnauthorized, gin.H{ |
| 40 | "success": false, |
| 41 | "message": "无权进行此操作,未登录且未提供 access token", |
| 42 | }) |
| 43 | c.Abort() |
| 44 | return |
| 45 | } |
| 46 | user := model.ValidateAccessToken(accessToken) |
| 47 | if user != nil && user.Username != "" { |
| 48 | if !validUserInfo(user.Username, user.Role) { |
| 49 | c.JSON(http.StatusOK, gin.H{ |
| 50 | "success": false, |
| 51 | "message": "无权进行此操作,用户信息无效", |
| 52 | }) |
| 53 | c.Abort() |
| 54 | return |
| 55 | } |
| 56 | // Token is valid |
| 57 | username = user.Username |
| 58 | role = user.Role |
| 59 | id = user.Id |
| 60 | status = user.Status |
| 61 | useAccessToken = true |
| 62 | } else { |
| 63 | c.JSON(http.StatusOK, gin.H{ |
| 64 | "success": false, |
| 65 | "message": "无权进行此操作,access token 无效", |
| 66 | }) |
| 67 | c.Abort() |
| 68 | return |
| 69 | } |
| 70 | } |
| 71 | // get header New-Api-User |
| 72 | apiUserIdStr := c.Request.Header.Get("New-Api-User") |
| 73 | if apiUserIdStr == "" { |
| 74 | c.JSON(http.StatusUnauthorized, gin.H{ |
| 75 | "success": false, |
| 76 | "message": "无权进行此操作,未提供 New-Api-User", |
| 77 | }) |
| 78 | c.Abort() |
| 79 | return |
| 80 | } |
| 81 | apiUserId, err := strconv.Atoi(apiUserIdStr) |
| 82 | if err != nil { |
| 83 | c.JSON(http.StatusUnauthorized, gin.H{ |
| 84 | "success": false, |
| 85 | "message": "无权进行此操作,New-Api-User 格式错误", |
no test coverage detected