93 lines
2.0 KiB
JavaScript
93 lines
2.0 KiB
JavaScript
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();
|
|
};
|