wikijs-fork/libs/config.js

56 lines
1.2 KiB
JavaScript

"use strict";
var fs = require('fs'),
yaml = require('js-yaml'),
_ = require('lodash');
/**
* Load Application Configuration
*
* @param {String} confPath Path to the configuration file
* @return {Object} Application Configuration
*/
module.exports = (confPath) => {
var appconfig = {};
try {
appconfig = yaml.safeLoad(fs.readFileSync(confPath, 'utf8'));
} catch (ex) {
winston.error(ex);
process.exit(1);
}
// Merge with defaults
appconfig = _.defaultsDeep(appconfig, {
title: "Requarks Wiki",
host: "http://localhost",
port: process.env.PORT,
auth: {
local: { enabled: true },
microsoft: { enabled: false },
google: { enabled: false },
facebook: { enabled: false },
},
db: "mongodb://localhost/wiki",
redis: null,
sessionSecret: null,
admin: null
});
// List authentication strategies
appconfig.authStrategies = {
list: _.filter(appconfig.auth, ['enabled', true]),
socialEnabled: (_.chain(appconfig.auth).omit('local').reject({ enabled: false }).value().length > 0)
}
if(appconfig.authStrategies.list.length < 1) {
winston.error(new Error('You must enable at least 1 authentication strategy!'));
process.exit(1);
}
return appconfig;
};