74 lines
1.9 KiB
JavaScript
74 lines
1.9 KiB
JavaScript
import User from '../models/user';
|
|
|
|
export function createUser(req, res, next) {
|
|
const user = new User({
|
|
username: req.body.username,
|
|
email: req.body.email,
|
|
password: req.body.password
|
|
});
|
|
|
|
User.findOne({ email: req.body.email },
|
|
(err, existingUser) => { // eslint-disable-line consistent-return
|
|
if (err) { res.status(404).send({ error: err }); }
|
|
|
|
if (existingUser) {
|
|
return res.status(422).send({ error: 'Email is in use' });
|
|
}
|
|
user.save((saveErr) => { // eslint-disable-line consistent-return
|
|
if (saveErr) { return next(saveErr); }
|
|
req.logIn(user, (loginErr) => { // eslint-disable-line consistent-return
|
|
if (loginErr) {
|
|
return next(loginErr);
|
|
}
|
|
res.json({
|
|
email: req.user.email,
|
|
username: req.user.username,
|
|
preferences: req.user.preferences,
|
|
id: req.user._id
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
export function duplicateUserCheck(req, res) {
|
|
const checkType = req.query.check_type;
|
|
const value = req.query[checkType];
|
|
const query = {};
|
|
query[checkType] = value;
|
|
User.findOne(query, (err, user) => {
|
|
if (user) {
|
|
return res.json({
|
|
exists: true,
|
|
message: `This ${checkType} is already taken.`,
|
|
type: checkType
|
|
});
|
|
}
|
|
return res.json({
|
|
exists: false,
|
|
type: checkType
|
|
});
|
|
});
|
|
}
|
|
|
|
export function updatePreferences(req, res) {
|
|
User.findById(req.user.id, (err, user) => {
|
|
if (err) {
|
|
return res.status(500).json({error: err});
|
|
}
|
|
if (!user){
|
|
return res.status(404).json({error: 'Document not found'});
|
|
}
|
|
|
|
const preferences = Object.assign({}, user.preferences, req.body.preferences);
|
|
user.preferences = preferences;
|
|
|
|
user.save((err) => {
|
|
if (err) {
|
|
return res.status(500).json({error: err});
|
|
}
|
|
|
|
return res.json(user.preferences);
|
|
});
|
|
})
|
|
}
|