arnaucube
arnaucube/comunicationLeapPublic Self-hosted repository
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};