public IHttpResponse Login(PostRegisterViewModel model) { string hashedPassword = this.hashService.Hash(model.Password); if (!(this.DbContext.Users.Any(user => (user.Username == model.Username.Trim()) && user.Password == hashedPassword))) { return(this.BadRequestErrorWithView("Invalid user information!")); } else { var user = this.DbContext.Users.First(u => u.Username == model.Username); //Adding cookie var mvcUser = new MvcUserInfo { Username = user.Username, Role = user.Role.ToString() }; var cookieContent = this.UserCookieService.GetUserCookie(mvcUser); HttpCookie cookie = new HttpCookie(AuthenticationCookieKey, cookieContent); this.Request.Cookies.Add(cookie); this.Response.Cookies.Add(cookie); } return(this.Redirect("/")); }
public async Task <IActionResult> Register([FromBody] PostRegisterViewModel model) { if (!ModelState.IsValid) { string errorMsg = null; foreach (var test in ModelState.Values) { foreach (var msg in test.Errors) { errorMsg = msg.ErrorMessage; } } return(BadRequest(errorMsg)); } var user = new IdentityUser { UserName = model.Email, Email = model.Email }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { var userAccount = await _userManager.FindByEmailAsync(model.Email); userAccount.EmailConfirmed = true; var findUserRole = await _roleManager.FindByNameAsync("User"); var userRole = new IdentityRole("User"); if (findUserRole == null) { await _roleManager.CreateAsync(userRole); } if (!await _userManager.IsInRoleAsync(userAccount, userRole.Name)) { await _userManager.AddToRoleAsync(userAccount, userRole.Name); } return(new OkResult()); } AddErrors(result); return(new BadRequestObjectResult(result.Errors)); }
public IHttpResponse Register(PostRegisterViewModel model) { Regex usernameAndPasswordRegex = new Regex(@"^\w+$"); Regex emailRegex = new Regex(@"^[A-z]+\@[A-z]+\.[A-z]{1,4}$"); string hashedPassword = this.hashService.Hash(model.Password); string hashedConfirmPassword = this.hashService.Hash(model.ConfirmPassword); 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)) { return(this.BadRequestErrorWithView("Invalid registration information format!")); } if (this.DbContext.Users.Any(user => user.Email == model.Email)) { return(this.BadRequestErrorWithView("Email is already in use!")); } if (hashedConfirmPassword == hashedPassword) { //Adding user to db User user = new User() { Username = model.Username, Password = hashedPassword, Email = model.Email }; if (!this.DbContext.Users.Any()) { user.Role = Role.Admin; model.Role = Role.Admin; } else { user.Role = Role.User; model.Role = Role.User; } using (this.DbContext) { if (this.DbContext.Users.Any(u => u.Username == model.Username) == true) { return(this.BadRequestErrorWithView("Username already exists!")); } this.DbContext.Users.Add(user); this.DbContext.SaveChanges(); } ////Adding cookie var mvcUser = new MvcUserInfo { Username = user.Username, Role = user.Role.ToString() }; var cookieContent = this.UserCookieService.GetUserCookie(mvcUser); HttpCookie cookie = new HttpCookie(AuthenticationCookieKey, cookieContent); this.Request.Cookies.Add(cookie); this.Response.Cookies.Add(cookie); } return(this.Redirect("/")); }