Files added to repository

This commit is contained in:
Ernesto Canales Pereña 2023-06-18 21:12:32 +02:00
commit 8a331d18a6
20 changed files with 3478 additions and 0 deletions

12
README.md Normal file
View File

@ -0,0 +1,12 @@
# DataBank-Extension
1. Clone this repository
```bash
git clone http://git.wacanal.cloud/ernie/databank-extension.git
```
2. Open Google Chrome and go to the option "Extensions->Manage Extensions"
3. Once in the extension manager, select "Load unpacked"
4. Select the cloned repository

5
background.js Normal file
View File

@ -0,0 +1,5 @@
chrome.browserAction.onClicked.addListener(function(tab){
chrome.tabs.create({
url: ("index.html")
});
});

0
content.js Normal file
View File

325
estilo.css Normal file
View File

@ -0,0 +1,325 @@
/*
Al cuerpo de la
pagina se aplica el tamaño de fuente
*/
html{
overflow: scroll;
}
body {
font-size: 12px;
background-size: cover;
background: linear-gradient(rgba(255,255,255,0.7), rgba(255, 255, 255, 0.7)), 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");
background-size: 1850px 850px;
font-family: 'Varela Round', sans-serif;
font-size: 13px;
}
/**
* se aplica el ancho, margen centrado
* borde de un pixel con redondeado, y rellenado
* a la izquierda y derecha
*/
#Contenedor{
width: 400px;
margin: 50px auto;
height: 400px;
border-radius:8px;
padding: 0px 9px 0px 9px;
}
/**
* Aplicando al icono de usuario el color de fondo,
* rellenado de 20px y un redondeado de 120px en forma
* de un circulo
*/
.Icon span{
background: #A8A6A6;
padding: 20px;
border-radius: 120px;
}
/**
* Se aplica al contenedor madre un margen de tamaño 10px hacia la cabecera y pie,
* color de fuente blanco,un tamaño de fuente 50px y texto centrado.
*/
.Icon{
margin-top: 10px;
margin-bottom:10px;
color: #FFF;
font-size: 50px;
text-align: center;
}
/**
* Se aplica al contenedor donde muestra en el pie
* la opción de olvidaste tu contraseña?
*/
.opcioncontra{
text-align: center;
margin-top: 20px;
font-size: 14px;
}
/**
* En las siguientes lineas
* se define el diseño adaptable, para que
* se muestre en los dispositivos móviles
*/
/******************************************/
/*** DISEÑO PARA MOVILES 320 ****/
/******************************************/
@media only screen and (max-width:320px){
#Contenedor{
width: 100%;
height: auto;
margin: 0px;
}
}
/******************************************/
/*** DISEÑO PARA MOVILES 240 ****/
/******************************************/
@media only screen and (max-width:240px){
}
.buttonAddPass {
position: relative;
top: 100px;
left: 1217px;
}
.buttonAddUser {
text-align: center;
}
/* Modal styles */
.modal .modal-dialog {
max-width: 450px;
}
.modal .modal-header, .modal .modal-body, .modal .modal-footer {
padding: 20px 30px;
}
.modal .modal-content {
border-radius: 3px;
}
.modal .modal-footer {
background: #ecf0f1;
border-radius: 0 0 3px 3px;
}
.modal .modal-title {
display: inline-block;
}
.modal .form-control {
border-radius: 2px;
box-shadow: none;
border-color: #dddddd;
}
.modal textarea.form-control {
resize: vertical;
}
.modal .btn {
border-radius: 2px;
min-width: 100px;
}
.modal form label {
font-weight: normal;
}
/* Table styles */
.table-responsive {
margin: 30px 0;
}
.table-wrapper {
min-width: 1000px;
background: #fff;
padding: 20px 25px;
border-radius: 3px;
box-shadow: 0 1px 1px rgba(0,0,0,.05);
}
.table-title {
padding-bottom: 15px;
background: #435d7d;
color: #fff;
padding: 16px 30px;
margin: -20px -25px 10px;
border-radius: 3px 3px 0 0;
}
.table-title h2 {
margin: 5px 0 0;
font-size: 24px;
}
.table-title .btn-group {
float: right;
}
.table-title .btn {
color: #fff;
float: right;
font-size: 13px;
border: none;
min-width: 50px;
border-radius: 2px;
border: none;
outline: none !important;
margin-left: 10px;
}
.table-title .btn i {
float: left;
font-size: 21px;
margin-right: 5px;
}
.table-title .btn span {
float: left;
margin-top: 2px;
}
table.table tr th, table.table tr td {
border-color: #e9e9e9;
padding: 12px 15px;
vertical-align: middle;
}
table.table tr th:first-child {
width: 250px;
}
table.table tr th:last-child {
width: 130px;
}
table.table-striped tbody tr:nth-of-type(odd) {
background-color: #fcfcfc;
}
table.table-striped.table-hover tbody tr:hover {
background: #f5f5f5;
}
table.table th i {
font-size: 13px;
margin: 0 5px;
cursor: pointer;
}
table.table td:last-child i {
opacity: 0.9;
font-size: 22px;
margin: 0 5px;
}
table.table td a {
font-weight: bold;
color: #566787;
display: inline-block;
text-decoration: none;
outline: none !important;
}
table.table td a:hover {
color: #2196F3;
}
table.table td a.edit {
color: #FFC107;
}
table.table td a.delete {
color: #F44336;
}
table.table td i {
font-size: 19px;
}
table.table .avatar {
border-radius: 50%;
vertical-align: middle;
margin-right: 10px;
}
a {
cursor:pointer;
}
.passCaja{
color:transparent;
cursor:default;
}
.ojo{
cursor:pointer;
color: #7e9ac7 ;
}
#opcionesContraseña{
height: 45px;
}
.nav_menu{
margin-top: 30px;
}
.nav_menu_tabs{
display: inline-block;
}
.nav_menu_botones{
float: right;
}
/*mostrar y ocultar tablas compartido y privado*/
.archivosOcultos{
display:none !important;
}
.modal-compartir{
/*text-align: center;*/
}
.multiselect-container{
overflow:scroll;
max-height: 200px;
}
.isDisabled {
color: currentColor;
cursor: not-allowed;
opacity: 0.5;
text-decoration: none;
pointer-events: none;
}
#archivosCompartidosList{
overflow:scroll;
max-height: 200px;
}
#archivosCompartidosConmigoList{
overflow:scroll;
max-height: 200px;
}
.qrCode{
display: block;
margin: auto;
margin-top: 50px;
}
.badgebox
{
opacity: 0;
}
.badgebox + .badge
{
/* Move the check mark away when unchecked */
text-indent: -999999px;
/* Makes the badge's width stay the same checked and unchecked */
width: 27px;
}
.badgebox:focus + .badge
{
/* Set something to make the badge looks focused */
/* This really depends on the application, in my case it was: */
/* Adding a light border */
box-shadow: inset 0px 0px 5px;
/* Taking the difference out of the padding */
}
.badgebox:checked + .badge
{
/* Move the check mark back when checked */
text-indent: 0;
}

BIN
icon128.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
icon16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

BIN
icon32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 749 B

BIN
icon48.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

72
index.html Normal file
View File

@ -0,0 +1,72 @@
<!DOCTYPE html>
<html lang="es">
<head>
<title>Proyecto ES</title>
<meta charset="UTF-8">
<!-- vinculo a bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Temas-->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
<!-- se vincula al hoja de estilo para definir el aspecto del formulario de login-->
<link rel="stylesheet" type="text/css" href="./estilo.css">
<link rel="stylesheet" href="http://cdn.datatables.net/1.10.20/css/jquery.dataTables.min.css">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto|Varela+Round">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.16/css/bootstrap-multiselect.css">
<!--<script src="https://unpkg.com/loglevel/dist/loglevel.min.js" defer>-->
</script>
<script type="module" src="./scripts/plog.js" defer></script>
<script type="module" src="script.js" defer></script>
<script type="text/javascript" src="./scripts/qrcode.js" defer></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js" defer></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.16/js/bootstrap-multiselect.js" defer></script>
<script src="https://cdn.datatables.net/1.10.20/js/jquery.dataTables.min.js" defer></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous" defer></script>
</head>
<body>
<div id="Contenedor">
<div class="Icon">
<!--Icono de usuario-->
<span class="glyphicon glyphicon-user"></span>
</div>
<div class="input-group input-group-lg">
<span class="input-group-addon" id="sizing-addon1"><i class="glyphicon glyphicon-user"></i></span>
<input type="text" class="form-control" name="usuario" placeholder="Usuario" id="Usuario" aria-describedby="sizing-addon1" required>
</div>
<br>
<div class="input-group input-group-lg">
<span class="input-group-addon" id="Span1"><i class="glyphicon glyphicon-lock"></i></span>
<input type="password" id= "Contraseña" name="contra" class="form-control" placeholder="Contraseña" aria-describedby="sizing-addon1" required>
<span class="input-group-btn">
<div class="btn-group">
<button type="button" id="opcionesContraseña" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
<span class="sr-only">Desplegar menú</span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a id = "generarContraseña" >Generar Contraseña</a></li>
<li><a id = "verContraseña">Ver</a></li>
</ul>
</div>
</span>
</div>
<br>
<button class="btn btn-lg btn-primary btn-block btn-signin" id="IngresoLog" type="submit">Entrar</button>
<button class="btn btn-lg btn-primary btn-block btn-signup" id="RegistroLog" type="submit">Registrarse</button>
</div>
<!-- libreria Jquery <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>-->
<!-- AES -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js"></script>
</body>
</html>

32
manifest.json Normal file
View File

@ -0,0 +1,32 @@
{
"manifest_version": 2,
"name": "SE",
"version": "1.0.0",
"description": "Extension for SecureDataBank",
"icons": {
"128": "icon128.png",
"32": "icon32.png",
"48": "icon48.png"
},
"browser_action": {
"default_icon": {
"16": "icon16.png",
"32": "icon32.png"
},
"default_title": "Extension for SecureDataBank"
},
"content_security_policy": "script-src 'self' https://unpkg.com/ https://fonts.googleapis.com/ https://cdn.datatables.net/ https://maxcdn.bootstrapcdn.com/ https://ajax.googleapis.com/ https://cdnjs.cloudflare.com/; object-src 'self'",
"background":
{
"scripts": ["background.js"],
"persistent": false
},
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"],
"run_at": "document_end"
}
]
}

1378
script.js Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,75 @@
let caracteresEspeciales_cantidad = 0;
let numeros_cantidad = 0;
let mayusculas_cantidad = 0;
let minusculas_cantidad = 0;
let longitud_contraseña = 25; //Longitud
let contraseña = new Array(); //Contraseña final
let caracteres_especiales = '!^$+=#€?@';
let numeros = '0123456789';
let mayusculas = 'ABCDEFGHJKLMNOPQRSTUVWXYZ';
let minusculas = 'abcdefghijklmnopqrstuvwxyz';
let cadenaAleatoria = '!^$+=#€?@0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ';
const shuffleArray = array => {
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
const temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
function rellenarContraseña(longitud){
longitud_contraseña = longitud;
cantidad();
let index = {index : 0}; //Para poder pasar por referencia
relleno(caracteresEspeciales_cantidad, caracteres_especiales, index);
relleno(numeros_cantidad, numeros, index);
relleno(mayusculas_cantidad, mayusculas, index);
relleno(minusculas_cantidad, minusculas, index);
if(contraseña.length < longitud_contraseña){
let diferencia = longitud_contraseña - contraseña.length;
relleno(diferencia,cadenaAleatoria, index);
}
shuffleArray(contraseña);
let cadena = contraseña.toString();
cadena = cadena.replaceAll(',', '');
return cadena;
}
function cantidad(){
caracteresEspeciales_cantidad = Math.floor(Math.random()*(20-15+1)+15) * (longitud_contraseña/100);
numeros_cantidad = Math.floor(Math.random()*(25-20+1)+20) * (longitud_contraseña/100);
mayusculas_cantidad = Math.floor(Math.random()*(25-20+1)+20) * (longitud_contraseña/100);
minusculas_cantidad = Math.floor(Math.random()*(30-25+1)+25) * (longitud_contraseña/100);
caracteresEspeciales_cantidad = caracteresEspeciales_cantidad % 1 < 0.5 ? Math.trunc(caracteresEspeciales_cantidad) : Math.ceil(caracteresEspeciales_cantidad);
numeros_cantidad = numeros_cantidad % 1 < 0.5 ? Math.trunc(numeros_cantidad) : Math.ceil(numeros_cantidad);
mayusculas_cantidad = mayusculas_cantidad % 1 < 0.5 ? Math.trunc(mayusculas_cantidad) : Math.ceil(mayusculas_cantidad);
minusculas_cantidad = minusculas_cantidad % 1 < 0.5 ? Math.trunc(minusculas_cantidad) : Math.ceil(minusculas_cantidad);
}
function relleno(cantidad, cadena, index){
let longitud = cadena.length-1;
let i = index.index;
while(cantidad !== 0){ //Se puede hacer ya que cantidad no se pasa por referencia si no por valor.
contraseña.push(cadena.charAt(Math.floor(Math.random()*(longitud-0+1)+0)));
i++;
cantidad--;
}
index.index = i;
}
export { rellenarContraseña }

252
scripts/html.js Normal file
View File

@ -0,0 +1,252 @@
/**
* HTML de las tablas de los datos guardados
* @returns devuelve el HTML con las tablas de los datos guardados
*/
export function bodyHTML(){
var html=
`<div class="container nav_menu">
<div>
<ul class="nav nav-pills nav_menu_tabs" role="tablist">
<li role="presentation" class="active"><a id="aPrivate" href="#divPrivate">Archivos Privados <!--<span class="badge">42</span>--></a></li>
<li role="presentation"><a id="aShare" href="#divShare">Archivos Compartidos</a></li>
<li role="presentation"><a id="a2FA" href="#div2FA">2FA</a></li>
<!--<li role="presentation"><a href="#">Messages <span class="badge">3</span></a></li>-->
</ul>
<div class = "nav_menu_botones"><button id="cerrarSesion" type="button" class="btn btn-secondary">Cerrar Sesión</button></div>
<div class = "nav_menu_botones"><button id="subirDatos" type="button" class="btn btn-success" >Subir datos</button>&nbsp</div>
<div class = "nav_menu_botones"><button type="button" id="compartirDatosButton" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">Compartir</button>&nbsp</div>
<div id = "archivosCompartidosButton" class="archivosOcultos nav_menu_botones btn-group">
<button type="button" class="btn btn-default dropdown-toggle"
data-toggle="dropdown">
ArchivosCompartidos <span class="caret"></span>
</button>
<ul id = "archivosCompartidosList" class="dropdown-menu" role="menu">
</ul>
</div>
<div id = "archivosCompartidosConmigoButton" class="archivosOcultos nav_menu_botones btn-group">
<button type="button" class="btn btn-default dropdown-toggle"
data-toggle="dropdown">
ArchivosCompartidosConmigo <span class="caret"></span>
</button>&nbsp
<ul id = "archivosCompartidosConmigoList" class="dropdown-menu" role="menu">
</ul>
</div>
</div>
</div>
<div id="divPrivate">
<div class="container">
<div class="table-responsive">
<div class="table-wrapper">
<div class="table-title">
<div class="row">
<div class="col-xs-6">
<h2><b>Usuarios</b></h2>
</div>
<div class="col-xs-6">
<button class="btn btn-success" id="añadirN" data-toggle="modal" data-target="#addU" type="submit"><i class="material-icons">&#xE147;</i> <span>Nuevo Usuario</span></button>
</div>
</div>
</div>
<table class="table table-striped table-hover" id="tablaUsuarios">
<thead>
<tr>
<th>Descripcion</th>
<th>Url</th>
<th>Usuario</th>
<th>Password</th>
<th>Acciones</th>
</tr>
</thead>
<tbody id="usuariosTable">
</tbody>
</table>
</div>
</div>
</div>
<div class="container">
<div class="table-responsive">
<div class="table-wrapper">
<div class="table-title">
<div class="row">
<div class="col-xs-6">
<h2><b>Notas</b></h2>
</div>
<div class="col-xs-6">
<button class="btn btn-success" id="añadirN" data-toggle="modal" data-target="#addU" type="submit"><i class="material-icons">&#xE147;</i> <span>Nueva Nota</span></button>
</div>
</div>
</div>
<table class="table table-striped table-hover" id="tablaNotas">
<thead>
<tr>
<th>Nombre</th>
<th>Descripcion</th>
<th>Acciones</th>
</tr>
</thead>
<tbody id="notasTable">
</tbody>
</table>
</div>
</div>
</div>
<div class="container">
<div class="table-responsive">
<div class="table-wrapper">
<div class="table-title">
<div class="row">
<div class="col-xs-6">
<h2><b>Tarjetas de Crédito</b></h2>
</div>
<div class="col-xs-6">
<button class="btn btn-success" id="añadirN" data-toggle="modal" data-target="#addU" type="submit"><i class="material-icons">&#xE147;</i> <span>Nueva Tarjeta de Crédito</span></button>
</div>
</div>
</div>
<table class="table table-striped table-hover" id="tablaTarjetasCredito">
<thead>
<tr>
<th>Nombre Entidad</th>
<th>Número de Tarjeta</th>
<th>Fecha de Caducidad</th>
<th>Nombre del Titular</th>
<th>Código De Seguridad</th>
<th>Acciones</th>
</tr>
</thead>
<tbody id="tarjetasTable">
</tbody>
</table>
</div>
</div>
</div>
<div class="container">
<div class="table-responsive">
<div class="table-wrapper">
<div class="table-title">
<div class="row">
<div class="col-xs-6">
<h2><b>Cuentas Bancarias</b></h2>
</div>
<div class="col-xs-6">
<button class="btn btn-success" id="añadirN" data-toggle="modal" data-target="#addU" type="submit"><i class="material-icons">&#xE147;</i> <span>Nueva Cuenta Bancaria</span></button>
</div>
</div>
</div>
<table class="table table-striped table-hover" id="tablaCuentasBancarias">
<thead>
<tr>
<th>Nombre Entidad</th>
<th>IBAN</th>
<th>Usuario Banca Online</th>
<th>Contraseña Banca Online</th>
<th>Acciones</th>
</tr>
</thead>
<tbody id="cuentasTable">
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id=divShare class="archivosOcultos">
<div class="container">
<div class="table-responsive">
<div class="table-wrapper">
<div class="table-title">
<div class="row">
<div class="col-xs-6">
<h2><b>Usuarios</b></h2>
</div>
<div class="col-xs-6">
<button class="btn btn-success" id="añadirN" data-toggle="modal" data-target="#addU" type="submit"><i class="material-icons">&#xE147;</i> <span>Nuevo Usuario</span></button>
</div>
</div>
</div>
<table class="table table-striped table-hover" id="tablaUsuarios">
<thead>
<tr>
<th>Descripcion</th>
<th>Url</th>
<th>Usuario</th>
<th>Password</th>
<th>Acciones</th>
</tr>
</thead>
<tbody id="usuariosTableCompartidos">
</tbody>
</table>
</div>
</div>
</div>
<div class="container">
<div class="table-responsive">
<div class="table-wrapper">
<div class="table-title">
<div class="row">
<div class="col-xs-6">
<h2><b>Notas</b></h2>
</div>
<div class="col-xs-6">
<button class="btn btn-success" id="añadirN" data-toggle="modal" data-target="#addU" type="submit"><i class="material-icons">&#xE147;</i> <span>Nueva Nota</span></button>
</div>
</div>
</div>
<table class="table table-striped table-hover" id="tablaNotas">
<thead>
<tr>
<th>Nombre</th>
<th>Descripcion</th>
<th>Acciones</th>
</tr>
</thead>
<tbody id="notasTableCompartidos">
</tbody>
</table>
</div>
</div>
</div>
</div>
<div id=div2FA class="archivosOcultos">
<div class="container" style="text-align:center">
<p style="margin-top:50px"><h2>Active y escane el código QR para aplicar el doble factor TOTP</h2></p>
<svg class="qrCode" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="qrcode"/>
</svg>
<label style="margin:40px" for="act2FA" class="btn btn-info qrCode">Activar <input type="checkbox" id="act2FA" class="badgebox"><span class="badge">&check;</span></label>
</div>
</div>
`;
return html;
}
export function bodyFA(){
let html = `<div id="Contenedor">
<div class="Icon">
<!--Icono de usuario-->
<span class="glyphicon glyphicon-user"></span>
</div>
<div class="input-group input-group-lg">
<span class="input-group-addon" id="sizing-addon1"><i class="glyphicon glyphicon-user"></i></span>
<input type="text" class="form-control" name="secret" placeholder="Code TOTP" id="secret" aria-describedby="sizing-addon1" required>
</div>
<br>
<button class="btn btn-lg btn-primary btn-block btn-signup" id="checkcodeFA" type="submit">Comprobar</button>
</div>`
return html;
}

View File

@ -0,0 +1,26 @@
export function modalCompartir(){
//<option value="1">One</option>
var html= `<!-- Modal compartir-->
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Compartir</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body modal-compartir">
<select id="multiSelect" multiple="multiple">
</select>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button id= "compartirDatos" type="button" class="btn btn-primary">Compartir Datos</button>
</div>
</div>
</div>
</div>
`;
return html;
}

View File

@ -0,0 +1,130 @@
export function modal(){
var html = `<!-- Modal -->
<div class="modal fade" id="addU" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="myModalLabel">Añadir Nuevos Datos</h4>
</div>
<div class="modal-body">
<div role="tabpanel">
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#NuevoUsuarioTab" aria-controls="NuevoUsuarioTab" role="tab" data-toggle="tab">Nuevo Usuario</a>
</li>
<li role="presentation"><a href="#NuevaNotaTab" aria-controls="NuevaNotaTab" role="tab" data-toggle="tab">Nueva Nota</a>
</li>
<li role="presentation"><a href="#NuevaTarjetaDeCréditoTab" aria-controls="NuevaTarjetaDeCréditoTab" role="tab" data-toggle="tab">Nueva Tarjeta de Crédito</a>
</li>
<li role="presentation"><a href="#NuevaCuentaBancariaTab" aria-controls="NuevaCuentaBancariaTab" role="tab" data-toggle="tab">Nueva Cuenta Bancaria</a>
</li>
</ul>
</br>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="NuevoUsuarioTab">
<div class="form-group">
<label for="DescripcionModal">Descripción</label>
<input type="text" class="form-control" id="DescripcionModal" placeholder="Introduce Descripción">
</div>
<div class="form-group">
<label for="URLModal">URL</label>
<input type="url" class="form-control" id="URLModal" placeholder="URL">
</div>
<div class="form-group">
<label for="UsuarioModal">Usuario</label>
<input type="text" class="form-control" id="UsuarioModal" placeholder="Introduce Usuario">
</div>
<div class="form-group">
<label for="ContraseñaModal">Contraseña</label>
<div class="input-group ">
<input type="password" class="form-control" id="ContraseñaModal" placeholder="Introduce Contraseña" aria-describedby="sizing-addon1">
<span class="input-group-btn">
<div class="btn-group">
<button type="button" id="opcionesContraseñaa" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
<span class="sr-only">Desplegar menú</span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a id = "generarContraseña" >Generar Contraseña</a></li>
<li><a id = "verContraseña">Ver</a></li>
</ul>
</div>
</span>
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane" id="NuevaNotaTab">
<div class="form-group">
<label for="NombreNota">Nombre</label>
<input type="text" class="form-control" id="NombreNota" placeholder="Introduce Nombre">
</div>
<div class="form-group">
<label for="textoNota">Texto Nota</label>
<textarea class="form-control" id="textoNota" rows="3"></textarea>
</div>
</div>
<div role="tabpanel" class="tab-pane" id="NuevaTarjetaDeCréditoTab">
<div class="form-group">
<label for="nombreEntidad">Nombre Entidad</label>
<input type="text" class="form-control" id="nombreEntidad" placeholder="Introduce Nombre de la Entidad/Banco">
</div>
<div class="form-group">
<label for="numTarjeta">Número tarjeta</label>
<input type="text" class="form-control" id="numTarjeta" placeholder="Introduce el número de la tarjeta" maxlength=16>
</div>
<div class="form-group">
<label for="fechaCaducidad">Fecha de Caducidad</label>
<input type="date" class="form-control" id="fechaCaducidad" placeholder="Introduce la fecha de caducidad">
</div>
<div class="form-group">
<label for="nombreTitular">Nombre Titular</label>
<input type="text" class="form-control" id="nombreTitular" placeholder="Introduce Nombre del Titular">
</div>
<div class="form-group">
<label for="codigoDeSeguridad">Código de seguridad</label>
<input type="text" class="form-control" id="codigoDeSeguridad" placeholder="Introduce el código de seguridad" maxlength=3>
</div>
</div>
<div role="tabpanel" class="tab-pane" id="NuevaCuentaBancariaTab">
<div class="form-group">
<label for="nombreEntidadBancaria">Nombre Entidad</label>
<input type="text" class="form-control" id="nombreEntidadBancaria" placeholder="Introduce Nombre de la Entidad/Banco">
</div>
<div class="form-group">
<label for="IBAN">Número de cuenta (IBAN)</label>
<input type="text" class="form-control" id="IBAN" placeholder="Introduce el número de la cuenta Bancaria" maxlength=24>
</div>
<div class="form-group">
<label for="usuarioBancario">Usuario Banca Online</label>
<input type="text" class="form-control" id="usuarioBancario" placeholder="Introduce el usuario de la Banca Online">
</div>
<div class="form-group">
<label for="contraseñaBancario">Contraseña Banca Online</label>
<input type="password" class="form-control" id="contraseñaBancario" placeholder="Introduce la contraseña de la Banca Online">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Cerrar</button>
<button type="button" id="añadirModal" class="btn btn-primary save">Guardar Cambios</button>
</div>
</div>
</div>
</div>`
return html;
}

View File

@ -0,0 +1,151 @@
export function modalEUsuario(){
var html = `<!-- Modal Editar Usuario -->
<div class="modal fade" id="editarUsuarioModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Editar Usuario</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="DescripcionModalEditarUsuario">Descripción</label>
<input type="text" class="form-control" id="DescripcionModalEditarUsuario" placeholder="">
</div>
<div class="form-group">
<label for="URLModalEditarUsuario">URL</label>
<input type="url" class="form-control" id="URLModalEditarUsuario" placeholder="">
</div>
<div class="form-group">
<label for="UsuarioModalEditarUsuario">Usuario</label>
<input type="text" class="form-control" id="UsuarioModalEditarUsuario" placeholder="">
</div>
<div class="form-group">
<label for="ContraseñaModalEditarUsuario">Contraseña</label>
<input type="password" class="form-control" id="ContraseñaModalEditarUsuario" placeholder="">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Descartar</button>
<button type="button" id = "modalConfirmacionEditarUsuario" class="btn btn-primary">Guardar Cambios</button>
</div>
</div>
</div>
</div>`;
return html;
}
export function modalENota(){
var html = `<!-- Modal Editar Notas -->
<div class="modal fade" id="editarNotaModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Editar Nota</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="NombreNota">Nombre</label>
<input type="text" class="form-control" id="EditarNombreNota" placeholder="Introduce Nombre">
</div>
<div class="form-group">
<label for="textoNota">Texto Nota</label>
<textarea class="form-control" id="EditartextoNota" rows="3"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Descartar</button>
<button type="button" id = "modalConfirmacionEditarNota" class="btn btn-primary">Guardar Cambios</button>
</div>
</div>
</div>
</div>`;
return html;
}
export function modalEditTarjetaCredito(){
var html = `<!-- Modal Editar Tarjeta -->
<div class="modal fade" id="editarTarjetaCreditoModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Editar Tarjeta de Crédito</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="nombreEntidadModalEditarTarjetaCredito">Nombre Entidad</label>
<input type="text" class="form-control" id="nombreEntidadModalEditarTarjetaCredito" placeholder="">
</div>
<div class="form-group">
<label for="numTarjetaModalEditarTarjetaCredito">Número Tarjeta</label>
<input type="text" class="form-control" id="numTarjetaModalEditarTarjetaCredito" placeholder="">
</div>
<div class="form-group">
<label for="fechaCaducidadModalEditarTarjetaCredito">Fecha Caducidad</label>
<input type="date" class="form-control" id="fechaCaducidadModalEditarTarjetaCredito" placeholder="">
</div>
<div class="form-group">
<label for="nombreTitularModalEditarTarjetaCredito">Nombre Titular</label>
<input type="text" class="form-control" id="nombreTitularModalEditarTarjetaCredito" placeholder="">
</div>
<div class="form-group">
<label for="codigoDeSeguridadEditarTarjetaCredito">Código Seguridad</label>
<input type="text" class="form-control" id="codigoDeSeguridadModalEditarTarjetaCredito" placeholder="">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Descartar</button>
<button type="button" id = "modalConfirmacionEditarTarjetaCredito" class="btn btn-primary">Guardar Cambios</button>
</div>
</div>
</div>
</div>`;
return html;
}
export function modalEditCuentaBancaria(){
var html = `<!-- Modal Editar Cuenta -->
<div class="modal fade" id="editarCuentaBancariaModal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Editar Cuenta Bancaria</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<div class="modal-body">
<div class="form-group">
<label for="nombreEntidadBancariaModalEditarCuentaBancaria">Nombre Entidad</label>
<input type="text" class="form-control" id="nombreEntidadBancariaModalEditarCuentaBancaria" placeholder="">
</div>
<div class="form-group">
<label for="IBANModalEditarCuentaBancaria">IBAN</label>
<input type="text" class="form-control" id="IBANModalEditarCuentaBancaria" placeholder="">
</div>
<div class="form-group">
<label for="usuarioBancarioModalEditarCuentaBancaria">Fecha Caducidad</label>
<input type="text" class="form-control" id="usuarioBancarioModalEditarCuentaBancaria" placeholder="">
</div>
<div class="form-group">
<label for="contraseñaBancarioModalEditarCuentaBancaria">Nombre Titular</label>
<input type="password" class="form-control" id="contraseñaBancarioModalEditarCuentaBancaria" placeholder="">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Descartar</button>
<button type="button" id = "modalConfirmacionEditarCuentaBancaria" class="btn btn-primary">Guardar Cambios</button>
</div>
</div>
</div>
</div>`;
return html;
}

75
scripts/plantillas.js Normal file
View File

@ -0,0 +1,75 @@
//////////////Plantillas
export function plantillaUsuario(descripcion, url, usuario, contraseña){
if(descripcion != ""){
this.descripcion = descripcion;
}
if(url != ""){
this.url = url;
}
if(usuario != ""){
this.usuario = usuario;
}
if(contraseña != ""){
this.contraseña = contraseña;
}
}
export function plantillaNota(nombre, textoNota){
if(nombre != ""){
this.nombre = nombre;
}
if(textoNota != ""){
this.textoNota = textoNota;
}
}
//---------------------------
/**
* plantilla para crear un objeto de tipo Tarjeta de Crédito
* @param {*} nombreEntidad nombre del banco
* @param {*} numTarjeta nombre de la tarjeta guardada
* @param {*} fechaCaducidad fecha de caducidad de la tarjeta guardada
* @param {*} nombreTitular nombre del titular de la tarjeta
* @param {*} codigoDeSeguridad código de seguridad de la tarjeta (CCV, CVV)
*/
export function plantillaTarjetaCredito(nombreEntidad, numTarjeta,fechaCaducidad,nombreTitular,codigoDeSeguridad){
if(nombreEntidad != ""){
this.nombreEntidad = nombreEntidad;
}
if(numTarjeta != ""){
this.numTarjeta = numTarjeta;
}
if(fechaCaducidad != ""){
this.fechaCaducidad = fechaCaducidad;
}
if(nombreTitular != ""){
this.nombreTitular = nombreTitular;
}
if(codigoDeSeguridad != ""){
this.codigoDeSeguridad = codigoDeSeguridad;
}
}
/**
* plantilla para crear un objeto de tipo Cuenta Bancaria
* @param {*} nombreEntidadBancaria nombre del banco
* @param {*} IBAN número completo de la cuenta bancaria
* @param {*} usuarioBancario usuario con el que acceder a la banca online
* @param {*} contraseñaBancario contraseña para acceder a la banca online
*/
export function plantillaCuentaBancaria(nombreEntidadBancaria, IBAN,usuarioBancario,contraseñaBancario){
if(nombreEntidadBancaria != ""){
this.nombreEntidadBancaria = nombreEntidadBancaria;
}
if(IBAN != ""){
this.IBAN = IBAN;
}
if(usuarioBancario != ""){
this.usuarioBancario = usuarioBancario;
}
if(contraseñaBancario != ""){
this.contraseñaBancario = contraseñaBancario;
}
}

173
scripts/plog.js Normal file
View File

@ -0,0 +1,173 @@
!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.plog=e():"undefined"!=typeof global?global.plog=e():"undefined"!=typeof self&&(self.plog=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
var InMemoryStorage = function() {
this.events = [];
};
InMemoryStorage.prototype.append = function(event) {
this.events.push(event);
};
InMemoryStorage.prototype.clear = function() {
this.events = [];
};
InMemoryStorage.prototype.getEvents = function() {
return this.events;
};
module.exports = InMemoryStorage;
},{}],2:[function(require,module,exports){
var INDEX_KEY = 'plog-index';
function initialize() {
saveIndex({firstId: 0, nextId: 0});
}
function saveIndex(index) {
localStorage[INDEX_KEY] = JSON.stringify(index);
}
function loadIndex() {
return JSON.parse(localStorage[INDEX_KEY]);
}
function foreachKey(callback) {
var index = loadIndex();
for (var id = index.firstId; id < index.nextId; id++) {
callback('plog-event-' + id);
}
}
var LocalStorage = function(opts) {
opts = opts || {};
this.maxSize = opts.maxSize || 100;
if (typeof localStorage[INDEX_KEY] === 'undefined') {
initialize();
}
};
LocalStorage.prototype.clear = function() {
foreachKey(function(key) {
delete localStorage[key];
});
initialize();
};
LocalStorage.prototype.purgeOldEvents = function() {
var eventsToPurge = Math.round(this.maxSize * 0.2);
var index = loadIndex();
for (var i = 0; i < eventsToPurge; i++) {
var key = 'plog-event-' + (index.firstId + i);
delete localStorage[key];
}
index.firstId += eventsToPurge;
saveIndex(index);
};
LocalStorage.prototype.getEvents = function() {
var events = [];
foreachKey(function(key) {
var event = localStorage[key];
events.push(JSON.parse(event));
});
return events;
};
LocalStorage.prototype.append = function(event) {
var index = loadIndex();
var currentSize = index.nextId - index.firstId;
if (currentSize + 1 > this.maxSize) {
this.purgeOldEvents();
index = loadIndex();
}
var key = 'plog-event-' + index.nextId;
localStorage[key] = JSON.stringify(event);
index.nextId++;
saveIndex(index);
};
module.exports = LocalStorage;
},{}],3:[function(require,module,exports){
var plog = {};
plog.storages = {
LocalStorage: require('./LocalStorage'),
InMemoryStorage: require('./InMemoryStorage')
};
plog.level = {
DEBUG: 0,
INFO: 1,
WARN: 2,
ERROR: 3,
FATAL: 4,
getName: function(level) {
for (var x in this) {
if (this[x] === level) return x;
}
return level;
}
};
var currentStorage, currentLevel;
plog.reset = function() {
currentStorage = new plog.storages.LocalStorage();
currentLevel = plog.level.INFO;
};
plog.reset();
plog.useStorage = function(storage) {
currentStorage = storage;
};
plog.getStorage = function() {
return currentStorage;
};
plog.getLevel = function() {
return currentLevel;
};
plog.setLevel = function(level) {
currentLevel = level;
};
function write(level, msg) {
if (level < currentLevel) return;
var event = {
level: level,
date: new Date(),
message: msg
};
currentStorage.append(event);
console.log(event.date.toISOString() + ': ' + plog.level.getName(