127 lines
3.8 KiB
JavaScript
127 lines
3.8 KiB
JavaScript
|
'use strict'
|
||
|
var Usuario = require('../models/usuario.js');
|
||
|
const bcrypt = require('bcrypt-nodejs');
|
||
|
const service = require('../services/index')
|
||
|
|
||
|
function list_usuarios(req, res) {
|
||
|
Usuario.find({}, (err, usuario) => {
|
||
|
if (err) {
|
||
|
return res.status(500).send({ message: 'Error: Could not get usuarios!' });
|
||
|
}
|
||
|
res.status(200).send({ usuario });
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function show_usuario(req, res) {
|
||
|
let usuario_to_find = { 'mail': req.params.mail };
|
||
|
Usuario.find(usuario_to_find, (err, usuario) => {
|
||
|
if (err) {
|
||
|
return res.status(500).send({ message: 'Error: Could not get usuario!' });
|
||
|
}
|
||
|
res.status(200).send({ usuario });
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function new_usuario(req, res) {
|
||
|
try {
|
||
|
let usuario = new Usuario();
|
||
|
usuario.nombre = req.body.nombre;
|
||
|
usuario.mail = req.body.mail;
|
||
|
usuario.pass = req.body.pass;
|
||
|
usuario.activo = req.body.activo;
|
||
|
usuario.save((err, usuarioSave) => {
|
||
|
if (err) {
|
||
|
return res.status(400).send({ message: `Error: Could not save usuario to database!> ${err}` });
|
||
|
}
|
||
|
res.status(200).send({ usuario: usuarioSave });
|
||
|
});
|
||
|
}
|
||
|
catch (error) {
|
||
|
res.status(500).send({ message: `error: ` + error });
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function modify_usuario(req, res) {
|
||
|
let usuario = new Usuario();
|
||
|
usuario._id = req.params.id;
|
||
|
usuario.activo = req.body.activo;
|
||
|
Usuario.updateOne({ '_id': usuario._id }, usuario, (err, updatedUsuario) => {
|
||
|
if (err) {
|
||
|
return res.status(400).send({ message: `Error: Could not save usuario to database!> ${err}` });
|
||
|
}
|
||
|
if (updatedUsuario.nModified == 1) {
|
||
|
res.status(200).send({ message: `Usuario modified!` });
|
||
|
}
|
||
|
else {
|
||
|
res.status(400).send({ message: `Error: Usuario could not be modified!` });
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function delete_usuario(req, res) {
|
||
|
let id = { '_id': req.params.id };
|
||
|
Usuario.deleteOne(id, (err, usuario) => {
|
||
|
if (err) {
|
||
|
return res.status(400).send({ message: `Error: Could not delete usuario from database!> ${err}` });
|
||
|
}
|
||
|
if (usuario.deletedCount == 1) {
|
||
|
res.status(200).send({ message: `Usuario deleted!` });
|
||
|
}
|
||
|
else {
|
||
|
res.status(400).send({ message: `Error: Usuario could not be deleted!` });
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function validar_usuario(req, res) {
|
||
|
var password = req.body.pass;
|
||
|
Usuario.findOne({'mail': req.body.mail}, (err, user) => {
|
||
|
if (err) {
|
||
|
return res.status(500).send({ mensaje: 'error al realizar la peticion' });
|
||
|
}
|
||
|
if (!user) {
|
||
|
return res.status(401).send({ mensaje: 'Error: usuario no existe' });
|
||
|
}
|
||
|
|
||
|
if (!user.activo) {
|
||
|
return res.status(401).send({ 'mensaje': 'usuario no está activo'});
|
||
|
}
|
||
|
|
||
|
bcrypt.compare(password, user.pass, function(error, isMatch) {
|
||
|
if (error) {
|
||
|
res.status(500).send(`Error al validar usuario> ${error}`);
|
||
|
}
|
||
|
else if (!isMatch) {
|
||
|
res.status(401).send({ 'mensaje': 'incorrecto'});
|
||
|
}
|
||
|
else {
|
||
|
res.status(200).send({ 'mensaje': 'correcto', 'token': service.createToken(user)});
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
const validar_vigencia = (req, res) =>{
|
||
|
Usuario.findById(req.usuario, function (err, usuario) {
|
||
|
if (err) {
|
||
|
return res.status(401).send({'mensaje': 'usuario no autorizado'});
|
||
|
}
|
||
|
|
||
|
if (!usuario.activo) {
|
||
|
return res.status(401).send({'mensaje': 'usuario no es activo'});
|
||
|
}
|
||
|
|
||
|
return res.status(200).send({'usuario': usuario.mail});
|
||
|
});
|
||
|
}
|
||
|
|
||
|
module.exports = {
|
||
|
list_usuarios,
|
||
|
show_usuario,
|
||
|
new_usuario,
|
||
|
modify_usuario,
|
||
|
delete_usuario,
|
||
|
validar_usuario,
|
||
|
validar_vigencia
|
||
|
};
|