@@ -17,10 +17,13 @@ package admin
1717import (
1818 "context"
1919
20- "github.com/openimsdk/chat/pkg/protocol/admin"
20+ "github.com/openimsdk/chat/pkg/eerrs"
21+ adminpb "github.com/openimsdk/chat/pkg/protocol/admin"
22+ "github.com/openimsdk/tools/log"
23+ "github.com/redis/go-redis/v9"
2124)
2225
23- func (o * adminServer ) CreateToken (ctx context.Context , req * admin .CreateTokenReq ) (* admin .CreateTokenResp , error ) {
26+ func (o * adminServer ) CreateToken (ctx context.Context , req * adminpb .CreateTokenReq ) (* adminpb .CreateTokenResp , error ) {
2427 token , err := o .Token .CreateToken (req .UserID , req .UserType )
2528 if err != nil {
2629 return nil , err
@@ -29,26 +32,46 @@ func (o *adminServer) CreateToken(ctx context.Context, req *admin.CreateTokenReq
2932 if err != nil {
3033 return nil , err
3134 }
32- return & admin .CreateTokenResp {
35+ return & adminpb .CreateTokenResp {
3336 Token : token ,
3437 }, nil
3538}
3639
37- func (o * adminServer ) ParseToken (ctx context.Context , req * admin .ParseTokenReq ) (* admin .ParseTokenResp , error ) {
40+ func (o * adminServer ) ParseToken (ctx context.Context , req * adminpb .ParseTokenReq ) (* adminpb .ParseTokenResp , error ) {
3841 userID , userType , err := o .Token .GetToken (req .Token )
3942 if err != nil {
4043 return nil , err
4144 }
42- return & admin.ParseTokenResp {
45+ m , err := o .Database .GetTokens (ctx , userID )
46+ if err != nil && err != redis .Nil {
47+ return nil , err
48+ }
49+ if len (m ) == 0 {
50+ return nil , eerrs .ErrTokenNotExist .Wrap ()
51+ }
52+ if _ , ok := m [req .Token ]; ! ok {
53+ return nil , eerrs .ErrTokenNotExist .Wrap ()
54+ }
55+
56+ return & adminpb.ParseTokenResp {
4357 UserID : userID ,
4458 UserType : userType ,
4559 }, nil
4660}
4761
48- func (o * adminServer ) GetUserToken (ctx context.Context , req * admin .GetUserTokenReq ) (* admin .GetUserTokenResp , error ) {
62+ func (o * adminServer ) GetUserToken (ctx context.Context , req * adminpb .GetUserTokenReq ) (* adminpb .GetUserTokenResp , error ) {
4963 tokensMap , err := o .Database .GetTokens (ctx , req .UserID )
5064 if err != nil {
5165 return nil , err
5266 }
53- return & admin.GetUserTokenResp {TokensMap : tokensMap }, nil
67+ return & adminpb.GetUserTokenResp {TokensMap : tokensMap }, nil
68+ }
69+
70+ func (o * adminServer ) InvalidateToken (ctx context.Context , req * adminpb.InvalidateTokenReq ) (* adminpb.InvalidateTokenResp , error ) {
71+ err := o .Database .DeleteToken (ctx , req .UserID )
72+ if err != nil && err != redis .Nil {
73+ return nil , err
74+ }
75+ log .ZDebug (ctx , "delete token from redis" , "userID" , req .UserID )
76+ return & adminpb.InvalidateTokenResp {}, nil
5477}
0 commit comments