Skip to content

Commit

Permalink
Fin Seccion 17-Ajustes login y Guards
Browse files Browse the repository at this point in the history
  • Loading branch information
estudiobarragan committed Oct 22, 2019
1 parent dbe7bc7 commit 782311b
Show file tree
Hide file tree
Showing 6 changed files with 80 additions and 8 deletions.
41 changes: 41 additions & 0 deletions middlewares/autenticacion.js
Original file line number Diff line number Diff line change
Expand Up @@ -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." }
});
}
}
7 changes: 4 additions & 3 deletions routes/busqueda.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ var Hospital = require('../models/hospital');
var Medico = require('../models/medico');
var Usuario = require('../models/usuario');


/*
Busqueda por coleccion
*/
Expand Down Expand Up @@ -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);
Expand All @@ -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) {
Expand All @@ -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) {
Expand Down
36 changes: 33 additions & 3 deletions routes/login.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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)
});
}
}
Expand Down Expand Up @@ -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;
4 changes: 2 additions & 2 deletions routes/usuario.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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) => {
Expand Down
Binary file added uploads/medicos/5daa697eb7118c21902696db-520.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added uploads/medicos/5dae5016f4274b12a4aa2731-715.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 782311b

Please sign in to comment.