|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- /*!
- * Connect - session - Store
- * Copyright(c) 2010 Sencha Inc.
- * Copyright(c) 2011 TJ Holowaychuk
- * MIT Licensed
- */
-
- 'use strict';
-
- /**
- * Module dependencies.
- * @private
- */
-
- var Cookie = require('./cookie')
- var EventEmitter = require('events').EventEmitter
- var Session = require('./session')
- var util = require('util')
-
- /**
- * Module exports.
- * @public
- */
-
- module.exports = Store
-
- /**
- * Abstract base class for session stores.
- * @public
- */
-
- function Store () {
- EventEmitter.call(this)
- }
-
- /**
- * Inherit from EventEmitter.
- */
-
- util.inherits(Store, EventEmitter)
-
- /**
- * Re-generate the given requests's session.
- *
- * @param {IncomingRequest} req
- * @return {Function} fn
- * @api public
- */
-
- Store.prototype.regenerate = function(req, fn){
- var self = this;
- this.destroy(req.sessionID, function(err){
- self.generate(req);
- fn(err);
- });
- };
-
- /**
- * Load a `Session` instance via the given `sid`
- * and invoke the callback `fn(err, sess)`.
- *
- * @param {String} sid
- * @param {Function} fn
- * @api public
- */
-
- Store.prototype.load = function(sid, fn){
- var self = this;
- this.get(sid, function(err, sess){
- if (err) return fn(err);
- if (!sess) return fn();
- var req = { sessionID: sid, sessionStore: self };
- fn(null, self.createSession(req, sess))
- });
- };
-
- /**
- * Create session from JSON `sess` data.
- *
- * @param {IncomingRequest} req
- * @param {Object} sess
- * @return {Session}
- * @api private
- */
-
- Store.prototype.createSession = function(req, sess){
- var expires = sess.cookie.expires
- , orig = sess.cookie.originalMaxAge;
- sess.cookie = new Cookie(sess.cookie);
- if ('string' == typeof expires) sess.cookie.expires = new Date(expires);
- sess.cookie.originalMaxAge = orig;
- req.session = new Session(req, sess);
- return req.session;
- };
|