File: /python/moda/public_html/tech/old/assets/js/whmcs/authn.js
/**
* WHMCS authentication module
*
* @copyright Copyright (c) WHMCS Limited 2005-2017
* @license http://www.whmcs.com/license/ WHMCS Eula
*/
(function(module) {
if (!WHMCS.hasModule('authn')) {
WHMCS.loadModule('authn', module);
}
})({
provider: function () {
var callbackFired = false;
/**
* @return {jQuery}
*/
this.feedbackContainer = function () {
return jQuery(".providerLinkingFeedback");
};
/**
* @returns {jQuery}
*/
this.btnContainer = function () {
return jQuery(".providerPreLinking");
};
this.feedbackMessage = function (context) {
if (typeof context === 'undefined') {
context = 'complete_sign_in';
}
var msgContainer = jQuery('p.providerLinkingMsg-preLink-' + context);
if (msgContainer.length) {
return msgContainer.first().html();
}
return '';
};
this.showProgressMessage = function(callback) {
this.feedbackContainer().fadeIn('fast', function () {
if (typeof callback === 'function' && !callbackFired) {
callbackFired = true;
callback();
}
});
};
this.preLinkInit = function (callback) {
var icon = '<i class="fas fa-fw fa-spinner fa-spin"></i> ';
this.feedbackContainer()
.removeClass('alert-danger alert-success')
.addClass('alert alert-info')
.html(icon + this.feedbackMessage())
.hide();
var btnContainer = this.btnContainer();
if (btnContainer.length) {
if (btnContainer.data('hideOnPrelink')) {
var self = this;
btnContainer.fadeOut('false', function ()
{
self.showProgressMessage(callback)
});
} else if (btnContainer.data('disableOnPrelink')) {
btnContainer.find('.btn').addClass('disabled');
this.showProgressMessage(callback);
} else {
this.showProgressMessage(callback);
}
} else {
this.showProgressMessage(callback);
}
};
this.displayError = function (provider, errorCondition, providerErrorText){
jQuery('#providerLinkingMessages .provider-name').html(provider);
var feedbackMsg = this.feedbackMessage('connect_error');
if (errorCondition) {
var errorMsg = this.feedbackMessage(errorCondition);
if (errorMsg) {
feedbackMsg = errorMsg
}
}
if (providerErrorText && $('.btn-logged-in-admin').length > 0) {
feedbackMsg += ' Error: ' + providerErrorText;
}
this.feedbackContainer().removeClass('alert-info alert-success')
.addClass('alert alert-danger')
.html(feedbackMsg).slideDown();
};
this.displaySuccess = function (data, context, provider) {
var icon = provider.icon;
var htmlTarget = context.htmlTarget;
var targetLogin = context.targetLogin;
var targetRegister = context.targetRegister;
var displayName = provider.name;
var feedbackMsg = '';
switch (data.result) {
case "logged_in":
case "2fa_needed":
feedbackMsg = this.feedbackMessage('2fa_needed');
this.feedbackContainer().removeClass('alert-danger alert-warning alert-success')
.addClass('alert alert-info')
.html(feedbackMsg);
window.location = data.redirect_url
? decodeURIComponent(data.redirect_url)
: decodeURIComponent(context.redirectUrl);
break;
case "linking_complete":
var accountInfo = '';
if (data.remote_account.email) {
accountInfo = data.remote_account.email;
} else {
accountInfo = data.remote_account.firstname + " " + data.remote_account.lastname;
}
accountInfo = accountInfo.trim();
feedbackMsg = this.feedbackMessage('linking_complete').trim().replace(':displayName', displayName);
if (accountInfo) {
feedbackMsg = feedbackMsg.replace(/\.$/, ' (' + accountInfo + ').');
}
this.feedbackContainer().removeClass('alert-danger alert-warning alert-info')
.addClass('alert alert-success')
.html(icon + feedbackMsg);
break;
case "login_to_link":
if (htmlTarget === targetLogin) {
feedbackMsg = this.feedbackMessage('login_to_link-signin-required');
this.feedbackContainer().removeClass('alert-danger alert-success alert-info')
.addClass('alert alert-warning')
.html(icon + feedbackMsg);
} else {
var emailField = jQuery("input[name=email]");
var firstNameField = jQuery("input[name=firstname]");
var lastNameField = jQuery("input[name=lastname]");
if (emailField.val() === "") {
emailField.val(data.remote_account.email);
}
if (firstNameField.val() === "") {
firstNameField.val(data.remote_account.firstname);
}
if (lastNameField.val() === "") {
lastNameField.val(data.remote_account.lastname);
}
if (htmlTarget === targetRegister) {
if (typeof WHMCS.client.registration === 'object') {
WHMCS.client.registration.prefillPassword();
}
feedbackMsg = this.feedbackMessage('login_to_link-registration-required');
this.feedbackContainer().fadeOut('slow', function () {
$(this).removeClass('alert-danger alert-success alert-info')
.addClass('alert alert-warning')
.html(icon + feedbackMsg).fadeIn('fast');
});
} else {
// this is checkout
if (typeof WHMCS.client.registration === 'object') {
WHMCS.client.registration.prefillPassword();
}
var self = this;
this.feedbackContainer().each(function (i, el) {
var container = $(el);
var linkContext = container.siblings('div .providerPreLinking').data('linkContext');
container.fadeOut('slow', function () {
if (linkContext === 'checkout-new') {
feedbackMsg = self.feedbackMessage('checkout-new');
} else {
feedbackMsg = self.feedbackMessage('login_to_link-signin-required');
}
container.removeClass('alert-danger alert-success alert-info')
.addClass('alert alert-warning')
.html(icon + feedbackMsg).fadeIn('fast');
});
});
}
}
break;
case "other_user_exists":
feedbackMsg = this.feedbackMessage('other_user_exists');
this.feedbackContainer().removeClass('alert-info alert-success')
.addClass('alert alert-danger')
.html(icon + feedbackMsg).slideDown();
break;
case "already_linked":
feedbackMsg = this.feedbackMessage('already_linked');
this.feedbackContainer().removeClass('alert-info alert-success')
.addClass('alert alert-danger')
.html(icon + feedbackMsg).slideDown();
break;
default:
feedbackMsg = this.feedbackMessage('default');
this.feedbackContainer().removeClass('alert-info alert-success')
.addClass('alert alert-danger')
.html(icon + feedbackMsg).slideDown();
break;
}
};
this.signIn = function (config, context, provider, providerDone, providerError) {
jQuery.ajax(config).done(function(data) {
providerDone();
WHMCS.authn.provider.displaySuccess(data, context, provider);
var table = jQuery('#tableLinkedAccounts');
if (table.length) {
WHMCS.ui.dataTable.getTableById('tableLinkedAccounts').ajax.reload();
}
}).error(function() {
providerError();
WHMCS.authn.provider.displayError();
});
};
return this;
}});