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