Pierre Noël 57d7d876b7
Fix/#4513/ability to use a sub path behind a proxy (#5833)
* add possibility to use strapi on a non-root base url path

* fix documentation password form

* use server.url and admin.url in config

Signed-off-by: Pierre Noël <pierre.noel@strapi.io>

* update doc proxy

Signed-off-by: Pierre Noël <pierre.noel@strapi.io>

* move server.url location in config

Signed-off-by: Pierre Noël <pierre.noel@strapi.io>

* refacto

Signed-off-by: Pierre Noël <pierre.noel@strapi.io>

* add possibility to put relative urls

Signed-off-by: Pierre Noël <pierre.noel@strapi.io>

* allow '/' as an admin url + refacto

Signed-off-by: Pierre Noël <pierre.noel@strapi.io>

* update yarn.lock

Signed-off-by: Pierre Noël <petersg83@gmail.com>

* refacto

Signed-off-by: Pierre Noël <petersg83@gmail.com>

* Remove default proxy option

Signed-off-by: Alexandre Bodin <bodin.alex@gmail.com>

* fix github provider

Signed-off-by: Pierre Noël <petersg83@gmail.com>

* fix github login

Signed-off-by: Pierre Noël <petersg83@gmail.com>

* Remove files that should be here

Signed-off-by: Alexandre Bodin <bodin.alex@gmail.com>

Co-authored-by: Pierre Noël <pierre.noel@strapi.io>
Co-authored-by: Alexandre Bodin <bodin.alex@gmail.com>
2020-05-08 13:50:00 +02:00

98 lines
2.5 KiB
JavaScript

'use strict';
const dotenv = require('dotenv');
dotenv.config({ path: process.env.ENV_PATH });
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
const os = require('os');
const path = require('path');
const _ = require('lodash');
const createConfigProvider = require('./config-provider');
const loadConfigDir = require('./config-loader');
const getPrefixedDeps = require('../../utils/get-prefixed-dependencies');
const loadPolicies = require('../load-policies');
const loadFunctions = require('../load-functions');
const { version: strapiVersion } = require(path.join(__dirname, '../../../package.json'));
const CONFIG_PATHS = {
admin: 'admin',
api: 'api',
config: 'config',
controllers: 'controllers',
models: 'models',
plugins: 'plugins',
policies: 'policies',
tmp: '.tmp',
services: 'services',
static: 'public',
validators: 'validators',
views: 'views',
};
const defaultConfig = {
server: {
host: process.env.HOST || os.hostname() || 'localhost',
port: process.env.PORT || 1337,
cron: { enabled: false },
admin: { autoOpen: false },
},
admin: {},
middleware: {
timeout: 1000,
load: {
before: ['responseTime', 'logger', 'cors', 'responses', 'gzip'],
order: [],
after: ['parser', 'router'],
},
settings: {},
},
hook: {
timeout: 1000,
load: { before: [], order: [], after: [] },
settings: {},
},
routes: {},
functions: {},
policies: {},
};
module.exports = (dir, initialConfig = {}) => {
const { autoReload = false, serveAdminPanel = true } = initialConfig;
const pkgJSON = require(path.resolve(dir, 'package.json'));
const configDir = path.resolve(dir || process.cwd(), 'config');
const rootConfig = {
launchedAt: Date.now(),
appPath: dir,
paths: CONFIG_PATHS,
serveAdminPanel,
autoReload,
environment: process.env.NODE_ENV,
uuid: _.get(pkgJSON, 'strapi.uuid'),
info: {
...pkgJSON,
strapi: strapiVersion,
},
installedPlugins: getPrefixedDeps('strapi-plugin', pkgJSON),
installedMiddlewares: getPrefixedDeps('strapi-middleware', pkgJSON),
installedHooks: getPrefixedDeps('strapi-hook', pkgJSON),
};
const baseConfig = {
...loadConfigDir(configDir),
policies: loadPolicies(path.resolve(configDir, 'policies')),
functions: loadFunctions(path.resolve(configDir, 'functions')),
};
const envDir = path.resolve(configDir, 'env', process.env.NODE_ENV);
const envConfig = loadConfigDir(envDir);
return createConfigProvider(_.merge(rootConfig, defaultConfig, baseConfig, envConfig));
};