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

81 lines
2.7 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/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"
2021-12-17 16:43:41 +08:00
"github.com/gin-gonic/gin"
2021-12-01 12:16:02 +08:00
"net/http"
)
type ParamsLogin struct {
2022-07-05 11:01:10 +08:00
UserID string `json:"userID"`
2021-12-01 12:16:02 +08:00
Email string `json:"email"`
PhoneNumber string `json:"phoneNumber"`
Password string `json:"password"`
Platform int32 `json:"platform"`
2022-02-11 16:25:28 +08:00
OperationID string `json:"operationID" binding:"required"`
2022-06-24 17:45:33 +08:00
AreaCode string `json:"areaCode"`
2021-12-01 12:16:02 +08:00
}
func Login(c *gin.Context) {
params := ParamsLogin{}
if err := c.BindJSON(&params); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.FormattingError, "errMsg": err.Error()})
return
}
var account string
if params.Email != "" {
account = params.Email
2022-07-05 11:01:10 +08:00
} else if params.PhoneNumber != "" {
2021-12-01 12:16:02 +08:00
account = params.PhoneNumber
2022-07-05 11:01:10 +08:00
} else {
account = params.UserID
2021-12-01 12:16:02 +08:00
}
2022-07-05 11:01:10 +08:00
r, err := im_mysql_model.GetRegister(account, params.AreaCode, params.UserID)
2021-12-01 12:16:02 +08:00
if err != nil {
2022-02-23 15:33:22 +08:00
log.NewError(params.OperationID, "user have not register", params.Password, account, err.Error())
2022-02-11 16:25:28 +08:00
c.JSON(http.StatusOK, gin.H{"errCode": constant.NotRegistered, "errMsg": "Mobile phone number is not registered"})
2021-12-01 12:16:02 +08:00
return
}
2022-02-11 16:25:28 +08:00
if r.Password != params.Password {
2022-04-25 16:58:35 +08:00
log.NewError(params.OperationID, "password err", params.Password, account, r.Password, r.Account)
2022-02-21 10:10:11 +08:00
c.JSON(http.StatusOK, gin.H{"errCode": constant.PasswordErr, "errMsg": "password err"})
2021-12-01 12:16:02 +08:00
return
}
2022-06-09 17:19:39 +08:00
var userID string
if r.UserID != "" {
userID = r.UserID
} else {
userID = r.Account
}
2022-04-25 16:58:05 +08:00
url := fmt.Sprintf("http://%s:%d/auth/user_token", utils.ServerIP, config.Config.Api.GinPort[0])
2022-02-11 16:25:28 +08:00
openIMGetUserToken := api.UserTokenReq{}
openIMGetUserToken.OperationID = params.OperationID
openIMGetUserToken.Platform = params.Platform
openIMGetUserToken.Secret = config.Config.Secret
2022-06-09 17:19:39 +08:00
openIMGetUserToken.UserID = userID
2022-02-11 16:25:28 +08:00
openIMGetUserTokenResp := api.UserTokenResp{}
2022-03-03 16:23:59 +08:00
bMsg, err := http2.Post(url, openIMGetUserToken, 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 get user token error", account, "err", err.Error())
c.JSON(http.StatusOK, gin.H{"errCode": constant.GetIMTokenErr, "errMsg": err.Error()})
2021-12-01 12:16:02 +08:00
return
}
2022-02-11 16:25:28 +08:00
err = json.Unmarshal(bMsg, &openIMGetUserTokenResp)
if err != nil || openIMGetUserTokenResp.ErrCode != 0 {
log.NewError(params.OperationID, "request get user token", account, "err", "")
c.JSON(http.StatusOK, gin.H{"errCode": constant.GetIMTokenErr, "errMsg": ""})
2021-12-01 12:16:02 +08:00
return
}
2022-02-11 16:25:28 +08:00
c.JSON(http.StatusOK, gin.H{"errCode": constant.NoError, "errMsg": "", "data": openIMGetUserTokenResp.UserToken})
2021-12-01 12:16:02 +08:00
}