Mejoras en el inicio de sesion.

master
Fernando 2018-11-02 11:39:33 -05:00
parent 1b65d4af33
commit 65d434b5fa
25 changed files with 896 additions and 185 deletions

27
.gcloudignore Normal file
View File

@ -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

3
.gitignore vendored
View File

@ -19,3 +19,6 @@ yarn-error.log*
*.njsproj *.njsproj
*.sln *.sln
*.sw* *.sw*
# Archivos js (ya que estoy usando ts)
/Backend/*.js

8
Backend/VARIABLES.ts Normal file
View File

@ -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;

View File

@ -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;

View File

@ -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 validator = require('./google_validation.js').validator;
const crearUsuario = (con:any, data:object) => { const crearUsuario = (con:any, data:object) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
con.query (`INSERT INTO usuarios (nombre, email, img, carritoActual, GOOGLE_ID)\ con.query (
`INSERT INTO usuarios (nombre, email, img, carritoActual, GOOGLE_ID, ROL)\
VALUES ('${(data as any)["nombreUsuario"]}', '${(data as any)["emailUsuario"]}', VALUES ('${(data as any)["nombreUsuario"]}', '${(data as any)["emailUsuario"]}',
'${(data as any)["imagenUsuario"]}', '{}', '${(data as any)["googleID"]}')`, '${(data as any)["imagenUsuario"]}', '{}', '${(data as any)["googleID"]}', 'user')`,
(err:any, res:string) => { (err:any, res:string) => {
if (err) { 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."); resolve("Exito.");
} }
); );
}); });
}; };
const revisarUsuarioG = (usuario:object) => { const revisarUsuarioG = (usuario:object, sesion:any) => {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const mysql = require('mysql'); const mysql = require('mysql');
const SQL_CONNECT_DATA = require('./VARIABLES').sqlConnectData;
const con = mysql.createConnection({ const con = mysql.createConnection(SQL_CONNECT_DATA);
host: '35.193.16.64',
user: 'Araozu',
password: 'xsakah4b',
database: 'Usuarios_DB'
});
con.connect( (err:any) => { con.connect( (err:any) => {
if (err) { if (err) {
@ -44,7 +34,7 @@ const revisarUsuarioG = (usuario:object) => {
const imagenUsuario:string = (usuario as any)["picture"]; const imagenUsuario:string = (usuario as any)["picture"];
const googleID:number = (usuario as any)["sub"]; 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) => { (err:any, response:any) => {
if (err) { if (err) {
reject("Error al ejecutar query SQL"); reject("Error al ejecutar query SQL");
@ -54,7 +44,7 @@ const revisarUsuarioG = (usuario:object) => {
crearUsuario(con, {nombreUsuario, emailUsuario, imagenUsuario, googleID}) crearUsuario(con, {nombreUsuario, emailUsuario, imagenUsuario, googleID})
.then( () => { .then( () => {
resolve(`{ "nombre": "${nombreUsuario}", "email": "${emailUsuario}", "img": "${imagenUsuario}", resolve(`{ "nombre": "${nombreUsuario}", "email": "${emailUsuario}", "img": "${imagenUsuario}",
"carrito": {}`); "carrito": {}, "rol": "user"}`);
}) })
.catch((msg:string) => { .catch((msg:string) => {
reject("Error al crear el usuario...\n" + msg); reject("Error al crear el usuario...\n" + msg);
@ -69,8 +59,8 @@ const revisarUsuarioG = (usuario:object) => {
}); });
}; };
app.post('/log-inG',(req:any, res:any) => { const revisarUsuario = (req:any, res:any) => {
res.header('Access-Control-Allow-Origin', 'http://localhost:8080'); res.header('Access-Control-Allow-Origin', 'http://localhost:8081');
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header('Access-Control-Allow-Headers', 'Content-Type'); res.header('Access-Control-Allow-Headers', 'Content-Type');
@ -78,15 +68,13 @@ app.post('/log-inG',(req:any, res:any) => {
validator(token) validator(token)
.then( (usuario:object) => { .then( (usuario:object) => {
revisarUsuarioG(usuario) revisarUsuarioG(usuario, req.session)
.then(response => res.send(response.toString())) .then(response => res.send(response.toString()))
.catch(err => res.send(err)) .catch(err => res.send(err))
}) })
.catch(console.error); .catch(console.error);
}); };
app.listen(port, () => { module.exports.revisarUsuarioG = revisarUsuario;
console.log(`Estoy escuchando el puerto ${port} we v:`);
});

View File

@ -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;

41
Backend/usuarios.ts Normal file
View File

@ -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;

25
app.ts Normal file
View File

@ -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:`));

6
app.yaml Normal file
View File

@ -0,0 +1,6 @@
runtime: nodejs8
instance_class: F2
env_variables:
BUCKET_NAME: "example-gcs-bucket"

View File

@ -2,4 +2,4 @@ module.exports = {
presets: [ presets: [
'@vue/app' '@vue/app'
] ]
} };

260
package-lock.json generated
View File

@ -796,6 +796,80 @@
"integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==", "integrity": "sha512-yprFYuno9FtNsSHVlSWd+nRlmGoAbqbeCwOryP6sC/zoCjhpArcRMYp19EvpSUSizJAlsXEwJv+wcWS9XaXdMw==",
"dev": true "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": { "@vue/babel-preset-app": {
"version": "3.0.5", "version": "3.0.5",
"resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-3.0.5.tgz", "resolved": "https://registry.npmjs.org/@vue/babel-preset-app/-/babel-preset-app-3.0.5.tgz",
@ -1171,7 +1245,6 @@
"version": "1.3.5", "version": "1.3.5",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz",
"integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
"dev": true,
"requires": { "requires": {
"mime-types": "2.1.20", "mime-types": "2.1.20",
"negotiator": "0.6.1" "negotiator": "0.6.1"
@ -1637,8 +1710,7 @@
"array-flatten": { "array-flatten": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz",
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
"dev": true
}, },
"array-map": { "array-map": {
"version": "0.0.0", "version": "0.0.0",
@ -2070,7 +2142,6 @@
"version": "1.18.2", "version": "1.18.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz",
"integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
"dev": true,
"requires": { "requires": {
"bytes": "3.0.0", "bytes": "3.0.0",
"content-type": "1.0.4", "content-type": "1.0.4",
@ -2088,7 +2159,6 @@
"version": "2.6.9", "version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": { "requires": {
"ms": "2.0.0" "ms": "2.0.0"
} }
@ -2096,14 +2166,12 @@
"ms": { "ms": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
"dev": true
}, },
"qs": { "qs": {
"version": "6.5.1", "version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
"dev": true
} }
} }
}, },
@ -2292,8 +2360,7 @@
"bytes": { "bytes": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
"dev": true
}, },
"cacache": { "cacache": {
"version": "10.0.4", "version": "10.0.4",
@ -2956,14 +3023,12 @@
"content-disposition": { "content-disposition": {
"version": "0.5.2", "version": "0.5.2",
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
"integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=", "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ="
"dev": true
}, },
"content-type": { "content-type": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
"dev": true
}, },
"convert-source-map": { "convert-source-map": {
"version": "1.6.0", "version": "1.6.0",
@ -2977,14 +3042,12 @@
"cookie": { "cookie": {
"version": "0.3.1", "version": "0.3.1",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz",
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s="
"dev": true
}, },
"cookie-signature": { "cookie-signature": {
"version": "1.0.6", "version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz",
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
"dev": true
}, },
"copy-concurrently": { "copy-concurrently": {
"version": "1.0.5", "version": "1.0.5",
@ -3081,6 +3144,11 @@
"parse-json": "4.0.0" "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": { "create-ecdh": {
"version": "4.0.3", "version": "4.0.3",
"resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
@ -3604,8 +3672,7 @@
"depd": { "depd": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
"dev": true
}, },
"des.js": { "des.js": {
"version": "1.0.0", "version": "1.0.0",
@ -3620,8 +3687,7 @@
"destroy": { "destroy": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
"dev": true
}, },
"detect-node": { "detect-node": {
"version": "2.0.4", "version": "2.0.4",
@ -3788,8 +3854,7 @@
"ee-first": { "ee-first": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
"dev": true
}, },
"ejs": { "ejs": {
"version": "2.6.1", "version": "2.6.1",
@ -3827,8 +3892,7 @@
"encodeurl": { "encodeurl": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
"dev": true
}, },
"end-of-stream": { "end-of-stream": {
"version": "1.4.1", "version": "1.4.1",
@ -3923,8 +3987,7 @@
"escape-html": { "escape-html": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
"dev": true
}, },
"escape-string-regexp": { "escape-string-regexp": {
"version": "1.0.5", "version": "1.0.5",
@ -3972,8 +4035,7 @@
"etag": { "etag": {
"version": "1.8.1", "version": "1.8.1",
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
"dev": true
}, },
"event-pubsub": { "event-pubsub": {
"version": "4.3.0", "version": "4.3.0",
@ -4049,7 +4111,6 @@
"version": "4.16.3", "version": "4.16.3",
"resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz", "resolved": "http://registry.npmjs.org/express/-/express-4.16.3.tgz",
"integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=", "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
"dev": true,
"requires": { "requires": {
"accepts": "1.3.5", "accepts": "1.3.5",
"array-flatten": "1.1.1", "array-flatten": "1.1.1",
@ -4087,7 +4148,6 @@
"version": "2.6.9", "version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": { "requires": {
"ms": "2.0.0" "ms": "2.0.0"
} }
@ -4095,20 +4155,48 @@
"ms": { "ms": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
"dev": true
}, },
"qs": { "qs": {
"version": "6.5.1", "version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==", "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A=="
"dev": true
}, },
"safe-buffer": { "safe-buffer": {
"version": "5.1.1", "version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
"dev": true }
}
},
"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", "version": "1.1.1",
"resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz",
"integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==",
"dev": true,
"requires": { "requires": {
"debug": "2.6.9", "debug": "2.6.9",
"encodeurl": "1.0.2", "encodeurl": "1.0.2",
@ -4581,7 +4668,6 @@
"version": "2.6.9", "version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": { "requires": {
"ms": "2.0.0" "ms": "2.0.0"
} }
@ -4589,8 +4675,7 @@
"ms": { "ms": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
"dev": true
} }
} }
}, },
@ -4699,8 +4784,7 @@
"forwarded": { "forwarded": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz",
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
"dev": true
}, },
"fragment-cache": { "fragment-cache": {
"version": "0.2.1", "version": "0.2.1",
@ -4714,8 +4798,7 @@
"fresh": { "fresh": {
"version": "0.5.2", "version": "0.5.2",
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
"dev": true
}, },
"friendly-errors-webpack-plugin": { "friendly-errors-webpack-plugin": {
"version": "1.7.0", "version": "1.7.0",
@ -5916,7 +5999,6 @@
"version": "1.6.3", "version": "1.6.3",
"resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
"integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
"dev": true,
"requires": { "requires": {
"depd": "1.1.2", "depd": "1.1.2",
"inherits": "2.0.3", "inherits": "2.0.3",
@ -6288,8 +6370,7 @@
"iconv-lite": { "iconv-lite": {
"version": "0.4.19", "version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ=="
"dev": true
}, },
"icss-replace-symbols": { "icss-replace-symbols": {
"version": "1.1.0", "version": "1.1.0",
@ -6513,8 +6594,7 @@
"ipaddr.js": { "ipaddr.js": {
"version": "1.8.0", "version": "1.8.0",
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz",
"integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=", "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4="
"dev": true
}, },
"is-absolute-url": { "is-absolute-url": {
"version": "2.1.0", "version": "2.1.0",
@ -7286,8 +7366,7 @@
"media-typer": { "media-typer": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
"dev": true
}, },
"mem": { "mem": {
"version": "4.0.0", "version": "4.0.0",
@ -7345,8 +7424,7 @@
"merge-descriptors": { "merge-descriptors": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz",
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
"dev": true
}, },
"merge-source-map": { "merge-source-map": {
"version": "1.1.0", "version": "1.1.0",
@ -7374,8 +7452,7 @@
"methods": { "methods": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz",
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
"dev": true
}, },
"micromatch": { "micromatch": {
"version": "2.3.11", "version": "2.3.11",
@ -7416,14 +7493,12 @@
"mime-db": { "mime-db": {
"version": "1.36.0", "version": "1.36.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.36.0.tgz",
"integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw==", "integrity": "sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw=="
"dev": true
}, },
"mime-types": { "mime-types": {
"version": "2.1.20", "version": "2.1.20",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.20.tgz",
"integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==", "integrity": "sha512-HrkrPaP9vGuWbLK1B1FfgAkbqNjIuy4eHlIYnFi7kamZyLLrGlo2mpcx0bBmNpKqBtYtAfGbodDddIgddSJC2A==",
"dev": true,
"requires": { "requires": {
"mime-db": "1.36.0" "mime-db": "1.36.0"
} }
@ -7669,8 +7744,7 @@
"negotiator": { "negotiator": {
"version": "0.6.1", "version": "0.6.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz",
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=", "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk="
"dev": true
}, },
"neo-async": { "neo-async": {
"version": "2.5.2", "version": "2.5.2",
@ -8135,7 +8209,6 @@
"version": "2.3.0", "version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
"dev": true,
"requires": { "requires": {
"ee-first": "1.1.1" "ee-first": "1.1.1"
} }
@ -8143,8 +8216,7 @@
"on-headers": { "on-headers": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.1.tgz",
"integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=", "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c="
"dev": true
}, },
"once": { "once": {
"version": "1.4.0", "version": "1.4.0",
@ -8353,8 +8425,7 @@
"parseurl": { "parseurl": {
"version": "1.3.2", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
"integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=", "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M="
"dev": true
}, },
"pascalcase": { "pascalcase": {
"version": "0.1.1", "version": "0.1.1",
@ -8407,8 +8478,7 @@
"path-to-regexp": { "path-to-regexp": {
"version": "0.1.7", "version": "0.1.7",
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
"dev": true
}, },
"path-type": { "path-type": {
"version": "3.0.0", "version": "3.0.0",
@ -9147,7 +9217,6 @@
"version": "2.0.4", "version": "2.0.4",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz",
"integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==",
"dev": true,
"requires": { "requires": {
"forwarded": "0.1.2", "forwarded": "0.1.2",
"ipaddr.js": "1.8.0" "ipaddr.js": "1.8.0"
@ -9241,6 +9310,11 @@
"integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==", "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
"dev": true "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": { "randomatic": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.0.tgz",
@ -9288,14 +9362,12 @@
"range-parser": { "range-parser": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz",
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=", "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4="
"dev": true
}, },
"raw-body": { "raw-body": {
"version": "2.3.2", "version": "2.3.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz",
"integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=",
"dev": true,
"requires": { "requires": {
"bytes": "3.0.0", "bytes": "3.0.0",
"http-errors": "1.6.2", "http-errors": "1.6.2",
@ -9306,14 +9378,12 @@
"depd": { "depd": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz",
"integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=", "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k="
"dev": true
}, },
"http-errors": { "http-errors": {
"version": "1.6.2", "version": "1.6.2",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz",
"integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=",
"dev": true,
"requires": { "requires": {
"depd": "1.1.1", "depd": "1.1.1",
"inherits": "2.0.3", "inherits": "2.0.3",
@ -9324,8 +9394,7 @@
"setprototypeof": { "setprototypeof": {
"version": "1.0.3", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz",
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=", "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ="
"dev": true
} }
} }
}, },
@ -10339,7 +10408,6 @@
"version": "0.16.2", "version": "0.16.2",
"resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz",
"integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==",
"dev": true,
"requires": { "requires": {
"debug": "2.6.9", "debug": "2.6.9",
"depd": "1.1.2", "depd": "1.1.2",
@ -10360,7 +10428,6 @@
"version": "2.6.9", "version": "2.6.9",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
"dev": true,
"requires": { "requires": {
"ms": "2.0.0" "ms": "2.0.0"
} }
@ -10368,14 +10435,12 @@
"mime": { "mime": {
"version": "1.4.1", "version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ=="
"dev": true
}, },
"ms": { "ms": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
"dev": true
} }
} }
}, },
@ -10421,7 +10486,6 @@
"version": "1.13.2", "version": "1.13.2",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz",
"integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==",
"dev": true,
"requires": { "requires": {
"encodeurl": "1.0.2", "encodeurl": "1.0.2",
"escape-html": "1.0.3", "escape-html": "1.0.3",
@ -10467,8 +10531,7 @@
"setprototypeof": { "setprototypeof": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ=="
"dev": true
}, },
"sha.js": { "sha.js": {
"version": "2.4.11", "version": "2.4.11",
@ -10936,8 +10999,7 @@
"statuses": { "statuses": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz",
"integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew=="
"dev": true
}, },
"stdout-stream": { "stdout-stream": {
"version": "1.4.1", "version": "1.4.1",
@ -11345,7 +11407,6 @@
"version": "1.6.16", "version": "1.6.16",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz",
"integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==",
"dev": true,
"requires": { "requires": {
"media-typer": "0.3.0", "media-typer": "0.3.0",
"mime-types": "2.1.20" "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": { "unicode-canonical-property-names-ecmascript": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
@ -11517,8 +11586,7 @@
"unpipe": { "unpipe": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
"dev": true
}, },
"unquote": { "unquote": {
"version": "1.1.1", "version": "1.1.1",
@ -11714,8 +11782,7 @@
"utils-merge": { "utils-merge": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
"dev": true
}, },
"uuid": { "uuid": {
"version": "3.3.2", "version": "3.3.2",
@ -11736,8 +11803,7 @@
"vary": { "vary": {
"version": "1.1.2", "version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
"dev": true
}, },
"vendors": { "vendors": {
"version": "1.0.2", "version": "1.0.2",

View File

@ -3,11 +3,16 @@
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {
"backend": "node Backend/start.js", "serve": "vue-cli-service serve --port 8081",
"serve": "vue-cli-service serve", "build": "vue-cli-service build",
"build": "vue-cli-service build" "start": "node app.js"
}, },
"dependencies": { "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", "google-auth-library": "^2.0.0",
"mysql": "^2.16.0", "mysql": "^2.16.0",
"vue": "^2.5.17", "vue": "^2.5.17",

BIN
public/img/usuario.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

View File

@ -5,6 +5,25 @@
</template> </template>
<script> <script>
import conexion from './variables'
export default {
name: 'App',
// Revisa si existe una variable de sesion con el usuario
created: function () {
const xhr = new XMLHttpRequest();
xhr.open("POST",`${conexion}/sesion`);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.onload = () => {
const data = JSON.parse(xhr.responseText);
if (data["logged"]) {
window.usuarioActual.pop();
window.usuarioActual.push(data);
}
};
xhr.send();
}
}
</script> </script>
<style> <style>

View File

@ -0,0 +1,15 @@
<template>
<div>
Mirame we, soy un empleado :3
</div>
</template>
<script>
export default {
name: "Empleados"
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,53 @@
<template>
<div class="usuarios">
<div class="usuarios--titulos">
Usuarios <br>
</div>
<usuario v-for="user in usuarios" :key="user['USER_ID']"
:nombre="user['nombre']"
:rol="user['ROL']"
:googleId="user['GOOGLE_ID']"
:userId="user['USER_ID']"
/>
</div>
</template>
<script>
// const conexion = require('../../variables').conexion;
import conexion from '../../variables';
export default {
name: "Usuarios",
components: {
'usuario': () => import('./Usuarios/Usuario')
},
data: function () {
return {
usuarios: []
}
},
created: function () {
let vm = this;
let xhr = new XMLHttpRequest();
xhr.onload = () => {
console.log("Ya cargué we v':\n" + xhr.responseText);
vm.usuarios = JSON.parse(xhr.responseText);
};
xhr.open("POST",`${conexion}/usuarios`);
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.send();
}
}
</script>
<style scoped lang="sass">
.usuarios
margin: 20px 0
.usuarios--titulos
text-align: center
font:
size: x-large
</style>

View File

@ -0,0 +1,27 @@
<template>
<div class="usuario hoverable">
Nombre: {{ nombre }}<br>
rol: {{ rol }}<br>
ID de Google: {{ googleId }}<br>
ID de usuario: {{ (99999999999 - userId).toString(16).toUpperCase() }} ({{ userId }})
</div>
</template>
<script>
export default {
name: "Usuario",
props: {
nombre: String,
rol: String,
googleId: String,
userId: Number
}
}
</script>
<style scoped lang="sass">
.usuario
margin: 10px
padding: 10px
border-radius: 3px
</style>

View File

@ -20,7 +20,8 @@
<br/> <br/>
</div> </div>
<div v-else class="inicio--usuario-registrado"> <div v-else class="inicio--usuario-registrado">
Bienvenido, {{ nombreDeUsuario }} Bienvenido, {{ nombreDeUsuario }}<br/>
<router-link v-if="esAdmin" to="/a/" class="inicio--usuario-registrado--link">Ir a la zona administrativa.</router-link>
<br> <br>
<br> <br>
</div> </div>
@ -30,16 +31,27 @@
<script> <script>
export default { export default {
name: 'HeaderMin', name: 'HeaderMin',
data: function () {
return {
usuario: window.usuarioActual
}
},
computed: { computed: {
musuarioNoLogeado: function () { musuarioNoLogeado: function () {
return !window.usuarioActual[0].logged; return !this.usuario[0].logged;
}, },
nombreDeUsuario: function () { nombreDeUsuario: function () {
return window.usuarioActual[0].nombre; return this.usuario[0].nombre;
},
esAdmin: function () {
return this.usuario[0].ROL === "admin"
} }
} }
} }
</script> </script>
<style> <style scoped lang="sass">
.inicio--usuario-registrado--link
color: white
text-decoration: underline
</style> </style>

View File

@ -3,8 +3,10 @@
<ul class="linksNavBar"> <ul class="linksNavBar">
<li><router-link to="/">Inicio</router-link></li> <li><router-link to="/">Inicio</router-link></li>
<li><router-link to="/platos/">Platos</router-link></li> <li><router-link to="/platos/">Platos</router-link></li>
<li>|</li>
<li><router-link to="/mi-cuenta/">Mi cuenta</router-link></li> <li><router-link to="/mi-cuenta/">Mi cuenta</router-link></li>
<li><router-link to="/carrito/">Carrito</router-link></li> <li><router-link to="/carrito/">Mi carrito</router-link></li>
<li><router-link to="/mi-pedido/">Mis pedidos</router-link></li>
</ul> </ul>
</nav> </nav>
</template> </template>

View File

@ -35,6 +35,20 @@ export default new Router({
path: '/mi-cuenta/', path: '/mi-cuenta/',
name: 'MiCuenta', name: 'MiCuenta',
component: () => import('./views/MiCuenta') component: () => import('./views/MiCuenta')
},
{
path: '/mi-pedido/',
name: 'MiPedido',
component: () => import('./views/MiPedido')
},
{
path: '/a/',
name: 'Administracion',
component: () => import('./views/Administracion/Inicio'),
children: [
{ path: 'usuarios', component: () => import('./components/Admin/Usuarios') },
{ path: 'empleados', component: () => import('./components/Admin/Empleados') }
]
} }
] ]
}) })

8
src/variables.ts Normal file
View File

@ -0,0 +1,8 @@
const conexion_backend = "http://localhost:8080";
const conexion_gcloud = "";
/* De este estilo porque por alguna razon a babel no le agrado module.exports en este archivo. */
export default conexion_backend;
// module.exports.conexion = conexion_backend;

View File

@ -1,13 +1,64 @@
<template> <template>
<div style="background-color: #f5f5f5">
<header-mini />
<div class="container caja inicio">
<div class="inicio--titulo">
Administración de recursos
</div>
<div class="inicio--desc">
Selecciona un campo para empezar: <br>
<router-link to="/a/usuarios" class="inicio--desc--boton hoverable">Usuarios</router-link>
<router-link to="/a/empleados" class="inicio--desc--boton hoverable">Empleados</router-link>
</div>
<hr>
<router-view />
</div>
</div>
</template> </template>
<script> <script>
import Header from '../../components/headerMini'
import Usuarios from '../../components/Admin/Usuarios'
import Empleados from '../../components/Admin/Empleados'
export default { export default {
name: "Inicio" name: "Inicio",
data: function () {
return {
componenteAct: 'header-mini'
}
},
components: {
'header-mini': Header,
'usuarios-comp': Usuarios,
'empleados-comp': Empleados
}
} }
</script> </script>
<style scoped lang="sass"> <style scoped lang="sass">
.inicio
background-color: white
.inicio--titulo
text-align: center
font:
family: Muli, "Open Sans", sans-serif
weight: bold
size: x-large
.inicio--desc
text-align: center
font:
family: Muli, "Open Sans", sans-serif
size: large
.inicio--desc--boton
display: inline-block
margin: 10px 20px
background-color: #4444aa
color: white
padding: 10px
border-radius: 3px
</style> </style>

View File

@ -22,9 +22,11 @@
Inicia sesión con tu email: <br> Inicia sesión con tu email: <br>
<br> <br>
<div class="center"> <div class="center">
<form name="form-inicio-sesion" class="login--form" v-on:submit.prevent="iniciarSesion('form-inicio-sesion')"> <form name="form-inicio-sesion" class="login--form"
v-on:submit.prevent="iniciarSesion('form-inicio-sesion')">
<label class="login--form--label">Email:</label> <label class="login--form--label">Email:</label>
<input class="login--form--input" type="email" placeholder="Tu email" name="email" required><br> <input class="login--form--input" type="email" placeholder="Tu email" name="email"
required><br>
<br> <br>
<label class="login--form--label">Contraseña</label> <label class="login--form--label">Contraseña</label>
<input class="login--form--input" type="password" placeholder="Contraseña" required><br> <input class="login--form--input" type="password" placeholder="Contraseña" required><br>
@ -39,15 +41,19 @@
Regístrate con tu email: <br> Regístrate con tu email: <br>
<br> <br>
<div class="center"> <div class="center">
<form name="form-registro" action="" class="login--form" v-on:submit.prevent="registrar('form-registro')"> <form name="form-registro" class="login--form"
v-on:submit.prevent="registrar('form-registro')">
<label class="login--form--label">Nombre</label> <label class="login--form--label">Nombre</label>
<input class="login--form--input" type="text" placeholder="Tu nombre" name="nombre" required><br> <input class="login--form--input" type="text" placeholder="Tu nombre" name="nombre"
required><br>
<br> <br>
<label class="login--form--label">Email:</label> <label class="login--form--label">Email:</label>
<input class="login--form--input" type="email" placeholder="Tu email" name="email" required><br> <input class="login--form--input" type="email" placeholder="Tu email" name="email"
required><br>
<br> <br>
<label class="login--form--label">Contraseña</label> <label class="login--form--label">Contraseña</label>
<input class="login--form--input" type="password" placeholder="Contraseña" name="pass" required><br> <input class="login--form--input" type="password" placeholder="Contraseña" name="pass"
required><br>
<br> <br>
<button class="btn waves-effect waves-light" type="submit" name="action">Regístrame <button class="btn waves-effect waves-light" type="submit" name="action">Regístrame
</button> </button>
@ -57,7 +63,58 @@
</div> </div>
<br> <br>
</div> </div>
<div id="pantalla-carga" pantalla-activa="false">
Trabajando... <br>
<div class="preloader-wrapper active center" id="esfera-carga">
<div class="spinner-layer spinner-blue">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
<div class="spinner-layer spinner-red">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
<div class="spinner-layer spinner-yellow">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
<div class="spinner-layer spinner-green">
<div class="circle-clipper left">
<div class="circle"></div>
</div>
<div class="gap-patch">
<div class="circle"></div>
</div>
<div class="circle-clipper right">
<div class="circle"></div>
</div>
</div>
</div>
</div>
<br> <br>
</header> </header>
</div> </div>
@ -66,20 +123,31 @@
<script> <script>
import MiFooter from '@/components/mi-footer.vue' import MiFooter from '@/components/mi-footer.vue'
/* Cambiado porque a Babel no le gusto es sistema con module.exports/require */
// const conex_backend = require('../variables.js').conexion;
import conex_backend from '../variables';
const procesarUsuario = data => { const procesarUsuario = data => {
try {
const obj = JSON.parse(data); const obj = JSON.parse(data);
obj["logged"] = true; obj["logged"] = true;
console.log(JSON.stringify(obj)); console.log(JSON.stringify(obj));
window.usuarioActual.pop(); window.usuarioActual.pop();
window.usuarioActual.push(obj); window.usuarioActual.push(obj);
window.elRouter.push('/platos/'); window.elRouter.push('/platos/');
} catch (e) {
cambiarPantallaCarga();
}
}; };
function onSuccess(googleUser) { function onSuccess(googleUser) {
cambiarPantallaCarga();
let id_token = googleUser.getAuthResponse().id_token; let id_token = googleUser.getAuthResponse().id_token;
let xhr = new XMLHttpRequest(); let xhr = new XMLHttpRequest();
xhr.open('POST', 'http://localhost:3000/log-inG'); console.log(`Conexion backend es ${conex_backend}`);
xhr.open('POST', `${conex_backend}/log-inG`);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onload = function () { xhr.onload = function () {
console.log('Sesión iniciada. Servidor:\n' + xhr.responseText); console.log('Sesión iniciada. Servidor:\n' + xhr.responseText);
@ -87,9 +155,11 @@
}; };
xhr.send('idtoken=' + id_token); xhr.send('idtoken=' + id_token);
} }
function onFailure(error) { function onFailure(error) {
console.log(error); console.log(error);
} }
function renderButton() { function renderButton() {
gapi.signin2.render('my-signin2', { gapi.signin2.render('my-signin2', {
'scope': 'profile email', 'scope': 'profile email',
@ -102,6 +172,46 @@
}); });
} }
const crearUsuario = data =>
new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
xhr.open("POST", `${conex_backend}/registro`);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.onload = () => {
const resultado = JSON.parse(xhr.responseText);
if (!resultado["existe"] && resultado["creado"]) {
resolve(JSON.stringify(resultado["data"]));
} else {
reject();
}
};
xhr.send(`nombre=${data['nombreUsuario']}&email=${data['emailUsuario']}&pass=${data['passUsuario']}`);
});
const cambiarPantallaCarga = () => {
const elem = document.getElementById("pantalla-carga");
const pantallaActiva = elem.getAttribute("pantalla-activa") === "true";
// La pantalla de carga es visible y hay que ocultarla
if (pantallaActiva) {
elem.setAttribute("pantalla-activa", "false");
elem.style.opacity = "0";
setTimeout(() => {
elem.style.display = "none";
}, 250);
} else {
// Aqui activamos la pantalla
elem.setAttribute("pantalla-activa", "true");
elem.style.display = "inline-table";
setTimeout(() => {
elem.style.opacity = "0.7";
}, 10);
}
};
/* Inserta el script para el inicio de sesion de gugel */
(() => { (() => {
let scr = document.createElement("script"); let scr = document.createElement("script");
scr.src = "https://apis.google.com/js/platform.js"; scr.src = "https://apis.google.com/js/platform.js";
@ -117,14 +227,18 @@
}, },
methods: { methods: {
registrar: function (nombre) { registrar: function (nombre) {
cambiarPantallaCarga();
const nombreUsuario = document.forms[nombre]['nombre'].value; const nombreUsuario = document.forms[nombre]['nombre'].value;
const emailUsuario = document.forms[nombre]['email'].value; const emailUsuario = document.forms[nombre]['email'].value;
/* const passUsuario = document.forms[nombre]['pass'].value */ const passUsuario = document.forms[nombre]['pass'].value;
window.usuarioActual[0].nombre = nombreUsuario;
window.usuarioActual[0].email = emailUsuario; crearUsuario({nombreUsuario, emailUsuario, passUsuario})
window.usuarioActual[0].logged = true; .then(respuesta => procesarUsuario(respuesta))
.catch(() => {
alert("Ya existe un usuario con este email");
});
window.elRouter.push("/");
}, },
iniciarSesion: function (nombre) { iniciarSesion: function (nombre) {
const emailUsuario = document.forms[nombre]['email'].value; const emailUsuario = document.forms[nombre]['email'].value;
@ -145,7 +259,6 @@
#my-signin2 #my-signin2
display: inline-block display: inline-block
#bordeIzq #bordeIzq
border-left: solid 1px white border-left: solid 1px white
@ -181,4 +294,32 @@
.login--form--label .login--form--label
color: white color: white
#pantalla-carga
background-color: black
opacity: 0
z-index: 2
position: fixed
top: 0
width: 100%
height: 100%
transition: opacity 250ms
display: none
text-align: center
padding-top: 20%
color: white
#esfera-carga
text-align: center
width: 100px
height: 100px
@media only screen and (max-width: 800px)
#pantalla-carga
padding-top: 40%
@media only screen and (max-width: 450px)
#pantalla-carga
padding-top: 70%
.lol
</style> </style>

77
src/views/MiPedido.vue Normal file
View File

@ -0,0 +1,77 @@
<template>
<div>
<header-mini />
<login-bar v-if="usuarioNoLogeado" />
<nav-bar />
<div class="container fondoBlanco pedidos">
<h2 class="pedidos__titulo">Mis pedidos</h2>
<br>
<br>
<div v-if="usuarioNoLogeado" class="pedidos__usuario-no-logeado">
¡Ups! Parece que no iniciaste sesión.<br>
Inicia sesión y controla fácilmente tus pedidos y entregas a domicilio. <br>
<br>
<div id="contenedorInicio-Registro" class="center mySeccion" data-collapsed="false">
<router-link to="/iniciar-sesion/" id="botonRegistro" class="boton">
Registrarse
</router-link>
<router-link to="/iniciar-sesion/" id="botonInicioSesion" class="boton">
Iniciar Sesion
</router-link>
<br/>
<br/>
<br/>
</div>
</div>
<div v-else>
We v:
</div>
</div>
<mi-footer />
</div>
</template>
<script>
import HeaderMini from '../components/headerMini'
import NavBar from '../components/navBar'
import LoginBar from '../components/navBarInicioSesion'
import MiFooter from '../components/mi-footer'
export default {
name: "MiPedido",
data: function () {
return {
usuario: window.usuarioActual[0]
}
},
components: {
'header-mini': HeaderMini,
'nav-bar': NavBar,
'login-bar': LoginBar,
'mi-footer': MiFooter
},
computed: {
usuarioNoLogeado: function () {
return !this.usuario.logged;
}
}
}
</script>
<style scoped lang="sass">
.pedidos__titulo
text-align: center
font:
size: xx-large
weight: bold
family: Muli, "Open Sans", sans-serif
margin: 10px 0
.pedidos__usuario-no-logeado
font-size: x-large
text-align: center
.pedidos
</style>

View File

@ -4,7 +4,7 @@
<nav-bar-inicio-sesion /> <nav-bar-inicio-sesion />
<nav-bar /> <nav-bar />
<section id="sectionCarrito" class="container mySeccion"> <section id="sectionCarrito" class="container mySeccion fondoBlanco">
<div class="center"> <div class="center">
<div id="carrito--tituloprincipal"> <div id="carrito--tituloprincipal">
Carrito de compras Carrito de compras