public async Task <IActionResult> MFASetup()
        {
            string provider = "AspIdentity";
            var    user     = await _userManager.GetUserAsync(User);

            await _userManager.ResetAuthenticatorKeyAsync(user);

            var token = await _userManager.GetAuthenticatorKeyAsync(user);

            var qrCodeUrl = $"otpauth://topt/{provider}:{user.Email}?secret={token}&issuer={provider}&digits=6";
            var model     = new MFASetupViewModel()
            {
                Token = token, QrCodeUrl = qrCodeUrl
            };

            return(View(model));
        }
        public async Task <IActionResult> MFASetup(MFASetupViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = await _userManager.GetUserAsync(User);

                var succeed = await _userManager.VerifyTwoFactorTokenAsync(user, _userManager.Options.Tokens.AuthenticatorTokenProvider, model.Code);

                if (succeed)
                {
                    await _userManager.SetTwoFactorEnabledAsync(user, true);

                    return(RedirectToAction("index", "Home"));
                }
                else
                {
                    ModelState.AddModelError("MFA setup", "MFA could not be validated");
                }
            }
            return(View(model));
        }