public IHttpResponse Register(DoRegisterViewModel model) { // Validate if (string.IsNullOrWhiteSpace(model.Username) || model.Username.Trim().Length < 4) { return(this.BadRequestError("Please provide valid username with length of 4 or more characters.")); } if (this.Db.Users.Any(x => x.Username == model.Username.Trim())) { return(this.BadRequestError("User with the same name already exists.")); } if (string.IsNullOrWhiteSpace(model.Password) || model.Password.Length < 6) { return(this.BadRequestError("Please provide password of length 6 or more.")); } if (model.Password != model.ConfirmPassword) { return(this.BadRequestError("Passwords do not match.")); } // Hash password var hashedPassword = this.hashService.Hash(model.Password); // Create user var user = new User { Username = model.Username.Trim(), Password = hashedPassword, FullName = model.FullName, Email = model.Email, }; if (!this.Db.Users.Any()) { user.Role = UserRole.Admin; } this.Db.Users.Add(user); try { this.Db.SaveChanges(); } catch (Exception e) { // TODO: Log error return(this.ServerError(e.Message)); } // Redirect return(this.Redirect("/users/login")); }
public async Task <IActionResult> Register(DoRegisterViewModel model) { if (ModelState.IsValid) { var user = mapper.Map <EventuresUser>(model); await this.userManager.CreateAsync(user, model.Password); await this.userManager.AddToRoleAsync(user, "User"); return(RedirectToAction("Login", "Users")); } ; return(View(model)); }
public HttpResponse Register(DoRegisterViewModel model) { if (IsUserSignIn()) { return(Redirect("/")); } if (model.Username == null || model.Username.Length < 5 || model.Username.Length > 20) { return(Error("Invalid username. The username should be between 5 and 20 characters.")); } if (!Regex.IsMatch(model.Username, @"^[a-zA-Z0-9\.]+$")) { return(Error("Invalid username. Only aphanumeric character are allowed.")); } if (string.IsNullOrWhiteSpace(model.Email) || !new EmailAddressAttribute().IsValid(model.Email)) { return(Error("Invalid email.")); } if (model.Password == null || model.Password.Length < 6 || model.Password.Length > 20) { return(Error("Invalid password. The password should be between 6 and 20 characters.")); } if (model.Password != model.ConfirmPassword) { return(Error("Passwords does not match.")); } if (!usersService.IsUsernameAvaible(model.Username)) { return(Error("Username already taken.")); } if (!usersService.IsEmailAvaible(model.Email)) { return(Error("Email already taken.")); } usersService.CreateUser(model.Username, model.Email, model.Password); return(Redirect("/Users/Login")); }
public IHttpResponse PostRegister(DoRegisterViewModel model) { Regex usernameAndPasswordRegex = new Regex(@"^\w+$"); Regex emailRegex = new Regex(@"^[A-z]+\@[A-z]+\.[A-z]{1,4}$"); string hashedPassword = this.hashService.Compute256Hash(model.Password); string hashedConfirmPassword = this.hashService.Compute256Hash(model.Password); model.Email = StringExtensions.UrlDecode(model.Email); if (emailRegex.Match(model.Email).Success == false || usernameAndPasswordRegex.Match(model.Password).Success == false || model.Password.Length < 3 || model.Password.Length > 50 || (usernameAndPasswordRegex.Match(model.Username).Success == false || model.Username.Length < 3 || model.Username.Length > 30)) { GetRegisterViewModel viewModel = new GetRegisterViewModel() { ErrorMessage = InvalidRegisterInformationMessage }; return(this.View("Register", HttpResponseStatusCode.BadRequest, viewModel)); } if (this.Context.Users.Any(user => user.Email == model.Email)) { GetRegisterViewModel viewModel = new GetRegisterViewModel() { ErrorMessage = EmailAlreadyExistsErrorMessage }; return(this.View("Register", HttpResponseStatusCode.BadRequest, viewModel)); } if (hashedConfirmPassword == hashedPassword) { //Adding user to db User user = new User { Id = Guid.NewGuid().ToString(), Username = model.Username, Password = hashedPassword, Email = model.Email }; using (this.Context) { if (this.Context.Users.Any(u => u.Username == model.Username) == true) { GetRegisterViewModel viewModel = new GetRegisterViewModel() { ErrorMessage = UsernameAlreadyExistsErrorMessage }; return(this.View("Register", HttpResponseStatusCode.BadRequest, viewModel)); } this.Context.Users.Add(user); this.Context.SaveChanges(); } } //Adding cookie HttpCookie cookie = new HttpCookie(AuthenticationCookieKey, this.UserCookieService.EncryptString(model.Username, EncryptKey)); this.Request.Cookies.Add(cookie); this.Response.Cookies.Add(cookie); return(this.View("Logged", HttpResponseStatusCode.Ok, model)); }