add controller: user

This commit is contained in:
Francesco Esposito 2019-08-06 18:43:17 +02:00
parent 3d9acde82f
commit fbae2037b5
1 changed files with 81 additions and 0 deletions

81
src/controllers/user.js Normal file
View File

@ -0,0 +1,81 @@
import bcrypt from 'bcrypt';
import jwt from 'jsonwebtoken';
import userModel from '../models/user';
export const authenticate = (req, res, next) => {
const { email, password } = req.body;
if (!email || !password) {
res.status(400).json({
success: false,
message: 'Parameters invalid',
});
return;
}
userModel.findOne({ email }, (err, user) => {
if (err) {
next(err);
}
if (user) {
if (bcrypt.compareSync(password, user.password || 0)) {
const token = jwt.sign({ email }, req.app.get('secretKey'), {
expiresIn: '1h',
});
res.json({
success: true,
message: 'Auth OK',
data: {
name: user.name,
token,
},
});
} else {
res.status(401).json({
success: false,
message: 'Invalid email/password',
});
}
} else {
res.status(401).json({
success: false,
message: 'Invalid email/password',
});
}
});
};
export const changePassword = (req, res, next) => {
const { newPassword } = req.body;
if (!newPassword) {
res.status(400).json({
success: false,
message: 'Parameters invalid',
});
return;
}
const encryptedPassword = bcrypt.hashSync(newPassword, 10);
const pass = {
password: encryptedPassword,
};
userModel.findOneAndUpdate({}, pass, { new: true }, (err, user) => {
if (err) {
next(err);
}
res.json({
status: 'success',
message: 'Password updated',
});
});
};