MCPcopy Create free account
hub / github.com/aiprodcoder/MIXAPI / authHelper

Function authHelper

middleware/auth.go:28–141  ·  view source on GitHub ↗
(c *gin.Context, minRole int)

Source from the content-addressed store, hash-verified

26}
27
28func 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 格式错误",

Callers 3

UserAuthFunction · 0.85
AdminAuthFunction · 0.85
RootAuthFunction · 0.85

Calls 4

ValidateAccessTokenFunction · 0.92
validUserInfoFunction · 0.85
GetMethod · 0.80
NextMethod · 0.80

Tested by

no test coverage detected