change layout
This commit is contained in:
+35
-30
@@ -5,15 +5,20 @@ import (
|
||||
"net/url"
|
||||
"strconv"
|
||||
|
||||
"github.com/mssola/user_agent"
|
||||
"google.golang.org/grpc/metadata"
|
||||
)
|
||||
|
||||
type UserInfo struct {
|
||||
ID int64
|
||||
Name string
|
||||
RawUID string
|
||||
Refresh string
|
||||
Valid bool
|
||||
ID int64
|
||||
Name string
|
||||
RawUID string
|
||||
Refresh string
|
||||
ClientIP string // 客户端ip
|
||||
UserAgent string // 完整原始ua
|
||||
BrowserName string // 浏览器名称
|
||||
BrowserVer string // 浏览器版本
|
||||
Valid bool
|
||||
}
|
||||
|
||||
func GetUserFromCtx(ctx context.Context) UserInfo {
|
||||
@@ -24,45 +29,45 @@ func GetUserFromCtx(ctx context.Context) UserInfo {
|
||||
uidList := md.Get("x-user-id")
|
||||
nameList := md.Get("x-user-name")
|
||||
refreshList := md.Get("x-refresh")
|
||||
ipList := md.Get("x-client-ip")
|
||||
userAgentList := md.Get("x-user-agent")
|
||||
|
||||
if len(refreshList) == 0 {
|
||||
if len(refreshList) == NumberZero {
|
||||
refreshList = md.Get("X-Refresh")
|
||||
}
|
||||
|
||||
rawUID := ""
|
||||
encodeName := ""
|
||||
refresh := ""
|
||||
var userInfo UserInfo
|
||||
if len(uidList) > 0 {
|
||||
rawUID = uidList[0]
|
||||
userInfo.RawUID = uidList[0]
|
||||
}
|
||||
if len(nameList) > 0 {
|
||||
encodeName = nameList[0]
|
||||
userInfo.Name = nameList[0]
|
||||
}
|
||||
if len(refreshList) > 0 {
|
||||
refresh = refreshList[0]
|
||||
userInfo.Refresh = refreshList[0]
|
||||
}
|
||||
|
||||
if rawUID == "" {
|
||||
return UserInfo{Valid: false, Refresh: refresh}
|
||||
if len(ipList) > 0 {
|
||||
userInfo.ClientIP = ipList[0]
|
||||
}
|
||||
if len(userAgentList) > 0 {
|
||||
userInfo.UserAgent = userAgentList[0]
|
||||
ua := user_agent.New(userInfo.UserAgent)
|
||||
userInfo.BrowserName, userInfo.BrowserVer = ua.Browser()
|
||||
}
|
||||
userInfo.Valid = false
|
||||
if userInfo.RawUID == StringEmpty {
|
||||
return userInfo
|
||||
}
|
||||
|
||||
uid, err := strconv.ParseInt(rawUID, 10, 64)
|
||||
uid, err := strconv.ParseInt(userInfo.RawUID, NumberTen, NumberSixtyFourth)
|
||||
if err != nil {
|
||||
return UserInfo{
|
||||
RawUID: rawUID,
|
||||
Name: encodeName,
|
||||
Refresh: refresh,
|
||||
Valid: false,
|
||||
}
|
||||
return userInfo
|
||||
}
|
||||
|
||||
userName, _ := url.QueryUnescape(encodeName)
|
||||
userName, _ := url.QueryUnescape(userInfo.Name)
|
||||
userInfo.ID = uid
|
||||
userInfo.Name = userName
|
||||
userInfo.Valid = true
|
||||
|
||||
return UserInfo{
|
||||
ID: uid,
|
||||
Name: userName,
|
||||
RawUID: rawUID,
|
||||
Refresh: refresh,
|
||||
Valid: true,
|
||||
}
|
||||
return userInfo
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user