var Login = function() {
toastr.options = {
"closeButton": true,
"debug": false,
"positionClass": "toast-top-right",
"showDuration": "1000",
"hideDuration": "1000",
"timeOut": "5000",
"extendedTimeOut": "1000",
"showEasing": "swing",
"hideEasing": "linear",
"showMethod": "fadeIn",
"hideMethod": "fadeOut"
}
var handleLogin = function() {
$('.login-form').validate({
errorElement: 'span', //default input error message container
errorClass: 'help-block', // default input error message class
focusInvalid: false, // do not focus the last invalid input
rules: {
password: {
required: true
}
},
messages: {
password: {
required: "Password is required."
}
},
invalidHandler: function(event, validator) { //display error alert on form submit
$('.alert-danger', $('.login-form')).show();
},
highlight: function(element) { // hightlight error inputs
$(element)
.closest('.form-group').addClass('has-error'); // set error class to the control group
},
success: function(label) {
label.closest('.form-group').removeClass('has-error');
label.remove();
},
errorPlacement: function(error, element) {
error.insertAfter(element.closest('.input-icon'));
},
submitHandler: function(form) {
var IguanaLoginData = {
'handle': $('#wallet-handle').val(),
'password': $('#password').val(),
'timeout': '2592000'
}
//console.log('== Data Collected ==');
//console.log(IguanaLoginData);
// Use AJAX to post the object to login user
$.ajax({
type: 'GET',
data: IguanaLoginData,
url: 'http://127.0.0.1:7778/api/bitcoinrpc/walletpassphrase',
dataType: 'text',
success: function(data, textStatus, jqXHR) {
var LoginOutput = JSON.parse(data);
var LoginDataToStore = JSON.stringify(data);
sessionStorage.setItem('IguanaActiveAccount', LoginDataToStore);
//console.log(sessionStorage);
console.log('== Data OutPut ==');
console.log(LoginOutput);
if (LoginOutput.result === 'success') {
console.log('Success');
//swal("Success", "Login Successfully.", "success");
toastr.success("Login Successfull", "Account Notification")
NProgress.done();
$('#wallet-handle').val('')
$('#password').val('')
$('#login-section').hide();
$('body').removeClass( " login" ).addClass( "page-sidebar-closed-hide-logo page-container-bg-solid page-header-fixed" );
$('#wallet-section').fadeIn();
}
else {
// If something goes wrong, alert the error message that our service returned
//swal("Oops...", "Something went wrong!", "error");
toastr.warning("Opps... Something went wrong!", "Account Notification")
console.log(data.statusText);
console.log(textStatus);
console.log(jqXHR);
NProgress.done();
}
},
error: function(xhr, textStatus, error) {
console.log('failure');
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
//swal("Oops...", "Something went wrong!", "error");
toastr.warning("Opps... Something went wrong!", "Account Notification")
NProgress.done();
}
});
//form.submit(); // form validation success, call ajax form submit
}
});
$('.login-form input').keypress(function(e) {
if (e.which == 13) {
if ($('.login-form').validate().form()) {
$('.login-form').submit(); //form validation success, call ajax form submit
}
return false;
}
});
}
var handleRegister = function() {
function format(state) {
if (!state.id) { return state.text; }
var $state = $(
'
' + state.text + ''
);
return $state;
}
if (jQuery().select2 && $('#country_list').size() > 0) {
$("#country_list").select2({
placeholder: ' Select a Country',
templateResult: format,
templateSelection: format,
width: 'auto',
escapeMarkup: function(m) {
return m;
}
});
$('#country_list').change(function() {
$('.register-form').validate().element($(this)); //revalidate the chosen dropdown value and show error or success message for the input
});
}
$('.register-form').validate({
errorElement: 'span', //default input error message container
errorClass: 'help-block', // default input error message class
focusInvalid: false, // do not focus the last invalid input
ignore: "",
rules: {
fullname: {
required: true
},
email: {
required: true,
email: true
},
address: {
required: true
},
city: {
required: true
},
country: {
required: true
},
username: {
required: true
},
password: {
required: true
},
rpassword: {
equalTo: "#register_password"
},
tnc: {
required: true
}
},
messages: { // custom messages for radio buttons and checkboxes
tnc: {
required: "Please accept TNC first."
}
},
invalidHandler: function(event, validator) { //display error alert on form submit
},
highlight: function(element) { // hightlight error inputs
$(element)
.closest('.form-group').addClass('has-error'); // set error class to the control group
},
success: function(label) {
label.closest('.form-group').removeClass('has-error');
label.remove();
},
errorPlacement: function(error, element) {
if (element.attr("name") == "tnc") { // insert checkbox errors after the container
error.insertAfter($('#register_tnc_error'));
} else if (element.closest('.input-icon').size() === 1) {
error.insertAfter(element.closest('.input-icon'));
} else {
error.insertAfter(element);
}
},
submitHandler: function(form) {
form.submit();
}
});
$('.register-form input').keypress(function(e) {
if (e.which == 13) {
if ($('.register-form').validate().form()) {
$('.register-form').submit();
}
return false;
}
});
jQuery('#register-btn').click(function() {
jQuery('.login-form').hide();
jQuery('.register-form').show();
});
jQuery('#register-back-btn').click(function() {
jQuery('.login-form').show();
jQuery('.register-form').hide();
});
}
var handleLogout = function() {
$('#logout-account').click(function() {
$.ajax({
type: 'GET',
url: 'http://127.0.0.1:7778/api/SuperNET/logout',
dataType: 'text',
success: function(data, textStatus, jqXHR) {
var LogoutOutput = JSON.parse(data);
sessionStorage.clear();
//console.log('== Data OutPut ==');
//console.log(LogoutOutput);
if (LogoutOutput.result === 'logged out') {
console.log('Success');
//swal("Success", "Logout Successfully.", "success");
toastr.success("Logout Successfull", "Account Notification")
NProgress.done();
$('#login-section').show();
$('body').removeClass( "page-sidebar-closed-hide-logo page-container-bg-solid page-header-fixed" ).addClass( " login" );
$('#wallet-section').hide();
//Make sure these fields are unhidden.
$('#login-welcome').text('Welcome.');
$('#wallet-handle').show();
$('.create-account').show();
$('#register-btn').show();
$('#logint-another-wallet').hide();
}
else {
// If something goes wrong, alert the error message that our service returned
//swal("Oops...", "Something went wrong!", "error");
toastr.warning("Opps... Something went wrong!", "Account Notification")
console.log(data.statusText);
console.log(textStatus);
console.log(jqXHR);
NProgress.done();
}
},
error: function(xhr, textStatus, error) {
console.log('failure');
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
//swal("Oops...", "Something went wrong!", "error");
toastr.warning("Opps... Something went wrong!", "Account Notification")
NProgress.done();
}
});
});
};
var handleLock = function() {
//Begin Lock Active Wallet
$('#lock-screen').click(function() {
$.ajax({
type: 'GET',
url: 'http://127.0.0.1:7778/api/bitcoinrpc/walletlock',
dataType: 'text',
success: function(data, textStatus, jqXHR) {
var LockOutput = JSON.parse(data);
//Begin Check Active Wallet's status
$.ajax({
type: 'GET',
url: 'http://127.0.0.1:7778/api/SuperNET/activehandle',
dataType: 'text',
success: function(data, textStatus, jqXHR) {
var ActiveHandleOutput = JSON.parse(data);
var ActiveHandleDataToStore = JSON.stringify(data);
sessionStorage.setItem('IguanaActiveAccount', ActiveHandleDataToStore);
console.log('== Data OutPut - Active Handle ==');
console.log(ActiveHandleOutput);
if (ActiveHandleOutput.status === 'locked') {
console.log('Success');
//swal("Success", "Wallet Locked Successfully.", "success");
toastr.success("Wallet Locked Successfully", "Account Notification")
NProgress.done();
$('#login-section').show();
$('body').removeClass( "page-sidebar-closed-hide-logo page-container-bg-solid page-header-fixed" ).addClass( " login" );
$('#wallet-section').hide();
//Hide some login fields not needing at lock screen
console.log('Wallet is Locked.');
$('#login-welcome').text('Wallet Locked.');
$('#wallet-handle').hide();
$('#register-btn').hide();
$('#logint-another-wallet').show();
}
else {
// If something goes wrong, alert the error message that our service returned
//swal("Oops...", "Something went wrong!", "error");
toastr.warning("Opps... Something went wrong!", "Account Notification")
console.log(data.statusText);
console.log(textStatus);
console.log(jqXHR);
NProgress.done();
}
},
error: function(xhr, textStatus, error) {
console.log('failure');
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
//swal("Oops...", "Something went wrong!", "error");
toastr.warning("Opps... Something went wrong!", "Account Notification")
NProgress.done();
}
});
//End Check Active Wallet's status
//console.log('== Data OutPut - Wallet Lock ==');
//console.log(LockOutput);
},
error: function(xhr, textStatus, error) {
console.log('failure');
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
//swal("Oops...", "Something went wrong!", "error");
toastr.warning("Opps... Something went wrong!", "Account Notification")
NProgress.done();
}
});
});
//End Lock Active Wallet
};
var handleCheckLogin = function() {
if ( sessionStorage.getItem('IguanaActiveAccount') === null ) {
console.log('There\'s no active wallet logged in. Please Login.');
$('#logint-another-wallet').hide();
} else {
var CheckLoginData = JSON.parse(sessionStorage.getItem('IguanaActiveAccount'));
if ( JSON.parse(CheckLoginData).status === 'unlocked' ) {
console.log(JSON.parse(CheckLoginData).status);
$('#wallet-handle').val('')
$('#password').val('')
$('#login-section').hide();
$('body').removeClass( " login" ).addClass( "page-sidebar-closed-hide-logo page-container-bg-solid page-header-fixed" );
$('#wallet-section').fadeIn();
} else if ( JSON.parse(CheckLoginData).status === 'locked' ) {
console.log('Wallet is Locked.');
$('#login-welcome').text('Wallet Locked.');
$('#wallet-handle').hide();
$('#register-btn').hide();
}
}
};
var handleLoginAnotherWallet = function() {
$('#logint-another-wallet').click(function() {
$('#logint-another-wallet').show();
$.ajax({
type: 'GET',
url: 'http://127.0.0.1:7778/api/SuperNET/logout',
dataType: 'text',
success: function(data, textStatus, jqXHR) {
var LogoutOutput = JSON.parse(data);
sessionStorage.clear();
//console.log('== Data OutPut ==');
//console.log(LogoutOutput);
if (LogoutOutput.result === 'logged out') {
console.log('Success');
//swal("Success", "Logout Successfully.", "success");
toastr.success("Logout Successfull", "Account Notification")
NProgress.done();
$('#login-section').show();
$('body').removeClass( "page-sidebar-closed-hide-logo page-container-bg-solid page-header-fixed" ).addClass( " login" );
$('#wallet-section').hide();
//Make sure these fields are unhidden.
$('#login-welcome').text('Welcome.');
$('#wallet-handle').show();
$('.create-account').show();
$('#register-btn').show();
$('#logint-another-wallet').hide();
}
else {
// If something goes wrong, alert the error message that our service returned
//swal("Oops...", "Something went wrong!", "error");
toastr.warning("Opps... Something went wrong!", "Account Notification")
console.log(data.statusText);
console.log(textStatus);
console.log(jqXHR);
NProgress.done();
}
},
error: function(xhr, textStatus, error) {
console.log('failure');
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
//swal("Oops...", "Something went wrong!", "error");
toastr.warning("Opps... Something went wrong!", "Account Notification")
NProgress.done();
}
});
});
};
return {
//main function to initiate the module
init: function() {
handleLogin();
handleLock();
handleRegister();
handleLogout();
handleCheckLogin();
handleLoginAnotherWallet();
}
};
}();
jQuery(document).ready(function() {
Login.init();
});