change layout
CI / changes (push) Successful in 5s
CI / docker-bff (push) Failing after 7s
CI / docker-product (push) Failing after 5s
CI / docker-admin (push) Failing after 4s
CI / docker-user (push) Failing after 6s

This commit is contained in:
2026-08-20 15:41:44 +08:00
parent 57e04be304
commit be8f89f449
176 changed files with 7009 additions and 4498 deletions
+35 -30
View File
@@ -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
}