Просмотр исходного кода

Use MongoDB for session store if REDIS_URL is not set

Yuki Takei 8 лет назад
Родитель
Сommit
ca5515e10b
4 измененных файлов с 61 добавлено и 11 удалено
  1. 0 1
      config/env.dev.js
  2. 17 8
      lib/crowi/index.js
  3. 1 0
      package.json
  4. 43 2
      yarn.lock

+ 0 - 1
config/env.dev.js

@@ -2,7 +2,6 @@ module.exports = {
   NODE_ENV: 'development',
   NODE_ENV: 'development',
   FILE_UPLOAD: 'local',
   FILE_UPLOAD: 'local',
   // MATHJAX: 1,
   // MATHJAX: 1,
-  // REDIS_URL: 'redis://localhost:6379/growi',
   // ELASTICSEARCH_URI: 'http://localhost:9200/growi',
   // ELASTICSEARCH_URI: 'http://localhost:9200/growi',
   PLUGIN_NAMES_TOBE_LOADED: [
   PLUGIN_NAMES_TOBE_LOADED: [
     // 'growi-plugin-lsx',
     // 'growi-plugin-lsx',

+ 17 - 8
lib/crowi/index.js

@@ -67,6 +67,14 @@ function Crowi (rootdir, env)
   }
   }
 };
 };
 
 
+function getMongoUrl(env) {
+  return env.MONGOLAB_URI || // for B.C.
+    env.MONGODB_URI || // MONGOLAB changes their env name
+    env.MONGOHQ_URL ||
+    env.MONGO_URI ||
+    ((process.env.NODE_ENV === 'test') ? 'mongodb://localhost/growi_test' : 'mongodb://localhost/growi');
+}
+
 Crowi.prototype.init = function() {
 Crowi.prototype.init = function() {
   var self = this;
   var self = this;
 
 
@@ -144,12 +152,7 @@ Crowi.prototype.setupDatabase = function() {
   // mongoUri = mongodb://user:password@host/dbname
   // mongoUri = mongodb://user:password@host/dbname
   mongoose.Promise = global.Promise;
   mongoose.Promise = global.Promise;
 
 
-  var mongoUri = this.env.MONGOLAB_URI || // for B.C.
-    this.env.MONGODB_URI || // MONGOLAB changes their env name
-    this.env.MONGOHQ_URL ||
-    this.env.MONGO_URI ||
-    ((process.env.NODE_ENV === 'test') ? 'mongodb://localhost/growi_test' : 'mongodb://localhost/growi')
-    ;
+  const mongoUri = getMongoUrl(this.env);
 
 
   return mongoose.connect(mongoUri).then(
   return mongoose.connect(mongoUri).then(
     () => {},
     () => {},
@@ -166,7 +169,7 @@ Crowi.prototype.setupSessionConfig = function() {
     , sessionConfig
     , sessionConfig
     , sessionAge = (1000*3600*24*30)
     , sessionAge = (1000*3600*24*30)
     , redisUrl = this.env.REDISTOGO_URL || this.env.REDIS_URL || null
     , redisUrl = this.env.REDISTOGO_URL || this.env.REDIS_URL || null
-    , RedisStore
+    , mongoUrl = getMongoUrl(this.env)
     ;
     ;
 
 
   return new Promise(function(resolve, reject) {
   return new Promise(function(resolve, reject) {
@@ -184,10 +187,16 @@ Crowi.prototype.setupSessionConfig = function() {
       sessionConfig.name = self.env.SESSION_NAME;
       sessionConfig.name = self.env.SESSION_NAME;
     }
     }
 
 
+    // use Redis for session store
     if (redisUrl) {
     if (redisUrl) {
-      RedisStore = require('connect-redis')(session);
+      const RedisStore = require('connect-redis')(session);
       sessionConfig.store = new RedisStore({ url: redisUrl });
       sessionConfig.store = new RedisStore({ url: redisUrl });
     }
     }
+    // use MongoDB for session store
+    else {
+      const MongoStore = require('connect-mongo')(session);
+      sessionConfig.store = new MongoStore({ url: mongoUrl });
+    }
 
 
     self.sessionConfig = sessionConfig;
     self.sessionConfig = sessionConfig;
     resolve();
     resolve();

+ 1 - 0
package.json

@@ -64,6 +64,7 @@
     "check-node-version": "^3.1.1",
     "check-node-version": "^3.1.1",
     "codemirror": "^5.36.0",
     "codemirror": "^5.36.0",
     "connect-flash": "~0.1.1",
     "connect-flash": "~0.1.1",
+    "connect-mongo": "^2.0.1",
     "connect-redis": "^3.3.0",
     "connect-redis": "^3.3.0",
     "cookie-parser": "^1.4.3",
     "cookie-parser": "^1.4.3",
     "cross-env": "^5.0.5",
     "cross-env": "^5.0.5",

+ 43 - 2
yarn.lock

@@ -1293,6 +1293,10 @@ buffer-equal-constant-time@1.0.1:
   version "1.0.1"
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
   resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
 
 
+buffer-shims@~1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/buffer-shims/-/buffer-shims-1.0.0.tgz#9978ce317388c649ad8793028c3477ef044a8b51"
+
 buffer-xor@^1.0.3:
 buffer-xor@^1.0.3:
   version "1.0.3"
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
   resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
@@ -1724,6 +1728,12 @@ connect-injector@^0.4.2:
     stream-buffers "^0.2.3"
     stream-buffers "^0.2.3"
     uberproto "^1.1.0"
     uberproto "^1.1.0"
 
 
+connect-mongo@^2.0.1:
+  version "2.0.1"
+  resolved "https://registry.yarnpkg.com/connect-mongo/-/connect-mongo-2.0.1.tgz#514d649cff1d5d5546c087193245bb54ff5b703b"
+  dependencies:
+    mongodb "^2.0.36"
+
 connect-redis@^3.3.0:
 connect-redis@^3.3.0:
   version "3.3.3"
   version "3.3.3"
   resolved "https://registry.yarnpkg.com/connect-redis/-/connect-redis-3.3.3.tgz#0fb8f370192f62da75ec7a9507807599fbe15b37"
   resolved "https://registry.yarnpkg.com/connect-redis/-/connect-redis-3.3.3.tgz#0fb8f370192f62da75ec7a9507807599fbe15b37"
@@ -2435,6 +2445,10 @@ es6-map@^0.1.3:
     es6-symbol "~3.1.1"
     es6-symbol "~3.1.1"
     event-emitter "~0.3.5"
     event-emitter "~0.3.5"
 
 
+es6-promise@3.2.1:
+  version "3.2.1"
+  resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.2.1.tgz#ec56233868032909207170c39448e24449dd1fc4"
+
 es6-set@~0.1.5:
 es6-set@~0.1.5:
   version "0.1.5"
   version "0.1.5"
   resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
   resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1"
@@ -4592,6 +4606,13 @@ moment@^2.10.6:
   version "2.20.1"
   version "2.20.1"
   resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd"
   resolved "https://registry.yarnpkg.com/moment/-/moment-2.20.1.tgz#d6eb1a46cbcc14a2b2f9434112c1ff8907f313fd"
 
 
+mongodb-core@2.1.19:
+  version "2.1.19"
+  resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-2.1.19.tgz#00fbd5e5a3573763b9171cfd844e60a8f2a3a18b"
+  dependencies:
+    bson "~1.0.4"
+    require_optional "~1.0.0"
+
 mongodb-core@3.0.1:
 mongodb-core@3.0.1:
   version "3.0.1"
   version "3.0.1"
   resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.0.1.tgz#ff6dc36ee96ff596953d80a6840d6731bc92efed"
   resolved "https://registry.yarnpkg.com/mongodb-core/-/mongodb-core-3.0.1.tgz#ff6dc36ee96ff596953d80a6840d6731bc92efed"
@@ -4605,6 +4626,14 @@ mongodb@3.0.1:
   dependencies:
   dependencies:
     mongodb-core "3.0.1"
     mongodb-core "3.0.1"
 
 
+mongodb@^2.0.36:
+  version "2.2.35"
+  resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-2.2.35.tgz#cd1b5af8a9463e3f9a787fa5b3d05565579730f9"
+  dependencies:
+    es6-promise "3.2.1"
+    mongodb-core "2.1.19"
+    readable-stream "2.2.7"
+
 mongoose-legacy-pluralize@1.0.1:
 mongoose-legacy-pluralize@1.0.1:
   version "1.0.1"
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.1.tgz#31ae25db45c30f1448c0f93f52769e903367c701"
   resolved "https://registry.yarnpkg.com/mongoose-legacy-pluralize/-/mongoose-legacy-pluralize-1.0.1.tgz#31ae25db45c30f1448c0f93f52769e903367c701"
@@ -6041,6 +6070,18 @@ readable-stream@1.1.x:
     isarray "0.0.1"
     isarray "0.0.1"
     string_decoder "~0.10.x"
     string_decoder "~0.10.x"
 
 
+readable-stream@2.2.7:
+  version "2.2.7"
+  resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.2.7.tgz#07057acbe2467b22042d36f98c5ad507054e95b1"
+  dependencies:
+    buffer-shims "~1.0.0"
+    core-util-is "~1.0.0"
+    inherits "~2.0.1"
+    isarray "~1.0.0"
+    process-nextick-args "~1.0.6"
+    string_decoder "~1.0.0"
+    util-deprecate "~1.0.1"
+
 readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.3.3:
 readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.2.6, readable-stream@^2.3.3:
   version "2.3.3"
   version "2.3.3"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
   resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
@@ -6313,7 +6354,7 @@ require-uncached@^1.0.3:
     caller-path "^0.1.0"
     caller-path "^0.1.0"
     resolve-from "^1.0.0"
     resolve-from "^1.0.0"
 
 
-require_optional@^1.0.1:
+require_optional@^1.0.1, require_optional@~1.0.0:
   version "1.0.1"
   version "1.0.1"
   resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e"
   resolved "https://registry.yarnpkg.com/require_optional/-/require_optional-1.0.1.tgz#4cf35a4247f64ca3df8c2ef208cc494b1ca8fc2e"
   dependencies:
   dependencies:
@@ -6889,7 +6930,7 @@ string@^3.0.1:
   version "3.3.3"
   version "3.3.3"
   resolved "https://registry.yarnpkg.com/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0"
   resolved "https://registry.yarnpkg.com/string/-/string-3.3.3.tgz#5ea211cd92d228e184294990a6cc97b366a77cb0"
 
 
-string_decoder@^1.0.0, string_decoder@~1.0.3:
+string_decoder@^1.0.0, string_decoder@~1.0.0, string_decoder@~1.0.3:
   version "1.0.3"
   version "1.0.3"
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
   resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
   dependencies:
   dependencies: