示例#1
0
        public IHttpResponse Register(RegisterUserViewModel model)
        {
            if (string.IsNullOrWhiteSpace(model.Username) || model.Username.Trim().Length < 4)
            {
                return(this.BadRequestErrorWithView("Please provide valid username with length of 4 or more characters."));
            }

            if (this.DbContext.Users.Any(x => x.Username == model.Username.Trim()))
            {
                return(this.BadRequestErrorWithView("User with the same name already exists."));
            }

            if (string.IsNullOrWhiteSpace(model.Password) || model.Password.Length < 6)
            {
                return(this.BadRequestErrorWithView("Please provide password of length 6 or more."));
            }

            if (model.Password != model.ConfirmPassword)
            {
                return(this.BadRequestErrorWithView("Passwords do not match."));
            }

            var hashedPassword = this.hashService.Hash(model.Password);

            model.Password = hashedPassword;

            var user = model.To <User>();

            var role = UserRole.User;

            if (!this.DbContext.Users.Any())
            {
                role = UserRole.Admin;
            }

            user.Role = role;
            this.DbContext.Users.Add(user);

            try
            {
                this.DbContext.SaveChanges();
            }
            catch (Exception e)
            {
                return(this.ServerError(e.Message));
            }

            return(this.Redirect("/users/login"));
        }