genesis-cli
Version:
It´s a CLI app to Create NodeJS projects like a boss
134 lines (128 loc) • 5.58 kB
JavaScript
const usersModel = '{{name}}_users',
usersController = {},
DB = require('../../utils/dbFunctions'),
Util = require('../../utils/util'),
access_users = require('../../middleware/access_users'),
encrypt = require('../../utils/encryptPassword');
const controllerName = 'usersController';
//+-----------------------------------------------------------------------------+
//|CREATE NEW users |
//+-----------------------------------------------------------------------------+
usersController.create = async (req, res) => {
try {
const {body} = req;
body.password = encrypt.getEncyptPassword(body.password);
const data = await DB.create(usersModel, body);
Util.dataValidation(res, data, controllerName);
} catch (error) {
log(controllerName, Util.readMessage(controllerName, error));
sendError(res, error, Util.readMessage(controllerName, error));
}
};
//+-----------------------------------------------------------------------------+
//|FIND users BY ID |
//+-----------------------------------------------------------------------------+
usersController.read = async (req, res) => {
try {
const {id} = req.params;
if (Util.integerIDValidation(res, id, controllerName)) {
const data = await DB.findOne(usersModel, id);
Util.dataValidation(res, data, controllerName);
}
} catch (error) {
log(controllerName, Util.readMessage(controllerName, error));
sendError(res, error, Util.readMessage(controllerName, error));
}
};
//+-----------------------------------------------------------------------------+
//|GET LIST OF users CUSTOM QUERY |
//+-----------------------------------------------------------------------------+
usersController.readAll = async (req, res) => {
try {
const data = await DB.findAll(usersModel);
Util.dataValidation(res, data, controllerName);
} catch (error) {
log(controllerName, Util.readMessage(controllerName, error));
sendError(res, error, Util.readMessage(controllerName, error));
}
};
//+-----------------------------------------------------------------------------+
//|UPDATE users BY ID |
//+-----------------------------------------------------------------------------+
usersController.update = async (req, res) => {
const {id} = req.params;
const payload = req.body;
try {
const data = await DB.update(usersModel, payload, id);
Util.updateValidation(res, data, controllerName);
} catch (error) {
log(controllerName, Util.readMessage(controllerName, error));
sendError(res, error, Util.readMessage(controllerName, error));
}
};
//+-----------------------------------------------------------------------------+
//|DELETE users BY ID |
//+-----------------------------------------------------------------------------+
usersController.delete = async (req, res) => {
const {id} = req.params;
try {
const data = await DB.delete(usersModel, id);
Util.deleteValidation(res, data, controllerName);
} catch (error) {
log(controllerName, Util.readMessage(controllerName, error));
sendError(res, error, Util.readMessage(controllerName, error));
}
};
//+-----------------------------------------------------------------------------+
//| user LOGIN |
//+-----------------------------------------------------------------------------+
usersController.login = async (req, res) => {
try {
let {email, password, firebase_token} = req.body;
log(controllerName, req.body);
//logJSON(req.body)
password = encrypt.getEncyptPassword(password);
await validateUser(email, password, firebase_token, isUser => {
if (isUser.value) {
send(
res,
access_users.getToken({
name: isUser.data.name,
email: isUser.data.email,
user_id: isUser.data.id,
first_time: isUser.data.confirmed
})
);
} else {
sendError(res, 'No hay usuarios registrados con estas credenciales.');
}
}).catch(error => {
log(controllerName, Util.readMessage(controllerName, error));
sendError(res, error, Util.readMessage(controllerName, error));
});
} catch (error) {
log(controllerName, Util.readMessage(controllerName, error));
sendError(res, error, Util.readMessage(controllerName, error));
}
};
//+-----------------------------------------------------------------------------+
//|VALIDATE IF USER EXIST |
//+-----------------------------------------------------------------------------+
const validateUser = async (email, password, firebase_token, func) => {
const userFound = await findUser(email, password);
if (userFound) {
// await updateUser(userFound.email, firebase_token);
return func({value: true, data: await findUser(email, password)});
} else return func({value: false, data: null});
};
//+-----------------------------------------------------------------------------+
//|FIND USER |
//+-----------------------------------------------------------------------------+
async function findUser(email, password) {
const where = {email, password, enable: 1};
const attributes = ['id', 'name', 'nickname', 'email', 'confirmed'];
return await DB.findOneCustom(usersModel, where, attributes).then(user => {
return user;
});
}
module.exports = usersController;