Update branch

Merge branch 'plugin/settings-manager-dev' of https://github.com/strapi/strapi into plugin/settings-manager-dev
This commit is contained in:
cyril lopez 2017-07-26 11:35:13 +02:00
commit 701c4ac9ca
4 changed files with 138 additions and 5 deletions

View File

@ -40,6 +40,22 @@
"policies": []
}
},
{
"method": "GET",
"path": "/configurations/databases/:env",
"handler": "SettingsManager.databases",
"config": {
"policies": []
}
},
{
"method": "GET",
"path": "/configurations/databases/:slug/:env",
"handler": "SettingsManager.database",
"config": {
"policies": []
}
},
{
"method": "GET",
"path": "/configurations/:slug/:env?",

View File

@ -22,16 +22,38 @@ module.exports = {
ctx.send({ languages: Service.getLanguages() });
},
databases: async ctx => {
const Service = strapi.plugins['settings-manager'].services.settingsmanager;
const { env } = ctx.params;
if (env && _.isEmpty(_.find(Service.getEnvironments(), { name: env }))) return ctx.badData(null, [{ messages: [{ id: 'request.error.environment.unknow' }] }]);
ctx.send({ databases: Service.getDatabases(env) });
},
database: async ctx => {
const Service = strapi.plugins['settings-manager'].services.settingsmanager;
const { slug, env } = ctx.params;
if (env && _.isEmpty(_.find(Service.getEnvironments(), { name: env }))) return ctx.badData(null, [{ messages: [{ id: 'request.error.environment.unknow' }] }]);
const model = _.has(Service, slug) ? Service.database(slug, env) : undefined;
if (_.isUndefined(model)) return ctx.badData(null, [{ messages: [{ id: 'request.error.config' }] }]);
if (_.isFunction(model)) return ctx.badData(null, [{ messages: [{ id: 'request.error.environment.required' }] }]);
ctx.send(model);
},
get: async ctx => {
const Service = strapi.plugins['settings-manager'].services.settingsmanager;
const { slug, env } = ctx.params;
if (env && _.isEmpty(_.find(Service.getEnvironments(), { name: env }))) return ctx.badData(null, [{ messages: [{ id: 'request.error.environment.unknow' }] }]);
const model = Service[slug](env);
const model = _.has(Service, slug) ? Service[slug](env) : undefined;
if (_.isUndefined(model)) return ctx.badData(null, [{ messages: [{ id: 'request.error.config' }] }]);
if (_.isFunction(model)) return ctx.badData(null, [{ messages: [{ id: 'request.error.environment.required' }] }]);
ctx.send(model);
},
@ -43,10 +65,18 @@ module.exports = {
if (env && _.isEmpty(_.find(Service.getEnvironments(), { name: env }))) return ctx.badData(null, [{ messages: [{ id: 'request.error.environment.unknow' }] }]);
const model = Service[slug](env);
let model;
if (slug === 'database') {
const name = params.database;
model = Service.database(name, env);
if (!_.find(Service.getDatabases(env), { name })) model = undefined;
delete params.database;
} else model = _.has(Service, slug) ? Service[slug](env) : undefined;
if (_.isUndefined(model)) return ctx.badData(null, [{ messages: [{ id: 'request.error.config' }] }]);
if (_.isFunction(model)) return ctx.badData(null, [{ messages: [{ id: 'request.error.environment.required' }] }]);
const items = Service.getItems(model);

View File

@ -37,7 +37,7 @@
"eslint-config-airbnb-base": "^9.0.0",
"eslint-config-prettier": "^2.3.0",
"eslint-import-resolver-webpack": "^0.6.0",
"eslint-plugin-babel": "^4.1.1",
"eslint-plugin-babel": "^4.1.2",
"eslint-plugin-import": "^2.0.1",
"eslint-plugin-jsx-a11y": "^2.2.3",
"eslint-plugin-react": "^6.4.1",

View File

@ -170,7 +170,9 @@ module.exports = {
name: 'form.security.item.xframe.allow-from',
value: 'ALLOW-FROM',
items: [{
name: '',
type: 'string',
value: '',
validations: {
required: true
}
@ -253,6 +255,75 @@ module.exports = {
]
}),
database: (name, env) => ({
name: 'form.databases.name',
description: 'form.databases.description',
sections: [
{
name: '',
items: [
{
name: 'form.databases.item.provider',
target: `databases.connections.${name}.connector`,
type: 'string',
value: _.get(strapi.config, `environments.${env}.databases.connections.${name}.connector`, null),
validations: {
required: true
}
},
{
name: 'form.databases.item.host',
target: `databases.connections.${name}.settings.host`,
type: 'string',
value: _.get(strapi.config, `environments.${env}.databases.connections.${name}.settings.host`, null),
validations: {
required: true
}
},
{
name: 'form.databases.item.username',
target: `databases.connections.${name}.settings.username`,
type: 'string',
value: _.get(strapi.config, `environments.${env}.databases.connections.${name}.settings.username`, null),
validations: {
required: true
}
},
{
name: 'form.databases.item.password',
target: `databases.connections.${name}.settings.password`,
type: 'string',
value: _.get(strapi.config, `environments.${env}.databases.connections.${name}.settings.password`, null),
validations: {}
},
{
name: 'form.databases.item.database',
target: `databases.connections.${name}.settings.database`,
type: 'string',
value: _.get(strapi.config, `environments.${env}.databases.connections.${name}.settings.database`, null),
validations: {
required: true
}
}
]
},
{
name: '',
items: [
{
name: 'form.databases.item.default',
target: `databases.defaultConnection`,
type: 'string',
value: _.get(strapi.config, `environments.${env}.databases.defaultConnection`, null),
validations: {
required: true
}
}
]
}
]
}),
getEnvironments: () => {
return _.map(_.keys(strapi.config.environments), environment => {
return {
@ -271,6 +342,22 @@ module.exports = {
});
},
getDatabases: env => {
const databases = [];
_.forEach(strapi.config.environments[env].databases.connections, (connection, name) => {
databases.push({
provider: connection.connector,
name,
host: connection.settings.host,
database: connection.settings.database,
active: (strapi.config.environments[env].databases.defaultConnection = name)
});
});
return databases;
},
getItems: model => _.flatten(_.map(model.sections, section => section.items)),
cleanParams: (params, items) => {