feat: improve verification error translation (#1660)

This commit is contained in:
Yaodong Yu
2023-03-15 23:44:38 +08:00
committed by GitHub
parent 312412ffe4
commit fd883a3211
14 changed files with 52 additions and 53 deletions

View File

@ -84,15 +84,13 @@ func CheckUserSignup(application *Application, organization *Organization, usern
if email == "" {
if application.IsSignupItemRequired("Email") {
return i18n.Translate(lang, "check:Email cannot be empty")
} else {
return ""
}
}
if HasUserByField(organization.Name, "email", email) {
return i18n.Translate(lang, "check:Email already exists")
} else if !util.IsEmailValid(email) {
return i18n.Translate(lang, "check:Email is invalid")
} else {
if HasUserByField(organization.Name, "email", email) {
return i18n.Translate(lang, "check:Email already exists")
} else if !util.IsEmailValid(email) {
return i18n.Translate(lang, "check:Email is invalid")
}
}
}
@ -100,17 +98,15 @@ func CheckUserSignup(application *Application, organization *Organization, usern
if phone == "" {
if application.IsSignupItemRequired("Phone") {
return i18n.Translate(lang, "check:Phone cannot be empty")
} else {
return ""
}
}
if HasUserByField(organization.Name, "phone", phone) {
return i18n.Translate(lang, "check:Phone already exists")
} else if !util.IsPhoneAllowInRegin(countryCode, organization.CountryCodes) {
return i18n.Translate(lang, "check:Your region is not allow to signup by phone")
} else if !util.IsPhoneValid(phone, countryCode) {
return i18n.Translate(lang, "check:Phone number is invalid")
} else {
if HasUserByField(organization.Name, "phone", phone) {
return i18n.Translate(lang, "check:Phone already exists")
} else if !util.IsPhoneAllowInRegin(countryCode, organization.CountryCodes) {
return i18n.Translate(lang, "check:Your region is not allow to signup by phone")
} else if !util.IsPhoneValid(phone, countryCode) {
return i18n.Translate(lang, "check:Phone number is invalid")
}
}
}

View File

@ -26,8 +26,16 @@ import (
"github.com/xorm-io/core"
)
type VerifyResult struct {
Code int
Msg string
}
const (
wrongCode = "wrongCode"
VerificationSuccess int = 0
wrongCodeError = 1
noRecordError = 2
timeoutError = 3
)
type VerificationRecord struct {
@ -150,11 +158,11 @@ func getVerificationRecord(dest string) *VerificationRecord {
return &record
}
func CheckVerificationCode(dest, code, lang string) string {
func CheckVerificationCode(dest, code, lang string) *VerifyResult {
record := getVerificationRecord(dest)
if record == nil {
return i18n.Translate(lang, "verification:Code has not been sent yet!")
return &VerifyResult{noRecordError, i18n.Translate(lang, "verification:Code has not been sent yet!")}
}
timeout, err := conf.GetConfigInt64("verificationCodeTimeout")
@ -164,14 +172,14 @@ func CheckVerificationCode(dest, code, lang string) string {
now := time.Now().Unix()
if now-record.Time > timeout*60 {
return fmt.Sprintf(i18n.Translate(lang, "verification:You should verify your code in %d min!"), timeout)
return &VerifyResult{timeoutError, fmt.Sprintf(i18n.Translate(lang, "verification:You should verify your code in %d min!"), timeout)}
}
if record.Code != code {
return wrongCode
return &VerifyResult{wrongCodeError, i18n.Translate(lang, "verification:Wrong verification code!")}
}
return ""
return &VerifyResult{VerificationSuccess, ""}
}
func DisableVerificationCode(dest string) {
@ -194,14 +202,14 @@ func CheckSigninCode(user *User, dest, code, lang string) string {
}
result := CheckVerificationCode(dest, code, lang)
switch result {
case "":
switch result.Code {
case VerificationSuccess:
resetUserSigninErrorTimes(user)
return ""
case wrongCode:
case wrongCodeError:
return recordSigninErrorInfo(user, lang)
default:
return result
return result.Msg
}
}