diff --git a/.gcloudignore b/.gcloudignore
new file mode 100644
index 0000000..5b26e15
--- /dev/null
+++ b/.gcloudignore
@@ -0,0 +1,27 @@
+# This file specifies files that are *not* uploaded to Google Cloud Platform
+# using gcloud. It follows the same syntax as .gitignore, with the addition of
+# "#!include" directives (which insert the entries of the given .gitignore-style
+# file at that point).
+#
+# For more information, run:
+# $ gcloud topic gcloudignore
+#
+.gcloudignore
+# If you would like to upload your .git directory, .gitignore file or files
+# from your .gitignore file, remove the corresponding line
+# below:
+.git
+.gitignore
+
+# Node.js dependencies:
+node_modules/
+
+# Archivos de desarrollo
+src/
+public/
+
+# Archivos de JetBrains
+.idea/
+
+# Archivos de TypeScript
+*.ts
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 185e663..c20fb41 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,3 +19,6 @@ yarn-error.log*
*.njsproj
*.sln
*.sw*
+
+# Archivos js (ya que estoy usando ts)
+/Backend/*.js
\ No newline at end of file
diff --git a/Backend/VARIABLES.ts b/Backend/VARIABLES.ts
new file mode 100644
index 0000000..c7e8e60
--- /dev/null
+++ b/Backend/VARIABLES.ts
@@ -0,0 +1,8 @@
+const SQL_CONNECT_DATA:object = {
+ host: '35.193.16.64',
+ user: 'Araozu',
+ password: 'xsakah4b',
+ database: 'Usuarios_DB'
+};
+
+module.exports.sqlConnectData = SQL_CONNECT_DATA;
\ No newline at end of file
diff --git a/Backend/registrarUsuario.ts b/Backend/registrarUsuario.ts
new file mode 100644
index 0000000..1b80026
--- /dev/null
+++ b/Backend/registrarUsuario.ts
@@ -0,0 +1,89 @@
+const exec = (nombre:string, email:string, pass:string, sesion:any) =>
+ new Promise((resolve, reject) => {
+ const mysql = require('mysql');
+ const SQL_CONNECT_DATA = require('./VARIABLES').sqlConnectData;
+
+ const con = mysql.createConnection(SQL_CONNECT_DATA);
+
+ con.connect((err:any) => {
+ if (err) reject("Error al conectarse a la BBDD. registrarUsuarios.ts 10.\n" + err);
+
+ con.query(
+ `SELECT email FROM usuarios WHERE email='${email}'`,
+ (err:any, respuesta:any) => {
+ const data = JSON.stringify(respuesta);
+ if (data === "[]") {
+
+ con.query(
+ `INSERT INTO usuarios (GOOGLE_ID, nombre, email, img, carritoActual, contrasena, ROL)
+ VALUES ('0','${nombre}', '${email}', '/img/usuario.png', '{}', '${pass}', 'user' )`,
+ (err:any, respuesta:any) => {
+ if (err) reject ('Error al ejecutar SQL. registrarUsuario.ts 22\n' + err);
+
+ /* El servidor me obligo a hacer esto en vez de usar SELECT LAST_INSERT_ID() */
+ con.query(
+ `SELECT USER_ID FROM usuarios WHERE email='${email}'`,
+ (err:any, respuesta:any) => {
+ if (err) reject ('Error al ejecutar SQL. registrarUsuario.ts 27\n' + err);
+
+ /* Crea la variable de sesion */
+ sesion.nombre = nombre;
+ sesion.email = email;
+ sesion.img = '/img/usuario.png';
+ sesion.carritoActual = '{}';
+ sesion.USER_ID = respuesta[0]["USER_ID"];
+ sesion.ROL = 'user';
+
+ sesion.save((err:any) => {
+ if (err)
+ console.log(`Error :c\n${err}`)
+ });
+
+ const datos = {
+ nombre,
+ email,
+ img: '/img/usuario.png',
+ carritoActual: '{}',
+ 'USER_ID': respuesta[0]["USER_ID"],
+ ROL: 'user',
+ logged: true
+ };
+ resolve(`{ "existe": false, "creado": true, "data": ${JSON.stringify(datos)} }`);
+ }
+ );
+ }
+ );
+
+ } else {
+ resolve(`{ "existe": true }`);
+ }
+ }
+ );
+
+ });
+ });
+
+const registrar = (req:any, res:any) => {
+ res.header('Access-Control-Allow-Origin', 'http://localhost:8081');
+ res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
+ res.header('Access-Control-Allow-Headers', 'Content-Type');
+
+ const sesion = req.session;
+
+ const nombre:string = req.body.nombre;
+ const email:string = req.body.email;
+ const pass:string = req.body.pass;
+
+ if (nombre && email && pass) {
+ exec(nombre, email, pass, sesion)
+ .then(respuesta => {
+ res.send(respuesta);
+ })
+ .catch(reason => console.log("Ups. Un error.\n" + reason));
+ } else {
+ res.send("Error, datos insuficientes.");
+ }
+
+};
+
+module.exports.registrar = registrar;
\ No newline at end of file
diff --git a/Backend/start.ts b/Backend/revisarUsuarioG.ts
similarity index 68%
rename from Backend/start.ts
rename to Backend/revisarUsuarioG.ts
index 5ddf51e..3227662 100644
--- a/Backend/start.ts
+++ b/Backend/revisarUsuarioG.ts
@@ -1,38 +1,28 @@
-declare var require:any;
-
-const express = require('express');
-const app = express();
-app.use(express.json());
-app.use(express.urlencoded());
-const port:number = 3000;
-
const validator = require('./google_validation.js').validator;
const crearUsuario = (con:any, data:object) => {
return new Promise((resolve, reject) => {
- con.query (`INSERT INTO usuarios (nombre, email, img, carritoActual, GOOGLE_ID)\
- VALUES ( '${(data as any)["nombreUsuario"]}', '${(data as any)["emailUsuario"]}',
- '${(data as any)["imagenUsuario"]}', '{}', '${(data as any)["googleID"]}')`,
+ con.query (
+ `INSERT INTO usuarios (nombre, email, img, carritoActual, GOOGLE_ID, ROL)\
+ VALUES ('${(data as any)["nombreUsuario"]}', '${(data as any)["emailUsuario"]}',
+ '${(data as any)["imagenUsuario"]}', '{}', '${(data as any)["googleID"]}', 'user')`,
(err:any, res:string) => {
if (err) {
- reject("Error al ejecutar query SQL (start.ts fila 18))...\n" + err);
+ reject("Error al ejecutar query SQL (revisarUsuarioG.ts fila 18))...\n" + err);
}
+ console.log("Resultado de añadir usuario a la BBDD (revisarUsuarioG.ts 22):\n" + res);
resolve("Exito.");
}
);
});
};
-const revisarUsuarioG = (usuario:object) => {
+const revisarUsuarioG = (usuario:object, sesion:any) => {
return new Promise((resolve, reject) => {
const mysql = require('mysql');
+ const SQL_CONNECT_DATA = require('./VARIABLES').sqlConnectData;
- const con = mysql.createConnection({
- host: '35.193.16.64',
- user: 'Araozu',
- password: 'xsakah4b',
- database: 'Usuarios_DB'
- });
+ const con = mysql.createConnection(SQL_CONNECT_DATA);
con.connect( (err:any) => {
if (err) {
@@ -44,7 +34,7 @@ const revisarUsuarioG = (usuario:object) => {
const imagenUsuario:string = (usuario as any)["picture"];
const googleID:number = (usuario as any)["sub"];
- con.query (`SELECT nombre, email, img, carritoActual, USER_ID FROM usuarios WHERE GOOGLE_ID='${googleID}'`,
+ con.query (`SELECT nombre, email, img, carritoActual, USER_ID, ROL FROM usuarios WHERE GOOGLE_ID='${googleID}'`,
(err:any, response:any) => {
if (err) {
reject("Error al ejecutar query SQL");
@@ -54,7 +44,7 @@ const revisarUsuarioG = (usuario:object) => {
crearUsuario(con, {nombreUsuario, emailUsuario, imagenUsuario, googleID})
.then( () => {
resolve(`{ "nombre": "${nombreUsuario}", "email": "${emailUsuario}", "img": "${imagenUsuario}",
- "carrito": {}`);
+ "carrito": {}, "rol": "user"}`);
})
.catch((msg:string) => {
reject("Error al crear el usuario...\n" + msg);
@@ -69,8 +59,8 @@ const revisarUsuarioG = (usuario:object) => {
});
};
-app.post('/log-inG',(req:any, res:any) => {
- res.header('Access-Control-Allow-Origin', 'http://localhost:8080');
+const revisarUsuario = (req:any, res:any) => {
+ res.header('Access-Control-Allow-Origin', 'http://localhost:8081');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type');
@@ -78,15 +68,13 @@ app.post('/log-inG',(req:any, res:any) => {
validator(token)
.then( (usuario:object) => {
- revisarUsuarioG(usuario)
+ revisarUsuarioG(usuario, req.session)
.then(response => res.send(response.toString()))
.catch(err => res.send(err))
})
.catch(console.error);
-});
+};
-app.listen(port, () => {
- console.log(`Estoy escuchando el puerto ${port} we v:`);
-});
+module.exports.revisarUsuarioG = revisarUsuario;
\ No newline at end of file
diff --git a/Backend/usuarioLogueado.ts b/Backend/usuarioLogueado.ts
new file mode 100644
index 0000000..7a30b50
--- /dev/null
+++ b/Backend/usuarioLogueado.ts
@@ -0,0 +1,34 @@
+function revisarSesion(req:any, res:any) {
+ res.header('Access-Control-Allow-Origin', 'http://localhost:8081');
+ res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
+ res.header('Access-Control-Allow-Headers', 'Content-Type');
+
+ const sesion = req.session;
+
+ const USER_ID = sesion.USER_ID;
+ if (USER_ID) {
+ console.log("Recorde el usuario :3");
+
+ const nombre = sesion.nombre;
+ const email = sesion.email;
+ const img = sesion.img;
+ const carritoActual = sesion.carritoActual;
+ const ROL = sesion.ROL;
+
+ const data = {
+ nombre,
+ email,
+ img,
+ carritoActual: JSON.parse(carritoActual),
+ ROL,
+ USER_ID,
+ logged: true
+ };
+
+ res.send(JSON.stringify(data));
+ } else {
+ res.send(`{ "logged": false }`);
+ }
+}
+
+module.exports.revisarSesion = revisarSesion;
\ No newline at end of file
diff --git a/Backend/usuarios.ts b/Backend/usuarios.ts
new file mode 100644
index 0000000..781a357
--- /dev/null
+++ b/Backend/usuarios.ts
@@ -0,0 +1,41 @@
+/* Metodo que obtiene los usuarios que existen. */
+const obtenerUsuarios = () => {
+ return new Promise((resolve, reject) => {
+ const con = require('mysql').createConnection({
+ host: '35.193.16.64',
+ user: 'Araozu',
+ password: 'xsakah4b',
+ database: 'Usuarios_DB'
+ });
+
+ con.connect( (err:any) => {
+ if (err) {
+ console.log("Error en usuarios.ts 13.\n" + err);
+ reject("Error :c");
+ }
+
+ con.query(
+ `SELECT USER_ID, GOOGLE_ID, nombre, ROL FROM usuarios WHERE ROL='user'`,
+ (err:any, response:any) => {
+ if (err) {
+ console.log("Error en usuarios.ts 21.\n" + err);
+ reject("Error :c");
+ }
+ resolve(response);
+ }
+ );
+ });
+ });
+};
+
+const procesar = (req:any, res:any) => {
+ res.header('Access-Control-Allow-Origin', 'http://localhost:8081');
+ res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
+ res.header('Access-Control-Allow-Headers', 'Content-Type');
+
+ obtenerUsuarios()
+ .then((resultado:object) => res.send(JSON.stringify(resultado)))
+ .catch(reason => res.send(reason));
+};
+
+module.exports.usuarios = procesar;
\ No newline at end of file
diff --git a/app.ts b/app.ts
new file mode 100644
index 0000000..cb26aaa
--- /dev/null
+++ b/app.ts
@@ -0,0 +1,25 @@
+const expressr = require('express');
+const apuri = expressr();
+const session = require('express-session');
+
+apuri.use(expressr.json());
+apuri.use(expressr.urlencoded());
+apuri.use(expressr.static('dist'));
+apuri.use(session({
+ secret: 'azopotamadre we v:',
+ resave: false,
+ saveUninitialized: false
+}));
+
+/* PUERTO NECESARIO PARA DEPLOYAR EN GOOGLE CLOUD!!! */
+const puerto = 8080;
+
+apuri.post('/log-inG', require('./Backend/revisarUsuarioG.js').revisarUsuarioG);
+apuri.post('/usuarios', require('./Backend/usuarios.js').usuarios);
+apuri.post('/registro', require('./Backend/registrarUsuario.js').registrar);
+apuri.post('/sesion', require('./Backend/usuarioLogueado').revisarSesion);
+
+apuri.get('/');
+
+
+apuri.listen(puerto, () => console.log(`Estoy escuchando el puerto ${puerto} we v:`));
\ No newline at end of file
diff --git a/app.yaml b/app.yaml
new file mode 100644
index 0000000..10a3713
--- /dev/null
+++ b/app.yaml
@@ -0,0 +1,6 @@
+runtime: nodejs8
+
+instance_class: F2
+
+env_variables:
+ BUCKET_NAME: "example-gcs-bucket"
diff --git a/babel.config.js b/babel.config.js
index ba17966..fd1df2a 100644
--- a/babel.config.js
+++ b/babel.config.js
@@ -2,4 +2,4 @@ module.exports = {
presets: [
'@vue/app'
]
-}
+};
diff --git a/package-lock.json b/package-lock.json
index 39ea4af..bea6ed0 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -796,6 +796,80 @@
"integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==",
"dev": true
},
+ "@types/body-parser": {
+ "version": "1.17.0",
+ "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz",
+ "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==",
+ "requires": {
+ "@types/connect": "3.4.32",
+ "@types/node": "10.12.1"
+ }
+ },
+ "@types/connect": {
+ "version": "3.4.32",
+ "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz",
+ "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==",
+ "requires": {
+ "@types/node": "10.12.1"
+ }
+ },
+ "@types/events": {
+ "version": "1.2.0",
+ "resolved": "http://registry.npmjs.org/@types/events/-/events-1.2.0.tgz",
+ "integrity": "sha512-KEIlhXnIutzKwRbQkGWb/I4HFqBuUykAdHgDED6xqwXJfONCjF5VoE0cXEiurh3XauygxzeDzgtXUqvLkxFzzA=="
+ },
+ "@types/express": {
+ "version": "4.16.0",
+ "resolved": "https://registry.npmjs.org/@types/express/-/express-4.16.0.tgz",
+ "integrity": "sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w==",
+ "requires": {
+ "@types/body-parser": "1.17.0",
+ "@types/express-serve-static-core": "4.16.0",
+ "@types/serve-static": "1.13.2"
+ }
+ },
+ "@types/express-serve-static-core": {
+ "version": "4.16.0",
+ "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.0.tgz",
+ "integrity": "sha512-lTeoCu5NxJU4OD9moCgm0ESZzweAx0YqsAcab6OB0EB3+As1OaHtKnaGJvcngQxYsi9UNv0abn4/DRavrRxt4w==",
+ "requires": {
+ "@types/events": "1.2.0",
+ "@types/node": "10.12.1",
+ "@types/range-parser": "1.2.2"
+ }
+ },
+ "@types/mime": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.0.tgz",
+ "integrity": "sha512-A2TAGbTFdBw9azHbpVd+/FkdW2T6msN1uct1O9bH3vTerEHKZhTXJUQXy+hNq1B0RagfU8U+KBdqiZpxjhOUQA=="
+ },
+ "@types/mysql": {
+ "version": "2.15.5",
+ "resolved": "https://registry.npmjs.org/@types/mysql/-/mysql-2.15.5.tgz",
+ "integrity": "sha512-4QAISTUGZbcFh7bqdndo08xRdES5OTU+JODy8VCZbe1yiXyGjqw1H83G43XjQ3IbC10wn9xlGd44A5RXJwNh0Q==",
+ "requires": {
+ "@types/node": "10.12.1"
+ }
+ },
+ "@types/node": {
+ "version": "10.12.1",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.1.tgz",
+ "integrity": "sha512-i1sl+WCX2OCHeUi9oi7PiCNUtYFrpWhpcx878vpeq/tlZTKzcFdHePlyFHVbWqeuKN0SRPl/9ZFDSTsfv9h7VQ=="
+ },
+ "@types/range-parser": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.2.tgz",
+ "integrity": "sha512-HtKGu+qG1NPvYe1z7ezLsyIaXYyi8SoAVqWDZgDQ8dLrsZvSzUNCwZyfX33uhWxL/SU0ZDQZ3nwZ0nimt507Kw=="
+ },
+ "@types/serve-static": {
+ "version": "1.13.2",
+ "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz",
+ "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==",
+ "requires": {
+ "@types/express-serve-static-core": "4.16.0",
+ "@types/mime": "2.0.0"
+ }
+ },
"@vue/babel-preset-app": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-3.0.5.tgz",
@@ -1171,7 +1245,6 @@
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
"integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
- "dev": true,
"requires": {
"mime-types": "2.1.20",
"negotiator": "0.6.1"
@@ -1637,8 +1710,7 @@
"array-flatten": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
- "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
- "dev": true
+ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
},
"array-map": {
"version": "0.0.0",
@@ -2070,7 +2142,6 @@
"version": "1.18.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
"integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
- "dev": true,
"requires": {
"bytes": "3.0.0",
"content-type": "1.0.4",
@@ -2088,7 +2159,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -2096,14 +2166,12 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"qs": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
- "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
- "dev": true
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
}
}
},
@@ -2292,8 +2360,7 @@
"bytes": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
- "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
- "dev": true
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
},
"cacache": {
"version": "10.0.4",
@@ -2956,14 +3023,12 @@
"content-disposition": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
- "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
- "dev": true
+ "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
},
"content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
- "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
- "dev": true
+ "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
},
"convert-source-map": {
"version": "1.6.0",
@@ -2977,14 +3042,12 @@
"cookie": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
- "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
- "dev": true
+ "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
},
"cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
- "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
- "dev": true
+ "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
},
"copy-concurrently": {
"version": "1.0.5",
@@ -3081,6 +3144,11 @@
"parse-json": "4.0.0"
}
},
+ "crc": {
+ "version": "3.4.4",
+ "resolved": "https://registry.npmjs.org/crc/-/crc-3.4.4.tgz",
+ "integrity": "sha1-naHpgOO9RPxck79as9ozeNheRms="
+ },
"create-ecdh": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
@@ -3604,8 +3672,7 @@
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
- "dev": true
+ "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
},
"des.js": {
"version": "1.0.0",
@@ -3620,8 +3687,7 @@
"destroy": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
- "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
- "dev": true
+ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
"detect-node": {
"version": "2.0.4",
@@ -3788,8 +3854,7 @@
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
- "dev": true
+ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
},
"ejs": {
"version": "2.6.1",
@@ -3827,8 +3892,7 @@
"encodeurl": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
- "dev": true
+ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
},
"end-of-stream": {
"version": "1.4.1",
@@ -3923,8 +3987,7 @@
"escape-html": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
- "dev": true
+ "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
},
"escape-string-regexp": {
"version": "1.0.5",
@@ -3972,8 +4035,7 @@
"etag": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
- "dev": true
+ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
},
"event-pubsub": {
"version": "4.3.0",
@@ -4049,7 +4111,6 @@
"version": "4.16.3",
"resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz",
"integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
- "dev": true,
"requires": {
"accepts": "1.3.5",
"array-flatten": "1.1.1",
@@ -4087,7 +4148,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -4095,20 +4155,48 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"qs": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
- "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
- "dev": true
+ "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
},
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
- "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==",
- "dev": true
+ "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
+ }
+ }
+ },
+ "express-session": {
+ "version": "1.15.6",
+ "resolved": "https://registry.npmjs.org/express-session/-/express-session-1.15.6.tgz",
+ "integrity": "sha512-r0nrHTCYtAMrFwZ0kBzZEXa1vtPVrw0dKvGSrKP4dahwBQ1BJpF2/y1Pp4sCD/0kvxV4zZeclyvfmw0B4RMJQA==",
+ "requires": {
+ "cookie": "0.3.1",
+ "cookie-signature": "1.0.6",
+ "crc": "3.4.4",
+ "debug": "2.6.9",
+ "depd": "1.1.2",
+ "on-headers": "1.0.1",
+ "parseurl": "1.3.2",
+ "uid-safe": "2.1.5",
+ "utils-merge": "1.0.1"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
@@ -4566,7 +4654,6 @@
"version": "1.1.1",
"resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
- "dev": true,
"requires": {
"debug": "2.6.9",
"encodeurl": "1.0.2",
@@ -4581,7 +4668,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -4589,8 +4675,7 @@
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
@@ -4699,8 +4784,7 @@
"forwarded": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
- "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
- "dev": true
+ "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
},
"fragment-cache": {
"version": "0.2.1",
@@ -4714,8 +4798,7 @@
"fresh": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
- "dev": true
+ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
},
"friendly-errors-webpack-plugin": {
"version": "1.7.0",
@@ -5916,7 +5999,6 @@
"version": "1.6.3",
"resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
- "dev": true,
"requires": {
"depd": "1.1.2",
"inherits": "2.0.3",
@@ -6288,8 +6370,7 @@
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
- "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
- "dev": true
+ "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
},
"icss-replace-symbols": {
"version": "1.1.0",
@@ -6513,8 +6594,7 @@
"ipaddr.js": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
- "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=",
- "dev": true
+ "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
},
"is-absolute-url": {
"version": "2.1.0",
@@ -7286,8 +7366,7 @@
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
- "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
- "dev": true
+ "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
},
"mem": {
"version": "4.0.0",
@@ -7345,8 +7424,7 @@
"merge-descriptors": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
- "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
- "dev": true
+ "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
},
"merge-source-map": {
"version": "1.1.0",
@@ -7374,8 +7452,7 @@
"methods": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
- "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
- "dev": true
+ "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
},
"micromatch": {
"version": "2.3.11",
@@ -7416,14 +7493,12 @@
"mime-db": {
"version": "1.36.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
- "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==",
- "dev": true
+ "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw=="
},
"mime-types": {
"version": "2.1.20",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
"integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
- "dev": true,
"requires": {
"mime-db": "1.36.0"
}
@@ -7669,8 +7744,7 @@
"negotiator": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
- "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
- "dev": true
+ "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
},
"neo-async": {
"version": "2.5.2",
@@ -8135,7 +8209,6 @@
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
- "dev": true,
"requires": {
"ee-first": "1.1.1"
}
@@ -8143,8 +8216,7 @@
"on-headers": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
- "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
- "dev": true
+ "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
},
"once": {
"version": "1.4.0",
@@ -8353,8 +8425,7 @@
"parseurl": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
- "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
- "dev": true
+ "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
},
"pascalcase": {
"version": "0.1.1",
@@ -8407,8 +8478,7 @@
"path-to-regexp": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
- "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
- "dev": true
+ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
},
"path-type": {
"version": "3.0.0",
@@ -9147,7 +9217,6 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
"integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
- "dev": true,
"requires": {
"forwarded": "0.1.2",
"ipaddr.js": "1.8.0"
@@ -9241,6 +9310,11 @@
"integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
"dev": true
},
+ "random-bytes": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
+ "integrity": "sha1-T2ih3Arli9P7lYSMMDJNt11kNgs="
+ },
"randomatic": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
@@ -9288,14 +9362,12 @@
"range-parser": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
- "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
- "dev": true
+ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
},
"raw-body": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
"integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
- "dev": true,
"requires": {
"bytes": "3.0.0",
"http-errors": "1.6.2",
@@ -9306,14 +9378,12 @@
"depd": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
- "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=",
- "dev": true
+ "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
},
"http-errors": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
"integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
- "dev": true,
"requires": {
"depd": "1.1.1",
"inherits": "2.0.3",
@@ -9324,8 +9394,7 @@
"setprototypeof": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
- "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=",
- "dev": true
+ "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
}
}
},
@@ -10339,7 +10408,6 @@
"version": "0.16.2",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
- "dev": true,
"requires": {
"debug": "2.6.9",
"depd": "1.1.2",
@@ -10360,7 +10428,6 @@
"version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
"requires": {
"ms": "2.0.0"
}
@@ -10368,14 +10435,12 @@
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
- "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
- "dev": true
+ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
- "dev": true
+ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
},
@@ -10421,7 +10486,6 @@
"version": "1.13.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
- "dev": true,
"requires": {
"encodeurl": "1.0.2",
"escape-html": "1.0.3",
@@ -10467,8 +10531,7 @@
"setprototypeof": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
- "dev": true
+ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
},
"sha.js": {
"version": "2.4.11",
@@ -10936,8 +10999,7 @@
"statuses": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
- "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==",
- "dev": true
+ "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
},
"stdout-stream": {
"version": "1.4.1",
@@ -11345,7 +11407,6 @@
"version": "1.6.16",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
"integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
- "dev": true,
"requires": {
"media-typer": "0.3.0",
"mime-types": "2.1.20"
@@ -11415,6 +11476,14 @@
}
}
},
+ "uid-safe": {
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
+ "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
+ "requires": {
+ "random-bytes": "1.0.0"
+ }
+ },
"unicode-canonical-property-names-ecmascript": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
@@ -11517,8 +11586,7 @@
"unpipe": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
- "dev": true
+ "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
},
"unquote": {
"version": "1.1.1",
@@ -11714,8 +11782,7 @@
"utils-merge": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
- "dev": true
+ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
},
"uuid": {
"version": "3.3.2",
@@ -11736,8 +11803,7 @@
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
- "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
- "dev": true
+ "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
},
"vendors": {
"version": "1.0.2",
diff --git a/package.json b/package.json
index 956afec..d052588 100644
--- a/package.json
+++ b/package.json
@@ -3,11 +3,16 @@
"version": "0.1.0",
"private": true,
"scripts": {
- "backend": "node Backend/start.js",
- "serve": "vue-cli-service serve",
- "build": "vue-cli-service build"
+ "serve": "vue-cli-service serve --port 8081",
+ "build": "vue-cli-service build",
+ "start": "node app.js"
},
"dependencies": {
+ "@types/express": "^4.16.0",
+ "@types/mysql": "^2.15.5",
+ "@types/node": "^10.12.1",
+ "express": "^4.16.3",
+ "express-session": "^1.15.6",
"google-auth-library": "^2.0.0",
"mysql": "^2.16.0",
"vue": "^2.5.17",
diff --git a/public/img/usuario.png b/public/img/usuario.png
new file mode 100644
index 0000000..18f2890
Binary files /dev/null and b/public/img/usuario.png differ
diff --git a/src/App.vue b/src/App.vue
index 7ecf3fa..7492eac 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -5,6 +5,25 @@
\ No newline at end of file
diff --git a/src/components/Admin/Usuarios.vue b/src/components/Admin/Usuarios.vue
new file mode 100644
index 0000000..196a538
--- /dev/null
+++ b/src/components/Admin/Usuarios.vue
@@ -0,0 +1,53 @@
+
+
+
+ rol: {{ rol }}
+ ID de Google: {{ googleId }}
+ ID de usuario: {{ (99999999999 - userId).toString(16).toUpperCase() }} ({{ userId }})
+