diff --git a/middlewares/autenticacion.js b/middlewares/autenticacion.js index 85df592..06d626a 100644 --- a/middlewares/autenticacion.js +++ b/middlewares/autenticacion.js @@ -25,4 +25,45 @@ exports.verificaToken = function(req, res, next) { req.usuario = decoded.usuario; next(); }); +} + +/* + + Verificar ADMIN + +*/ +exports.verificaADMIN_ROLE = function(req, res, next) { + var usuario = req.usuario; + + if (usuario.role === 'ADMIN_ROLE') { + next(); + return; + } else { + return res.status(401).send({ + ok: false, + mensaje: 'Token incorrecto - AR', + error: { message: "Avise al administrador." } + }); + } +} + +/* + + Verificar ADMIN o Mismo Usuario + +*/ +exports.verificaAdminSef = function(req, res, next) { + var usuario = req.usuario; + var id = req.params.id; + + if (usuario.role === 'ADMIN_ROLE' || usuario._id === id) { + next(); + return; + } else { + return res.status(401).send({ + ok: false, + mensaje: 'Token incorrecto - AR-Self', + error: { message: "Avise al administrador." } + }); + } } \ No newline at end of file diff --git a/routes/busqueda.js b/routes/busqueda.js index 4482441..12847d9 100644 --- a/routes/busqueda.js +++ b/routes/busqueda.js @@ -6,6 +6,7 @@ var Hospital = require('../models/hospital'); var Medico = require('../models/medico'); var Usuario = require('../models/usuario'); + /* Busqueda por coleccion */ @@ -69,7 +70,7 @@ app.get('/todo/:busqueda', (req, res, next) => { function buscarHospitales(busqueda, regex) { return new Promise((resolve, reject) => { Hospital.find({ nombre: regex }) - .populate('usuario', 'nombre email') + .populate('usuario', 'nombre correo img') .exec((err, hospitales) => { if (err) { reject('Error al buscar hospitales: ', err); @@ -83,7 +84,7 @@ function buscarHospitales(busqueda, regex) { function buscarMedicos(busqueda, regex) { return new Promise((resolve, reject) => { Medico.find({ nombre: regex }) - .populate('usuario', 'nombre email') + .populate('usuario', 'nombre correo img') .populate('hospital') .exec((err, medicos) => { if (err) { @@ -97,7 +98,7 @@ function buscarMedicos(busqueda, regex) { function buscarUsuarios(busqueda, regex) { return new Promise((resolve, reject) => { - Usuario.find({}, 'nombre correo rol') + Usuario.find({}, 'nombre correo rol img') .or([{ 'nombre': regex }, { 'correo': regex }]) .exec((err, usuarios) => { if (err) { diff --git a/routes/login.js b/routes/login.js index b938a63..8fd1a66 100644 --- a/routes/login.js +++ b/routes/login.js @@ -69,7 +69,8 @@ app.post('/google', (req, res) => { ok: true, message: 'Usuario google, dado de alta en la DB', usuario: usuarioDB, - token + token, + menu: obtenerMenu(usuarioDB.role) }); }); } else { @@ -91,7 +92,8 @@ app.post('/google', (req, res) => { ok: true, message: 'Usuario google autorizado su ingreso.', usuario: usuario, - token + token, + menu: obtenerMenu(usuario.role) }); } } @@ -149,11 +151,39 @@ app.post('/', (req, res) => { ok: true, usuario: usuarioDB, token, - id: usuarioDB.id + id: usuarioDB.id, + menu: obtenerMenu(usuarioDB.role) }); }) }); +function obtenerMenu(role) { + var menu = [{ + titulo: 'Principal', + icono: 'mdi mdi-gauge', + submenu: [ + { titulo: 'Dashboard', url: '/dashboard' }, + { titulo: 'ProgressBar', url: '/progress' }, + { titulo: 'Gráficas', url: '/graficas1' }, + { titulo: 'Promesas', url: '/promesas' }, + { titulo: 'Rxjs', url: '/rxjs' } + ] + }, + { + titulo: 'Mantenimiento', + icono: 'mdi mdi-folder-lock-open', + submenu: [ + // { titulo: 'Usuarios', url: '/usuarios' }, + { titulo: 'Hospitales', url: '/hospitales' }, + { titulo: 'Medicos', url: '/medicos' } + ] + } + ]; + if (role === 'ADMIN_ROLE') { + menu[1].submenu.unshift({ titulo: 'Usuarios', url: '/usuarios' }); + } + return menu; +} module.exports = app; \ No newline at end of file diff --git a/routes/usuario.js b/routes/usuario.js index ad29479..a399d4f 100644 --- a/routes/usuario.js +++ b/routes/usuario.js @@ -54,7 +54,7 @@ app.get('/', (req, res, next) => { Actualizar un usuario */ -app.put('/:id', mdAutenticacion.verificaToken, (req, res) => { +app.put('/:id', [mdAutenticacion.verificaToken, mdAutenticacion.verificaAdminSef], (req, res) => { var id = req.params.id; var body = req.body; @@ -142,7 +142,7 @@ app.post('/', (req, res) => { Borrar un usuario */ -app.delete('/:id', mdAutenticacion.verificaToken, (req, res) => { +app.delete('/:id', [mdAutenticacion.verificaToken, mdAutenticacion.verificaADMIN_ROLE], (req, res) => { var id = req.params.id; Usuario.findByIdAndDelete(id, (err, usuarioBorrado) => { diff --git a/uploads/medicos/5daa697eb7118c21902696db-520.jpg b/uploads/medicos/5daa697eb7118c21902696db-520.jpg new file mode 100644 index 0000000..c4a87ab Binary files /dev/null and b/uploads/medicos/5daa697eb7118c21902696db-520.jpg differ diff --git a/uploads/medicos/5dae5016f4274b12a4aa2731-715.gif b/uploads/medicos/5dae5016f4274b12a4aa2731-715.gif new file mode 100644 index 0000000..ecda9bf Binary files /dev/null and b/uploads/medicos/5dae5016f4274b12a4aa2731-715.gif differ