Ghost/core/server/api/configuration.js
Austin Burdine 2865662ee5 added password protection
closes #4993
- brings password protection to the frontend of blogs
- adds testing for password protection
- upgrades bcrypt-js to 2.1.0
2015-04-30 23:44:43 -05:00

67 lines
1.8 KiB
JavaScript

// # Configuration API
// RESTful API for browsing the configuration
var _ = require('lodash'),
config = require('../config'),
errors = require('../errors'),
Promise = require('bluebird'),
configuration;
function getValidKeys() {
var validKeys = {
fileStorage: config.fileStorage === false ? false : true,
passProtectUI: config.passProtectUI === true ? true : false,
apps: config.apps === true ? true : false,
version: config.ghostVersion,
environment: process.env.NODE_ENV,
database: config.database.client,
mail: _.isObject(config.mail) ? config.mail.transport : '',
blogUrl: config.url.replace(/\/$/, ''),
blogTitle: config.theme.title,
routeKeywords: JSON.stringify(config.routeKeywords)
};
return validKeys;
}
/**
* ## Configuration API Methods
*
* **See:** [API Methods](index.js.html#api%20methods)
*/
configuration = {
/**
* ### Browse
* Fetch all configuration keys
* @returns {Promise(Configurations)}
*/
browse: function browse() {
return Promise.resolve({configuration: _.map(getValidKeys(), function (value, key) {
return {
key: key,
value: value
};
})});
},
/**
* ### Read
*
*/
read: function read(options) {
var data = getValidKeys();
if (_.has(data, options.key)) {
return Promise.resolve({configuration: [{
key: options.key,
value: data[options.key]
}]});
} else {
return Promise.reject(new errors.NotFoundError('Invalid key'));
}
}
};
module.exports = configuration;