raspberryGPIOhtmlserver/node_modules/connect/lib/middleware/session/store.js
node_modules/connect/lib/middleware/session/store.jsRaw
1
2/*!
3 * Connect - session - Store
4 * Copyright(c) 2010 Sencha Inc.
5 * Copyright(c) 2011 TJ Holowaychuk
6 * MIT Licensed
7 */
8
9/**
10 * Module dependencies.
11 */
12
13var EventEmitter = require('events').EventEmitter
14 , Session = require('./session')
15 , Cookie = require('./cookie');
16
17/**
18 * Initialize abstract `Store`.
19 *
20 * @api private
21 */
22
23var Store = module.exports = function Store(options){};
24
25/**
26 * Inherit from `EventEmitter.prototype`.
27 */
28
29Store.prototype.__proto__ = EventEmitter.prototype;
30
31/**
32 * Re-generate the given requests's session.
33 *
34 * @param {IncomingRequest} req
35 * @return {Function} fn
36 * @api public
37 */
38
39Store.prototype.regenerate = function(req, fn){
40 var self = this;
41 this.destroy(req.sessionID, function(err){
42 self.generate(req);
43 fn(err);
44 });
45};
46
47/**
48 * Load a `Session` instance via the given `sid`
49 * and invoke the callback `fn(err, sess)`.
50 *
51 * @param {String} sid
52 * @param {Function} fn
53 * @api public
54 */
55
56Store.prototype.load = function(sid, fn){
57 var self = this;
58 this.get(sid, function(err, sess){
59 if (err) return fn(err);
60 if (!sess) return fn();
61 var req = { sessionID: sid, sessionStore: self };
62 sess = self.createSession(req, sess);
63 fn(null, sess);
64 });
65};
66
67/**
68 * Create session from JSON `sess` data.
69 *
70 * @param {IncomingRequest} req
71 * @param {Object} sess
72 * @return {Session}
73 * @api private
74 */
75
76Store.prototype.createSession = function(req, sess){
77 var expires = sess.cookie.expires
78 , orig = sess.cookie.originalMaxAge;
79 sess.cookie = new Cookie(sess.cookie);
80 if ('string' == typeof expires) sess.cookie.expires = new Date(expires);
81 sess.cookie.originalMaxAge = orig;
82 req.session = new Session(req, sess);
83 return req.session;
84};