public async Task <IActionResult> Login(LoginViewModel login, string returnUrl) { var validator = new LoginValidator(); var validationResult = validator.Validate(login); if (validationResult.IsValid) { var user = await _userManager.FindByEmailAsync(login.Email); if (user != null) { await _signInManager.SignOutAsync(); var result = await _signInManager .PasswordSignInAsync(user, login.Password, login.RememberMe, false); if (result.Succeeded) { var roles = await _userManager.GetRolesAsync(user); if (roles.Any(r => r == "Admin")) { var url = string.IsNullOrEmpty(returnUrl) ? Url.Action("Index", "Home", new { area = "Admin" }) : returnUrl; return(Redirect(url)); } return(Redirect(string.IsNullOrEmpty(returnUrl) ? Url.Action("Index", "Home") : returnUrl)); } } validationResult.Errors .Add(new ValidationFailure(nameof(LoginViewModel.Email), "Invalid user or password")); } var model = new MultiFormViewModel(); foreach (var error in validationResult.Errors) { model.ValidationErrors.Add(error.ToString()); } return(View("Login-register-forms", model)); }
public async Task <IActionResult> Register(RegisterViewModel register) { var validator = new RegisterValidator(); var validationResult = validator.Validate(register); if (validationResult.IsValid) { var user = new AppUser { UserName = register.Name, Email = register.Email }; var result = await _userManager .CreateAsync(user, register.Password); if (result.Succeeded) { return(View("Success", user.UserName)); } else { foreach (var error in result.Errors) { validationResult.Errors .Add(new ValidationFailure(error.Code, error.Description)); } } } var model = new MultiFormViewModel(); foreach (var error in validationResult.Errors) { model.ValidationErrors.Add(error.ToString()); } return(View("Login-register-forms", model)); }