parse token

This commit is contained in:
Gordon 2023-03-15 16:52:29 +08:00
parent 460cf8d8ba
commit 808cd69429

View File

@ -6,6 +6,7 @@ import (
"OpenIM/pkg/common/constant" "OpenIM/pkg/common/constant"
"OpenIM/pkg/common/db/cache" "OpenIM/pkg/common/db/cache"
"OpenIM/pkg/common/db/controller" "OpenIM/pkg/common/db/controller"
"OpenIM/pkg/common/log"
"OpenIM/pkg/common/tokenverify" "OpenIM/pkg/common/tokenverify"
"OpenIM/pkg/errs" "OpenIM/pkg/errs"
"bytes" "bytes"
@ -75,23 +76,27 @@ func GinParseToken(rdb redis.UniversalClient) gin.HandlerFunc {
case http.MethodPost: case http.MethodPost:
token := c.Request.Header.Get(constant.Token) token := c.Request.Header.Get(constant.Token)
if token == "" { if token == "" {
log.ZWarn(c, "header get token error", errs.ErrArgs.Wrap("header must have token"))
apiresp.GinError(c, errs.ErrArgs.Wrap("header must have token")) apiresp.GinError(c, errs.ErrArgs.Wrap("header must have token"))
c.Abort() c.Abort()
return return
} }
claims, err := tokenverify.GetClaimFromToken(token) claims, err := tokenverify.GetClaimFromToken(token)
if err != nil { if err != nil {
log.ZWarn(c, "jwt get token error", errs.ErrTokenUnknown.Wrap())
apiresp.GinError(c, errs.ErrTokenUnknown.Wrap()) apiresp.GinError(c, errs.ErrTokenUnknown.Wrap())
c.Abort() c.Abort()
return return
} }
m, err := dataBase.GetTokensWithoutError(c, claims.UID, claims.Platform) m, err := dataBase.GetTokensWithoutError(c, claims.UID, claims.Platform)
if err != nil { if err != nil {
log.ZWarn(c, "cache get token error", errs.ErrTokenNotExist.Wrap())
apiresp.GinError(c, errs.ErrTokenNotExist.Wrap()) apiresp.GinError(c, errs.ErrTokenNotExist.Wrap())
c.Abort() c.Abort()
return return
} }
if len(m) == 0 { if len(m) == 0 {
log.ZWarn(c, "cache do not exist token error", errs.ErrTokenNotExist.Wrap())
apiresp.GinError(c, errs.ErrTokenNotExist.Wrap()) apiresp.GinError(c, errs.ErrTokenNotExist.Wrap())
c.Abort() c.Abort()
return return
@ -100,10 +105,12 @@ func GinParseToken(rdb redis.UniversalClient) gin.HandlerFunc {
switch v { switch v {
case constant.NormalToken: case constant.NormalToken:
case constant.KickedToken: case constant.KickedToken:
log.ZWarn(c, "cache kicked token error", errs.ErrTokenKicked.Wrap())
apiresp.GinError(c, errs.ErrTokenKicked.Wrap()) apiresp.GinError(c, errs.ErrTokenKicked.Wrap())
c.Abort() c.Abort()
return return
default: default:
log.ZWarn(c, "cache unknown token error", errs.ErrTokenUnknown.Wrap())
apiresp.GinError(c, errs.ErrTokenUnknown.Wrap()) apiresp.GinError(c, errs.ErrTokenUnknown.Wrap())
c.Abort() c.Abort()
return return