package svc import ( "applet/app/comm/db" "applet/app/comm/md" "applet/app/comm/utils" "applet/app/lib/auth" "code.fnuoos.com/go_rely_warehouse/zyos_model.git/src/models" "errors" "strings" "github.com/gin-gonic/gin" ) // 因为在mw_auth已经做完所有校验, 因此在此不再做任何校验 // GetUser is get user model func GetUser(c *gin.Context) *md.User { user, _ := c.Get("user") return user.(*md.User) } func GetCampStore(c *gin.Context) *models.CampTaskStoreUser { user, _ := c.Get("camp_store") return user.(*models.CampTaskStoreUser) } func GetCampStoreId(c *gin.Context) int { user, _ := c.Get("camp_store") store := user.(*models.CampTaskStoreUser) if store != nil { id := store.Id if store.Pid > 0 { id = store.Pid } return id } return 0 } func GetUid(c *gin.Context) string { user, _ := c.Get("user") u := user.(*md.User) return utils.IntToStr(u.Info.Uid) } func GetUserById(c *gin.Context, uid string) *md.User { // 获取user u, err := db.UserFindByID(db.DBs[c.GetString("mid")], uid) if err != nil { return nil } if u == nil { return nil } // 获取user profile up, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], uid) if err != nil { return nil } // 获取user 等级 ul, err := db.UserLevelByID(db.DBs[c.GetString("mid")], u.Level) if err != nil { return nil } user := &md.User{ Info: u, Profile: up, Level: ul, } return user } func CheckUser(c *gin.Context) (*md.User, error) { requestType := c.Request.Header.Get("Request-Type") requestUid := c.Request.Header.Get("Request-uid") var mc = new(auth.JWTUser) var err error if requestType == "mq_consume" { mc.UID = utils.StrToInt(requestUid) } else { token := c.GetHeader("Authorization") if token == "" { return nil, errors.New("token not exist") } // 按空格分割 parts := strings.SplitN(token, " ", 2) if !(len(parts) == 2 && parts[0] == "Bearer") { return nil, errors.New("token format error") } // parts[1]是获取到的tokenString,我们使用之前定义好的解析JWT的函数来解析它 mc, err = utils.ParseToken(parts[1]) if err != nil { return nil, err } } // 获取user u, err := db.UserFindByID(db.DBs[c.GetString("mid")], mc.UID) if err != nil { return nil, err } if u == nil { return nil, errors.New("token can not find user") } // 获取user profile up, err := db.UserProfileFindByID(db.DBs[c.GetString("mid")], mc.UID) if err != nil { return nil, err } // 获取user 等级 ul, err := db.UserLevelByID(db.DBs[c.GetString("mid")], u.Level) if err != nil { return nil, err } // 获取用户标签 tags, err := db.UserTagsByUid(db.DBs[c.GetString("mid")], mc.UID) if err != nil { return nil, err } user := &md.User{ Info: u, Profile: up, Level: ul, Tags: tags, } return user, nil }