Files
forgetmenot-django/api/controllers/users.js
2020-11-18 21:02:16 -06:00

83 lines
1.4 KiB
JavaScript

/**
* Controllers: Users
*/
const jwt = require(`jsonwebtoken`);
const users = require(`../models/users`);
const { comparePassword } = require(`../utils`);
/**
* Save
* @param {*} req
* @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
}
);
res.json({
message: `Authentication successful`,
token,
});
};
/**
* Sign a user in
* @param {*} req
* @param {*} res
*/
const login = async (req, res) => {
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
}
);
res.json({
message: `Authentication successful`,
token,
});
};
/**
* Get a user
* @param {*} req
* @param {*} res
*/
const get = async (req, res) => {
const user = users.convertToPublicFormat(req.user);
res.json({ user });
};
module.exports = {
register,
login,
get,
};