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." })); } }