public async Task <IActionResult> Register(ViewUserRegister userRegister) { try { if (ModelState.IsValid) { //Check if passwords match if (userRegister.Password == userRegister.PasswordConfirmation) { // Check if user already exists var user = await _userManager.FindByEmailAsync(userRegister.Email); if (user == null) { // Create a user and add a user role to it IdentityUser newUser = new IdentityUser { UserName = userRegister.UserName, Email = userRegister.Email }; var result = await _userManager.CreateAsync(newUser, userRegister.Password); if (result.Succeeded) { var createdUser = await _userManager.FindByEmailAsync(userRegister.Email); var roleResult = await _userManager.AddToRoleAsync(createdUser, "User"); if (roleResult.Succeeded) { return(RedirectToAction("Login", "Account")); } foreach (var error in roleResult.Errors) { ModelState.AddModelError("", error.Description); } } foreach (var error in result.Errors) { ModelState.AddModelError("", error.Description); } } ModelState.AddModelError("", "Email already has an account!"); } ModelState.AddModelError("", "Passwords are different!"); } } catch (Exception err) { Debug.WriteLine($"Error: {err.Message}"); } return(View()); }
public async Task <IActionResult> Register([AllowNull][FromBody] ViewUserRegister user) { var dbUser = _mapper.Map <UserRegister>(user); var registerStatus = await _authorizer.Register(dbUser); var model = new JsonApiResponse <bool> { Response = registerStatus }; if (registerStatus) { return(Ok(model)); } return(BadRequest(model)); }