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)
|
|
|
|
|
}
|