From 1bb5d4518a97d0dda31aa5a23a0589139d648f6f Mon Sep 17 00:00:00 2001 From: eson <474420502@qq.com> Date: Sun, 27 Aug 2023 23:54:28 +0800 Subject: [PATCH] fix --- .../logic/useremailconfirmationlogic.go | 124 ++++++++---------- server/auth/internal/types/types.go | 1 - server_api/auth.api | 17 ++- 3 files changed, 63 insertions(+), 79 deletions(-) diff --git a/server/auth/internal/logic/useremailconfirmationlogic.go b/server/auth/internal/logic/useremailconfirmationlogic.go index 163ca27b..07c7d72c 100644 --- a/server/auth/internal/logic/useremailconfirmationlogic.go +++ b/server/auth/internal/logic/useremailconfirmationlogic.go @@ -2,6 +2,7 @@ package logic import ( "fmt" + "fusenapi/model/gmodel" "fusenapi/utils/auth" "fusenapi/utils/basic" "fusenapi/utils/wevent" @@ -34,6 +35,56 @@ func NewUserEmailConfirmationLogic(ctx context.Context, svcCtx *svc.ServiceConte // func (l *UserEmailConfirmationLogic) BeforeLogic(w http.ResponseWriter, r *http.Request) { // } +func FinishRegister(svcCtx *svc.ServiceContext, user *gmodel.FsUser, token *auth.RegisterToken) error { + // 创建签证 + jwtToken, err := auth.GenerateJwtTokenUint64( + auth.StringToHash(*user.PasswordHash), + svcCtx.Config.Auth.AccessExpire, + time.Now().UTC().Unix(), + user.Id, + 0, + ) + + if err != nil { + + return err + } + + event := wevent.NewWebsocketEventSuccess(wevent.UserEmailRegister, token.TraceId) + event.Data = wevent.DataEmailRegister{ + JwtToken: jwtToken, + } + err = CommonNotify(svcCtx.Config.MainAddress, token.Wid, event) + if err != nil { + // logx.Error(err, token.TraceId) + return err + } + + return nil +} + +func CommonNotify(MainAddress, wid string, event *wevent.WebsocketEvent) error { + tp := requests.Post(fmt.Sprintf("%s/api/websocket/common_notify", MainAddress)) + tp.SetBodyJson(requests.M{ + "wid": wid, + "data": event, + }) + + wresp, err := tp.Execute() + if err != nil { + // logx.Error(err, token.TraceId) + return err + } + + result := wresp.Json() + if result.Get("code").Int() != 200 { + // logx.Error(result.Get("message")) + return fmt.Errorf("%s", result.Get("message").Str) + } + + return nil +} + func (l *UserEmailConfirmationLogic) UserEmailConfirmation(req *types.RequestEmailConfirmation, userinfo *auth.UserInfo) (resp *basic.Response) { // 返回值必须调用Set重新返回, resp可以空指针调用 resp.SetStatus(basic.CodeOK, data) // userinfo 传入值时, 一定不为null @@ -59,43 +110,8 @@ func (l *UserEmailConfirmationLogic) UserEmailConfirmation(req *types.RequestEma return resp.SetStatus(basic.CodeDbSqlErr) } - // 创建签证 - jwtToken, err := auth.GenerateJwtTokenUint64( - auth.StringToHash(*user.PasswordHash), - l.svcCtx.Config.Auth.AccessExpire, - time.Now().Unix(), - user.Id, - 0, - ) - - if err != nil { - logx.Error(err, token.TraceId) - return - } - - event := wevent.NewWebsocketEventSuccess(wevent.UserEmailRegister, token.TraceId) - event.Data = wevent.DataEmailRegister{ - JwtToken: jwtToken, - } - - tp := requests.Post(fmt.Sprintf("%s/api/websocket/common_notify", l.svcCtx.Config.MainAddress)) - tp.SetBodyJson(requests.M{ - "wid": token.Wid, - "data": event, - }) - - wresp, err := tp.Execute() - if err != nil { - logx.Error(err, token.TraceId) - return - } - - result := wresp.Json() - if result.Get("code").Int() != 200 { - logx.Error(result.Get("message")) - return - } - logx.Info("success", token.TraceId, jwtToken) + FinishRegister(l.svcCtx, user, token) + logx.Info("success", token.TraceId) case "facebook": case "fusen": @@ -106,38 +122,8 @@ func (l *UserEmailConfirmationLogic) UserEmailConfirmation(req *types.RequestEma return resp.SetStatus(basic.CodeDbSqlErr) } - // 创建签证 - jwtToken, err := auth.GenerateJwtTokenUint64( - auth.StringToHash(*user.PasswordHash), - l.svcCtx.Config.Auth.AccessExpire, - time.Now().Unix(), - user.Id, - 0, - ) - - if err != nil { - logx.Error(err, token.TraceId) - return - } - - event := wevent.NewWebsocketEventSuccess(wevent.UserEmailRegister, token.TraceId) - event.Data = wevent.DataEmailRegister{ - JwtToken: jwtToken, - } - tp := requests.Post(fmt.Sprintf("%s/api/websocket/common_notify", l.svcCtx.Config.MainAddress)) - tp.SetBodyJson(requests.M{ - "wid": token.Wid, - "data": event, - }) - wresp, err := tp.Execute() - if err != nil { - logx.Error(err, token.TraceId) - } - result := wresp.Json() - if result.Get("code").Int() != 200 { - logx.Error(result.Get("message")) - } - logx.Info("success", token.TraceId, jwtToken) + FinishRegister(l.svcCtx, user, token) + logx.Info("success", token.TraceId) } default: diff --git a/server/auth/internal/types/types.go b/server/auth/internal/types/types.go index 583cb8bc..5b25891c 100644 --- a/server/auth/internal/types/types.go +++ b/server/auth/internal/types/types.go @@ -16,7 +16,6 @@ type DataUserLogin struct { type RequestUserRegister struct { Wid string `json:"wid"` // websocket的id - GuestId int64 `json:"guest_id"` // 游客id FirstName string `json:"first_name"` // 首名 LastName string `json:"last_name"` // 名 Resetaurant string `json:"resetaurant"` // 餐厅类型 diff --git a/server_api/auth.api b/server_api/auth.api index a9b221d4..564df270 100644 --- a/server_api/auth.api +++ b/server_api/auth.api @@ -12,25 +12,25 @@ import "basic.api" service auth { @handler UserLoginHandler post /api/auth/login(RequestUserLogin) returns (response); - + @handler UserRegisterHandler post /api/auth/register(RequestUserRegister) returns (response); - + @handler AcceptCookieHandler post /api/auth/accept-cookie(request) returns (response); - + @handler UserGoogleLoginHandler get /api/auth/oauth2/login/google(RequestGoogleLogin) returns (response); - + @handler UserEmailConfirmationHandler get /api/auth/email/confirmation(RequestEmailConfirmation) returns (response); - + @handler UserEmailRegisterHandler post /api/auth/oauth2/register(RequestEmailRegister) returns (response); - + @handler UserResetTokenHandler get /api/auth/reset/token(RequestUserResetToken) returns (response); - + @handler UserResetPasswordHandler post /api/auth/reset/password(RequestUserResetPassword) returns (response); } @@ -52,8 +52,7 @@ type ( type ( // UserAddAddressHandler 用户登录请求结构 RequestUserRegister { - Wid string `json:"wid"` // websocket的id - GuestId int64 `json:"guest_id"` // 游客id + Wid string `json:"wid"` // websocket的id FirstName string `json:"first_name"` // 首名 LastName string `json:"last_name"` // 名