예제 #1
0
        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);
        }
예제 #2
0
        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"));
        }