public async Task <IActionResult> Enable2FA(string statusMessage = "")
        {
            var korisnik = await _userManager.GetUserAsync(User);

            if (korisnik == null)
            {
                return(NotFound($"Nema korisnika sa ID-om '{_userManager.GetUserId(User)}'."));
            }

            var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(korisnik);

            if (string.IsNullOrEmpty(unformattedKey))
            {
                await _userManager.ResetAuthenticatorKeyAsync(korisnik);

                unformattedKey = await _userManager.GetAuthenticatorKeyAsync(korisnik);
            }

            var email = await _userManager.GetEmailAsync(korisnik);

            var model = new Enable2FAVM
            {
                SharedKey        = FormatKey(unformattedKey),
                AuthenticatorUri = GenerateQrCodeUri(email, unformattedKey),
                StatusMessage    = statusMessage
            };

            return(View(model));
        }
        public async Task <IActionResult> Enable2FA(Enable2FAVM model)
        {
            var korisnik = await _userManager.GetUserAsync(User);

            if (korisnik == null)
            {
                return(NotFound($"Nema korisnika sa ID-om '{_userManager.GetUserId(User)}'."));
            }

            if (!ModelState.IsValid)
            {
                RedirectToAction(nameof(Enable2FA));
            }

            // Strip spaces and hypens
            var verificationCode = model.VerificationCode.Replace(" ", string.Empty).Replace("-", string.Empty);

            var is2faTokenValid = await _userManager.VerifyTwoFactorTokenAsync(
                korisnik, _userManager.Options.Tokens.AuthenticatorTokenProvider, verificationCode);

            if (!is2faTokenValid)
            {
                return(RedirectToAction(nameof(Enable2FA), new { statusMessage = "Netačan verifikacijski kod." }));
            }

            await _userManager.SetTwoFactorEnabledAsync(korisnik, true);

            var userId = await _userManager.GetUserIdAsync(korisnik);

            if (await _userManager.CountRecoveryCodesAsync(korisnik) == 0)
            {
                return(RedirectToAction(nameof(GenerisiCodove)));
            }
            else
            {
                return(RedirectToAction(nameof(TwoFactorAuth), new { statusMessage = "2FA je podešen." }));
            }
        }