public async Task <IActionResult> Login(LoginViewModel model) { string apiStatus = "successful_login"; string apiMessage = "Successful logged into CardCraft"; CardCraftUser data = null; //Add service code to login in and authenticate against database // This doesn't count login failures towards account lockout // To enable password failures to trigger account lockout, set lockoutOnFailure: true var result = await SignManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, lockoutOnFailure : false); if (result.Succeeded) { data = await UserManager.FindByEmailAsync(model.Email); Logger.LogInformation(1, APILog(endPoint: "Login", statusCode: "200", apiStatus: apiStatus, apiMessage: apiMessage, data: data)); return(SuccessfulAPIResult(apiStatus, apiMessage, data)); } if (result.RequiresTwoFactor) { apiStatus = "user_requires_2FA"; apiMessage = "Please complete sign up process by checking link in email: " + model.Email; return(SuccessfulAPIResult(apiStatus, apiMessage)); //return RedirectToAction(nameof(SendCode), new { ReturnUrl = returnUrl, RememberMe = model.RememberMe }); } if (result.IsLockedOut) { apiStatus = "user_account_locked"; apiMessage = "Your user account is locked please check " + model.Email + "for details."; Logger.LogWarning(2, "User account locked out."); return(SuccessfulAPIResult(apiStatus, apiMessage)); } else { apiStatus = "invalid_login_attempt"; apiMessage = "Error logging you in. Please check email address or password."; ModelState.AddModelError(string.Empty, "Invalid login attempt."); return(ErrorAPIResult(apiStatus, apiMessage)); } //apiStatus = "invalid_login_attempt"; //apiMessage = "There was an issue logging you in. Please try again later or email [email protected]"; //ModelState.AddModelError(string.Empty, "Invalid login attempt."); //return ErrorAPIResult(apiStatus, apiMessage, model); }
public async Task <IActionResult> Login(string returnUrl, LoginViewModel model) { if (User.Identity.IsAuthenticated) { return(RedirectToAction("Index", "Profile")); } if (ModelState.IsValid) { UserModel user = await ManageUser.FindByEmailAsync(model.Email); if (user != null && await ManageUser.CheckPasswordAsync(user, model.Password)) { if (await ManageUser.IsEmailConfirmedAsync(user)) { var result = await SignManager.PasswordSignInAsync(user, model.Password, true, false); if (result.Succeeded) { if (!string.IsNullOrEmpty(returnUrl) && Url.IsLocalUrl(returnUrl)) { return(LocalRedirect(returnUrl)); } else { return(RedirectToAction("Index", "Home")); } } else { ModelState.AddModelError("Error", result.ToString()); } } else { ModelState.AddModelError("Error", "Email is not verified."); } } else { ModelState.AddModelError("Error", "Failed : Invalid Login Attempt"); } } return(View(model)); }