You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
4.0 KiB
121 lines
4.0 KiB
9 years ago
|
/*!
|
||
|
* Iguana authorization
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
$(document).ready(function() {
|
||
|
// this should do as simple check whether it's a login or account create page
|
||
|
if ($(".login-form").width()) {
|
||
|
var savedPassphrase = JSON.parse(localstorageGetVal("iguanaPassphrase"));
|
||
|
|
||
|
addAuthorizationButtonAction("signin");
|
||
|
watchPassphraseKeyUpEvent("signin");
|
||
|
|
||
|
if (savedPassphrase.passphrase && savedPassphrase.isConfirmed === "yes")
|
||
|
$("#passphrase").val(savedPassphrase.passphrase);
|
||
|
$(".btn-signin").removeClass("disabled");
|
||
|
|
||
|
$(".login-form .btn-signup").click(function() {
|
||
|
openPage("create-account");
|
||
|
});
|
||
|
}
|
||
|
|
||
|
if ($(".create-account-form").width()) {
|
||
|
addAuthorizationButtonAction("add-account");
|
||
|
watchPassphraseKeyUpEvent("add-account");
|
||
|
initCreateAccountForm();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
function addAuthorizationButtonAction(buttonClassName) {
|
||
|
$(".btn-" + buttonClassName).click(function() {
|
||
|
// validate passphrase
|
||
|
// condition: 24 words in lower case followed by a single space character
|
||
|
var passphraseInput = $("#passphrase").val();
|
||
|
var totalSubstr = passphraseInput.match(/\b\w+\b/g);
|
||
|
var totalSubstrAlpha = passphraseInput.match(/\b[a-z]+\b/g); // count only words consist of characters
|
||
|
var totalSpaces = passphraseInput.match(/\s/g);
|
||
|
|
||
|
if (totalSubstr && totalSubstrAlpha && totalSpaces)
|
||
|
if (totalSubstr.length === 24 && totalSubstrAlpha.length === 24 && totalSpaces.length === 23) {
|
||
|
if (buttonClassName === "signin" ? walletLogin(passphraseInput) : walletCreate(passphraseInput) && verifyNewPassphrase()) {
|
||
|
toggleLoginErrorStyling(false);
|
||
|
openPage("dashboard");
|
||
|
} else {
|
||
|
toggleLoginErrorStyling(true);
|
||
|
}
|
||
|
} else {
|
||
|
toggleLoginErrorStyling(true);
|
||
|
}
|
||
|
else
|
||
|
toggleLoginErrorStyling(true);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function watchPassphraseKeyUpEvent(buttonClassName) {
|
||
|
$("#passphrase").keyup(function() {
|
||
|
if ($("#passphrase").val().length > 0) {
|
||
|
$(".btn-" + buttonClassName).removeClass("disabled");
|
||
|
} else {
|
||
|
$(".btn-" + buttonClassName).addClass("disabled");
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function toggleLoginErrorStyling(isError) {
|
||
|
if (isError) {
|
||
|
$("#passphrase").addClass("error");
|
||
|
$(".login-input-directions-error.col-red").removeClass("hidden");
|
||
|
$(".login-input-directions").addClass("hidden");
|
||
|
} else {
|
||
|
$("#passphrase").removeClass("error");
|
||
|
$(".login-input-directions-error.col-red").addClass("hidden");
|
||
|
}
|
||
|
$("#passphrase").val("");
|
||
|
}
|
||
|
|
||
|
function verifyNewPassphrase() {
|
||
|
var savedPassphrase = JSON.parse(localstorageGetVal("iguanaPassphrase"));
|
||
|
|
||
|
if (savedPassphrase.passphrase === $("#passphrase").val() && savedPassphrase.isConfirmed === "no") {
|
||
|
savedPassphrase.isConfirmed = "yes";
|
||
|
localstorageSetVal("iguanaPassphrase", savedPassphrase);
|
||
|
return true;
|
||
|
} else {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function initCreateAccountForm() {
|
||
|
var newPassphrase = PassPhraseGenerator.generatePassPhrase();
|
||
|
|
||
|
$(".create-account-form").removeClass("hidden");
|
||
|
$(".verify-passphrase-form").addClass("hidden");
|
||
|
$("#passphrase").val("");
|
||
|
|
||
|
$("#passphrase-saved-checkbox").prop("checked", false);
|
||
|
$(".generated-passhprase").html(newPassphrase);
|
||
|
$(".btn-verify-passphrase").addClass("disabled");
|
||
|
|
||
|
$("#passphrase-saved-checkbox").click(function() {
|
||
|
if ($("#passphrase-saved-checkbox").prop("checked"))
|
||
|
$(".btn-verify-passphrase").removeClass("disabled");
|
||
|
else
|
||
|
$(".btn-verify-passphrase").addClass("disabled");
|
||
|
});
|
||
|
|
||
|
$(".verify-passphrase-form .btn-back").click(function() {
|
||
|
initCreateAccountForm();
|
||
|
});
|
||
|
|
||
|
$(".create-account-form .btn-back").click(function() {
|
||
|
openPage("login");
|
||
|
});
|
||
|
|
||
|
$(".btn-verify-passphrase").click(function() {
|
||
|
// isConfirmed is required to check if a user can verify a passphrase on the 2nd step
|
||
|
localstorageSetVal("iguanaPassphrase", { "passphrase" : $(".generated-passhprase").text(), "isConfirmed": "no" });
|
||
|
$(".create-account-form").addClass("hidden");
|
||
|
$(".verify-passphrase-form").removeClass("hidden");
|
||
|
});
|
||
|
}
|