You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.5 KiB
77 lines
2.5 KiB
package register
|
|
|
|
import (
|
|
api "Open_IM/pkg/base_info"
|
|
"Open_IM/pkg/common/config"
|
|
"Open_IM/pkg/common/constant"
|
|
"Open_IM/pkg/common/db/mysql_model/im_mysql_model"
|
|
http2 "Open_IM/pkg/common/http"
|
|
"Open_IM/pkg/common/log"
|
|
"Open_IM/pkg/utils"
|
|
"encoding/json"
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"net/http"
|
|
)
|
|
|
|
type ParamsLogin struct {
|
|
Email string `json:"email"`
|
|
PhoneNumber string `json:"phoneNumber"`
|
|
Password string `json:"password"`
|
|
Platform int32 `json:"platform"`
|
|
OperationID string `json:"operationID" binding:"required"`
|
|
}
|
|
|
|
func Login(c *gin.Context) {
|
|
params := ParamsLogin{}
|
|
if err := c.BindJSON(¶ms); err != nil {
|
|
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
|
|
}
|
|
|
|
r, err := im_mysql_model.GetRegister(account)
|
|
if err != nil {
|
|
log.NewError(params.OperationID, "user have not register", params.Password, account, err.Error())
|
|
c.JSON(http.StatusOK, gin.H{"errCode": constant.NotRegistered, "errMsg": "Mobile phone number is not registered"})
|
|
return
|
|
}
|
|
if r.Password != params.Password {
|
|
log.NewError(params.OperationID, "password err", params.Password, account, r.Password, r.Account)
|
|
c.JSON(http.StatusOK, gin.H{"errCode": constant.PasswordErr, "errMsg": "password err"})
|
|
return
|
|
}
|
|
var userID string
|
|
if r.UserID != "" {
|
|
userID = r.UserID
|
|
} else {
|
|
userID = r.Account
|
|
}
|
|
url := fmt.Sprintf("http://%s:%d/auth/user_token", utils.ServerIP, config.Config.Api.GinPort[0])
|
|
openIMGetUserToken := api.UserTokenReq{}
|
|
openIMGetUserToken.OperationID = params.OperationID
|
|
openIMGetUserToken.Platform = params.Platform
|
|
openIMGetUserToken.Secret = config.Config.Secret
|
|
openIMGetUserToken.UserID = userID
|
|
openIMGetUserTokenResp := api.UserTokenResp{}
|
|
bMsg, err := http2.Post(url, openIMGetUserToken, 2)
|
|
if err != nil {
|
|
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()})
|
|
return
|
|
}
|
|
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": ""})
|
|
return
|
|
}
|
|
c.JSON(http.StatusOK, gin.H{"errCode": constant.NoError, "errMsg": "", "data": openIMGetUserTokenResp.UserToken})
|
|
|
|
}
|