package middlewares import ( "net/http" "zhiyuan/pkg/app" "zhiyuan/pkg/errcode" adminParam "zhiyuan/pkg/param/admin" "zhiyuan/services/admin" "zhiyuan/services/user" "zhiyuan/services/work/worker" "github.com/gin-gonic/gin" ) func Auth(tokenType string) gin.HandlerFunc { return func(c *gin.Context) { token := c.GetHeader("Access-Token") if token == "" { app.Response(c, http.StatusUnauthorized, errcode.TokenEmpty, nil) c.Abort() return } isValid := false var errCode errcode.Err switch tokenType { case "admin": adminInfo, code := admin.CheckToken(token, adminParam.Entry.PC) if adminInfo != nil { c.Set("adminID", adminInfo.ID) isValid = true errCode = code } case "leader": adminInfo, code := admin.CheckToken(token, adminParam.Entry.Leader) if adminInfo != nil { c.Set("adminID", adminInfo.ID) isValid = true errCode = code } case "servicer": adminInfo, code := admin.CheckToken(token, adminParam.Entry.Servicer) if adminInfo != nil { c.Set("adminID", adminInfo.ID) isValid = true errCode = code } case "manager": adminInfo, code := admin.CheckToken(token, adminParam.Entry.Manager) if adminInfo != nil { c.Set("adminID", adminInfo.ID) isValid = true errCode = code } case "material": adminInfo, code := admin.CheckToken(token, adminParam.Entry.Material) if adminInfo != nil { c.Set("adminID", adminInfo.ID) isValid = true errCode = code } case "user": userInfo, code := user.CheckToken(token) if userInfo != nil { c.Set("userID", userInfo.ID) isValid = true errCode = code } case "worker": workerInfo, code := worker.CheckToken(token) if workerInfo != nil { c.Set("workerID", workerInfo.ID) isValid = true errCode = code } case "work": adminInfo, code := admin.CheckToken(token, adminParam.Entry.Work) if adminInfo != nil { c.Set("adminID", adminInfo.ID) isValid = true errCode = code } case "mobile": adminInfo, code := admin.CheckToken(token, adminParam.Entry.Mobile) if adminInfo != nil { c.Set("adminID", adminInfo.ID) isValid = true errCode = code } case "final": adminInfo, code := admin.CheckToken(token, adminParam.Entry.Final) if adminInfo != nil { c.Set("adminID", adminInfo.ID) isValid = true errCode = code } case "dispatch": adminInfo, code := admin.CheckToken(token, adminParam.Entry.Dispatch) if adminInfo != nil { c.Set("adminID", adminInfo.ID) isValid = true errCode = code } } if isValid == false { app.Response(c, http.StatusUnauthorized, errCode, nil) c.Abort() return } c.Next() } }