@@ -18,11 +18,14 @@ import (
1818 "context"
1919 "errors"
2020
21+ "github.com/openimsdk/open-im-server/v3/pkg/common/storage/cache"
22+ "github.com/openimsdk/open-im-server/v3/pkg/common/storage/cache/mcache"
23+ "github.com/openimsdk/open-im-server/v3/pkg/common/storage/database/mgo"
24+ "github.com/openimsdk/open-im-server/v3/pkg/dbbuild"
2125 "github.com/openimsdk/open-im-server/v3/pkg/rpcli"
2226
2327 "github.com/openimsdk/open-im-server/v3/pkg/common/config"
2428 redis2 "github.com/openimsdk/open-im-server/v3/pkg/common/storage/cache/redis"
25- "github.com/openimsdk/tools/db/redisutil"
2629 "github.com/openimsdk/tools/utils/datautil"
2730 "github.com/redis/go-redis/v9"
2831
@@ -43,31 +46,47 @@ import (
4346type authServer struct {
4447 pbauth.UnimplementedAuthServer
4548 authDatabase controller.AuthDatabase
46- RegisterCenter discovery.SvcDiscoveryRegistry
49+ RegisterCenter discovery.Conn
4750 config * Config
4851 userClient * rpcli.UserClient
4952}
5053
5154type Config struct {
5255 RpcConfig config.Auth
5356 RedisConfig config.Redis
57+ MongoConfig config.Mongo
5458 Share config.Share
5559 Discovery config.Discovery
5660}
5761
58- func Start (ctx context.Context , config * Config , client discovery.SvcDiscoveryRegistry , server * grpc.Server ) error {
59- rdb , err := redisutil .NewRedisClient (ctx , config .RedisConfig .Build ())
62+ func Start (ctx context.Context , config * Config , client discovery.Conn , server grpc.ServiceRegistrar ) error {
63+ dbb := dbbuild .NewBuilder (& config .MongoConfig , & config .RedisConfig )
64+ rdb , err := dbb .Redis (ctx )
6065 if err != nil {
6166 return err
6267 }
68+ var token cache.TokenModel
69+ if rdb == nil {
70+ mdb , err := dbb .Mongo (ctx )
71+ if err != nil {
72+ return err
73+ }
74+ mc , err := mgo .NewCacheMgo (mdb .GetDB ())
75+ if err != nil {
76+ return err
77+ }
78+ token = mcache .NewTokenCacheModel (mc , config .RpcConfig .TokenPolicy .Expire )
79+ } else {
80+ token = redis2 .NewTokenCacheModel (rdb , config .RpcConfig .TokenPolicy .Expire )
81+ }
6382 userConn , err := client .GetConn (ctx , config .Discovery .RpcService .User )
6483 if err != nil {
6584 return err
6685 }
6786 pbauth .RegisterAuthServer (server , & authServer {
6887 RegisterCenter : client ,
6988 authDatabase : controller .NewAuthDatabase (
70- redis2 . NewTokenCacheModel ( rdb , config . RpcConfig . TokenPolicy . Expire ) ,
89+ token ,
7190 config .Share .Secret ,
7291 config .RpcConfig .TokenPolicy .Expire ,
7392 config .Share .MultiLogin ,
@@ -106,7 +125,7 @@ func (s *authServer) GetAdminToken(ctx context.Context, req *pbauth.GetAdminToke
106125}
107126
108127func (s * authServer ) GetUserToken (ctx context.Context , req * pbauth.GetUserTokenReq ) (* pbauth.GetUserTokenResp , error ) {
109- if err := authverify .CheckAdmin (ctx , s . config . Share . IMAdminUserID ); err != nil {
128+ if err := authverify .CheckAdmin (ctx ); err != nil {
110129 return nil , err
111130 }
112131
@@ -116,7 +135,7 @@ func (s *authServer) GetUserToken(ctx context.Context, req *pbauth.GetUserTokenR
116135
117136 resp := pbauth.GetUserTokenResp {}
118137
119- if authverify .IsManagerUserID ( req . UserID , s . config . Share . IMAdminUserID ) {
138+ if authverify .CheckUserIsAdmin ( ctx , req . UserID ) {
120139 return nil , errs .ErrNoPermission .WrapMsg ("don't get Admin token" )
121140 }
122141 user , err := s .userClient .GetUserInfo (ctx , req .UserID )
@@ -145,7 +164,7 @@ func (s *authServer) parseToken(ctx context.Context, tokensString string) (claim
145164 return nil , err
146165 }
147166 if len (m ) == 0 {
148- isAdmin := authverify .IsManagerUserID ( claims . UserID , s . config . Share . IMAdminUserID )
167+ isAdmin := authverify .CheckUserIsAdmin ( ctx , claims . UserID )
149168 if isAdmin {
150169 if err = s .authDatabase .GetTemporaryTokensWithoutError (ctx , claims .UserID , claims .PlatformID , tokensString ); err == nil {
151170 return claims , nil
@@ -163,7 +182,7 @@ func (s *authServer) parseToken(ctx context.Context, tokensString string) (claim
163182 return nil , errs .Wrap (errs .ErrTokenUnknown )
164183 }
165184 } else {
166- isAdmin := authverify .IsManagerUserID ( claims . UserID , s . config . Share . IMAdminUserID )
185+ isAdmin := authverify .CheckUserIsAdmin ( ctx , claims . UserID )
167186 if isAdmin {
168187 if err = s .authDatabase .GetTemporaryTokensWithoutError (ctx , claims .UserID , claims .PlatformID , tokensString ); err == nil {
169188 return claims , nil
@@ -186,7 +205,7 @@ func (s *authServer) ParseToken(ctx context.Context, req *pbauth.ParseTokenReq)
186205}
187206
188207func (s * authServer ) ForceLogout (ctx context.Context , req * pbauth.ForceLogoutReq ) (* pbauth.ForceLogoutResp , error ) {
189- if err := authverify .CheckAdmin (ctx , s . config . Share . IMAdminUserID ); err != nil {
208+ if err := authverify .CheckAdmin (ctx ); err != nil {
190209 return nil , err
191210 }
192211 if err := s .forceKickOff (ctx , req .UserID , req .PlatformID ); err != nil {
0 commit comments