token/handler/user-handler.go

80 lines
1.7 KiB
Go
Raw Normal View History

2021-10-25 08:04:23 +00:00
package handler
import (
"encoding/json"
"io/ioutil"
"strconv"
"time"
"github.com/dgrijalva/jwt-go"
"github.com/gin-gonic/gin"
log "github.com/sirupsen/logrus"
"gorm.io/gorm"
2021-12-09 06:40:09 +00:00
"myschools.me/wyh/token.git/config"
2021-10-25 08:04:23 +00:00
"myschools.me/wyh/token.git/model"
"myschools.me/wyh/token.git/mysql"
)
2021-12-09 06:40:09 +00:00
// 获取当前用户
func userCurrent(c *gin.Context) *model.UserClaims {
obj, ok := c.Get("user")
if !ok {
return nil
}
return obj.(*model.UserClaims)
}
2021-10-25 08:04:23 +00:00
func UserToken(c *gin.Context) {
reqbody, _ := ioutil.ReadAll(c.Request.Body)
log.WithFields(log.Fields{
"func": "UserToken",
}).Infof("%s", string(reqbody))
var up = &model.User{}
if err := json.Unmarshal(reqbody, up); err != nil {
log.WithFields(log.Fields{
"func": "UserToken",
}).Warnf("%s", err)
}
db := mysql.New()
var result = &model.User{}
if err := db.Where("uname=? and password=?", up.Uname, up.Password).First(result).Error; err != nil {
if err != gorm.ErrRecordNotFound {
log.WithFields(log.Fields{
"func": "UserToken",
}).Warnf("%s", err)
}
}
2021-12-09 06:40:09 +00:00
if result.Uid == 0 {
c.AbortWithStatusJSON(400, gin.H{
"code": 1,
"msg": "用户账号密码错误",
"data": "",
})
return
}
2021-10-25 08:04:23 +00:00
var claims = &model.UserClaims{
StandardClaims: jwt.StandardClaims{
ExpiresAt: time.Now().Add(time.Minute * 5).Unix(),
Id: strconv.Itoa(result.Uid),
},
User: *up,
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
2021-12-09 06:40:09 +00:00
tokenString, err := token.SignedString([]byte(config.JwtKey))
2021-10-25 08:04:23 +00:00
if err != nil {
log.WithFields(log.Fields{
"func": "UserToken",
}).Warnf("%s", err)
}
c.JSON(200, gin.H{
"good": tokenString,
})
}
2021-12-09 06:40:09 +00:00
func UserDetail(c *gin.Context) {
usr := userCurrent(c)
c.JSON(200, usr)
}