diff --git a/dao/register.go b/dao/register.go index 95798b3802..6f5351504b 100644 --- a/dao/register.go +++ b/dao/register.go @@ -17,7 +17,7 @@ package dao import ( "errors" - // "regexp" + "regexp" "time" "github.com/vmware/harbor/models" @@ -74,8 +74,13 @@ func validate(user models.User) error { return errors.New("Username already exists.") } - if exist, _ := UserExists(models.User{Email: user.Email}, "email"); len(user.Email) > 0 && exist { - return errors.New("Email already exists.") + if len(user.Email) > 0 { + if m, _ := regexp.MatchString(`^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$`, user.Email); !m { + return errors.New("Email with illegal format.") + } + if exist, _ := UserExists(models.User{Email: user.Email}, "email"); exist { + return errors.New("Email already exists.") + } } if isIllegalLength(user.Realname, 0, 20) {