public async Task <IActionResult> LoginTwoStep(TwoStepModel twoStepModel, string returnUrl, string email)
        {
            if (!ModelState.IsValid)
            {
                return(View(twoStepModel));
            }

            var user = await _signInManager.GetTwoFactorAuthenticationUserAsync();

            if (user == null)
            {
                return(RedirectToAction(nameof(Error), new { returnUrl }));
            }

            var result = await _signInManager.TwoFactorSignInAsync("Email", twoStepModel.TwoFactorCode,
                                                                   twoStepModel.RememberLogin, rememberClient : false);

            if (result.Succeeded)
            {
                return(this.LoadingPage("Redirect", returnUrl));
            }
            else if (result.IsLockedOut)
            {
                await HandleLockout(email, returnUrl);

                return(View(twoStepModel));
            }
            else
            {
                return(RedirectToAction(nameof(Error), new { returnUrl }));
            }
        }
Пример #2
0
        public async Task <IActionResult> LoginTwoStep(TwoStepModel twoStepModel, string returnUrl = null)
        {
            if (!ModelState.IsValid)
            {
                return(View(twoStepModel));
            }

            var user = await _signInManager.GetTwoFactorAuthenticationUserAsync();

            if (user == null)
            {
                return(RedirectToAction(nameof(Error)));
            }

            var result = await _signInManager.TwoFactorSignInAsync("Email", twoStepModel.TwoFactorCode, twoStepModel.RememberMe, rememberClient : false);

            if (result.Succeeded)
            {
                return(RedirectToLocal(returnUrl));
            }
            else if (result.IsLockedOut)
            {
                //Same logic as in the Login action
                ModelState.AddModelError("", "The account is locked out");
                return(View());
            }
            else
            {
                ModelState.AddModelError("", "Invalid Login Attempt");
                return(View());
            }
        }
        public async Task <IActionResult> LoginTwoStep(TwoStepModel twoStepModel, string returnUrl = null)
        {
            if (!ModelState.IsValid)
            {
                return(View(model: twoStepModel));
            }

            var user = await _signInManager.GetTwoFactorAuthenticationUserAsync();

            if (user == null)
            {
                return(RedirectToAction(actionName: nameof(Error)));
            }

            var result = await _signInManager.TwoFactorSignInAsync(provider : "Email", code : twoStepModel.TwoFactorCode, isPersistent : twoStepModel.RememberMe, rememberClient : false);

            if (result.Succeeded)
            {
                return(RedirectToLocal(returnUrl: returnUrl));
            }

            if (result.IsLockedOut)
            {
                //TODO: Same logic as in the Login action
                ModelState.AddModelError(key: "", errorMessage: "The account is locked out");
                return(View());
            }

            ModelState.AddModelError(key: "", errorMessage: "Invalid Login Attempt");
            return(View());
        }
Пример #4
0
        public async Task <IActionResult> LoginTwoStep(TwoStepModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View());
            }

            var user = await _signManager.GetTwoFactorAuthenticationUserAsync();

            if (user == null)
            {
                return(View("Error"));
            }

            var code = await _userManager.GenerateTwoFactorTokenAsync(user, model.SelectedProvider);

            if (string.IsNullOrWhiteSpace(code))
            {
                return(View("Error"));
            }

            var message = "Your security code is: " + code;

            if (model.SelectedProvider == "Email")
            {
                await _emailSender.SendEmailAsync(await _userManager.GetEmailAsync(user), "Security Code", message);
            }
            else if (model.SelectedProvider == "Phone")
            {
                await _sMSSender.SendSms(await _userManager.GetPhoneNumberAsync(user), message);
            }

            return(RedirectToAction(nameof(VerifyCode), new { Provider = model.SelectedProvider, ReturnUrl = model.ReturnUrl, RememberMe = model.RememberMe }));
        }
Пример #5
0
        public async Task <IActionResult> LoginTwoStep(bool rememberMe, string returnUrl = "")
        {
            ViewData["ReturnUrl"] = returnUrl;

            var user = await _signManager.GetTwoFactorAuthenticationUserAsync();

            if (user == null)
            {
                return(NotFound());
            }

            var userFactors = await _userManager.GetValidTwoFactorProvidersAsync(user);

            var factorOptions = userFactors.Select(purpose => new SelectListItem {
                Text = purpose, Value = purpose
            }).ToList();

            var model = new TwoStepModel {
                Providers = factorOptions, ReturnUrl = returnUrl, RememberMe = rememberMe
            };

            return(View(model));
        }
        public async Task <IActionResult> LoginTwoStep(TwoStepModel twoStepModel, string returnUrl = null)
        {
            if (!ModelState.IsValid)
            {
                return(View(twoStepModel));
            }

            var user = await _signInManager.GetTwoFactorAuthenticationUserAsync();

            if (user is null)
            {
                return(RedirectToAction(nameof(Error)));
            }

            var result =
                await _signInManager.TwoFactorSignInAsync("Email", twoStepModel.TwoFactorCode, twoStepModel.RememberMe,
                                                          rememberClient : false);

            if (result.Succeeded)
            {
                return(RedirectToLocal(returnUrl));
            }

            if (result.IsLockedOut)
            {
                var forgotPasswordLink = Url.Action(nameof(ForgotPassword), "Account", new { }, Request.Scheme);
                var message            =
                    $"Your account is locked out, to reset your password, please click this link: {forgotPasswordLink}";
                await _emailSender.SendEmailAsync(user.Email, "Locked out account information", message);

                ModelState.AddModelError("", "The account is locked out");
                return(View());
            }

            ModelState.AddModelError("", "Invalid login attempt");
            return(View());
        }
Пример #7
0
 public async Task <IActionResult> LoginTwoStep(TwoStepModel twoStepModel, string returnUrl = null)
 {
     return(View());
 }