Refactor with base actions methods
This commit is contained in:
@@ -2,11 +2,9 @@
|
||||
* Controllers: Users
|
||||
*/
|
||||
|
||||
const jwt = require(`jsonwebtoken`);
|
||||
const users = require(`../../models/users`);
|
||||
const { comparePassword } = require(`../../utils`);
|
||||
const validation = require(`../../validation`);
|
||||
const schemas = require(`./schemas`);
|
||||
const base = require(`../base`);
|
||||
const userUtils = require(`./utils`);
|
||||
|
||||
/**
|
||||
* Save
|
||||
@@ -14,22 +12,24 @@ const schemas = require(`./schemas`);
|
||||
* @param {*} res
|
||||
*/
|
||||
const register = async (req, res) => {
|
||||
await users.create(req.body);
|
||||
|
||||
let user = await users.getByEmail(req.body.email);
|
||||
|
||||
const token = jwt.sign(
|
||||
users.convertToPublicFormat(user),
|
||||
process.env.tokenSecret,
|
||||
{
|
||||
expiresIn: 604800, // 1 week
|
||||
const config = {
|
||||
validationSchema: schemas.create,
|
||||
getObjectKey: () => req.body.email,
|
||||
buildDbObject: () => {
|
||||
return {
|
||||
hk: req.body.email,
|
||||
password: userUtils.hashPassword(req.body.password)
|
||||
};
|
||||
},
|
||||
dbKind: `user`,
|
||||
buildResponseBody: createdUser => {
|
||||
return {
|
||||
message: `Authentication successful`,
|
||||
token: userUtils.getToken(createdUser),
|
||||
};
|
||||
}
|
||||
);
|
||||
|
||||
res.json({
|
||||
message: `Authentication successful`,
|
||||
token,
|
||||
});
|
||||
};
|
||||
await base.createAction(req, res, config);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -38,35 +38,26 @@ const register = async (req, res) => {
|
||||
* @param {*} res
|
||||
*/
|
||||
const login = async (req, res) => {
|
||||
validation.validateOrThrow(schemas.login, req.body);
|
||||
|
||||
let user = await users.getByEmail(req.body.email);
|
||||
|
||||
if (!user) {
|
||||
return res
|
||||
.status(404)
|
||||
.send({ error: `Authentication failed. User not found.` });
|
||||
}
|
||||
|
||||
const isCorrect = comparePassword(req.body.password, user.password);
|
||||
if (!isCorrect) {
|
||||
return res
|
||||
.status(401)
|
||||
.send({ error: `Authentication failed. Wrong password.` });
|
||||
}
|
||||
|
||||
const token = jwt.sign(
|
||||
users.convertToPublicFormat(user),
|
||||
process.env.tokenSecret,
|
||||
{
|
||||
expiresIn: 604800, // 1 week
|
||||
const config = {
|
||||
validationSchema: schemas.login,
|
||||
getObjectKey: () => req.body.email,
|
||||
notFoundMessage: `Authentication failed. User not found.`,
|
||||
buildResponseBody: user => {
|
||||
const isCorrect = userUtils.comparePassword(req.body.password, user.password);
|
||||
if (!isCorrect) {
|
||||
return res
|
||||
.status(401)
|
||||
.send({ error: `Authentication failed. Wrong password.` });
|
||||
}
|
||||
|
||||
return {
|
||||
message: `Authentication successful`,
|
||||
token: userUtils.getToken(user),
|
||||
};
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
res.json({
|
||||
message: `Authentication successful`,
|
||||
token,
|
||||
});
|
||||
await base.getByKeyAction(req, res, config);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -75,7 +66,7 @@ const login = async (req, res) => {
|
||||
* @param {*} res
|
||||
*/
|
||||
const get = async (req, res) => {
|
||||
const user = users.convertToPublicFormat(req.user);
|
||||
const user = userUtils.convertToPublicFormat(req.user);
|
||||
res.json({ user });
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user