freeCodeCamp/server/controllers/auth.js

46 lines
1.4 KiB
JavaScript
Executable File

var passport = require('passport')
, User = require('../models/User.js');
module.exports = {
register: function(req, res, next) {
try {
User.validate(req.body);
}
catch(err) {
return res.send(400, err.message);
}
User.addUser(req.body.username, req.body.password, req.body.role, function(err, user) {
if(err === 'UserAlreadyExists') return res.send(403, "User already exists");
else if(err) return res.send(500);
req.logIn(user, function(err) {
if(err) { next(err); }
else { res.json(200, { "role": user.role, "username": user.username }); }
});
});
},
login: function(req, res, next) {
passport.authenticate('local', function(err, user) {
if(err) { return next(err); }
if(!user) { return res.send(400); }
req.logIn(user, function(err) {
if(err) {
return next(err);
}
if(req.body.rememberme) req.session.cookie.maxAge = 1000 * 60 * 60 * 24 * 7;
res.json(200, { "role": user.role, "username": user.username });
});
})(req, res, next);
},
logout: function(req, res) {
req.logout();
res.send(200);
}
};