diff --git a/server/controller/Inivtado/invitados.js b/server/controller/Inivtado/invitados.js new file mode 100644 index 0000000..94ffe1b --- /dev/null +++ b/server/controller/Inivtado/invitados.js @@ -0,0 +1,5 @@ +const Invitado = require('../../db/tablas/Invitado'); + +const get = () => Invitado.findAll(); + +module.exports = get; \ No newline at end of file diff --git a/server/controller/Profesor/cargarDatos.js b/server/controller/Profesor/cargarDatos.js new file mode 100644 index 0000000..e69de29 diff --git a/server/controller/Profesor/infoInvitados.js b/server/controller/Profesor/infoInvitados.js new file mode 100644 index 0000000..e69de29 diff --git a/server/controller/Profesor/login.js b/server/controller/Profesor/login.js new file mode 100644 index 0000000..1278867 --- /dev/null +++ b/server/controller/Profesor/login.js @@ -0,0 +1,29 @@ +const Profesor = require('../../db/tablas/Profesor'); +const validar = require('../../helper/validar'); +const { crearToken } = require('../../middleware/autentificacion'); + +const login = async (body) => { + const numeroTrabajador = validar.validacionBasicaStr( + body.numeroTrabajador, + 'numero de trabajador', + true + ); + const adscripcion = validar.validacionBasicaStr( + body.adscripcion, + 'adscripcion', + false, + 150 + ); + + return Profesor.findOne({ + where: { numeroTrabajador, adscripcion }, + }).then((res) => { + if (!res) throw new Error('No existe este profesor en la base de datos.'); + return { + Profesor: res, + token: crearToken(res.idProfesor), + }; + }); +}; + +module.exports = login; diff --git a/server/controller/Usuario/entradaInvitado.js b/server/controller/Usuario/entradaInvitado.js new file mode 100644 index 0000000..aedefc0 --- /dev/null +++ b/server/controller/Usuario/entradaInvitado.js @@ -0,0 +1,5 @@ +// const Invitado = require('../../db/tablas/Invitado'); + +// const get = () => Invitado.findAll(); + +// module.exports = get; \ No newline at end of file diff --git a/server/controller/Usuario/loginAdmin.js b/server/controller/Usuario/loginAdmin.js new file mode 100644 index 0000000..bbcf0c5 --- /dev/null +++ b/server/controller/Usuario/loginAdmin.js @@ -0,0 +1,38 @@ +const Usuario = require('../../db/tablas/Usuario'); +const TipoUsuario = require('../../db/tablas/TipoUsuario'); +const validar = require('../../helper/validar'); +const { crearToken } = require('../../middleware/autentificacion'); +const { comparar } = require('../../helper/encriptar'); + +const login = async (body) => { + const usuario = validar.validacionBasicaStr( + body.usuario, + 'usuario', + true, + 30 + ); + const password = validar.validarAlfanumerico( + body.password, + 'contraseña', + false, + 30 + ); + + return Usuario.findOne({ + where: { usuario }, + include: [{ model: TipoUsuario }], + }).then((res) => { + if (!res) throw new Error('No existe este usuario.'); + if (res.idTipoUsuario !== 1) throw new Error('Este usuario no es de tipo admin.'); + if (comparar(password, res.password)) { + delete res.dataValues.password; + return { + Usuario: res, + token: crearToken(res.idUsuario), + }; + } + throw new Error('La contraseña es incorrecta'); + }); +}; + +module.exports = login; diff --git a/server/controller/Usuario/loginOperador.js b/server/controller/Usuario/loginOperador.js new file mode 100644 index 0000000..3bd1358 --- /dev/null +++ b/server/controller/Usuario/loginOperador.js @@ -0,0 +1,39 @@ +const Usuario = require('../../db/tablas/Usuario'); +const TipoUsuario = require('../../db/tablas/TipoUsuario'); +const validar = require('../../helper/validar'); +const { crearToken } = require('../../middleware/autentificacion'); +const { comparar } = require('../../helper/encriptar'); + +const login = async (body) => { + const usuario = validar.validacionBasicaStr( + body.usuario, + 'usuario', + true, + 30 + ); + const password = validar.validarAlfanumerico( + body.password, + 'contraseña', + false, + 30 + ); + + return Usuario.findOne({ + where: { usuario }, + include: [{ model: TipoUsuario }], + }).then((res) => { + if (!res) throw new Error('No existe este usuario.'); + if (res.idTipoUsuario !== 2) + throw new Error('Este usuario no es de tipo operador.'); + if (comparar(password, res.password)) { + delete res.dataValues.password; + return { + Usuario: res, + token: crearToken(res.idUsuario), + }; + } + throw new Error('La contraseña es incorrecta'); + }); +}; + +module.exports = login; diff --git a/server/db/data-fake.js b/server/db/data-fake.js index 6c8d246..95a3c52 100644 --- a/server/db/data-fake.js +++ b/server/db/data-fake.js @@ -1,4 +1,5 @@ const Usuario = require('./tablas/Usuario'); +const Profesor = require('./tablas/Profesor'); const { encriptar } = require('../helper/encriptar'); const dataUsuarios = async () => { @@ -10,14 +11,31 @@ const dataUsuarios = async () => { usuario: usuario[i], nombre: nombre[i], password: encriptar('holi'), - idTipoUsuario: 2, + idTipoUsuario: i+1, }); console.log(`Se insertó el usuario ${usuario[i]}.`.magenta); } }; +const dataProfesores = async () => { + let usuario = ['4163132', '123456778', '1234567890']; + let adscripcion = ['Adscripcion 1', 'Adscripcion 2', 'Adscripcion 3']; + let correo = ['correo 1', 'correo 2', 'correo 3']; + + for (let i = 0; i < usuario.length; i++) { + await Profesor.create({ + numeroTrabajador: usuario[i], + adscripcion: adscripcion[i], + correo: correo[i], + numeroInvitados: i+1, + }); + console.log(`Se insertó el profesor ${usuario[i]}.`.magenta); + } +}; + const exec = async () => { await dataUsuarios(); + await dataProfesores(); console.log( '\nSe ha instalado exitosamente la información falsa en la base de datos.\n' .underline.bold.green diff --git a/server/routes/Profesor.js b/server/routes/Profesor.js new file mode 100644 index 0000000..13c0f39 --- /dev/null +++ b/server/routes/Profesor.js @@ -0,0 +1,38 @@ +const express = require('express'); +const app = express(); +// const { verificaToken } = require('../middleware/autentificacion'); +const route = '/profesor'; +const controllerPath = '../controller/Profesor'; +const login = require(`${controllerPath}/login`); + +app.post(`${route}/login`, (req, res) => { + return login(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +// app.post(`${route}/loginOperador`, (req, res) => { +// return loginOperador(req.body) +// .then((data) => { +// res.status(200).json(data); +// }) +// .catch((err) => { +// res.status(400).json({ message: err.message }); +// }); +// }); + +// app.post(`${route}/entradaInvitado`, (req, res) => { +// return entradaInvitado(req.body) +// .then((data) => { +// res.status(200).json(data); +// }) +// .catch((err) => { +// res.status(400).json({ message: err.message }); +// }); +// }); + +module.exports = app; diff --git a/server/routes/Usuario .js b/server/routes/Usuario .js deleted file mode 100644 index 6789afe..0000000 --- a/server/routes/Usuario .js +++ /dev/null @@ -1,18 +0,0 @@ -const express = require('express'); -const app = express(); -const { verificaToken } = require('../middleware/autentificacion'); -const route = '/usuario'; -// const controllerPath = '../controller/Usuario'; -// const login = require(`${controllerPath}/login`); - -// app.post(`${route}/login`, (req, res) => { -// return login(req.body) -// .then((data) => { -// res.status(200).json(data); -// }) -// .catch((err) => { -// res.status(400).json({ message: err.message }); -// }); -// }); - -module.exports = app; diff --git a/server/routes/Usuario.js b/server/routes/Usuario.js new file mode 100644 index 0000000..ad2dfa1 --- /dev/null +++ b/server/routes/Usuario.js @@ -0,0 +1,40 @@ +const express = require('express'); +const app = express(); +// const { verificaToken } = require('../middleware/autentificacion'); +const route = '/usuario'; +const controllerPath = '../controller/Usuario'; +const loginAdmin = require(`${controllerPath}/loginAdmin`); +const loginOperador = require(`${controllerPath}/loginOperador`); +const entradaInvitado = require(`${controllerPath}/entradaInvitado`); + +app.post(`${route}/loginAdmin`, (req, res) => { + return loginAdmin(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.post(`${route}/loginOperador`, (req, res) => { + return loginOperador(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +app.post(`${route}/entradaInvitado`, (req, res) => { + return entradaInvitado(req.body) + .then((data) => { + res.status(200).json(data); + }) + .catch((err) => { + res.status(400).json({ message: err.message }); + }); +}); + +module.exports = app; diff --git a/server/routes/index.js b/server/routes/index.js index 435f92b..d497678 100644 --- a/server/routes/index.js +++ b/server/routes/index.js @@ -1,6 +1,7 @@ const express = require("express"); const app = express(); -// app.use(require("./")); +app.use(require("./Usuario")); +app.use(require("./Profesor")); module.exports = app;