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

61 lines
2.1 KiB
Go
Raw Normal View History

2022-02-21 16:24:25 +08:00
package register
import (
"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"
"Open_IM/pkg/common/log"
"Open_IM/pkg/utils"
"github.com/gin-gonic/gin"
"net/http"
)
type resetPasswordRequest struct {
2022-02-28 17:57:03 +08:00
VerificationCode string `json:"verificationCode" binding:"required"`
2022-02-21 16:24:25 +08:00
Email string `json:"email"`
PhoneNumber string `json:"phoneNumber"`
2022-06-09 17:19:39 +08:00
NewPassword string `json:"newPassword" binding:"required"`
2022-06-24 17:45:33 +08:00
AreaCode string `json:"areaCode"`
2022-06-09 17:19:39 +08:00
OperationID string `json:"operationID"`
2022-02-21 16:24:25 +08:00
}
func ResetPassword(c *gin.Context) {
var (
req resetPasswordRequest
)
if err := c.BindJSON(&req); err != nil {
c.JSON(http.StatusBadRequest, gin.H{"errCode": constant.FormattingError, "errMsg": err.Error()})
return
}
var account string
if req.Email != "" {
account = req.Email
} else {
account = req.PhoneNumber
}
2022-07-02 09:50:25 +08:00
if (config.Config.Demo.UseSuperCode && req.VerificationCode != config.Config.Demo.SuperCode) || !config.Config.Demo.UseSuperCode {
2022-06-24 17:45:33 +08:00
accountKey := req.AreaCode + account + "_" + constant.VerificationCodeForResetSuffix
2022-02-21 16:24:25 +08:00
v, err := db.DB.GetAccountCode(accountKey)
if err != nil || v != req.VerificationCode {
log.NewError(req.OperationID, "password Verification code error", account, req.VerificationCode, v)
c.JSON(http.StatusOK, gin.H{"errCode": constant.CodeInvalidOrExpired, "errMsg": "Verification code error!"})
return
}
}
2022-07-05 11:01:10 +08:00
user, err := im_mysql_model.GetRegister(account, req.AreaCode, "")
2022-02-21 16:24:25 +08:00
if err != nil || user.Account == "" {
2022-06-09 17:19:39 +08:00
if err != nil {
log.NewError(req.OperationID, utils.GetSelfFuncName(), "get register error", err.Error())
}
2022-02-21 16:24:25 +08:00
c.JSON(http.StatusOK, gin.H{"errCode": constant.NotRegistered, "errMsg": "user not register!"})
return
}
if err := im_mysql_model.ResetPassword(account, req.NewPassword); err != nil {
2022-06-09 17:19:39 +08:00
c.JSON(http.StatusOK, gin.H{"errCode": constant.ResetPasswordFailed, "errMsg": "reset password failed: " + err.Error()})
2022-02-21 16:24:25 +08:00
return
}
c.JSON(http.StatusOK, gin.H{"errCode": constant.NoError, "errMsg": "reset password success"})
}