var MongoClient = require('mongodb').MongoClient;
module.exports = {
  init: function(expressConfig, session, cb) {
    var self = this;
    var MongoStore = require('connect-mongo')(session);
    MongoClient.connect(expressConfig.config.url, function(err, mongo) {
      if (err) {
        return cb(err);
      }
      self.store = new MongoStore({db: mongo});
      self.db = mongo;
      return cb(null);
    });
  },
  verifySession: function(token, cb) {
    //For a given session token, there should only be a maximum of 1
    this.db.collection('sessions').findOne({
      '_id': token
    }, function(err, foundSession) {
      //For the session to be valid, the expiry date must be greater than now.
      var valid = !err && foundSession && new Date() < new Date(foundSession.expires);
      foundSession.isValid = valid;
      return cb(err, foundSession);
    });
  },
  revokeSession: function(token, cb) {
    this.db.collection('sessions').deleteOne({
      '_id': token
    }, cb);
  },
  defaultConfig: {
    url: 'mongodb://localhost:27017/raincatcher-demo-auth-session-store'
  }
};
var MongoClient = require('mongodb').MongoClient;
module.exports = {
  init: function(expressConfig, session, cb) {
    var self = this;
    var MongoStore = require('connect-mongo')(session);
    MongoClient.connect(expressConfig.config.url, function(err, mongo) {
      if (err) {
        return cb(err);
      }
      self.store = new MongoStore({
        db: mongo,
        ttl: expressConfig.config.ttl || 14 * 24 * 60 * 60 // = 14 days. Default
      });
      self.db = mongo;
      return cb(null);
    });
  },
  verifySession: function(token, cb) {
    //For a given session token, there should only be a maximum of 1
    this.db.collection('sessions').findOne({
      '_id': token
    }, function(err, foundSession) {
      //For the session to be valid, the expiry date must be greater than now.
      var valid = !err && foundSession && new Date() < new Date(foundSession.expires);
      foundSession.isValid = valid;
      return cb(err, foundSession);
    });
  },
  revokeSession: function(token, cb) {
    this.db.collection('sessions').deleteOne({
      '_id': token
    }, cb);
  },
  defaultConfig: {
    url: 'mongodb://localhost:27017/raincatcher-demo-auth-session-store'
  }
};
Allow the session expiration length to be configurable
Allow the session expiration length to be configurable
