1
0
mirror of https://git.teknik.io/Teknikode/Teknik.git synced 2023-08-02 14:16:22 +02:00

Added prompting for 2 factor auth setup after turning it on and saving.

This commit is contained in:
Uncled1023 2016-06-30 00:53:04 -07:00
parent c95849f468
commit 62b3af41c1
3 changed files with 21 additions and 11 deletions

View File

@ -337,6 +337,7 @@ namespace Teknik.Areas.Users.Controllers
user.SecuritySettings.RecoveryVerified = false; user.SecuritySettings.RecoveryVerified = false;
} }
bool oldTwoFactor = user.SecuritySettings.TwoFactorEnabled;
user.SecuritySettings.TwoFactorEnabled = twoFactorEnabled; user.SecuritySettings.TwoFactorEnabled = twoFactorEnabled;
string newKey = string.Empty; string newKey = string.Empty;
if (twoFactorEnabled) if (twoFactorEnabled)
@ -364,6 +365,11 @@ namespace Teknik.Areas.Users.Controllers
string verifyUrl = Url.SubRouteUrl("user", "User.VerifyRecoveryEmail", new { Code = verifyCode }); string verifyUrl = Url.SubRouteUrl("user", "User.VerifyRecoveryEmail", new { Code = verifyCode });
UserHelper.SendRecoveryEmailVerification(Config, user.Username, user.SecuritySettings.RecoveryEmail, resetUrl, verifyUrl); UserHelper.SendRecoveryEmailVerification(Config, user.Username, user.SecuritySettings.RecoveryEmail, resetUrl, verifyUrl);
} }
if (!oldTwoFactor && twoFactorEnabled)
{
return Json(new { result = new { checkAuth = true, key = newKey, qrUrl = Url.SubRouteUrl("user", "User.Action", new { action = "GenerateAuthQrCode", key = newKey }) } });
}
return Json(new { result = true }); return Json(new { result = true });
} }
return Json(new { error = "User does not exist" }); return Json(new { error = "User does not exist" });

View File

@ -128,7 +128,17 @@
success: function (html) { success: function (html) {
$.unblockUI(); $.unblockUI();
if (html.result) { if (html.result) {
window.location.reload(); if (html.result.checkAuth)
{
$('#setupAuthenticatorLink').removeClass('hide');
$('#authSetupSecretKey').text(html.result.key);
$('#authQRCode').attr("src", html.result.qrUrl);
$('#authenticatorSetup').modal('show');
}
else
{
window.location.reload();
}
} }
else { else {
var error = html; var error = html;

View File

@ -29,8 +29,6 @@
<div id="authSetupStatus"></div> <div id="authSetupStatus"></div>
</div> </div>
</div> </div>
@if (Model.SecuritySettings.TwoFactorEnabled)
{
<form class="form" action="##" method="post" id="confirmAuthSetup"> <form class="form" action="##" method="post" id="confirmAuthSetup">
<p>To get a third party app working, either scan the QR code below or type the secret key into the app.</p> <p>To get a third party app working, either scan the QR code below or type the secret key into the app.</p>
<div class="row"> <div class="row">
@ -38,7 +36,7 @@
<p class="text-muted">QR Code:</p> <p class="text-muted">QR Code:</p>
</div> </div>
<div class="col-sm-8"> <div class="col-sm-8">
<img src="@Url.SubRouteUrl("user", "User.Action", new { action = "GenerateAuthQrCode", key = Model.SecuritySettings.TwoFactorKey })" width="200" height="200" alt="qr code" /> <img id="authQRCode" src="@Url.SubRouteUrl("user", "User.Action", new { action = "GenerateAuthQrCode", key = Model.SecuritySettings.TwoFactorKey })" width="200" height="200" alt="qr code" />
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -64,7 +62,6 @@
<button class="btn btn-primary" id="auth_setup_confirm" type="button" name="auth_setup_confirm">Confirm</button> <button class="btn btn-primary" id="auth_setup_confirm" type="button" name="auth_setup_confirm">Confirm</button>
</div> </div>
</form> </form>
}
</div> </div>
</div> </div>
</div> </div>
@ -136,12 +133,9 @@
<input id="update_security_two_factor" name="update_security_two_factor" title="whether the key should be saved on the server or not" type="checkbox" value="true" @(Model.SecuritySettings.TwoFactorEnabled ? "checked" : string.Empty) /> <input id="update_security_two_factor" name="update_security_two_factor" title="whether the key should be saved on the server or not" type="checkbox" value="true" @(Model.SecuritySettings.TwoFactorEnabled ? "checked" : string.Empty) />
</label> </label>
</div> </div>
@if (Model.SecuritySettings.TwoFactorEnabled) <p class="form-control-static @(Model.SecuritySettings.TwoFactorEnabled ? string.Empty : "hide")" id="setupAuthenticatorLink">
{ <small><a href="#" class="text-primary" id="SetupAuthenticator" data-toggle="modal" data-target="#authenticatorSetup"><i class="fa fa-lock"></i> Set Up Authenticator</a></small>
<p class="form-control-static"> </p>
<small><a href="#" class="text-primary" id="SetupAuthenticator" data-toggle="modal" data-target="#authenticatorSetup"><i class="fa fa-lock"></i> Set Up Authenticator</a></small>
</p>
}
</div> </div>
</div> </div>
<div class="row"> <div class="row">