freeCodeCamp/app/controllers/users.js

103 lines
1.8 KiB
JavaScript
Executable File

/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
User = mongoose.model('User');
/**
* Auth callback
*/
exports.authCallback = function(req, res, next) {
res.redirect('/');
};
/**
* Show login form
*/
exports.signin = function(req, res) {
res.render('users/signin', {
title: 'Signin',
message: req.flash('error')
});
};
/**
* Show sign up form
*/
exports.signup = function(req, res) {
res.render('users/signup', {
title: 'Sign up',
user: new User()
});
};
/**
* Logout
*/
exports.signout = function(req, res) {
req.logout();
res.redirect('/');
};
/**
* Session
*/
exports.session = function(req, res) {
res.redirect('/');
};
/**
* Create user
*/
exports.create = function(req, res) {
var user = new User(req.body);
user.provider = 'local';
user.save(function(err) {
if (err) {
return res.render('users/signup', {
errors: err.errors,
user: user
});
}
req.logIn(user, function(err) {
if (err) return next(err);
return res.redirect('/');
});
});
};
/**
* Show profile
*/
exports.show = function(req, res) {
var user = req.profile;
res.render('users/show', {
title: user.name,
user: user
});
};
/**
* Send User
*/
exports.me = function(req, res) {
res.jsonp(req.user || null);
};
/**
* Find user by id
*/
exports.user = function(req, res, next, id) {
User
.findOne({
_id: id
})
.exec(function(err, user) {
if (err) return next(err);
if (!user) return next(new Error('Failed to load User ' + id));
req.profile = user;
next();
});
};