317 lines
10 KiB
JavaScript
317 lines
10 KiB
JavaScript
|
|
||
|
|
||
|
let displayError = function (msg) {
|
||
|
$("#error-display").text(msg).show('slow');
|
||
|
};
|
||
|
|
||
|
let hideError = function (msg) {
|
||
|
$("#error-display").hide('slow');
|
||
|
};
|
||
|
|
||
|
window.location.hash = '';
|
||
|
let hideProgress = function () {
|
||
|
$("#login-submit").removeClass('button-loader');
|
||
|
};
|
||
|
|
||
|
|
||
|
let showProgress = function () {
|
||
|
$("#login-submit").addClass('button-loader');
|
||
|
};
|
||
|
|
||
|
let pushDashboardToHistory = function () {
|
||
|
let defaultLandingPage = "https://faisanet.mib.com.mv/dashboard";
|
||
|
window.history.pushState({}, '', defaultLandingPage)
|
||
|
};
|
||
|
|
||
|
let getLandingPage = function (landingPageOption) {
|
||
|
let landingPage = "https://faisanet.mib.com.mv/profiles";
|
||
|
switch (landingPageOption) {
|
||
|
case "0":
|
||
|
{
|
||
|
//individual account login
|
||
|
|
||
|
landingPage = "https://faisanet.mib.com.mv/dashboard";
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
case "1":
|
||
|
{
|
||
|
//profiles
|
||
|
|
||
|
landingPage = "https://faisanet.mib.com.mv/accounts";
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
case "2":
|
||
|
{
|
||
|
|
||
|
//quick
|
||
|
|
||
|
landingPage = "https://faisanet.mib.com.mv/transfer/quick";
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
case "3":
|
||
|
{
|
||
|
//local
|
||
|
|
||
|
landingPage = "https://faisanet.mib.com.mv/transfer/local";
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
default:
|
||
|
{
|
||
|
//profiles
|
||
|
|
||
|
landingPage = "https://faisanet.mib.com.mv/profiles";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return landingPage;
|
||
|
}
|
||
|
|
||
|
|
||
|
let requestAuthType = function () {
|
||
|
showProgress();
|
||
|
hideError();
|
||
|
actionBlocker.blockActions();
|
||
|
let formData = $('#login-submit-form').serializeArray().reduce(function (obj, item) {
|
||
|
obj[item.name] = item.value;
|
||
|
return obj;
|
||
|
}, {});
|
||
|
|
||
|
delete formData['pgf02'];
|
||
|
|
||
|
$.ajax({
|
||
|
type: 'POST',
|
||
|
url: "https://faisanet.mib.com.mv/aAuth/getAuthType",
|
||
|
data: formData,
|
||
|
success: function (data, textStatus, request) {
|
||
|
actionBlocker.unblockActions();
|
||
|
//hideProgress();
|
||
|
let responseData = (JSON.parse(request.responseText));
|
||
|
let loginTypeParams = responseData['data'][0];
|
||
|
console.log(data, textStatus, request);
|
||
|
console.log(loginTypeParams);
|
||
|
if (loginTypeParams['loginType'] == 0) {
|
||
|
requestSimpleAuth();
|
||
|
} else {
|
||
|
requestXAuth(loginTypeParams);
|
||
|
}
|
||
|
|
||
|
},
|
||
|
error: function (request, textStatus, errorThrown) {
|
||
|
actionBlocker.unblockActions();
|
||
|
hideProgress();
|
||
|
|
||
|
|
||
|
|
||
|
let responseData = (JSON.parse(request.responseText));
|
||
|
displayError(responseData.reasonText);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
let get256Hash = function (text) {
|
||
|
const shaObj = new jsSHA("SHA-256", "TEXT", {encoding: "UTF8"});
|
||
|
/* .update() can be chained */
|
||
|
//shaObj.update("This is").update(" a ");
|
||
|
shaObj.update(text);
|
||
|
const hash = shaObj.getHash("HEX");
|
||
|
return hash.toUpperCase();
|
||
|
};
|
||
|
|
||
|
|
||
|
function getSalt(length) {
|
||
|
let result = '';
|
||
|
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||
|
const charactersLength = characters.length;
|
||
|
let counter = 0;
|
||
|
while (counter < length) {
|
||
|
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||
|
counter += 1;
|
||
|
}
|
||
|
return result;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
let getHashedLoginParams = function (userSalt) {
|
||
|
|
||
|
let formData = $('#login-submit-form').serializeArray().reduce(function (obj, item) {
|
||
|
obj[item.name] = item.value;
|
||
|
return obj;
|
||
|
}, {});
|
||
|
|
||
|
let clientSalt = getSalt(32);
|
||
|
let hashedpw = get256Hash (clientSalt + get256Hash(get256Hash(formData['pgf02']) + userSalt));
|
||
|
delete formData['pgf02'];
|
||
|
formData['pgf03']= hashedpw;
|
||
|
formData['clientSalt'] = clientSalt;
|
||
|
return formData;
|
||
|
|
||
|
|
||
|
|
||
|
};
|
||
|
|
||
|
let requestXAuth = function (loginTypeParams) {
|
||
|
showProgress();
|
||
|
hideError();
|
||
|
actionBlocker.blockActions();
|
||
|
let hashedLoginParams = getHashedLoginParams(loginTypeParams['userSalt']);
|
||
|
|
||
|
|
||
|
|
||
|
$.ajax({
|
||
|
type: 'POST',
|
||
|
url: "https://faisanet.mib.com.mv/aAuth/xAuth",
|
||
|
data: hashedLoginParams,
|
||
|
success: function (data, textStatus, request) {
|
||
|
actionBlocker.unblockActions();
|
||
|
//hideProgress();
|
||
|
let responseData = (JSON.parse(request.responseText));
|
||
|
console.log(data, textStatus, request);
|
||
|
console.log(responseData);
|
||
|
|
||
|
hideProgress();
|
||
|
|
||
|
|
||
|
if (responseData.otpVerified == 0) {
|
||
|
window.location = 'https://faisanet.mib.com.mv/auth2FA';
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
let landingPageOption = responseData.landingPage;
|
||
|
let landingPage = getLandingPage(landingPageOption);
|
||
|
|
||
|
|
||
|
switch (responseData.reasonCode) {
|
||
|
case "101":
|
||
|
{
|
||
|
//individual account login
|
||
|
window.location = landingPage;
|
||
|
break;
|
||
|
}
|
||
|
case "102":
|
||
|
{
|
||
|
//profiles
|
||
|
window.location = "https://faisanet.mib.com.mv/profiles";
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
default:
|
||
|
{
|
||
|
|
||
|
//profiles
|
||
|
window.location = "https://faisanet.mib.com.mv/profiles";
|
||
|
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
error: function (request, textStatus, errorThrown) {
|
||
|
actionBlocker.unblockActions();
|
||
|
hideProgress();
|
||
|
|
||
|
|
||
|
|
||
|
let responseData = (JSON.parse(request.responseText));
|
||
|
displayError(responseData.reasonText);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
let requestSimpleAuth = function () {
|
||
|
showProgress();
|
||
|
hideError();
|
||
|
actionBlocker.blockActions();
|
||
|
let formData = $('#login-submit-form').serializeArray().reduce(function (obj, item) {
|
||
|
obj[item.name] = item.value;
|
||
|
return obj;
|
||
|
}, {});
|
||
|
|
||
|
|
||
|
$.ajax({
|
||
|
type: 'POST',
|
||
|
url: "https://faisanet.mib.com.mv/aAuth",
|
||
|
data: formData,
|
||
|
success: function (data, textStatus, request) {
|
||
|
actionBlocker.unblockActions();
|
||
|
//hideProgress();
|
||
|
let responseData = (JSON.parse(request.responseText));
|
||
|
console.log(data, textStatus, request);
|
||
|
console.log(responseData);
|
||
|
|
||
|
hideProgress();
|
||
|
|
||
|
|
||
|
if (responseData.otpVerified == 0) {
|
||
|
window.location = 'https://faisanet.mib.com.mv/auth2FA';
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
let landingPageOption = responseData.landingPage;
|
||
|
let landingPage = getLandingPage(landingPageOption);
|
||
|
|
||
|
|
||
|
switch (responseData.reasonCode) {
|
||
|
case "101":
|
||
|
{
|
||
|
//individual account login
|
||
|
window.location = landingPage;
|
||
|
break;
|
||
|
}
|
||
|
case "102":
|
||
|
{
|
||
|
//profiles
|
||
|
window.location = "https://faisanet.mib.com.mv/profiles";
|
||
|
break;
|
||
|
|
||
|
}
|
||
|
default:
|
||
|
{
|
||
|
|
||
|
//profiles
|
||
|
window.location = "https://faisanet.mib.com.mv/profiles";
|
||
|
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
error: function (request, textStatus, errorThrown) {
|
||
|
actionBlocker.unblockActions();
|
||
|
hideProgress();
|
||
|
|
||
|
|
||
|
|
||
|
let responseData = (JSON.parse(request.responseText));
|
||
|
displayError(responseData.reasonText);
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
}
|
||
|
});
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
$("#login-submit").click(function (e) {
|
||
|
$('#error-info').hide('slow');
|
||
|
e.preventDefault();
|
||
|
requestAuthType();
|
||
|
//hashPassword();
|
||
|
//requestSimpleAuth();
|
||
|
|
||
|
});
|