|
- package svc
-
- import (
- "applet/app/db"
- "applet/app/md"
- "applet/app/utils"
- "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 GetUid(c *gin.Context) string {
- user, _ := c.Get("user")
- u := user.(*md.User)
- return utils.IntToStr(u.Info.Uid)
- }
-
- func CheckUser(c *gin.Context) (*md.User, error) {
- 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
- }
|