mirror of https://github.com/franjsco/tick3t-api
add controller: user
This commit is contained in:
parent
3d9acde82f
commit
fbae2037b5
|
@ -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',
|
||||
});
|
||||
});
|
||||
};
|
Loading…
Reference in New Issue