import {rellenarContraseña} from './scripts/contraseñaSeguras.js';
import {bodyHTML, bodyFA} from './scripts/html.js';
import {modal} from './scripts/modales/modalCrear.js';
import {modalCompartir} from './scripts/modales/modalCompartir.js';
import {modalEUsuario,modalENota,modalEditTarjetaCredito,modalEditCuentaBancaria} from './scripts/modales/modalesEditar.js';
import {plantillaUsuario,plantillaNota,plantillaTarjetaCredito,plantillaCuentaBancaria} from './scripts/plantillas.js'
import {sha512, sha256, cifrar,descifrar,utf8_to_b64,b64_to_utf8,generarParDeClaves,exportarClave,importarClavePublica,importarClavePrivada,cifrarConPublica,descifrarConPrivada,CodificarDatos,DecodificarDatos} from './scripts/seguridad.js'
//const baseDominio = '...';
//const portTLS = '..';
//const portTLS = '..';
const baseDominio = '192.168.10.2';
const portTLS = '4000';
var time;
// Creamos el almacenamiento. De momento el único almacenamiento persistente es
// LocalStorage, pero es fácil definir alternativas basadas en WebSQL, IndexedDB, etc.
/*var storage = new plog.storages.LocalStorage({maxSize: 200})
// Configuramos plog para que use el almacenamiento que acabamos de crear
plog.useStorage(storage);
plog.setLevel(plog.level.INFO);
// Escribimos mensajes en el log
plog.debug('debug message');
plog.info('info message');
plog.warn('warn message');
plog.error('error message');
plog.fatal('fatal message');
var events = storage.getEvents();
console.log(events);*/
/**
* funcion que devulve una columna (td) con los botones de borrar y editar, a la que le pasamos las funciones manejadoras de eventos, nombre de la tabla y variable i de esa tabla
* @param {*} i variable i del bucle para indicar el número del usuario
* @param {*} funcionBorrar funcion manejadora del evento click del boton borrar
* @param {*} funcionEditar funcion manejadora del evento click del boton editar
* @param {*} nombreTabla nombre de la tabla a la que se quiere añadir los botones
* @returns devuelve la columna (td) con los botones y sus manejadores añadidos
*/
function botonesEditarBorrar(i, funcionBorrar, funcionEditar, nombreTabla){
let columna = document.createElement('td');
let buttonEditar = document.createElement('a'); //Boton editar
buttonEditar.innerHTML = ``;
buttonEditar.id = 'Editar'+nombreTabla+'-' + i;
buttonEditar.className = "edit";
buttonEditar.setAttribute("data-index", i);
let buttonBorrar = document.createElement('a'); //Boton borrar
buttonBorrar.innerHTML = ``;
buttonBorrar.id = 'Borra'+nombreTabla+'-' + i;
buttonBorrar.classList.add("delete");
//Evento Borrar
buttonBorrar.addEventListener("click", funcionBorrar, false);
//Evento Editar Usuario
buttonEditar.addEventListener("click", funcionEditar, false);
columna.appendChild(buttonEditar);
columna.appendChild( document.createTextNode( '\u00A0' ) ); //Espacio
columna.appendChild(buttonBorrar);
return columna;
}
/**
* Funcion que le pasas el nombre del id (sin #) de la tabla y le añade el dataTables de JQuery
* @param {*} idTabla es el id (sin el #) de la tabla a la que se le quiere añadir las funcionalidades de las Data Tables
*/
function dataTablesJQuery(idTabla) {
jQuery(document).ready(function($){
$('#'+idTabla).DataTable({
language: {
lengthMenu: "Filtro _MENU_",
info: "Página _PAGE_ de _PAGES_",
search: "Buscar",
zeroRecords: "No encontrado",
infoEmpty: "No hay contenido",
infoFiltered: "(de _MAX_ registros)",
paginate: {
first: "Primero",
last: "Último",
next: "Siguiente",
previous: "Anterior"
}
},
lengthMenu: [ 5, 10, 25, 50, 75, 100 ]
});
});
}
/**
* La función a partir del objeto de la sesion actual, crea la tabla del tipo de dato pasado (en plural), con la funcion editar y borrar pasada
* @param {*} objetoJS objeto de la sesion actual
* @param {*} tipoDato indica el tipo de dato (en plural y string) del cual se va a rellenar la tabla
* @param {*} esUsuario booleano que indica si la tabla es de tipo usuario (true), o de otro tipo (false)
* @param {*} funcionEditar funcion manejadora del evento click en editar del dato
* @param {*} funcionBorrar funcion manejadora del evento click en borrar del dato
*/
function rellenarTabla(objetoJS,tipoDato,esUsuario,funcionEditar,funcionBorrar, compartido=false) {
let tabla;
if(!compartido){
tabla = document.querySelector('#'+tipoDato+'Table');
}
else{
tabla = document.querySelector('#'+tipoDato+'TableCompartidos');
}
let fila; let columna; let valores;
for(let i = 0; i
`;
let divCheck = document.createElement('span');
divCheck.classList.add("form-check", "form-check-inline");
divCheck.innerHTML = htmlCheck;
columna.appendChild( document.createTextNode( '\u00A0' ) ); //Espacio
columna.appendChild(divCheck);
}
fila.appendChild(columna);
tabla.appendChild(fila);
}
}
function cambioPrivateToShareAndReverse(event){
var ul=event.target.parentNode.parentNode,liPrivate=ul.querySelector("#aPrivate").parentNode, liShare=ul.querySelector("#aShare").parentNode;
var li2FA=ul.querySelector("#a2FA").parentNode;
var divPrivate=document.querySelector("#divPrivate"), divShare=document.querySelector("#divShare"), div2FA=document.querySelector("#div2FA");
var cambiar=false;
var cambiar2FA=false;
let buttonSubirDatos = document.querySelector('#subirDatos');
let compartir = document.querySelector('#compartirDatosButton');
let archivosCompartidosButton = document.querySelector('#archivosCompartidosButton');
let archivosCompartidosConmigoButton = document.querySelector('#archivosCompartidosConmigoButton');
if(event.target.getAttribute("href")=="#divPrivate" && event.target.parentNode.classList.contains("active")===false){
liPrivate.classList.toggle("active");
li2FA.className = "";
liShare.className = "";
ocultarDiv(divShare,compartir,archivosCompartidosButton,archivosCompartidosConmigoButton,div2FA);
mostrarDiv(divPrivate,buttonSubirDatos);
}
if(event.target.getAttribute("href")=="#divShare" && event.target.parentNode.classList.contains("active")===false){
liShare.classList.toggle("active");
liPrivate.className = "";
li2FA.className = "";
ocultarDiv(divPrivate,buttonSubirDatos,div2FA);
mostrarDiv(divShare,compartir,archivosCompartidosButton,archivosCompartidosConmigoButton);
}
if(event.target.getAttribute("href")=="#div2FA" && event.target.parentNode.classList.contains("active")===false){
li2FA.classList.toggle("active");
liPrivate.className = "";
liShare.className = "";
ocultarDiv(divPrivate,divShare,buttonSubirDatos,compartir,archivosCompartidosButton,archivosCompartidosConmigoButton);
mostrarDiv(div2FA);
let TFA = sessionStorage.getItem('TFA');
let checkBox2FA = document.querySelector('#act2FA');
if(TFA==1){
checkBox2FA.checked = true;
checkBox2FA.setAttribute('disabled', true);
}
if(sessionStorage.getItem('urlQR')){
let urlQR = sessionStorage.getItem('urlQR');
generateQR(urlQR);
}
else{
generateQR();
}
}
//window.scroll(0,0);
setTimeout(function(){ window.scroll(0,0);}, 10);
}
function ocultarDiv(){
for (var i = 0; i < arguments.length; i++) {
arguments[i].classList.add("archivosOcultos");
}
}
function mostrarDiv(){
for (var i = 0; i < arguments.length; i++) {
arguments[i].classList.remove("archivosOcultos");
}
}
function generateQR(urlQR){
var qrcode = new QRCode(document.getElementById("qrcode"), {
width : 800,
height : 800,
useSVG: true
});
if(urlQR){
qrcode.makeCode(urlQR);
return;
}
qrcode.makeCode("https://ernestocanales.es");
}
function rellenarBody(){
let cuerpo = document.querySelector('body');
cuerpo.style.cssText = 'background:linear-gradient(rgba(255,255,255,0.9), rgba(255, 255, 255, 0.9)), url("https://images-ext-2.discordapp.net/external/I4WDr_mFwmEPpd1gYZpWqmZ8Fod844njMPCXgLycCfk/https/www.incimages.com/uploaded_files/image/1920x1080/getty_913017342_415366.jpg?width=1191&height=670");';
document.body.innerHTML = bodyHTML();
document.body.innerHTML += modal();
document.body.innerHTML += modalCompartir();
document.body.innerHTML += modalEUsuario();
document.body.innerHTML += modalENota();
document.body.innerHTML += modalEditTarjetaCredito();
document.body.innerHTML += modalEditCuentaBancaria();
//Evento mostrarCompartidosConmigo
let buttonCompartidoConmigo = document.querySelector('#archivosCompartidosConmigoButton');
buttonCompartidoConmigo.addEventListener("click", listaCompartidosConmigo, false);
//Evento mostrarCompartidos
let buttonCompartido = document.querySelector('#archivosCompartidosButton');
buttonCompartido.addEventListener("click", listaCompartidos, false);
//Evento mostrarUsuarios
$('#multiSelect').multiselect();
let buttonSelect = document.querySelector('#multiSelect');
buttonSelect = buttonSelect.nextElementSibling.firstElementChild;
buttonSelect.addEventListener("click", listaUsuarios, false);
///Evento compartirDatos
let botonCompartirDatos = document.querySelector('#compartirDatos');
botonCompartirDatos.addEventListener("click", compartirDatos, false);
//Evento inactividad
inactividad();
///Evento SubirDatos
let botonSubirDatos = document.querySelector('#subirDatos');
botonSubirDatos.addEventListener("click", subirDatos, false);
///Evento CerrarSesion
let botonCerrarSesion = document.querySelector('#cerrarSesion');
botonCerrarSesion.addEventListener("click", cerrarSesion, false);
///Evento AñadirNuevo Modal
let botonA = document.querySelector('#añadirModal');
botonA.addEventListener("click", nuevoRegistro, false);
///Eventos generar contraseñas
let c = document.querySelector("#generarContraseña");
c.addEventListener("click", contraseñaSegura, false);
let v = document.querySelector("#verContraseña");
v.addEventListener("click", verContraseña, false);
///Evento editarUsuario Modal
let botonEditarU = document.querySelector('#modalConfirmacionEditarUsuario');
botonEditarU.addEventListener("click", editarUsuario, false);
///Evento editarNota Modal
let botonEditarN = document.querySelector('#modalConfirmacionEditarNota');
botonEditarN.addEventListener("click", editarNota, false);
///Evento editarTarjetas Modal
let botonEditarT = document.querySelector('#modalConfirmacionEditarTarjetaCredito');
botonEditarT.addEventListener("click", editarTarejetaCredito, false);
///Evento editarCuentas Modal
let botonEditarC = document.querySelector('#modalConfirmacionEditarCuentaBancaria');
botonEditarC.addEventListener("click", editarCuentaBancaria, false);
///Evento activar 2FA
let checkBox2FA = document.querySelector('#act2FA');
checkBox2FA.addEventListener("click", activar2FA, false);
//Evento archivos privados
let botonesPrivateShare =document.querySelector('#aPrivate');
botonesPrivateShare.addEventListener("click", cambioPrivateToShareAndReverse, false)
//Evento archivos compartidos
botonesPrivateShare = document.querySelector('#aShare');
botonesPrivateShare.addEventListener("click", cambioPrivateToShareAndReverse, false);
//Evento 2FA
botonesPrivateShare = document.querySelector('#a2FA');
botonesPrivateShare.addEventListener("click", cambioPrivateToShareAndReverse, false);
//botonesPrivateShare.addEventListener("click", subirDatosCompartidos, false)
let objetoJS = JSON.parse(sessionStorage.getItem('Objeto')); //Obtenemos el objeto de la sesion actual
////Rellenamos tabla, informacion mas botones con sus eventos.
//Tabla usuarios
let funcionEditarUsuario = function () {
let index = $(this).data('index');
document.querySelector("#editarUsuarioModal").setAttribute("data-index", index);
$('#editarUsuarioModal').modal('show'); //JQUERY
let objetoJS = JSON.parse(sessionStorage.getItem('Objeto')); //Obtenemos el objeto de la sesion actual
$('#DescripcionModalEditarUsuario').attr("placeholder", objetoJS.usuarios[index].descripcion);
$('#URLModalEditarUsuario').attr("placeholder", objetoJS.usuarios[index].url);
$('#UsuarioModalEditarUsuario').attr("placeholder", objetoJS.usuarios[index].usuario);
$('#ContraseñaModalEditarUsuario').attr("placeholder", "*******");
};
//rellenar tabla usuarios
rellenarTabla(objetoJS,"usuarios",true,funcionEditarUsuario,borrarUsuario);
///////////////////////Tabla notass
let funcionEditarNota = function () {
let index = $(this).data('index');
document.querySelector("#editarNotaModal").setAttribute("data-index", index);
$('#editarNotaModal').modal('show'); //JQUERY
let objetoJS = JSON.parse(sessionStorage.getItem('Objeto')); //Obtenemos el objeto de la sesion actual
$('#EditarNombreNota').attr("placeholder", objetoJS.notas[index].nombre);
$('#EditartextoNota').attr("placeholder", objetoJS.notas[index].textoNota);
};
//rellenar tabla notas
rellenarTabla(objetoJS,"notas",false,funcionEditarNota,borrarNota);
///////////////////////Tabla tarjeta de crédito
let funcionEditarTarjetaCredito = function () {
let index = $(this).data('index');
document.querySelector("#editarTarjetaCreditoModal").setAttribute("data-index", index);
$('#editarTarjetaCreditoModal').modal('show'); //JQUERY
let objetoJS = JSON.parse(sessionStorage.getItem('Objeto')); //Obtenemos el objeto de la sesion actual
$('#nombreEntidadModalEditarTarjetaCredito').attr("placeholder", objetoJS.tarjetas[index].nombreEntidad);
$('#numTarjetaModalEditarTarjetaCredito').attr("placeholder", objetoJS.tarjetas[index].numTarjeta);
document.querySelector('#fechaCaducidadModalEditarTarjetaCredito').value=objetoJS.tarjetas[index].fechaCaducidad;
$('#nombreTitularModalEditarTarjetaCredito').attr("placeholder", objetoJS.tarjetas[index].nombreTitular);
$('#codigoDeSeguridadModalEditarTarjetaCredito').attr("placeholder", objetoJS.tarjetas[index].codigoDeSeguridad);
};
//rellenar tabla tarjetas
rellenarTabla(objetoJS,"tarjetas",false,funcionEditarTarjetaCredito,borrarTarjetaCredito);
///////////////////////Tabla cuenta bancaria
let funcionEditarCuentaBancaria = function () {
let index = $(this).data('index');
document.querySelector("#editarCuentaBancariaModal").setAttribute("data-index", index);
$('#editarCuentaBancariaModal').modal('show'); //JQUERY
let objetoJS = JSON.parse(sessionStorage.getItem('Objeto')); //Obtenemos el objeto de la sesion actual
$('#nombreEntidadBancariaModalEditarCuentaBancaria').attr("placeholder", objetoJS.cuentas[index].nombreEntidadBancaria);
$('#IBANModalEditarCuentaBancaria').attr("placeholder", objetoJS.cuentas[index].IBAN);
$('#usuarioBancarioModalEditarCuentaBancaria').attr("placeholder", objetoJS.cuentas[index].usuarioBancario);
$('#contraseñaBancarioModalEditarCuentaBancaria').attr("placeholder", "*******");
};
//rellenar tabla cuentas
rellenarTabla(objetoJS,"cuentas",true,funcionEditarCuentaBancaria,borrarCuentaBancaria);
//dataTables
$('[data-toggle="tooltip"]').tooltip();
dataTablesJQuery("tablaUsuarios");
dataTablesJQuery("tablaNotas");
dataTablesJQuery("tablaTarjetasCredito");
dataTablesJQuery("tablaCuentasBancarias");
// Un poco de css dinamico. Eventos para el div de la contraseña
$('.ojo').mouseover(function(){
var id = $(this).attr("id");
id = id.split('-')[1];
$('#contraseñaTablaO' + id).css('color','#373a74');
});
$('.ojo').mouseleave(function(){
var id = $(this).attr("id");
id = id.split('-')[1];
$('#contraseñaTablaO' + id).css('color','transparent');
});
}
/////////////////////////////////
///Evento activar 2FA
async function activar2FA(event){
if(event.currentTarget.checked){
let contraseñaRandom = utf8_to_b64(rellenarContraseña(15)); //Secreto TOTP solucionar esto por dios
let token = sessionStorage.getItem('token');
const payload= {'secreto' : contraseñaRandom.toString()};
let cabeceras= {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': token
}
const request = {
method: 'POST',
headers: cabeceras,
body: JSON.stringify(payload),
};
let act = await fetch(`https://${baseDominio}:${portTLS}/activar2FA`, request)
.then(function(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response.json();
})
.then(function(responseAsObject) {
if(responseAsObject.error !== null){
alert(responseAsObject.error)
}
else{
sessionStorage.setItem('TFA', responseAsObject.result.TFA);
sessionStorage.setItem('urlQR', responseAsObject.result.urlQR);
generateQR(responseAsObject.result.urlQR);
return responseAsObject.result.status;
}
})
.catch(function(error) {
alert('Ha habido un problema: ' + error);
return null;
});
}
}
/////////////////////////////////
///Añadir nuevos usuarios y notas, borrar y editar (CRUD)
function nuevoDatoSimple(tipoDato,esFemenino,objetoDePlantillaDato) {
let objetoJSONMemoria = sessionStorage.getItem('Objeto');
let objetoJS = JSON.parse(objetoJSONMemoria);
objetoJS[tipoDato].push(objetoDePlantillaDato);
let objetoNuevosDatosJSON = JSON.stringify(objetoJS);
let key = sessionStorage.getItem('key'); let usuario = sessionStorage.getItem('Usuario');
//let ficheroCifradoJSON = cifrar(objetoNuevosDatosJSON,key,IV);
//localStorage.setItem(usuario + '_config.json', ficheroCifradoJSON);
sessionStorage.setItem('Objeto', objetoNuevosDatosJSON);
let tipoDatoSingular=tipoDato.slice(0, -1);
let nuevo="Nuevo", guardado="guardado";
if(esFemenino){nuevo="Nueva", guardado="guardada";}
alert(nuevo+" "+tipoDatoSingular+" "+guardado+" correctamente");
rellenarBody();
}
function nuevoUsuario(){
let u = new plantillaUsuario(document.querySelector('#DescripcionModal').value, document.querySelector('#URLModal').value,
document.querySelector('#UsuarioModal').value, document.querySelector('#ContraseñaModal').value);
nuevoDatoSimple("usuarios",false,u);
}
function nuevaNota(){
let n = new plantillaNota(document.querySelector('#NombreNota').value, document.querySelector('#textoNota').value);
nuevoDatoSimple("notas",true,n);
}
function nuevaTarjetaCredito(){
let t = new plantillaTarjetaCredito(document.querySelector('#nombreEntidad').value, document.querySelector('#numTarjeta').value,
document.querySelector('#fechaCaducidad').value, document.querySelector('#nombreTitular').value, document.querySelector('#codigoDeSeguridad').value);
nuevoDatoSimple("tarjetas",true,t);
}
function nuevaCuentaBancaria(){
let c = new plantillaCuentaBancaria(document.querySelector('#nombreEntidadBancaria').value, document.querySelector('#IBAN').value,
document.querySelector('#usuarioBancario').value, document.querySelector('#contraseñaBancario').value);
nuevoDatoSimple("cuentas",true,c);
}
function nuevoRegistro(){
if (document.querySelector("#NuevoUsuarioTab.active")) {
nuevoUsuario();
} else if(document.querySelector("#NuevaNotaTab.active")){
nuevaNota();
}
else if(document.querySelector("#NuevaTarjetaDeCréditoTab.active")){
nuevaTarjetaCredito();
}
else{
nuevaCuentaBancaria();
}
}
function borrarDatoSimple(event,tipoDato, esFemenino) {
let confirmacion = confirm("¿Estas seguro?");
if(confirmacion){
let index = event.currentTarget.id;
//let expressionRegular = /\b[a-z]+/ig; //Con expresiones regulares, si no se utiliza un -
index = parseInt(index.split('-')[1], 10);
let objetoJSONMemoria = sessionStorage.getItem('Objeto'); //Seleccionamos el objeto de la sesion actual
let objetoJS = JSON.parse(objetoJSONMemoria); //Lo convertimos a objeto JS
objetoJS[tipoDato].splice(index, 1); //Borramos el elemento
let objetoNuevosDatosJSON = JSON.stringify(objetoJS); //Lo convertimos a JSON de nuevo pero con los nuevos valores
let key = sessionStorage.getItem('key'); let usuario = sessionStorage.getItem('Usuario');
//let ficheroCifradoJSON = cifrar(objetoNuevosDatosJSON,key,IV); //Ciframos el JSON
//localStorage.setItem(usuario + '_config.json', ficheroCifradoJSON); //Guardamos el fichero json cifrado en memoria (sobrescribe)
sessionStorage.setItem('Objeto', objetoNuevosDatosJSON); //Guardamos en la sesion actual el objeto sin cifrar en JSON (sobrescribe)
let tipoDatoSingular;
tipoDatoSingular=tipoDato.charAt(0).toUpperCase() + tipoDato.slice(1);
tipoDatoSingular=tipoDatoSingular.slice(0, -1);
let eliminado="eliminado"; function getMessageEncoding() {
const messageBox = document.querySelector("#rsa-oaep-message");
let message = messageBox.value;
let enc = new TextEncoder();
return enc.encode(message);
}
if(esFemenino){eliminado="eliminada";}
alert(tipoDatoSingular+" "+eliminado+" correctamente");
rellenarBody();
}
}
function borrarUsuario(event){
borrarDatoSimple(event,"usuarios",false);
}
function borrarNota(event){
borrarDatoSimple(event,"notas",false);
}
function borrarTarjetaCredito(event){
borrarDatoSimple(event,"tarjetas",true);
}
function borrarCuentaBancaria(event){
borrarDatoSimple(event,"cuentas",true);
}
function editarUsuario(){ //assign hecho
let descripcion = document.querySelector('#DescripcionModalEditarUsuario'); descripcion = descripcion.value;
let url = document.querySelector('#URLModalEditarUsuario'); url = url.value;
let usuarioC = document.querySelector('#UsuarioModalEditarUsuario'); usuarioC = usuarioC.value;
let contraseña = document.querySelector('#ContraseñaModalEditarUsuario'); contraseña = contraseña.value;
let index = $('#editarUsuarioModal').data('index');
let objetoJSONMemoria = sessionStorage.getItem('Objeto');
let objetoJS = JSON.parse(objetoJSONMemoria);
let u = new plantillaUsuario(descripcion, url, usuarioC, contraseña);
objetoJS.usuarios.splice(index, 1, Object.assign(objetoJS.usuarios[index], u)); //indice, eliminamos 1 objeto y hacemos un assign para copiar
let objetoNuevosDatosJSON = JSON.stringify(objetoJS);
let key = sessionStorage.getItem('key'); let usuario = sessionStorage.getItem('Usuario');
//let ficheroCifradoJSON = cifrar(objetoNuevosDatosJSON,key,IV);
//localStorage.setItem(usuario + '_config.json', ficheroCifradoJSON);
sessionStorage.setItem('Objeto', objetoNuevosDatosJSON);
alert("Usuario actualizado correctamente");
rellenarBody();
}
function editarNota(){
let nombre = document.querySelector('#EditarNombreNota'); nombre = nombre.value;
let textoNota = document.querySelector('#EditartextoNota'); textoNota = textoNota.value;
let index = $('#editarNotaModal').data('index');
let objetoJSONMemoria = sessionStorage.getItem('Objeto');
let objetoJS = JSON.parse(objetoJSONMemoria);
let n = new plantillaNota(nombre, textoNota);
objetoJS.notas.splice(index, 1, Object.assign(objetoJS.notas[index], n)); //indice, eliminamos 1 objeto y hacemos un assign para copiar
let objetoNuevosDatosJSON = JSON.stringify(objetoJS);
let key = sessionStorage.getItem('key'); let usuario = sessionStorage.getItem('Usuario');
//let ficheroCifradoJSON = cifrar(objetoNuevosDatosJSON,key,IV);
//localStorage.setItem(usuario + '_config.json', ficheroCifradoJSON);
sessionStorage.setItem('Objeto', objetoNuevosDatosJSON);
alert("Nota actualizada correctamente");
rellenarBody();
}
function editarTarejetaCredito(){
let nombreEntidad = document.querySelector('#nombreEntidadModalEditarTarjetaCredito'); nombreEntidad = nombreEntidad.value;
let numTarjeta = document.querySelector('#numTarjetaModalEditarTarjetaCredito'); numTarjeta = numTarjeta.value;
let fechaCaducidad = document.querySelector('#fechaCaducidadModalEditarTarjetaCredito'); fechaCaducidad = fechaCaducidad.value;
let nombreTitular = document.querySelector('#nombreTitularModalEditarTarjetaCredito'); nombreTitular = nombreTitular.value;
let codigoDeSeguridad =document.querySelector('#codigoDeSeguridadModalEditarTarjetaCredito'); codigoDeSeguridad=codigoDeSeguridad.value;
let index = $('#editarTarjetaCreditoModal').data('index');
let objetoJSONMemoria = sessionStorage.getItem('Objeto');
let objetoJS = JSON.parse(objetoJSONMemoria);
let u = new plantillaTarjetaCredito(nombreEntidad, numTarjeta, fechaCaducidad, nombreTitular,codigoDeSeguridad);
objetoJS.tarjetas.splice(index, 1, Object.assign(objetoJS.tarjetas[index], u)); //indice, eliminamos 1 objeto y hacemos un assign para copiar
let objetoNuevosDatosJSON = JSON.stringify(objetoJS);
let key = sessionStorage.getItem('key'); let usuario = sessionStorage.getItem('Usuario');
//let ficheroCifradoJSON = cifrar(objetoNuevosDatosJSON,key,IV);
//localStorage.setItem(usuario + '_config.json', ficheroCifradoJSON);
sessionStorage.setItem('Objeto', objetoNuevosDatosJSON);
alert("Tarjeta actualizada correctamente");
rellenarBody();
}
function editarCuentaBancaria(){
let nombreEntidadBancaria = document.querySelector('#nombreEntidadBancariaModalEditarCuentaBancaria'); nombreEntidadBancaria = nombreEntidadBancaria.value;
let IBAN = document.querySelector('#IBANModalEditarCuentaBancaria'); IBAN = IBAN.value;
let usuarioBancario = document.querySelector('#usuarioBancarioModalEditarCuentaBancaria'); usuarioBancario = usuarioBancario.value;
let contraseñaBancario = document.querySelector('#contraseñaBancarioModalEditarCuentaBancaria'); contraseñaBancario = contraseñaBancario.value;
let index = $('#editarCuentaBancariaModal').data('index');
let objetoJSONMemoria = sessionStorage.getItem('Objeto');
let objetoJS = JSON.parse(objetoJSONMemoria);
let u = new plantillaCuentaBancaria(nombreEntidadBancaria, IBAN, usuarioBancario, contraseñaBancario);
objetoJS.cuentas.splice(index, 1, Object.assign(objetoJS.cuentas[index], u)); //indice, eliminamos 1 objeto y hacemos un assign para copiar
let objetoNuevosDatosJSON = JSON.stringify(objetoJS);
let key = sessionStorage.getItem('key'); let usuario = sessionStorage.getItem('Usuario');
//let ficheroCifradoJSON = cifrar(objetoNuevosDatosJSON,key,IV);
//localStorage.setItem(usuario + '_config.json', ficheroCifradoJSON);
sessionStorage.setItem('Objeto', objetoNuevosDatosJSON);
alert("Cuenta actualizada correctamente");
rellenarBody();
}
function arrayRemove(arr, value) {
return arr.filter(function(ele){
return ele != value;
});
}
window.onload = function() { //CUando se refresca la sesion no borra los datos de la sessionStorage por lo que controlamos el evento.
if(localStorage.getItem("Inactivo")){
sessionStorage.clear();
localStorage.removeItem("Inactivo");
alert("Sesión caducada por inactividad");
}
else if(localStorage.getItem("Cerrar")){
sessionStorage.clear();
localStorage.removeItem("Cerrar");
}
else if(sessionStorage.getItem("Usuario") && !sessionStorage.getItem("page2FA")){
rellenarBody();
}
else if(sessionStorage.getItem("page2FA")){
//
}
else{
sessionStorage.clear();
//localStorage.clear();
}
};
function inactividad(){
time = new Date().getTime();
$(document).bind("mousemove keypress", function(e) {
time = new Date().getTime();
});
setTimeout(refresh, 10000);
}
function refresh() {
if(new Date().getTime() - time >= 150000){
window.location.reload();
localStorage.setItem("Inactivo", true);
}
else{
setTimeout(refresh, 10000);
}
}
async function listaUsuarios(){
let token = sessionStorage.getItem('token');
let cabeceras= {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': token,
}
const request = {
method: 'GET',
headers: cabeceras,
};
let select = document.querySelector('#multiSelect');
if(select.length === 0){
fetch(`https://${baseDominio}:${portTLS}/listaUsuarios`, request)
.then(function(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response.json();
})
.then(function(responseAsObject) {
if(responseAsObject.error && responseAsObject.error !== null){
throw Error(responseAsObject.error);
}
let usuarioActual = sessionStorage.getItem('Usuario');
let arrayRemoveUser = arrayRemove(responseAsObject.usuarios, usuarioActual);
for(let i = 0; i${arrayRemoveUser[i]}`);
$('#multiSelect').multiselect('rebuild');
}
})
.catch(function(error) {
localStorage.setItem("Cerrar", true);
window.location.reload();
alert(error);
});
}
}
async function listaCompartidos(){
let token = sessionStorage.getItem('token');
let usuario = sessionStorage.getItem('Usuario');
let cabeceras= {
'Content-Type': 'application/json',
'Accept': 'application/json',
'authorization': token,
}
const request = {
method: 'GET',
headers: cabeceras,
};
let list = document.querySelector('#archivosCompartidosList');
list.innerHTML = "";
if(list.firstElementChild === null){
fetch(`https://${baseDominio}:${portTLS}/listaCompartidos`, request)
.then(function(response) {
if (!response.ok) {
throw Error(response.statusText);
}
return response.json();
})
.then(function(responseAsObject) {
if(responseAsObject.error && responseAsObject.error !== null){
throw Error(responseAsObject.error);
}
for(let i = 0; i