public async Task <IActionResult> Login(LoginWiewModel model, string ReturnUrl) { model.ExternalLogins = (await signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (ModelState.IsValid) { var user = await userManager.FindByEmailAsync(model.Email); if (user != null && user.EmailConfirmed == false && (await userManager.CheckPasswordAsync(user, model.PassWord))) { ModelState.AddModelError(string.Empty, "Email not confirmed yet"); return(View(model)); } var result = await signInManager.PasswordSignInAsync(model.Email, model.PassWord, model.RememberMe, false); if (result.Succeeded) { if (!string.IsNullOrEmpty(ReturnUrl)) { return(LocalRedirect(ReturnUrl)); } else { return(RedirectToAction("index", "home")); } } else { ModelState.AddModelError(string.Empty, "Invalid Login Attempt"); } } return(View(model)); }
public async Task <IActionResult> Login(string returnUrl) { LoginWiewModel model = new LoginWiewModel() { ReturnUrl = returnUrl, ExternalLogins = (await signInManager.GetExternalAuthenticationSchemesAsync()).ToList() }; return(View(model)); }
public async Task <IActionResult> ExternalLoginCallBack(string returnUrl = null, string remoteError = null) { returnUrl = returnUrl ?? Url.Content("~/"); LoginWiewModel loginWiewModel = new LoginWiewModel() { ReturnUrl = returnUrl, ExternalLogins = (await signInManager.GetExternalAuthenticationSchemesAsync()).ToList() }; if (remoteError != null) { ModelState.AddModelError("", $"Error form external provider {remoteError}"); return(View("Login", loginWiewModel)); } var info = await signInManager.GetExternalLoginInfoAsync(); if (info == null) { ModelState.AddModelError(" ", "Error loading external login information "); } var signInResult = await signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent : false, bypassTwoFactor : true); if (signInResult.Succeeded) { return(LocalRedirect(returnUrl)); } else { var email = info.Principal.FindFirstValue(ClaimTypes.Email); if (email != null) { var user = await userManager.FindByEmailAsync(email); if (user == null) { user = new ApplicationUser() { UserName = info.Principal.FindFirstValue(ClaimTypes.Email), Email = info.Principal.FindFirstValue(ClaimTypes.Email) }; await userManager.CreateAsync(user); } await userManager.AddLoginAsync(user, info); await signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } } ViewBag.Error = $"Email Claim not received from :{info.LoginProvider}"; ViewBag.ErrorMessage = "Please contact [email protected]"; return(View("Error")); }