public ICollection <string> ValidateUser(RegisterUserFromModel model) { var errors = new List <string>(); if (model.Username.Length < 5 || model.Username.Length > 20) { errors.Add($"Username '{model.Username}' is not valid. It must be between 5 and 20 characters long."); } if (!Regex.IsMatch(model.Email, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")) { errors.Add($"Email {model.Email} is not a valid e-mail address."); } if (model.Password.Length < 6 || model.Password.Length > 20) { errors.Add($"The provided password is not valid. It must be between {6} and {20} characters long."); } if (model.Password.Any(x => x == ' ')) { errors.Add($"The provided password cannot contain whitespaces."); } if (model.Password != model.ConfirmPassword) { errors.Add($"Password and its confirmation are different."); } return(errors); }
public HttpResponse Register(RegisterUserFromModel model) { var modelErrors = this.validator.ValidateUser(model); if (this.data.Users.Any(u => u.Username == model.Username)) { modelErrors.Add($"User with '{model.Username}' username already exists."); } if (this.data.Users.Any(u => u.Email == model.Email)) { modelErrors.Add($"User with '{model.Email}' e-mail already exists."); } if (modelErrors.Any()) { return(Error(modelErrors)); } var user = new User { Username = model.Username, Password = this.passwordHasher.HashPassword(model.Password), Email = model.Email, }; data.Users.Add(user); data.SaveChanges(); return(Redirect("/Users/Login")); }