var req = exports = module.exports = {}; /** * Initiate a login session for `user`. * * Options: * - `session` Save login state in session, defaults to _true_ * * Examples: * * req.logIn(user, { session: false }); * * req.logIn(user, function(err) { * if (err) { throw err; } * // session saved * }); * * @param {User} user * @param {Object} options * @param {Function} done * @api public */ req.login = req.logIn = function(user, options, done) { if (typeof options == 'function') { done = options; options = {}; } options = options || {}; var property = this._userProperty || 'user'; var session = (options.session === undefined) ? true : options.session; this[property] = user; if (session && this._sessionManager) { if (typeof done != 'function') { throw new Error('req#login requires a callback function'); } var self = this; this._sessionManager.logIn(this, user, options, function(err) { if (err) { self[property] = null; return done(err); } done(); }); } else { done && done(); } }; /** * Terminate an existing login session. * * @api public */ req.logout = req.logOut = function(options, done) { if (typeof options == 'function') { done = options; options = {}; } options = options || {}; var property = this._userProperty || 'user'; this[property] = null; if (this._sessionManager) { if (typeof done != 'function') { throw new Error('req#logout requires a callback function'); } this._sessionManager.logOut(this, options, done); } else { done && done(); } }; /** * Test if request is authenticated. * * @return {Boolean} * @api public */ req.isAuthenticated = function() { var property = this._userProperty || 'user'; return (this[property]) ? true : false; }; /** * Test if request is unauthenticated. * * @return {Boolean} * @api public */ req.isUnauthenticated = function() { return !this.isAuthenticated(); };