public ICollection <string> ValidateUser(RegisterViewForm model) { var errors = new List <string>(); if (model.Username.Length < UserMinUsername || model.Username.Length > DefaultMaxLength) { errors.Add($"Username '{model.Username}' is not valid. It must be between {UserMinUsername} and {DefaultMaxLength} characters long."); } if (!Regex.IsMatch(model.Email, UserEmailRegularExpression)) { errors.Add($"Email {model.Email} is not a valid e-mail address."); } if (model.Password.Length < UserMinPassword || model.Password.Length > DefaultMaxLength) { errors.Add($"The provided password is not valid. It must be between {UserMinPassword} and {DefaultMaxLength} characters long."); } if (model.Password != model.ConfirmPassword) { errors.Add($"Password and its confirmation are different."); } return(errors); }
public HttpResponse Register(RegisterViewForm model) { var errors = this.validator.ValidateUser(model); if (this.userServices.UsernameAvailable(model.Username)) { return(Redirect("/Users/Register")); // return Error($"Username '{model.Username}' is already register."); } if (this.userServices.EmailAvailable(model.Email)) { return(Redirect("/Users/Register")); // return Error($"Email address '{model.Email}' is already register."); } if (errors.Any()) { return(Redirect("/Users/Register")); // return Error(errors); } var hashPassword = this.hasher.HashPassword(model.Password); var user = new User { Username = model.Username, Email = model.Email, Password = hashPassword, }; this.data.Users.Add(user); this.data.SaveChanges(); return(Redirect("/Users/Login")); }