Files
open-im-server/internal/demo/register/set_password.go
T

90 lines
3.4 KiB
Go
Raw Normal View History

2021-12-01 12:16:02 +08:00
package register
import (
2022-02-11 16:25:28 +08:00
api "Open_IM/pkg/base_info"
2021-12-01 12:16:02 +08:00
"Open_IM/pkg/common/config"
"Open_IM/pkg/common/constant"
"Open_IM/pkg/common/db"
"Open_IM/pkg/common/db/mysql_model/im_mysql_model"
2022-02-11 16:25:28 +08:00
http2 "Open_IM/pkg/common/http"
2021-12-01 12:16:02 +08:00
"Open_IM/pkg/common/log"
2021-12-17 16:43:41 +08:00
"Open_IM/pkg/utils"
2021-12-01 12:16:02 +08:00
"encoding/json"
"fmt"
"github.com/gin-gonic/gin"
2021-12-17 16:43:41 +08:00
"net/http"
2021-12-01 12:16:02 +08:00
)
type ParamsSetPassword struct {
Email string `json:"email"`
2022-03-21 15:25:41 +08:00
Name string `json:"name"`
2021-12-01 12:16:02 +08:00
PhoneNumber string `json:"phoneNumber"`
Password string `json:"password"`
VerificationCode string `json:"verificationCode"`
2022-02-11 16:25:28 +08:00
Platform int32 `json:"platform" binding:"required,min=1,max=7"`
2022-02-11 17:44:02 +08:00
Ex string `json:"ex"`
2022-02-11 16:25:28 +08:00
OperationID string `json:"operationID" binding:"required"`
2021-12-01 12:16:02 +08:00
}
func SetPassword(c *gin.Context) {
params := ParamsSetPassword{}
if err := c.BindJSON(&params); err != nil {
2022-02-21 16:24:25 +08:00
log.NewError(params.OperationID, utils.GetSelfFuncName(), "bind json failed", err.Error())
2021-12-01 12:16:02 +08:00
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.FormattingError, "errMsg": err.Error()})
return
}
var account string
if params.Email != "" {
account = params.Email
} else {
account = params.PhoneNumber
}
2022-03-21 15:25:41 +08:00
if params.Name == "" {
params.Name = account
}
2022-02-11 16:25:28 +08:00
if params.VerificationCode != config.Config.Demo.SuperCode {
2022-02-21 16:24:25 +08:00
accountKey := account + "_" + constant.VerificationCodeForRegisterSuffix
v, err := db.DB.GetAccountCode(accountKey)
2022-02-11 16:25:28 +08:00
if err != nil || v != params.VerificationCode {
2022-02-11 16:36:02 +08:00
log.NewError(params.OperationID, "password Verification code error", account, params.VerificationCode)
2022-02-11 16:25:28 +08:00
data := make(map[string]interface{})
data["PhoneNumber"] = account
c.JSON(http.StatusOK, gin.H{"errCode": constant.CodeInvalidOrExpired, "errMsg": "Verification code error!", "data": data})
return
}
2021-12-01 12:16:02 +08:00
}
2022-02-11 16:25:28 +08:00
url := fmt.Sprintf("http://%s:10000/auth/user_register", utils.ServerIP)
openIMRegisterReq := api.UserRegisterReq{}
openIMRegisterReq.OperationID = params.OperationID
openIMRegisterReq.Platform = params.Platform
openIMRegisterReq.UserID = account
2022-03-21 15:25:41 +08:00
openIMRegisterReq.Nickname = params.Name
2022-02-11 16:25:28 +08:00
openIMRegisterReq.Secret = config.Config.Secret
openIMRegisterResp := api.UserRegisterResp{}
2022-03-03 16:23:59 +08:00
bMsg, err := http2.Post(url, openIMRegisterReq, 2)
2021-12-01 12:16:02 +08:00
if err != nil {
2022-02-11 16:25:28 +08:00
log.NewError(params.OperationID, "request openIM register error", account, "err", err.Error())
c.JSON(http.StatusOK, gin.H{"errCode": constant.RegisterFailed, "errMsg": err.Error()})
2021-12-01 12:16:02 +08:00
return
}
2022-02-11 16:25:28 +08:00
err = json.Unmarshal(bMsg, &openIMRegisterResp)
if err != nil || openIMRegisterResp.ErrCode != 0 {
2022-02-21 18:50:11 +08:00
log.NewError(params.OperationID, "request openIM register error", account, "err", "resp: ", openIMRegisterResp.ErrCode)
if err != nil {
log.NewError(params.OperationID, utils.GetSelfFuncName(), err.Error())
}
2022-03-21 15:25:41 +08:00
c.JSON(http.StatusOK, gin.H{"errCode": constant.RegisterFailed, "errMsg": "register failed: " + openIMRegisterResp.ErrMsg})
2021-12-01 12:16:02 +08:00
return
}
2022-02-11 16:25:28 +08:00
log.Info(params.OperationID, "begin store mysql", account, params.Password)
2022-02-11 17:44:02 +08:00
err = im_mysql_model.SetPassword(account, params.Password, params.Ex)
2021-12-01 12:16:02 +08:00
if err != nil {
2022-02-11 16:25:28 +08:00
log.NewError(params.OperationID, "set phone number password error", account, "err", err.Error())
c.JSON(http.StatusOK, gin.H{"errCode": constant.RegisterFailed, "errMsg": err.Error()})
2021-12-01 12:16:02 +08:00
return
}
2022-02-11 16:25:28 +08:00
log.Info(params.OperationID, "end setPassword", account, params.Password)
c.JSON(http.StatusOK, gin.H{"errCode": constant.NoError, "errMsg": "", "data": openIMRegisterResp.UserToken})
2021-12-01 12:16:02 +08:00
return
}