123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- var signature = require('cookie-signature');
-
- /**
- * Parse signed cookies, returning an object
- * containing the decoded key/value pairs,
- * while removing the signed key from `obj`.
- *
- * @param {Object} obj
- * @return {Object}
- * @api private
- */
-
- exports.signedCookies = function(obj, secret){
- var cookies = Object.keys(obj);
- var dec;
- var key;
- var ret = Object.create(null);
- var val;
-
- for (var i = 0; i < cookies.length; i++) {
- key = cookies[i];
- val = obj[key];
- dec = exports.signedCookie(val, secret);
-
- if (val !== dec) {
- ret[key] = dec;
- delete obj[key];
- }
- }
-
- return ret;
- };
-
- /**
- * Parse a signed cookie string, return the decoded value
- *
- * @param {String} str signed cookie string
- * @param {String} secret
- * @return {String} decoded value
- * @api private
- */
-
- exports.signedCookie = function(str, secret){
- return str.substr(0, 2) === 's:'
- ? signature.unsign(str.slice(2), secret)
- : str;
- };
-
- /**
- * Parse JSON cookies.
- *
- * @param {Object} obj
- * @return {Object}
- * @api private
- */
-
- exports.JSONCookies = function(obj){
- var cookies = Object.keys(obj);
- var key;
- var val;
-
- for (var i = 0; i < cookies.length; i++) {
- key = cookies[i];
- val = exports.JSONCookie(obj[key]);
-
- if (val) {
- obj[key] = val;
- }
- }
-
- return obj;
- };
-
- /**
- * Parse JSON cookie string
- *
- * @param {String} str
- * @return {Object} Parsed object or null if not json cookie
- * @api private
- */
-
- exports.JSONCookie = function(str) {
- if (!str || str.substr(0, 2) !== 'j:') return;
-
- try {
- return JSON.parse(str.slice(2));
- } catch (err) {
- // no op
- }
- };
|