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")); }