diff --git a/controllers/account.go b/controllers/account.go index 3fcd0205..a780acf5 100644 --- a/controllers/account.go +++ b/controllers/account.go @@ -95,26 +95,6 @@ func (c *ApiController) Signup() { return } - if application.IsSignupItemVisible("Email") { - checkResult := object.CheckVerificationCode(form.Email, form.EmailCode) - if len(checkResult) != 0 { - c.ResponseError(fmt.Sprintf("Email%s", checkResult)) - return - } - } - - var checkPhone string - if application.IsSignupItemVisible("Phone") { - checkPhone = fmt.Sprintf("+%s%s", form.PhonePrefix, form.Phone) - checkResult := object.CheckVerificationCode(checkPhone, form.PhoneCode) - if len(checkResult) != 0 { - c.ResponseError(fmt.Sprintf("Phone%s", checkResult)) - return - } - } - - userId := fmt.Sprintf("%s/%s", form.Organization, form.Username) - organization := object.GetOrganization(fmt.Sprintf("%s/%s", "admin", form.Organization)) msg := object.CheckUserSignup(application, organization, form.Username, form.Password, form.Name, form.Email, form.Phone, form.Affiliation) if msg != "" { @@ -122,6 +102,26 @@ func (c *ApiController) Signup() { return } + if application.IsSignupItemVisible("Email") && form.Email != "" { + checkResult := object.CheckVerificationCode(form.Email, form.EmailCode) + if len(checkResult) != 0 { + c.ResponseError(fmt.Sprintf("Email: %s", checkResult)) + return + } + } + + var checkPhone string + if application.IsSignupItemVisible("Phone") && form.Phone != "" { + checkPhone = fmt.Sprintf("+%s%s", form.PhonePrefix, form.Phone) + checkResult := object.CheckVerificationCode(checkPhone, form.PhoneCode) + if len(checkResult) != 0 { + c.ResponseError(fmt.Sprintf("Phone: %s", checkResult)) + return + } + } + + userId := fmt.Sprintf("%s/%s", form.Organization, form.Username) + id := util.GenerateId() if application.GetSignupItemRule("ID") == "Incremental" { lastUser := object.GetLastUser(form.Organization) diff --git a/object/application_item.go b/object/application_item.go index d7898bfe..fbf0c3b4 100644 --- a/object/application_item.go +++ b/object/application_item.go @@ -64,6 +64,15 @@ func (application *Application) IsSignupItemVisible(itemName string) bool { return signupItem.Visible } +func (application *Application) IsSignupItemRequired(itemName string) bool { + signupItem := application.getSignupItem(itemName) + if signupItem == nil { + return false + } + + return signupItem.Required +} + func (application *Application) GetSignupItemRule(itemName string) string { signupItem := application.getSignupItem(itemName) if signupItem == nil { diff --git a/object/check.go b/object/check.go index d6f5b134..801823f4 100644 --- a/object/check.go +++ b/object/check.go @@ -48,6 +48,14 @@ func CheckUserSignup(application *Application, organization *Organization, usern } if application.IsSignupItemVisible("Email") { + if email == "" { + if application.IsSignupItemRequired("Email") { + return "email cannot be empty" + } else { + return "" + } + } + if HasUserByField(organization.Name, "email", email) { return "email already exists" } else if !util.IsEmailValid(email) { @@ -56,6 +64,14 @@ func CheckUserSignup(application *Application, organization *Organization, usern } if application.IsSignupItemVisible("Phone") { + if phone == "" { + if application.IsSignupItemRequired("Phone") { + return "phone cannot be empty" + } else { + return "" + } + } + if HasUserByField(organization.Name, "phone", phone) { return "phone already exists" } else if organization.PhonePrefix == "86" && !util.IsPhoneCnValid(phone) {