Current File : //var/webuzo-data/roundcube/public_html/plugins/webuzo/soft2fa/js/soft2fa.js |
window.rcmail && rcmail.addEventListener('init', function(evt) {
// Handle ajax responses
rcmail.addEventListener('plugin.soft2fa_response', function(data) {
var do_reload = true;
if(data.prevent_refresh != undefined && data.prevent_refresh == 1){
do_reload = false;
}
if(data.regen_qr_response != undefined && data.qr_code != undefined && data.auth_code != undefined){
jQuery('#secret_code').html(atob(data.auth_code));
jQuery('#app_qr').attr('data-qrcode', data.qr_code).html('').qrcode({"text" : data.qr_code});
jQuery('#qr_auth_code').attr('data-code', data.auth_code);
jQuery('.otp-input').val('');
}
if (data.message) {
rcmail.alert_dialog(data.message, function() {
if(do_reload == false){
return;
}
rcmail.reload();
});
}
if(data.error){
rcmail.alert_dialog(data.error);
}
});
jQuery('#whitelist-form').on('submit', function(e){
e.preventDefault();
var start_ip = jQuery('#w_start_ip').val();
var end_ip = jQuery('#w_end_ip').val();
var lock = rcmail.set_busy(true, 'loading');
rcmail.http_post('plugin.soft2fa_post_data', {
type : 'whitelist',
action: 'add',
start_ip: start_ip,
end_ip: end_ip
}, lock);
});
if (typeof $.fn.modal !== 'function') {
$(document).on('click', '[data-dismiss="modal"]', function(e) {
$(this).closest('.modal').hide();
});
}
});
// Handle authenticator stuff
function app_authenticator(status = 0){
if(status === 1){
var otp = ''
jQuery('.otp-input').each(function(){
var val = $(this).val()
if( val== '' || isNaN(val)){
$(this).focus();
return false;
}
otp += val.toString();
});
if(otp.length == 0){
return;
}
var lock = rcmail.set_busy(true, 'loading');
rcmail.http_post('plugin.soft2fa_post_data', { type : 'auth', action: 'enable', otp: otp }, lock);
return;
}
if(status === 2){
rcmail.confirm_dialog(rcmail.get_label('auth_confirm_dialog', 'webuzo'), 'delete', function() {
var lock = rcmail.set_busy(true, 'loading');
rcmail.http_post('plugin.soft2fa_post_data', {
type : 'auth',
action: 'disable'
}, lock);
});
return;
}
if(status == 3){
rcmail.confirm_dialog(rcmail.get_label('auth_reset_dialog', 'webuzo'), 'continue', function() {
var lock = rcmail.set_busy(true, 'loading');
rcmail.http_post('plugin.soft2fa_post_data', {
type : 'auth',
action : 'regen_qr'
}, lock);
});
return;
}
var qrtext = jQuery("#app_qr").attr("data-qrcode");
jQuery("#app_qr").html('').qrcode({"text" : qrtext});
try {
jQuery('#authenticator_model').modal('show');
} catch (error) {
jQuery('#authenticator_model').show();
$(document).on('click', '[data-dismiss="modal"]', function() {
$(this).closest('.modal').hide();
});
}
var fields = $('.otp-input');
fields.val('');
fields.on('keyup', function() {
var $this = $(this);
var value = $this.val();
// Only digits allowed
if (!/^\d$/.test(value)) {
$(this).val('');
return;
}
// Always put the digit in the first empty input starting from the top
for (let i = 0; i < fields.length; i++) {
var indx = $('.otp-input').index($this);
if (fields.eq(i).val() == '' || i == indx ) {
fields.eq(i).val(value);
if(i !== indx){
$this.val('');
}
// Move to the next field
if (i + 1 < fields.length) {
if(fields.eq(i + 1).val() != ''){
break;
}
fields.eq(i + 1).focus().select();
}
break;
}
}
});
// Autofocus first on load
fields.first().focus().select();
}
function app_backup_code(status = ''){
if(status === 1 || status === 2 || status === 3){
var title = rcmail.get_label('backup_code_enable', 'webuzo');
var action = 'enable';
if(status === 2){
title = rcmail.get_label('backup_code_disable', 'webuzo');
action = 'disable';
}
if(status === 3){
title = rcmail.get_label('backup_code_regen', 'webuzo');
action = 'regen_backup_codes';
}
rcmail.confirm_dialog(title, 'continue', function() {
var lock = rcmail.set_busy(true, 'loading');
rcmail.http_post('plugin.soft2fa_post_data', {
type : 'backup_codes',
action: action}, lock);
}
);
return;
}
try {
$("#backup_codes_model").modal('show');
} catch (error) {
jQuery('#backup_codes_model').show();
}
}
function copy_code(elem){
elem = jQuery(elem);
var textToCopy = atob(elem.attr('data-code'));
if (navigator.clipboard) {
// Navigator clipboard api method'ish
navigator.clipboard.writeText(textToCopy).then(function() {
rcmail.display_message(rcmail.gettext('clipboard_success','webuzo'));
}, function(err) {
rcmail.display_message(rcmail.gettext('clipboard_error','webuzo'));
});
}
}
function handle_ip(id = ''){
var title = rcmail.get_label('ip_delete_confirm_dialog', 'webuzo');
rcmail.confirm_dialog(title, 'continue', function() {
var lock = rcmail.set_busy(true, 'loading');
rcmail.http_post('plugin.soft2fa_post_data', { type : 'whitelist', action: 'delete', id: id}, lock);
});
}