'use strict';

var path = require('path');
var _ = require('lodash');

function requiredProcessEnv(name) {
  if (!process.env[name]) {
    throw new Error('You must set the ' + name + ' environment variable');
  }
  return process.env[name];
}

// All configurations will extend these options
// ============================================
var all = {
  env: process.env.NODE_ENV,

  // Root path of server
  root: path.normalize(__dirname + '/../../..'),

  // Server port
  port: process.env.PORT || 9000,

  // Server IP
  ip: process.env.IP || '0.0.0.0',

  // Attendance verification ratio
  attendanceVerificationRatio: 0.2,

  // Github API Info
  // Client ID
  githubClientId: process.env.GITHUBCLIENTID || '',

  // Client Secret
  githubClientSecret: process.env.GITHUBCLIENTSECRET || '',

  // Location of image uploads
  imageUploadPath: './uploads/',

  // Should we populate the DB with sample data?
  seedDB: false,

  serverEmail: process.env.SERVER_EMAIL || "no-reply@rcos.io",

  addr: process.env.SERVER_ADDRESS || "https://rcos.io",

  // Secret for session, you will want to change this and make it an environment variable
  secrets: {
    session: 'observatory3-secret'
  },

  // Sendgrid API key for sending emails
  sendgridApiKey: process.env.SENDGRID_API_KEY || '',

  // List of user roles
  userRoles: ['guest', 'user', 'mentor', 'admin'],

  // MongoDB connection options
  mongo: {
    options: {
      db: {
        safe: true
      }
    }
  },

  facebook: {
    clientID:     process.env.FACEBOOK_ID || 'id',
    clientSecret: process.env.FACEBOOK_SECRET || 'secret',
    callbackURL:  (process.env.DOMAIN || '') + '/auth/facebook/callback'
  },

  google: {
    clientID:     process.env.GOOGLE_ID || 'id',
    clientSecret: process.env.GOOGLE_SECRET || 'secret',
    callbackURL:  (process.env.DOMAIN || '') + '/auth/google/callback'
  }

};

// Export the config object based on the NODE_ENV
// ==============================================
module.exports = _.merge(
  all,
  require('./shared'),
  require('./' + process.env.NODE_ENV + '.js') || {});

'use strict';

var path = require('path');
var _ = require('lodash');

function requiredProcessEnv(name) {
  if (!process.env[name]) {
    throw new Error('You must set the ' + name + ' environment variable');
  }
  return process.env[name];
}

// All configurations will extend these options
// ============================================
var all = {
  env: process.env.NODE_ENV,

  // Root path of server
  root: path.normalize(__dirname + '/../../..'),

  // Server port
  port: process.env.PORT || 9000,

  // Server IP
  ip: process.env.IP || '0.0.0.0',

  // Attendance verification ratio
  attendanceVerificationRatio: 0.2,

  // Github API Info
  // Client ID
  githubClientId: process.env.GITHUBCLIENTID || '',

  // Client Secret
  githubClientSecret: process.env.GITHUBCLIENTSECRET || '',

  // Location of image uploads
  imageUploadPath: './uploads/',

  // Should we populate the DB with sample data?
  seedDB: false,

  serverEmail: process.env.SERVER_EMAIL || "no-reply@rcos.io",

  addr: process.env.SERVER_ADDRESS || "https://rcos.io",

  // Secret for session, you will want to change this and make it an environment variable
  secrets: {
    session: process.env.SESSION_SECRET ||'observatory3-secret'
  },

  // Sendgrid API key for sending emails
  sendgridApiKey: process.env.SENDGRID_API_KEY || '',

  // List of user roles
  userRoles: ['guest', 'user', 'mentor', 'admin'],

  // MongoDB connection options
  mongo: {
    options: {
      db: {
        safe: true
      }
    }
  },

};

// Export the config object based on the NODE_ENV
// ==============================================
module.exports = _.merge(
  all,
  require('./shared'),
  require('./' + process.env.NODE_ENV + '.js') || {});

Use environment session secret if available (#625)