mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
refactor: update fields type in userStatus and check registered. (#2676)
This commit is contained in:
parent
92ee753805
commit
2a33b5c666
2
go.mod
2
go.mod
@ -12,7 +12,7 @@ require (
|
|||||||
github.com/gorilla/websocket v1.5.1
|
github.com/gorilla/websocket v1.5.1
|
||||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
|
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0
|
||||||
github.com/mitchellh/mapstructure v1.5.0
|
github.com/mitchellh/mapstructure v1.5.0
|
||||||
github.com/openimsdk/protocol v0.0.72-alpha.32
|
github.com/openimsdk/protocol v0.0.72-alpha.36
|
||||||
github.com/openimsdk/tools v0.0.50-alpha.15
|
github.com/openimsdk/tools v0.0.50-alpha.15
|
||||||
github.com/pkg/errors v0.9.1 // indirect
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
github.com/prometheus/client_golang v1.18.0
|
github.com/prometheus/client_golang v1.18.0
|
||||||
|
4
go.sum
4
go.sum
@ -319,8 +319,8 @@ github.com/onsi/gomega v1.25.0 h1:Vw7br2PCDYijJHSfBOWhov+8cAnUf8MfMaIOV323l6Y=
|
|||||||
github.com/onsi/gomega v1.25.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
|
github.com/onsi/gomega v1.25.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM=
|
||||||
github.com/openimsdk/gomake v0.0.14-alpha.5 h1:VY9c5x515lTfmdhhPjMvR3BBRrRquAUCFsz7t7vbv7Y=
|
github.com/openimsdk/gomake v0.0.14-alpha.5 h1:VY9c5x515lTfmdhhPjMvR3BBRrRquAUCFsz7t7vbv7Y=
|
||||||
github.com/openimsdk/gomake v0.0.14-alpha.5/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
|
github.com/openimsdk/gomake v0.0.14-alpha.5/go.mod h1:PndCozNc2IsQIciyn9mvEblYWZwJmAI+06z94EY+csI=
|
||||||
github.com/openimsdk/protocol v0.0.72-alpha.32 h1:GnGNVPc9Q/J1kA9KlxIcfciNtxXhxJXpwjFmGUYMJXY=
|
github.com/openimsdk/protocol v0.0.72-alpha.36 h1:j1hanJjvAgLfRZSGSdGoYkH3L0siBf5n6gFbvs2y5M0=
|
||||||
github.com/openimsdk/protocol v0.0.72-alpha.32/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8=
|
github.com/openimsdk/protocol v0.0.72-alpha.36/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8=
|
||||||
github.com/openimsdk/tools v0.0.50-alpha.15 h1:HV9aKZ4vvCZCGG4wFDsgUONkkdJeCcrFNn3BT52nUVQ=
|
github.com/openimsdk/tools v0.0.50-alpha.15 h1:HV9aKZ4vvCZCGG4wFDsgUONkkdJeCcrFNn3BT52nUVQ=
|
||||||
github.com/openimsdk/tools v0.0.50-alpha.15/go.mod h1:h1cYmfyaVtgFbKmb1Cfsl8XwUOMTt8ubVUQrdGtsUh4=
|
github.com/openimsdk/tools v0.0.50-alpha.15/go.mod h1:h1cYmfyaVtgFbKmb1Cfsl8XwUOMTt8ubVUQrdGtsUh4=
|
||||||
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
github.com/pelletier/go-toml/v2 v2.2.2 h1:aYUidT7k73Pcl9nb2gScu7NSrKCSHIDE89b3+6Wq+LM=
|
||||||
|
@ -2,6 +2,7 @@ package api
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/internal/api/jssdk"
|
"github.com/openimsdk/open-im-server/v3/internal/api/jssdk"
|
||||||
|
|
||||||
"github.com/gin-contrib/gzip"
|
"github.com/gin-contrib/gzip"
|
||||||
|
@ -107,14 +107,14 @@ func (u *UserApi) GetUsersOnlineStatus(c *gin.Context) {
|
|||||||
if v2.UserID == v1 {
|
if v2.UserID == v1 {
|
||||||
flag = true
|
flag = true
|
||||||
res.UserID = v1
|
res.UserID = v1
|
||||||
res.Status = constant.OnlineStatus
|
res.Status = constant.Online
|
||||||
res.DetailPlatformStatus = append(res.DetailPlatformStatus, v2.DetailPlatformStatus...)
|
res.DetailPlatformStatus = append(res.DetailPlatformStatus, v2.DetailPlatformStatus...)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if !flag {
|
if !flag {
|
||||||
res.UserID = v1
|
res.UserID = v1
|
||||||
res.Status = constant.OfflineStatus
|
res.Status = constant.Offline
|
||||||
}
|
}
|
||||||
respResult = append(respResult, res)
|
respResult = append(respResult, res)
|
||||||
}
|
}
|
||||||
@ -160,7 +160,7 @@ func (u *UserApi) GetUsersOnlineTokenDetail(c *gin.Context) {
|
|||||||
if v2.UserID == v1 {
|
if v2.UserID == v1 {
|
||||||
flag = true
|
flag = true
|
||||||
temp.UserID = v1
|
temp.UserID = v1
|
||||||
temp.Status = constant.OnlineStatus
|
temp.Status = constant.Online
|
||||||
for _, status := range v2.DetailPlatformStatus {
|
for _, status := range v2.DetailPlatformStatus {
|
||||||
if v, ok := m[status.PlatformID]; ok {
|
if v, ok := m[status.PlatformID]; ok {
|
||||||
m[status.PlatformID] = append(v, status.Token)
|
m[status.PlatformID] = append(v, status.Token)
|
||||||
|
@ -16,6 +16,8 @@ package msggateway
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
"sync/atomic"
|
||||||
|
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/authverify"
|
"github.com/openimsdk/open-im-server/v3/pkg/authverify"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/servererrs"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/servererrs"
|
||||||
"github.com/openimsdk/open-im-server/v3/pkg/common/startrpc"
|
"github.com/openimsdk/open-im-server/v3/pkg/common/startrpc"
|
||||||
@ -30,7 +32,6 @@ import (
|
|||||||
"github.com/openimsdk/tools/mq/memamq"
|
"github.com/openimsdk/tools/mq/memamq"
|
||||||
"github.com/openimsdk/tools/utils/datautil"
|
"github.com/openimsdk/tools/utils/datautil"
|
||||||
"google.golang.org/grpc"
|
"google.golang.org/grpc"
|
||||||
"sync/atomic"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func (s *Server) InitServer(ctx context.Context, config *Config, disCov discovery.SvcDiscoveryRegistry, server *grpc.Server) error {
|
func (s *Server) InitServer(ctx context.Context, config *Config, disCov discovery.SvcDiscoveryRegistry, server *grpc.Server) error {
|
||||||
@ -112,14 +113,13 @@ func (s *Server) GetUsersOnlineStatus(
|
|||||||
|
|
||||||
ps := new(msggateway.GetUsersOnlineStatusResp_SuccessDetail)
|
ps := new(msggateway.GetUsersOnlineStatusResp_SuccessDetail)
|
||||||
ps.PlatformID = int32(client.PlatformID)
|
ps.PlatformID = int32(client.PlatformID)
|
||||||
ps.Status = constant.OnlineStatus
|
|
||||||
ps.ConnID = client.ctx.GetConnID()
|
ps.ConnID = client.ctx.GetConnID()
|
||||||
ps.Token = client.token
|
ps.Token = client.token
|
||||||
ps.IsBackground = client.IsBackground
|
ps.IsBackground = client.IsBackground
|
||||||
uresp.Status = constant.OnlineStatus
|
uresp.Status = constant.Online
|
||||||
uresp.DetailPlatformStatus = append(uresp.DetailPlatformStatus, ps)
|
uresp.DetailPlatformStatus = append(uresp.DetailPlatformStatus, ps)
|
||||||
}
|
}
|
||||||
if uresp.Status == constant.OnlineStatus {
|
if uresp.Status == constant.Online {
|
||||||
resp.SuccessResult = append(resp.SuccessResult, uresp)
|
resp.SuccessResult = append(resp.SuccessResult, uresp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -76,13 +76,24 @@ func (s *authServer) UserToken(ctx context.Context, req *pbauth.UserTokenReq) (*
|
|||||||
if req.Secret != s.config.Share.Secret {
|
if req.Secret != s.config.Share.Secret {
|
||||||
return nil, errs.ErrNoPermission.WrapMsg("secret invalid")
|
return nil, errs.ErrNoPermission.WrapMsg("secret invalid")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := authverify.CheckAdmin(ctx, s.config.Share.IMAdminUserID); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.PlatformID != constant.AdminPlatformID {
|
||||||
|
return nil, errs.ErrNoPermission.WrapMsg("platformID invalid. platformID must be adminPlatformID")
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := s.userRpcClient.GetUserInfo(ctx, req.UserID); err != nil {
|
if _, err := s.userRpcClient.GetUserInfo(ctx, req.UserID); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
token, err := s.authDatabase.CreateToken(ctx, req.UserID, int(req.PlatformID))
|
token, err := s.authDatabase.CreateToken(ctx, req.UserID, int(req.PlatformID))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
prommetrics.UserLoginCounter.Inc()
|
prommetrics.UserLoginCounter.Inc()
|
||||||
resp.Token = token
|
resp.Token = token
|
||||||
resp.ExpireTimeSeconds = s.config.RpcConfig.TokenPolicy.Expire * 24 * 60 * 60
|
resp.ExpireTimeSeconds = s.config.RpcConfig.TokenPolicy.Expire * 24 * 60 * 60
|
||||||
@ -93,6 +104,11 @@ func (s *authServer) GetUserToken(ctx context.Context, req *pbauth.GetUserTokenR
|
|||||||
if err := authverify.CheckAdmin(ctx, s.config.Share.IMAdminUserID); err != nil {
|
if err := authverify.CheckAdmin(ctx, s.config.Share.IMAdminUserID); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if req.PlatformID == constant.AdminPlatformID {
|
||||||
|
return nil, errs.ErrNoPermission.WrapMsg("platformID invalid. platformID must not be adminPlatformID")
|
||||||
|
}
|
||||||
|
|
||||||
resp := pbauth.GetUserTokenResp{}
|
resp := pbauth.GetUserTokenResp{}
|
||||||
|
|
||||||
if authverify.IsManagerUserID(req.UserID, s.config.Share.IMAdminUserID) {
|
if authverify.IsManagerUserID(req.UserID, s.config.Share.IMAdminUserID) {
|
||||||
|
@ -374,7 +374,7 @@ func (s *groupServer) webhookBeforeSetGroupInfoEx(ctx context.Context, before *c
|
|||||||
if req.Ex != nil {
|
if req.Ex != nil {
|
||||||
cbReq.Ex = req.Ex
|
cbReq.Ex = req.Ex
|
||||||
}
|
}
|
||||||
log.ZDebug(ctx, "debug CallbackBeforeSetGroupInfoEX", "ex", cbReq.Ex)
|
log.ZDebug(ctx, "debug CallbackBeforeSetGroupInfoEx", "ex", cbReq.Ex)
|
||||||
|
|
||||||
if req.NeedVerification != nil {
|
if req.NeedVerification != nil {
|
||||||
cbReq.NeedVerification = req.NeedVerification
|
cbReq.NeedVerification = req.NeedVerification
|
||||||
|
@ -2,6 +2,7 @@ package user
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"github.com/openimsdk/tools/utils/datautil"
|
"github.com/openimsdk/tools/utils/datautil"
|
||||||
|
|
||||||
"github.com/openimsdk/protocol/constant"
|
"github.com/openimsdk/protocol/constant"
|
||||||
@ -61,7 +62,7 @@ func (s *userServer) SetUserStatus(ctx context.Context, req *pbuser.SetUserStatu
|
|||||||
case constant.Online:
|
case constant.Online:
|
||||||
online = []int32{req.PlatformID}
|
online = []int32{req.PlatformID}
|
||||||
case constant.Offline:
|
case constant.Offline:
|
||||||
online = []int32{req.PlatformID}
|
offline = []int32{req.PlatformID}
|
||||||
}
|
}
|
||||||
if err := s.online.SetUserOnline(ctx, req.UserID, online, offline); err != nil {
|
if err := s.online.SetUserOnline(ctx, req.UserID, online, offline); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
Loading…
x
Reference in New Issue
Block a user