comunicationLeap/node_modules/connect/lib/middleware/cookieParser.js
node_modules/connect/lib/middleware/cookieParser.jsRaw
1
2/*!
3 * Connect - cookieParser
4 * Copyright(c) 2010 Sencha Inc.
5 * Copyright(c) 2011 TJ Holowaychuk
6 * MIT Licensed
7 */
8
9/**
10 * Module dependencies.
11 */
12
13var utils = require('./../utils')
14 , cookie = require('cookie');
15
16/**
17 * Cookie parser:
18 *
19 * Parse _Cookie_ header and populate `req.cookies`
20 * with an object keyed by the cookie names. Optionally
21 * you may enabled signed cookie support by passing
22 * a `secret` string, which assigns `req.secret` so
23 * it may be used by other middleware.
24 *
25 * Examples:
26 *
27 * connect()
28 * .use(connect.cookieParser('optional secret string'))
29 * .use(function(req, res, next){
30 * res.end(JSON.stringify(req.cookies));
31 * })
32 *
33 * @param {String} secret
34 * @return {Function}
35 * @api public
36 */
37
38module.exports = function cookieParser(secret){
39 return function cookieParser(req, res, next) {
40 if (req.cookies) return next();
41 var cookies = req.headers.cookie;
42
43 req.secret = secret;
44 req.cookies = {};
45 req.signedCookies = {};
46
47 if (cookies) {
48 try {
49 req.cookies = cookie.parse(cookies);
50 if (secret) {
51 req.signedCookies = utils.parseSignedCookies(req.cookies, secret);
52 req.signedCookies = utils.parseJSONCookies(req.signedCookies);
53 }
54 req.cookies = utils.parseJSONCookies(req.cookies);
55 } catch (err) {
56 err.status = 400;
57 return next(err);
58 }
59 }
60 next();
61 };
62};