初始化项目文件
This commit is contained in:
73
api_file/utils/user.go
Normal file
73
api_file/utils/user.go
Normal file
@ -0,0 +1,73 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/kataras/iris/v12"
|
||||
"github.com/sirupsen/logrus"
|
||||
"main/database"
|
||||
"main/model"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var UserList []model.Userinfo
|
||||
|
||||
// GetLoginUser 根据token获取用户,返回用户信息
|
||||
func GetLoginUser(ctx iris.Context) model.Userinfo {
|
||||
auth := ctx.GetHeader("Authorization")
|
||||
fmt.Println(auth)
|
||||
if auth == "" || !strings.Contains(auth, "Bearer") {
|
||||
ctx.StatusCode(iris.StatusUnauthorized)
|
||||
ctx.SetErr(errors.New("未登录"))
|
||||
logrus.Warningln("请求未携带token信息")
|
||||
return model.Userinfo{}
|
||||
}
|
||||
var tokens []model.JwtKeys
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
fmt.Println(strings.Split(auth, " ")[1])
|
||||
if err := db.Where("token = ?", strings.Split(auth, " ")[1]).Find(&tokens).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
if len(tokens) == 0 {
|
||||
ctx.StatusCode(iris.StatusUnauthorized)
|
||||
ctx.SetErr(errors.New("未登录"))
|
||||
logrus.Warningln(auth, "token信息无效")
|
||||
return model.Userinfo{}
|
||||
} else {
|
||||
return GetUserInfo(tokens[0].Username)
|
||||
}
|
||||
//foobar := auth.Claims.(jwt.MapClaims)
|
||||
//for key, value := range foobar {
|
||||
// if key == "username" {
|
||||
// return GetUserInfo(value.(string))
|
||||
// }
|
||||
//}
|
||||
//ctx.StatusCode(iris.StatusInternalServerError)
|
||||
//ctx.SetErr(errors.New("系统错误,请联系管理员"))
|
||||
//logrus.Errorln("token存在但获取用户信息失败")
|
||||
//return model.Userinfo{}
|
||||
}
|
||||
|
||||
// GetUserInfo 根据用户名获取用户信息,先更新本地数据
|
||||
func GetUserInfo(username string) model.Userinfo {
|
||||
if len(UserList) == 0 {
|
||||
logrus.Warnln("暂存用户列表为空,刷新数据")
|
||||
UpdateUserInfo()
|
||||
}
|
||||
for _, u := range UserList {
|
||||
if u.Username == username {
|
||||
return u
|
||||
}
|
||||
}
|
||||
logrus.Warnln("未找到对应的用户信息")
|
||||
return model.Userinfo{}
|
||||
}
|
||||
|
||||
// UpdateUserInfo 更新当前用户信息
|
||||
func UpdateUserInfo() {
|
||||
db := database.GetInstance().GetMysqlDb()
|
||||
if err := db.Find(&UserList).Error; err != nil {
|
||||
logrus.Errorln("sql执行失败:", err)
|
||||
}
|
||||
logrus.Infoln("刷新暂存用户列表")
|
||||
}
|
Reference in New Issue
Block a user