diff --git a/controllers/account.go b/controllers/account.go index edb39ac4..f48b0f5e 100644 --- a/controllers/account.go +++ b/controllers/account.go @@ -79,7 +79,7 @@ func (c *ApiController) Signup() { } userId := fmt.Sprintf("%s/%s", form.Organization, form.Username) - msg := object.CheckUserSignup(userId, form.Password) + msg := object.CheckUserSignup(userId, form.Password, form.Name, form.Email, form.PhonePrefix, form.Phone, form.Affiliation) if msg != "" { resp = Response{Status: "error", Msg: msg, Data: ""} } else { diff --git a/object/check.go b/object/check.go index dbbf71f3..36b30ecc 100644 --- a/object/check.go +++ b/object/check.go @@ -17,6 +17,8 @@ package object import ( "fmt" "regexp" + + "github.com/casdoor/casdoor/util" ) var reWhiteSpace *regexp.Regexp @@ -25,13 +27,21 @@ func init() { reWhiteSpace, _ = regexp.Compile("\\s") } -func CheckUserSignup(userId string, password string) string { +func CheckUserSignup(userId string, password string, displayName string, email string, phonePrefix string, phone string, affiliation string) string { if len(userId) == 0 || len(password) == 0 { return "username and password cannot be blank" } else if reWhiteSpace.MatchString(userId) { return "username cannot contain white spaces" } else if HasUser(userId) { return "username already exists" + } else if displayName == "" { + return "displayName cannot be blank" + } else if affiliation == "" { + return "affiliation cannot be blank" + } else if !util.IsEmailValid(email) { + return "email is invalid" + } else if phonePrefix == "86" && !util.IsPhoneCnValid(phone) { + return "phone number is invalid" } else { return "" } diff --git a/util/regex.go b/util/regex.go new file mode 100644 index 00000000..a399a10d --- /dev/null +++ b/util/regex.go @@ -0,0 +1,33 @@ +// Copyright 2021 The casbin Authors. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package util + +import "regexp" + +var reEmail *regexp.Regexp +var rePhoneCn *regexp.Regexp + +func init() { + reEmail, _ = regexp.Compile(`^[0-9a-z][_.0-9a-z-]{0,31}@([0-9a-z][0-9a-z-]{0,30}[0-9a-z]\.){1,4}[a-z]{2,4}$`) + rePhoneCn, _ = regexp.Compile("^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(17[0,3,5-8])|(18[0-9])|166|198|199|(147))\\d{8}$") +} + +func IsEmailValid(email string) bool { + return reEmail.MatchString(email) +} + +func IsPhoneCnValid(phone string) bool { + return rePhoneCn.MatchString(phone) +}