authController.js
908 Bytes
const bcrypt = require('bcrypt');
const passport = require('passport');
const { User } = require('../../models');
exports.signup = async (req, res, next) => {
const { email, name, password } = req.body;
try {
const existUser = await User.findOne({ where: { email } });
if (existUser) {
res.status(409).json({ ok: false, message: 'already exists' });
return;
}
const hash = await bcrypt.hash(password, 10);
await User.create({ email, password: hash, name });
res.json({ ok: true });
} catch (err) {
next(err);
}
};
exports.login = (req, res, next) => {
passport.authenticate('local', (err, user, info) => {
if (err) return next(err);
if (!user) return res.status(401).json({ ok: false, ...info });
req.logIn(user, (loginErr) => {
if (loginErr) next(loginErr);
res.json({ ok: true, user: req.user });
});
})(req, res, next);
};