1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | "use strict";
|
15 |
|
16 | var fluid = require("infusion"),
|
17 | kettle = fluid.registerNamespace("kettle");
|
18 |
|
19 | fluid.require("express-session", require, "kettle.npm.expressSession");
|
20 |
|
21 | kettle.npm.makeMemorySessionStore = function () {
|
22 | return new kettle.npm.expressSession.MemoryStore();
|
23 | };
|
24 |
|
25 |
|
26 | fluid.defaults("kettle.middleware.session", {
|
27 | gradeNames: ["kettle.plainMiddleware"],
|
28 | store: "@expand:kettle.npm.makeMemorySessionStore()",
|
29 | middlewareOptions: {
|
30 | name: "kettle.sid",
|
31 | store: "{that}.options.store",
|
32 | cookie: {
|
33 | secure: false
|
34 | },
|
35 | secret: "kettle session secret",
|
36 | saveUninitialized: false,
|
37 | resave: false
|
38 | },
|
39 | middleware: "@expand:kettle.npm.expressSession({that}.options.middlewareOptions)"
|
40 | });
|
41 |
|
42 |
|
43 |
|
44 |
|
45 | fluid.defaults("kettle.server.sessionAware", {
|
46 | distributeOptions: {
|
47 | record: "kettle.middleware.session",
|
48 | target: "{that > kettle.middlewareHolder}.options.components.session.type"
|
49 | }
|
50 | });
|
51 |
|
52 |
|
53 | fluid.defaults("kettle.request.sessionAware", {
|
54 | requestMiddleware: {
|
55 | session: {
|
56 | middleware: "{middlewareHolder}.session"
|
57 | }
|
58 | },
|
59 | events: {
|
60 | onDestroySession: null
|
61 | },
|
62 | listeners: {
|
63 | "onDestroySession.destroy": {
|
64 | funcName: "kettle.request.sessionAware.destroy",
|
65 | args: "{that}"
|
66 | }
|
67 | }
|
68 | });
|
69 |
|
70 | kettle.request.sessionAware.destroy = function (request) {
|
71 | if (request.req.session) {
|
72 |
|
73 | request.req.session.destroy();
|
74 | }
|
75 | };
|