|
- package mw
-
- import (
- "errors"
-
- "applet/app/db"
- "applet/app/e"
- "applet/app/lib/arkid"
- "applet/app/md"
- "applet/app/utils"
-
- "github.com/gin-gonic/gin"
- )
-
- // 检查权限, 签名等等
- func Auth(c *gin.Context) {
-
- for k, v := range c.Request.Header {
- c.Set(k, v[0])
- }
- token, ok := c.Get("Token")
- if !ok {
- e.OutErr(c, e.ERR_UNAUTHORIZED, errors.New("没有找到token"))
- return
- }
- if token == "" {
- e.OutErr(c, e.ERR_UNAUTHORIZED, errors.New("token 不能为空"))
- return
- }
- tokenStr := utils.AnyToString(token)
- arkIdSdk := arkid.NewArkID()
- var err error
- signUser := &md.User{}
- arkIdUser := new(arkid.ArkIDUser)
- if err = arkIdSdk.SelectFunction("arkid_user_info").
- WithArgs(arkid.RequestBody{Token: tokenStr}).
- Result(arkIdUser); err != nil {
- e.OutErr(c, e.ERR_TOKEN_AUTH, err) //token 不存在
- return
- }
- if arkIdUser.Username == "" {
- e.OutErr(c, e.ERR_UNAUTHORIZED, errors.New("Token error"))
- return
- }
- if err = arkIdSdk.SelectFunction("arkid_login").
- WithArgs(arkid.RequestBody{Username: arkIdUser.Username, Password: utils.Md5(arkIdUser.Username)}).
- Result(arkIdUser); err != nil {
- e.OutErr(c, e.ERR_TOKEN_AUTH, err)
- return
- }
- signUser.Ark = arkIdUser
- if signUser.Ark == nil {
- e.OutErr(c, e.ERR_TOKEN_AUTH, errors.New("无效token"))
- return
- }
- signUser.Info, err = db.UserFindByArkidUserName(db.DBs[c.GetString("mid")], arkIdUser.Username)
- if err != nil {
- e.OutErr(c, e.ERR_TOKEN_AUTH, err)
- return
- }
- if signUser.Info == nil {
- e.OutErr(c, e.ERR_TOKEN_AUTH, errors.New("无效token"))
- return
- }
- signUser.Profile, err = db.UserProfileFindByArkID(db.DBs[c.GetString("mid")], utils.IntToStr(arkIdUser.UserID))
- if err != nil {
- e.OutErr(c, e.ERR_TOKEN_AUTH, err)
- return
- }
- c.Set("user", signUser)
- c.Next()
- }
|