From d44a6f68ee7a17a57af14fde366f65b4280bf28f Mon Sep 17 00:00:00 2001 From: Alexandre Bodin Date: Mon, 2 Aug 2021 17:54:49 +0200 Subject: [PATCH 1/5] Migrate admin to programmatic loading --- jsconfig.json | 3 +- .../ee/{ => server}/config/admin-actions.js | 0 .../config/functions/bootstrap.js | 5 +-- packages/core/admin/ee/server/config/index.js | 8 +++++ .../admin/ee/{ => server}/config/routes.json | 0 .../controllers/authentication.js | 0 .../controllers/authentication/constants.js | 0 .../controllers/authentication/index.js | 0 .../controllers/authentication/middlewares.js | 2 +- .../controllers/authentication/utils.js | 0 .../core/admin/ee/server/controllers/index.js | 8 +++++ .../ee/{ => server}/controllers/permission.js | 4 +-- .../admin/ee/{ => server}/controllers/role.js | 4 +-- .../admin/ee/{ => server}/controllers/user.js | 2 +- packages/core/admin/ee/server/index.js | 8 +++++ .../services/__tests__/passport.test.js | 2 +- .../services/__tests__/sso.test.js | 0 .../core/admin/ee/server/services/index.js | 6 ++++ .../ee/{ => server}/services/passport.js | 2 +- .../services/passport/provider-registry.js | 0 .../ee/{ => server}/services/passport/sso.js | 2 +- .../admin/ee/{ => server}/services/role.js | 0 .../tests/provider-login.test.e2e.js | 6 ++-- .../{ => server}/validation/authentication.js | 0 .../ee/{ => server}/validation/permission.js | 2 +- .../admin/ee/{ => server}/validation/role.js | 0 .../admin/ee/{ => server}/validation/user.js | 2 +- packages/core/admin/ee/strapi-server.js | 3 ++ .../{ => server}/config/admin-actions.js | 0 .../{ => server}/config/admin-conditions.js | 0 .../config/email-templates/forgot-password.js | 0 .../config/functions/bootstrap.js | 7 ---- .../{ => server}/config/functions/register.js | 0 packages/core/admin/server/config/index.js | 15 ++++++++ .../core/admin/{ => server}/config/layout.js | 0 .../permissions-fields-to-properties.js | 0 .../config/policies/hasPermissions.js | 0 .../config/policies/isAuthenticatedAdmin.js | 0 .../admin/{ => server}/config/routes.json | 0 .../admin/{ => server}/config/settings.js | 0 .../content-types}/Permission.js | 0 .../{models => server/content-types}/Role.js | 0 .../{models => server/content-types}/User.js | 0 .../core/admin/server/content-types/index.js | 7 ++++ .../{ => server}/controllers/Webhooks.js | 0 .../controllers/__tests__/admin.test.js | 0 .../controllers/__tests__/permission.test.js | 2 +- .../controllers/__tests__/role.test.js | 2 +- .../controllers/__tests__/user.test.js | 2 +- .../admin/{ => server}/controllers/admin.js | 0 .../controllers/authenticated-user.js | 0 .../controllers/authentication.js | 0 .../controllers/formatters/conditions.js | 0 .../formatters/format-actions-by-sections.js | 0 .../controllers/formatters/index.js | 0 .../core/admin/server/controllers/index.js | 11 ++++++ .../{ => server}/controllers/permission.js | 0 .../admin/{ => server}/controllers/role.js | 0 .../admin/{ => server}/controllers/user.js | 0 .../action/__tests__/action-domain.test.js | 0 .../action/__tests__/action-provider.test.js | 0 .../admin/{ => server}/domain/action/index.js | 0 .../{ => server}/domain/action/provider.js | 0 .../__tests__/condition-domain.test.js | 0 .../__tests__/condition-provider.test.js | 0 .../{ => server}/domain/condition/index.js | 0 .../{ => server}/domain/condition/provider.js | 0 .../__tests__/permission-domain.test.js | 0 .../{ => server}/domain/permission/index.js | 0 .../core/admin/{ => server}/domain/role.js | 0 .../core/admin/{ => server}/domain/user.js | 0 packages/core/admin/server/index.js | 18 ++++++++++ .../services/__tests__/action.test.js | 0 .../services/__tests__/auth.test.js | 0 .../services/__tests__/content-type.test.js | 0 .../services/__tests__/metrics.test.js | 0 .../services/__tests__/passport.test.js | 0 .../services/__tests__/permission.test.js | 0 .../__tests__/permissions-manager.test.js | 0 .../__tests__/permissions.engine.test.js | 0 ...ermissions.section-builder.section.test.js | 0 .../services/__tests__/role.test.js | 0 .../services/__tests__/token.test.js | 0 .../services/__tests__/user.test.js | 0 .../admin/{ => server}/services/action.js | 0 .../core/admin/{ => server}/services/auth.js | 0 .../admin/{ => server}/services/condition.js | 0 .../admin/{ => server}/services/constants.js | 0 .../{ => server}/services/content-type.js | 0 packages/core/admin/server/services/index.js | 15 ++++++++ .../admin/{ => server}/services/metrics.js | 0 .../admin/{ => server}/services/passport.js | 0 .../services/passport/local-strategy.js | 0 .../admin/{ => server}/services/permission.js | 0 .../services/permission/engine-hooks.js | 0 .../services/permission/engine.js | 0 .../permission/permissions-manager/index.js | 0 .../permissions-manager/query-builers.js | 0 .../services/permission/queries.js | 0 .../permission/sections-builder/builder.js | 0 .../permission/sections-builder/handlers.js | 0 .../permission/sections-builder/index.js | 0 .../permission/sections-builder/section.js | 0 .../permission/sections-builder/utils.js | 0 .../core/admin/{ => server}/services/role.js | 0 .../core/admin/{ => server}/services/token.js | 0 .../core/admin/{ => server}/services/user.js | 0 .../{ => server}/tests/admin-auth.test.e2e.js | 6 ++-- .../admin-authenticated-user.test.e2e.js | 4 +-- .../tests/admin-permission.test.e2e.js | 4 +-- .../admin-permissions-conditions.test.e2e.js | 8 ++--- .../{ => server}/tests/admin-role.test.e2e.js | 4 +-- .../{ => server}/tests/admin-user.test.e2e.js | 6 ++-- .../core/admin/{ => server}/utils/index.d.ts | 0 .../core/admin/{ => server}/utils/index.js | 0 .../__tests__/common-functions.test.js | 0 .../validation/action-provider.js | 0 .../authentication/forgot-password.js | 0 .../validation/authentication/index.js | 0 .../validation/authentication/register.js | 0 .../authentication/reset-password.js | 0 .../check-fields-are-correctly-nested.js | 0 .../check-fields-dont-have-duplicates.js | 0 .../validation/common-functions/index.js | 0 .../validation/common-validators.js | 0 .../{ => server}/validation/permission.js | 0 .../validation/policies/hasPermissions.js | 0 .../admin/{ => server}/validation/role.js | 0 .../admin/{ => server}/validation/user.js | 0 packages/core/admin/strapi-server.js | 17 +++++++++ packages/core/strapi/lib/Strapi.js | 3 +- packages/core/strapi/lib/core/load-admin.js | 36 ------------------- packages/core/strapi/lib/core/load-modules.js | 5 +-- packages/core/strapi/lib/utils/ee.js | 2 +- packages/core/strapi/package.json | 1 + packages/core/utils/lib/content-types.js | 1 + packages/core/utils/lib/policy.js | 8 +++-- 137 files changed, 165 insertions(+), 88 deletions(-) rename packages/core/admin/ee/{ => server}/config/admin-actions.js (100%) rename packages/core/admin/ee/{ => server}/config/functions/bootstrap.js (74%) create mode 100644 packages/core/admin/ee/server/config/index.js rename packages/core/admin/ee/{ => server}/config/routes.json (100%) rename packages/core/admin/ee/{ => server}/controllers/authentication.js (100%) rename packages/core/admin/ee/{ => server}/controllers/authentication/constants.js (100%) rename packages/core/admin/ee/{ => server}/controllers/authentication/index.js (100%) rename packages/core/admin/ee/{ => server}/controllers/authentication/middlewares.js (98%) rename packages/core/admin/ee/{ => server}/controllers/authentication/utils.js (100%) create mode 100644 packages/core/admin/ee/server/controllers/index.js rename packages/core/admin/ee/{ => server}/controllers/permission.js (75%) rename packages/core/admin/ee/{ => server}/controllers/role.js (95%) rename packages/core/admin/ee/{ => server}/controllers/user.js (94%) create mode 100644 packages/core/admin/ee/server/index.js rename packages/core/admin/ee/{ => server}/services/__tests__/passport.test.js (97%) rename packages/core/admin/ee/{ => server}/services/__tests__/sso.test.js (100%) create mode 100644 packages/core/admin/ee/server/services/index.js rename packages/core/admin/ee/{ => server}/services/passport.js (88%) rename packages/core/admin/ee/{ => server}/services/passport/provider-registry.js (100%) rename packages/core/admin/ee/{ => server}/services/passport/sso.js (89%) rename packages/core/admin/ee/{ => server}/services/role.js (100%) rename packages/core/admin/ee/{ => server}/tests/provider-login.test.e2e.js (96%) rename packages/core/admin/ee/{ => server}/validation/authentication.js (100%) rename packages/core/admin/ee/{ => server}/validation/permission.js (83%) rename packages/core/admin/ee/{ => server}/validation/role.js (100%) rename packages/core/admin/ee/{ => server}/validation/user.js (91%) create mode 100644 packages/core/admin/ee/strapi-server.js rename packages/core/admin/{ => server}/config/admin-actions.js (100%) rename packages/core/admin/{ => server}/config/admin-conditions.js (100%) rename packages/core/admin/{ => server}/config/email-templates/forgot-password.js (100%) rename packages/core/admin/{ => server}/config/functions/bootstrap.js (90%) rename packages/core/admin/{ => server}/config/functions/register.js (100%) create mode 100644 packages/core/admin/server/config/index.js rename packages/core/admin/{ => server}/config/layout.js (100%) rename packages/core/admin/{ => server}/config/migrations/permissions-fields-to-properties.js (100%) rename packages/core/admin/{ => server}/config/policies/hasPermissions.js (100%) rename packages/core/admin/{ => server}/config/policies/isAuthenticatedAdmin.js (100%) rename packages/core/admin/{ => server}/config/routes.json (100%) rename packages/core/admin/{ => server}/config/settings.js (100%) rename packages/core/admin/{models => server/content-types}/Permission.js (100%) rename packages/core/admin/{models => server/content-types}/Role.js (100%) rename packages/core/admin/{models => server/content-types}/User.js (100%) create mode 100644 packages/core/admin/server/content-types/index.js rename packages/core/admin/{ => server}/controllers/Webhooks.js (100%) rename packages/core/admin/{ => server}/controllers/__tests__/admin.test.js (100%) rename packages/core/admin/{ => server}/controllers/__tests__/permission.test.js (97%) rename packages/core/admin/{ => server}/controllers/__tests__/role.test.js (98%) rename packages/core/admin/{ => server}/controllers/__tests__/user.test.js (98%) rename packages/core/admin/{ => server}/controllers/admin.js (100%) rename packages/core/admin/{ => server}/controllers/authenticated-user.js (100%) rename packages/core/admin/{ => server}/controllers/authentication.js (100%) rename packages/core/admin/{ => server}/controllers/formatters/conditions.js (100%) rename packages/core/admin/{ => server}/controllers/formatters/format-actions-by-sections.js (100%) rename packages/core/admin/{ => server}/controllers/formatters/index.js (100%) create mode 100644 packages/core/admin/server/controllers/index.js rename packages/core/admin/{ => server}/controllers/permission.js (100%) rename packages/core/admin/{ => server}/controllers/role.js (100%) rename packages/core/admin/{ => server}/controllers/user.js (100%) rename packages/core/admin/{ => server}/domain/action/__tests__/action-domain.test.js (100%) rename packages/core/admin/{ => server}/domain/action/__tests__/action-provider.test.js (100%) rename packages/core/admin/{ => server}/domain/action/index.js (100%) rename packages/core/admin/{ => server}/domain/action/provider.js (100%) rename packages/core/admin/{ => server}/domain/condition/__tests__/condition-domain.test.js (100%) rename packages/core/admin/{ => server}/domain/condition/__tests__/condition-provider.test.js (100%) rename packages/core/admin/{ => server}/domain/condition/index.js (100%) rename packages/core/admin/{ => server}/domain/condition/provider.js (100%) rename packages/core/admin/{ => server}/domain/permission/__tests__/permission-domain.test.js (100%) rename packages/core/admin/{ => server}/domain/permission/index.js (100%) rename packages/core/admin/{ => server}/domain/role.js (100%) rename packages/core/admin/{ => server}/domain/user.js (100%) create mode 100644 packages/core/admin/server/index.js rename packages/core/admin/{ => server}/services/__tests__/action.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/auth.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/content-type.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/metrics.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/passport.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/permission.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/permissions-manager.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/permissions.engine.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/permissions.section-builder.section.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/role.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/token.test.js (100%) rename packages/core/admin/{ => server}/services/__tests__/user.test.js (100%) rename packages/core/admin/{ => server}/services/action.js (100%) rename packages/core/admin/{ => server}/services/auth.js (100%) rename packages/core/admin/{ => server}/services/condition.js (100%) rename packages/core/admin/{ => server}/services/constants.js (100%) rename packages/core/admin/{ => server}/services/content-type.js (100%) create mode 100644 packages/core/admin/server/services/index.js rename packages/core/admin/{ => server}/services/metrics.js (100%) rename packages/core/admin/{ => server}/services/passport.js (100%) rename packages/core/admin/{ => server}/services/passport/local-strategy.js (100%) rename packages/core/admin/{ => server}/services/permission.js (100%) rename packages/core/admin/{ => server}/services/permission/engine-hooks.js (100%) rename packages/core/admin/{ => server}/services/permission/engine.js (100%) rename packages/core/admin/{ => server}/services/permission/permissions-manager/index.js (100%) rename packages/core/admin/{ => server}/services/permission/permissions-manager/query-builers.js (100%) rename packages/core/admin/{ => server}/services/permission/queries.js (100%) rename packages/core/admin/{ => server}/services/permission/sections-builder/builder.js (100%) rename packages/core/admin/{ => server}/services/permission/sections-builder/handlers.js (100%) rename packages/core/admin/{ => server}/services/permission/sections-builder/index.js (100%) rename packages/core/admin/{ => server}/services/permission/sections-builder/section.js (100%) rename packages/core/admin/{ => server}/services/permission/sections-builder/utils.js (100%) rename packages/core/admin/{ => server}/services/role.js (100%) rename packages/core/admin/{ => server}/services/token.js (100%) rename packages/core/admin/{ => server}/services/user.js (100%) rename packages/core/admin/{ => server}/tests/admin-auth.test.e2e.js (98%) rename packages/core/admin/{ => server}/tests/admin-authenticated-user.test.e2e.js (96%) rename packages/core/admin/{ => server}/tests/admin-permission.test.e2e.js (99%) rename packages/core/admin/{ => server}/tests/admin-permissions-conditions.test.e2e.js (95%) rename packages/core/admin/{ => server}/tests/admin-role.test.e2e.js (99%) rename packages/core/admin/{ => server}/tests/admin-user.test.e2e.js (97%) rename packages/core/admin/{ => server}/utils/index.d.ts (100%) rename packages/core/admin/{ => server}/utils/index.js (100%) rename packages/core/admin/{ => server}/validation/__tests__/common-functions.test.js (100%) rename packages/core/admin/{ => server}/validation/action-provider.js (100%) rename packages/core/admin/{ => server}/validation/authentication/forgot-password.js (100%) rename packages/core/admin/{ => server}/validation/authentication/index.js (100%) rename packages/core/admin/{ => server}/validation/authentication/register.js (100%) rename packages/core/admin/{ => server}/validation/authentication/reset-password.js (100%) rename packages/core/admin/{ => server}/validation/common-functions/check-fields-are-correctly-nested.js (100%) rename packages/core/admin/{ => server}/validation/common-functions/check-fields-dont-have-duplicates.js (100%) rename packages/core/admin/{ => server}/validation/common-functions/index.js (100%) rename packages/core/admin/{ => server}/validation/common-validators.js (100%) rename packages/core/admin/{ => server}/validation/permission.js (100%) rename packages/core/admin/{ => server}/validation/policies/hasPermissions.js (100%) rename packages/core/admin/{ => server}/validation/role.js (100%) rename packages/core/admin/{ => server}/validation/user.js (100%) create mode 100644 packages/core/admin/strapi-server.js delete mode 100644 packages/core/strapi/lib/core/load-admin.js diff --git a/jsconfig.json b/jsconfig.json index 64ef4dc2b4..a22cd8de36 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -1,8 +1,9 @@ { "compilerOptions": { + "rootDir": ".", "module": "commonjs", "target": "es6" }, "include": ["packages/**/*"], - "exclude": ["**/node_modules/*"] + "exclude": ["node_modules"] } diff --git a/packages/core/admin/ee/config/admin-actions.js b/packages/core/admin/ee/server/config/admin-actions.js similarity index 100% rename from packages/core/admin/ee/config/admin-actions.js rename to packages/core/admin/ee/server/config/admin-actions.js diff --git a/packages/core/admin/ee/config/functions/bootstrap.js b/packages/core/admin/ee/server/config/functions/bootstrap.js similarity index 74% rename from packages/core/admin/ee/config/functions/bootstrap.js rename to packages/core/admin/ee/server/config/functions/bootstrap.js index 549465e28a..be3a72d575 100644 --- a/packages/core/admin/ee/config/functions/bootstrap.js +++ b/packages/core/admin/ee/server/config/functions/bootstrap.js @@ -2,11 +2,12 @@ // eslint-disable-next-line node/no-extraneous-require const { features } = require('@strapi/strapi/lib/utils/ee'); -const executeCEBootstrap = require('../../../config/functions/bootstrap'); +const executeCEBootstrap = require('../../../../server/config/functions/bootstrap'); const { features: { sso: ssoActions }, } = require('../admin-actions'); -const { getService } = require('../../../utils'); + +const { getService } = require('../../../../server/utils'); module.exports = async () => { const { actionProvider } = getService('permission'); diff --git a/packages/core/admin/ee/server/config/index.js b/packages/core/admin/ee/server/config/index.js new file mode 100644 index 0000000000..8a72fc8649 --- /dev/null +++ b/packages/core/admin/ee/server/config/index.js @@ -0,0 +1,8 @@ +'use strict'; + +module.exports = { + functions: { + bootstrap: require('./functions/bootstrap'), + }, + routes: require('./routes').routes, +}; diff --git a/packages/core/admin/ee/config/routes.json b/packages/core/admin/ee/server/config/routes.json similarity index 100% rename from packages/core/admin/ee/config/routes.json rename to packages/core/admin/ee/server/config/routes.json diff --git a/packages/core/admin/ee/controllers/authentication.js b/packages/core/admin/ee/server/controllers/authentication.js similarity index 100% rename from packages/core/admin/ee/controllers/authentication.js rename to packages/core/admin/ee/server/controllers/authentication.js diff --git a/packages/core/admin/ee/controllers/authentication/constants.js b/packages/core/admin/ee/server/controllers/authentication/constants.js similarity index 100% rename from packages/core/admin/ee/controllers/authentication/constants.js rename to packages/core/admin/ee/server/controllers/authentication/constants.js diff --git a/packages/core/admin/ee/controllers/authentication/index.js b/packages/core/admin/ee/server/controllers/authentication/index.js similarity index 100% rename from packages/core/admin/ee/controllers/authentication/index.js rename to packages/core/admin/ee/server/controllers/authentication/index.js diff --git a/packages/core/admin/ee/controllers/authentication/middlewares.js b/packages/core/admin/ee/server/controllers/authentication/middlewares.js similarity index 98% rename from packages/core/admin/ee/controllers/authentication/middlewares.js rename to packages/core/admin/ee/server/controllers/authentication/middlewares.js index d3091bc8c7..3da62eadf2 100644 --- a/packages/core/admin/ee/controllers/authentication/middlewares.js +++ b/packages/core/admin/ee/server/controllers/authentication/middlewares.js @@ -2,7 +2,7 @@ const passport = require('koa-passport'); -const { getService } = require('../../../utils'); +const { getService } = require('../../../../server/utils'); const utils = require('./utils'); const defaultConnectionError = () => new Error('Invalid connection payload'); diff --git a/packages/core/admin/ee/controllers/authentication/utils.js b/packages/core/admin/ee/server/controllers/authentication/utils.js similarity index 100% rename from packages/core/admin/ee/controllers/authentication/utils.js rename to packages/core/admin/ee/server/controllers/authentication/utils.js diff --git a/packages/core/admin/ee/server/controllers/index.js b/packages/core/admin/ee/server/controllers/index.js new file mode 100644 index 0000000000..c705f4070a --- /dev/null +++ b/packages/core/admin/ee/server/controllers/index.js @@ -0,0 +1,8 @@ +'use strict'; + +module.exports = { + authentication: require('./authentication'), + permission: require('./permission'), + role: require('./role'), + user: require('./user'), +}; diff --git a/packages/core/admin/ee/controllers/permission.js b/packages/core/admin/ee/server/controllers/permission.js similarity index 75% rename from packages/core/admin/ee/controllers/permission.js rename to packages/core/admin/ee/server/controllers/permission.js index 48d3007c1c..f000e1d53e 100644 --- a/packages/core/admin/ee/controllers/permission.js +++ b/packages/core/admin/ee/server/controllers/permission.js @@ -1,7 +1,7 @@ 'use strict'; -const { getService } = require('../../utils'); -const { formatConditions } = require('../../controllers/formatters'); +const { getService } = require('../../../server/utils'); +const { formatConditions } = require('../../../server/controllers/formatters'); module.exports = { async getAll(ctx) { diff --git a/packages/core/admin/ee/controllers/role.js b/packages/core/admin/ee/server/controllers/role.js similarity index 95% rename from packages/core/admin/ee/controllers/role.js rename to packages/core/admin/ee/server/controllers/role.js index e8c523686f..31eaa90e8d 100644 --- a/packages/core/admin/ee/controllers/role.js +++ b/packages/core/admin/ee/server/controllers/role.js @@ -6,9 +6,9 @@ const { validateRoleDeleteInput, validateRolesDeleteInput, } = require('../validation/role'); -const { getService } = require('../../utils'); +const { getService } = require('../../../server//utils'); const { validatedUpdatePermissionsInput } = require('../validation/permission'); -const { SUPER_ADMIN_CODE } = require('../../services/constants'); +const { SUPER_ADMIN_CODE } = require('../../../server/services/constants'); module.exports = { /** diff --git a/packages/core/admin/ee/controllers/user.js b/packages/core/admin/ee/server/controllers/user.js similarity index 94% rename from packages/core/admin/ee/controllers/user.js rename to packages/core/admin/ee/server/controllers/user.js index 2d674113b3..3bf5fa7c16 100644 --- a/packages/core/admin/ee/controllers/user.js +++ b/packages/core/admin/ee/server/controllers/user.js @@ -2,7 +2,7 @@ const { pick } = require('lodash/fp'); const { validateUserCreationInput } = require('../validation/user'); -const { getService } = require('../../utils'); +const { getService } = require('../../../server/utils'); const pickUserCreationAttributes = pick(['firstname', 'lastname', 'email', 'roles']); diff --git a/packages/core/admin/ee/server/index.js b/packages/core/admin/ee/server/index.js new file mode 100644 index 0000000000..6fa8f69995 --- /dev/null +++ b/packages/core/admin/ee/server/index.js @@ -0,0 +1,8 @@ +'use strict'; + +module.exports = { + // TODO: update load middleware to not load the admin middleware from here + config: require('./config'), + services: require('./services'), + controllers: require('./controllers'), +}; diff --git a/packages/core/admin/ee/services/__tests__/passport.test.js b/packages/core/admin/ee/server/services/__tests__/passport.test.js similarity index 97% rename from packages/core/admin/ee/services/__tests__/passport.test.js rename to packages/core/admin/ee/server/services/__tests__/passport.test.js index b006425ab9..c2da37fbd9 100644 --- a/packages/core/admin/ee/services/__tests__/passport.test.js +++ b/packages/core/admin/ee/server/services/__tests__/passport.test.js @@ -7,7 +7,7 @@ jest.mock('koa-passport', () => ({ const passport = require('koa-passport'); -const { init } = require('../../../services/passport'); +const { init } = require('../../../../server/services/passport'); describe('Passport', () => { afterEach(() => { diff --git a/packages/core/admin/ee/services/__tests__/sso.test.js b/packages/core/admin/ee/server/services/__tests__/sso.test.js similarity index 100% rename from packages/core/admin/ee/services/__tests__/sso.test.js rename to packages/core/admin/ee/server/services/__tests__/sso.test.js diff --git a/packages/core/admin/ee/server/services/index.js b/packages/core/admin/ee/server/services/index.js new file mode 100644 index 0000000000..13e2e6a0f3 --- /dev/null +++ b/packages/core/admin/ee/server/services/index.js @@ -0,0 +1,6 @@ +'use strict'; + +module.exports = { + passport: require('./passport'), + role: require('./role'), +}; diff --git a/packages/core/admin/ee/services/passport.js b/packages/core/admin/ee/server/services/passport.js similarity index 88% rename from packages/core/admin/ee/services/passport.js rename to packages/core/admin/ee/server/services/passport.js index f3dd83b9de..d57bcb06f7 100644 --- a/packages/core/admin/ee/services/passport.js +++ b/packages/core/admin/ee/server/services/passport.js @@ -3,7 +3,7 @@ // eslint-disable-next-line node/no-extraneous-require const { features } = require('@strapi/strapi/lib/utils/ee'); -const createLocalStrategy = require('../../services/passport/local-strategy'); +const createLocalStrategy = require('../../../server/services/passport/local-strategy'); const sso = require('./passport/sso'); const getPassportStrategies = () => { diff --git a/packages/core/admin/ee/services/passport/provider-registry.js b/packages/core/admin/ee/server/services/passport/provider-registry.js similarity index 100% rename from packages/core/admin/ee/services/passport/provider-registry.js rename to packages/core/admin/ee/server/services/passport/provider-registry.js diff --git a/packages/core/admin/ee/services/passport/sso.js b/packages/core/admin/ee/server/services/passport/sso.js similarity index 89% rename from packages/core/admin/ee/services/passport/sso.js rename to packages/core/admin/ee/server/services/passport/sso.js index 2da3937f23..296496613b 100644 --- a/packages/core/admin/ee/services/passport/sso.js +++ b/packages/core/admin/ee/server/services/passport/sso.js @@ -1,6 +1,6 @@ 'use strict'; -const { authEventsMapper } = require('../../../services/passport'); +const { authEventsMapper } = require('../../../../server/services/passport'); const createProviderRegistry = require('./provider-registry'); const providerRegistry = createProviderRegistry(); diff --git a/packages/core/admin/ee/services/role.js b/packages/core/admin/ee/server/services/role.js similarity index 100% rename from packages/core/admin/ee/services/role.js rename to packages/core/admin/ee/server/services/role.js diff --git a/packages/core/admin/ee/tests/provider-login.test.e2e.js b/packages/core/admin/ee/server/tests/provider-login.test.e2e.js similarity index 96% rename from packages/core/admin/ee/tests/provider-login.test.e2e.js rename to packages/core/admin/ee/server/tests/provider-login.test.e2e.js index 05b127f59e..fa27919c91 100644 --- a/packages/core/admin/ee/tests/provider-login.test.e2e.js +++ b/packages/core/admin/ee/server/tests/provider-login.test.e2e.js @@ -1,8 +1,8 @@ 'use strict'; -const { createStrapiInstance } = require('../../../../../test/helpers/strapi'); -const { createAuthRequest, createRequest } = require('../../../../../test/helpers/request'); -const { createUtils } = require('../../../../../test/helpers/utils'); +const { createStrapiInstance } = require('../../../../../../test/helpers/strapi'); +const { createAuthRequest, createRequest } = require('../../../../../../test/helpers/request'); +const { createUtils } = require('../../../../../../test/helpers/utils'); const edition = process.env.STRAPI_DISABLE_EE === 'true' ? 'CE' : 'EE'; diff --git a/packages/core/admin/ee/validation/authentication.js b/packages/core/admin/ee/server/validation/authentication.js similarity index 100% rename from packages/core/admin/ee/validation/authentication.js rename to packages/core/admin/ee/server/validation/authentication.js diff --git a/packages/core/admin/ee/validation/permission.js b/packages/core/admin/ee/server/validation/permission.js similarity index 83% rename from packages/core/admin/ee/validation/permission.js rename to packages/core/admin/ee/server/validation/permission.js index c872e0cb36..a5863ac334 100644 --- a/packages/core/admin/ee/validation/permission.js +++ b/packages/core/admin/ee/server/validation/permission.js @@ -1,7 +1,7 @@ 'use strict'; const { formatYupErrors } = require('@strapi/utils'); -const validators = require('../../validation/common-validators'); +const validators = require('../../../server/validation/common-validators'); const handleReject = error => Promise.reject(formatYupErrors(error)); diff --git a/packages/core/admin/ee/validation/role.js b/packages/core/admin/ee/server/validation/role.js similarity index 100% rename from packages/core/admin/ee/validation/role.js rename to packages/core/admin/ee/server/validation/role.js diff --git a/packages/core/admin/ee/validation/user.js b/packages/core/admin/ee/server/validation/user.js similarity index 91% rename from packages/core/admin/ee/validation/user.js rename to packages/core/admin/ee/server/validation/user.js index 397238f148..8396a72556 100644 --- a/packages/core/admin/ee/validation/user.js +++ b/packages/core/admin/ee/server/validation/user.js @@ -3,7 +3,7 @@ const { yup, formatYupErrors } = require('@strapi/utils'); // eslint-disable-next-line node/no-extraneous-require const { features } = require('@strapi/strapi/lib/utils/ee'); -const { schemas } = require('../../validation/user'); +const { schemas } = require('../../../server/validation/user'); const handleReject = error => Promise.reject(formatYupErrors(error)); diff --git a/packages/core/admin/ee/strapi-server.js b/packages/core/admin/ee/strapi-server.js new file mode 100644 index 0000000000..8a908be91d --- /dev/null +++ b/packages/core/admin/ee/strapi-server.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = require('./server'); diff --git a/packages/core/admin/config/admin-actions.js b/packages/core/admin/server/config/admin-actions.js similarity index 100% rename from packages/core/admin/config/admin-actions.js rename to packages/core/admin/server/config/admin-actions.js diff --git a/packages/core/admin/config/admin-conditions.js b/packages/core/admin/server/config/admin-conditions.js similarity index 100% rename from packages/core/admin/config/admin-conditions.js rename to packages/core/admin/server/config/admin-conditions.js diff --git a/packages/core/admin/config/email-templates/forgot-password.js b/packages/core/admin/server/config/email-templates/forgot-password.js similarity index 100% rename from packages/core/admin/config/email-templates/forgot-password.js rename to packages/core/admin/server/config/email-templates/forgot-password.js diff --git a/packages/core/admin/config/functions/bootstrap.js b/packages/core/admin/server/config/functions/bootstrap.js similarity index 90% rename from packages/core/admin/config/functions/bootstrap.js rename to packages/core/admin/server/config/functions/bootstrap.js index 6a7e3a2c6c..963a10287a 100644 --- a/packages/core/admin/config/functions/bootstrap.js +++ b/packages/core/admin/server/config/functions/bootstrap.js @@ -55,11 +55,4 @@ module.exports = async () => { await userService.displayWarningIfUsersDontHaveRole(); await syncAuthSettings(); - - strapi.admin.destroy = async () => { - const { conditionProvider, actionProvider } = getService('permission'); - - await conditionProvider.clear(); - await actionProvider.clear(); - }; }; diff --git a/packages/core/admin/config/functions/register.js b/packages/core/admin/server/config/functions/register.js similarity index 100% rename from packages/core/admin/config/functions/register.js rename to packages/core/admin/server/config/functions/register.js diff --git a/packages/core/admin/server/config/index.js b/packages/core/admin/server/config/index.js new file mode 100644 index 0000000000..2e797d4f8c --- /dev/null +++ b/packages/core/admin/server/config/index.js @@ -0,0 +1,15 @@ +'use strict'; + +module.exports = { + functions: { + bootstrap: require('./functions/bootstrap'), + register: require('./functions/register'), + }, + policies: { + hasPermissions: require('./policies/hasPermissions'), + isAuthenticatedAdmin: require('./policies/isAuthenticatedAdmin'), + }, + routes: require('./routes').routes, + layout: require('./layout'), + ...require('./settings'), +}; diff --git a/packages/core/admin/config/layout.js b/packages/core/admin/server/config/layout.js similarity index 100% rename from packages/core/admin/config/layout.js rename to packages/core/admin/server/config/layout.js diff --git a/packages/core/admin/config/migrations/permissions-fields-to-properties.js b/packages/core/admin/server/config/migrations/permissions-fields-to-properties.js similarity index 100% rename from packages/core/admin/config/migrations/permissions-fields-to-properties.js rename to packages/core/admin/server/config/migrations/permissions-fields-to-properties.js diff --git a/packages/core/admin/config/policies/hasPermissions.js b/packages/core/admin/server/config/policies/hasPermissions.js similarity index 100% rename from packages/core/admin/config/policies/hasPermissions.js rename to packages/core/admin/server/config/policies/hasPermissions.js diff --git a/packages/core/admin/config/policies/isAuthenticatedAdmin.js b/packages/core/admin/server/config/policies/isAuthenticatedAdmin.js similarity index 100% rename from packages/core/admin/config/policies/isAuthenticatedAdmin.js rename to packages/core/admin/server/config/policies/isAuthenticatedAdmin.js diff --git a/packages/core/admin/config/routes.json b/packages/core/admin/server/config/routes.json similarity index 100% rename from packages/core/admin/config/routes.json rename to packages/core/admin/server/config/routes.json diff --git a/packages/core/admin/config/settings.js b/packages/core/admin/server/config/settings.js similarity index 100% rename from packages/core/admin/config/settings.js rename to packages/core/admin/server/config/settings.js diff --git a/packages/core/admin/models/Permission.js b/packages/core/admin/server/content-types/Permission.js similarity index 100% rename from packages/core/admin/models/Permission.js rename to packages/core/admin/server/content-types/Permission.js diff --git a/packages/core/admin/models/Role.js b/packages/core/admin/server/content-types/Role.js similarity index 100% rename from packages/core/admin/models/Role.js rename to packages/core/admin/server/content-types/Role.js diff --git a/packages/core/admin/models/User.js b/packages/core/admin/server/content-types/User.js similarity index 100% rename from packages/core/admin/models/User.js rename to packages/core/admin/server/content-types/User.js diff --git a/packages/core/admin/server/content-types/index.js b/packages/core/admin/server/content-types/index.js new file mode 100644 index 0000000000..60fd154746 --- /dev/null +++ b/packages/core/admin/server/content-types/index.js @@ -0,0 +1,7 @@ +'use strict'; + +module.exports = { + permission: require('./Permission'), + user: require('./User'), + role: require('./Role'), +}; diff --git a/packages/core/admin/controllers/Webhooks.js b/packages/core/admin/server/controllers/Webhooks.js similarity index 100% rename from packages/core/admin/controllers/Webhooks.js rename to packages/core/admin/server/controllers/Webhooks.js diff --git a/packages/core/admin/controllers/__tests__/admin.test.js b/packages/core/admin/server/controllers/__tests__/admin.test.js similarity index 100% rename from packages/core/admin/controllers/__tests__/admin.test.js rename to packages/core/admin/server/controllers/__tests__/admin.test.js diff --git a/packages/core/admin/controllers/__tests__/permission.test.js b/packages/core/admin/server/controllers/__tests__/permission.test.js similarity index 97% rename from packages/core/admin/controllers/__tests__/permission.test.js rename to packages/core/admin/server/controllers/__tests__/permission.test.js index 5fad0c46d5..229c43db5f 100644 --- a/packages/core/admin/controllers/__tests__/permission.test.js +++ b/packages/core/admin/server/controllers/__tests__/permission.test.js @@ -1,6 +1,6 @@ 'use strict'; -const createContext = require('../../../../../test/helpers/create-context'); +const createContext = require('../../../../../../test/helpers/create-context'); const permissionController = require('../permission'); describe('Permission Controller', () => { diff --git a/packages/core/admin/controllers/__tests__/role.test.js b/packages/core/admin/server/controllers/__tests__/role.test.js similarity index 98% rename from packages/core/admin/controllers/__tests__/role.test.js rename to packages/core/admin/server/controllers/__tests__/role.test.js index ae66f1a00a..13d0177b44 100644 --- a/packages/core/admin/controllers/__tests__/role.test.js +++ b/packages/core/admin/server/controllers/__tests__/role.test.js @@ -1,6 +1,6 @@ 'use strict'; -const createContext = require('../../../../../test/helpers/create-context'); +const createContext = require('../../../../../../test/helpers/create-context'); const roleController = require('../role'); describe('Role controller', () => { diff --git a/packages/core/admin/controllers/__tests__/user.test.js b/packages/core/admin/server/controllers/__tests__/user.test.js similarity index 98% rename from packages/core/admin/controllers/__tests__/user.test.js rename to packages/core/admin/server/controllers/__tests__/user.test.js index dcca48697c..c6b30d3acc 100644 --- a/packages/core/admin/controllers/__tests__/user.test.js +++ b/packages/core/admin/server/controllers/__tests__/user.test.js @@ -1,6 +1,6 @@ 'use strict'; -const createContext = require('../../../../../test/helpers/create-context'); +const createContext = require('../../../../../../test/helpers/create-context'); const userController = require('../user'); describe('User Controller', () => { diff --git a/packages/core/admin/controllers/admin.js b/packages/core/admin/server/controllers/admin.js similarity index 100% rename from packages/core/admin/controllers/admin.js rename to packages/core/admin/server/controllers/admin.js diff --git a/packages/core/admin/controllers/authenticated-user.js b/packages/core/admin/server/controllers/authenticated-user.js similarity index 100% rename from packages/core/admin/controllers/authenticated-user.js rename to packages/core/admin/server/controllers/authenticated-user.js diff --git a/packages/core/admin/controllers/authentication.js b/packages/core/admin/server/controllers/authentication.js similarity index 100% rename from packages/core/admin/controllers/authentication.js rename to packages/core/admin/server/controllers/authentication.js diff --git a/packages/core/admin/controllers/formatters/conditions.js b/packages/core/admin/server/controllers/formatters/conditions.js similarity index 100% rename from packages/core/admin/controllers/formatters/conditions.js rename to packages/core/admin/server/controllers/formatters/conditions.js diff --git a/packages/core/admin/controllers/formatters/format-actions-by-sections.js b/packages/core/admin/server/controllers/formatters/format-actions-by-sections.js similarity index 100% rename from packages/core/admin/controllers/formatters/format-actions-by-sections.js rename to packages/core/admin/server/controllers/formatters/format-actions-by-sections.js diff --git a/packages/core/admin/controllers/formatters/index.js b/packages/core/admin/server/controllers/formatters/index.js similarity index 100% rename from packages/core/admin/controllers/formatters/index.js rename to packages/core/admin/server/controllers/formatters/index.js diff --git a/packages/core/admin/server/controllers/index.js b/packages/core/admin/server/controllers/index.js new file mode 100644 index 0000000000..a96d3cc6f4 --- /dev/null +++ b/packages/core/admin/server/controllers/index.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = { + admin: require('./admin'), + 'authenticated-user': require('./authenticated-user'), + authentication: require('./authentication'), + permission: require('./permission'), + role: require('./role'), + user: require('./user'), + webhooks: require('./Webhooks'), +}; diff --git a/packages/core/admin/controllers/permission.js b/packages/core/admin/server/controllers/permission.js similarity index 100% rename from packages/core/admin/controllers/permission.js rename to packages/core/admin/server/controllers/permission.js diff --git a/packages/core/admin/controllers/role.js b/packages/core/admin/server/controllers/role.js similarity index 100% rename from packages/core/admin/controllers/role.js rename to packages/core/admin/server/controllers/role.js diff --git a/packages/core/admin/controllers/user.js b/packages/core/admin/server/controllers/user.js similarity index 100% rename from packages/core/admin/controllers/user.js rename to packages/core/admin/server/controllers/user.js diff --git a/packages/core/admin/domain/action/__tests__/action-domain.test.js b/packages/core/admin/server/domain/action/__tests__/action-domain.test.js similarity index 100% rename from packages/core/admin/domain/action/__tests__/action-domain.test.js rename to packages/core/admin/server/domain/action/__tests__/action-domain.test.js diff --git a/packages/core/admin/domain/action/__tests__/action-provider.test.js b/packages/core/admin/server/domain/action/__tests__/action-provider.test.js similarity index 100% rename from packages/core/admin/domain/action/__tests__/action-provider.test.js rename to packages/core/admin/server/domain/action/__tests__/action-provider.test.js diff --git a/packages/core/admin/domain/action/index.js b/packages/core/admin/server/domain/action/index.js similarity index 100% rename from packages/core/admin/domain/action/index.js rename to packages/core/admin/server/domain/action/index.js diff --git a/packages/core/admin/domain/action/provider.js b/packages/core/admin/server/domain/action/provider.js similarity index 100% rename from packages/core/admin/domain/action/provider.js rename to packages/core/admin/server/domain/action/provider.js diff --git a/packages/core/admin/domain/condition/__tests__/condition-domain.test.js b/packages/core/admin/server/domain/condition/__tests__/condition-domain.test.js similarity index 100% rename from packages/core/admin/domain/condition/__tests__/condition-domain.test.js rename to packages/core/admin/server/domain/condition/__tests__/condition-domain.test.js diff --git a/packages/core/admin/domain/condition/__tests__/condition-provider.test.js b/packages/core/admin/server/domain/condition/__tests__/condition-provider.test.js similarity index 100% rename from packages/core/admin/domain/condition/__tests__/condition-provider.test.js rename to packages/core/admin/server/domain/condition/__tests__/condition-provider.test.js diff --git a/packages/core/admin/domain/condition/index.js b/packages/core/admin/server/domain/condition/index.js similarity index 100% rename from packages/core/admin/domain/condition/index.js rename to packages/core/admin/server/domain/condition/index.js diff --git a/packages/core/admin/domain/condition/provider.js b/packages/core/admin/server/domain/condition/provider.js similarity index 100% rename from packages/core/admin/domain/condition/provider.js rename to packages/core/admin/server/domain/condition/provider.js diff --git a/packages/core/admin/domain/permission/__tests__/permission-domain.test.js b/packages/core/admin/server/domain/permission/__tests__/permission-domain.test.js similarity index 100% rename from packages/core/admin/domain/permission/__tests__/permission-domain.test.js rename to packages/core/admin/server/domain/permission/__tests__/permission-domain.test.js diff --git a/packages/core/admin/domain/permission/index.js b/packages/core/admin/server/domain/permission/index.js similarity index 100% rename from packages/core/admin/domain/permission/index.js rename to packages/core/admin/server/domain/permission/index.js diff --git a/packages/core/admin/domain/role.js b/packages/core/admin/server/domain/role.js similarity index 100% rename from packages/core/admin/domain/role.js rename to packages/core/admin/server/domain/role.js diff --git a/packages/core/admin/domain/user.js b/packages/core/admin/server/domain/user.js similarity index 100% rename from packages/core/admin/domain/user.js rename to packages/core/admin/server/domain/user.js diff --git a/packages/core/admin/server/index.js b/packages/core/admin/server/index.js new file mode 100644 index 0000000000..fcf22b4edf --- /dev/null +++ b/packages/core/admin/server/index.js @@ -0,0 +1,18 @@ +'use strict'; + +const { getService } = require('./utils'); + +module.exports = { + // TODO: update load middleware to not load the admin middleware from here + // TODO: load bootstrap / register independently + async destroy() { + const { conditionProvider, actionProvider } = getService('permission'); + + await conditionProvider.clear(); + await actionProvider.clear(); + }, + config: require('./config'), + services: require('./services'), + controllers: require('./controllers'), + models: require('./content-types'), +}; diff --git a/packages/core/admin/services/__tests__/action.test.js b/packages/core/admin/server/services/__tests__/action.test.js similarity index 100% rename from packages/core/admin/services/__tests__/action.test.js rename to packages/core/admin/server/services/__tests__/action.test.js diff --git a/packages/core/admin/services/__tests__/auth.test.js b/packages/core/admin/server/services/__tests__/auth.test.js similarity index 100% rename from packages/core/admin/services/__tests__/auth.test.js rename to packages/core/admin/server/services/__tests__/auth.test.js diff --git a/packages/core/admin/services/__tests__/content-type.test.js b/packages/core/admin/server/services/__tests__/content-type.test.js similarity index 100% rename from packages/core/admin/services/__tests__/content-type.test.js rename to packages/core/admin/server/services/__tests__/content-type.test.js diff --git a/packages/core/admin/services/__tests__/metrics.test.js b/packages/core/admin/server/services/__tests__/metrics.test.js similarity index 100% rename from packages/core/admin/services/__tests__/metrics.test.js rename to packages/core/admin/server/services/__tests__/metrics.test.js diff --git a/packages/core/admin/services/__tests__/passport.test.js b/packages/core/admin/server/services/__tests__/passport.test.js similarity index 100% rename from packages/core/admin/services/__tests__/passport.test.js rename to packages/core/admin/server/services/__tests__/passport.test.js diff --git a/packages/core/admin/services/__tests__/permission.test.js b/packages/core/admin/server/services/__tests__/permission.test.js similarity index 100% rename from packages/core/admin/services/__tests__/permission.test.js rename to packages/core/admin/server/services/__tests__/permission.test.js diff --git a/packages/core/admin/services/__tests__/permissions-manager.test.js b/packages/core/admin/server/services/__tests__/permissions-manager.test.js similarity index 100% rename from packages/core/admin/services/__tests__/permissions-manager.test.js rename to packages/core/admin/server/services/__tests__/permissions-manager.test.js diff --git a/packages/core/admin/services/__tests__/permissions.engine.test.js b/packages/core/admin/server/services/__tests__/permissions.engine.test.js similarity index 100% rename from packages/core/admin/services/__tests__/permissions.engine.test.js rename to packages/core/admin/server/services/__tests__/permissions.engine.test.js diff --git a/packages/core/admin/services/__tests__/permissions.section-builder.section.test.js b/packages/core/admin/server/services/__tests__/permissions.section-builder.section.test.js similarity index 100% rename from packages/core/admin/services/__tests__/permissions.section-builder.section.test.js rename to packages/core/admin/server/services/__tests__/permissions.section-builder.section.test.js diff --git a/packages/core/admin/services/__tests__/role.test.js b/packages/core/admin/server/services/__tests__/role.test.js similarity index 100% rename from packages/core/admin/services/__tests__/role.test.js rename to packages/core/admin/server/services/__tests__/role.test.js diff --git a/packages/core/admin/services/__tests__/token.test.js b/packages/core/admin/server/services/__tests__/token.test.js similarity index 100% rename from packages/core/admin/services/__tests__/token.test.js rename to packages/core/admin/server/services/__tests__/token.test.js diff --git a/packages/core/admin/services/__tests__/user.test.js b/packages/core/admin/server/services/__tests__/user.test.js similarity index 100% rename from packages/core/admin/services/__tests__/user.test.js rename to packages/core/admin/server/services/__tests__/user.test.js diff --git a/packages/core/admin/services/action.js b/packages/core/admin/server/services/action.js similarity index 100% rename from packages/core/admin/services/action.js rename to packages/core/admin/server/services/action.js diff --git a/packages/core/admin/services/auth.js b/packages/core/admin/server/services/auth.js similarity index 100% rename from packages/core/admin/services/auth.js rename to packages/core/admin/server/services/auth.js diff --git a/packages/core/admin/services/condition.js b/packages/core/admin/server/services/condition.js similarity index 100% rename from packages/core/admin/services/condition.js rename to packages/core/admin/server/services/condition.js diff --git a/packages/core/admin/services/constants.js b/packages/core/admin/server/services/constants.js similarity index 100% rename from packages/core/admin/services/constants.js rename to packages/core/admin/server/services/constants.js diff --git a/packages/core/admin/services/content-type.js b/packages/core/admin/server/services/content-type.js similarity index 100% rename from packages/core/admin/services/content-type.js rename to packages/core/admin/server/services/content-type.js diff --git a/packages/core/admin/server/services/index.js b/packages/core/admin/server/services/index.js new file mode 100644 index 0000000000..a6a184cf0d --- /dev/null +++ b/packages/core/admin/server/services/index.js @@ -0,0 +1,15 @@ +'use strict'; + +module.exports = { + user: require('./user'), + token: require('./token'), + role: require('./role'), + permission: require('./permission'), + passport: require('./passport'), + metrics: require('./metrics'), + 'content-type': require('./content-type'), + constants: require('./constants'), + condition: require('./condition'), + auth: require('./auth'), + action: require('./action'), +}; diff --git a/packages/core/admin/services/metrics.js b/packages/core/admin/server/services/metrics.js similarity index 100% rename from packages/core/admin/services/metrics.js rename to packages/core/admin/server/services/metrics.js diff --git a/packages/core/admin/services/passport.js b/packages/core/admin/server/services/passport.js similarity index 100% rename from packages/core/admin/services/passport.js rename to packages/core/admin/server/services/passport.js diff --git a/packages/core/admin/services/passport/local-strategy.js b/packages/core/admin/server/services/passport/local-strategy.js similarity index 100% rename from packages/core/admin/services/passport/local-strategy.js rename to packages/core/admin/server/services/passport/local-strategy.js diff --git a/packages/core/admin/services/permission.js b/packages/core/admin/server/services/permission.js similarity index 100% rename from packages/core/admin/services/permission.js rename to packages/core/admin/server/services/permission.js diff --git a/packages/core/admin/services/permission/engine-hooks.js b/packages/core/admin/server/services/permission/engine-hooks.js similarity index 100% rename from packages/core/admin/services/permission/engine-hooks.js rename to packages/core/admin/server/services/permission/engine-hooks.js diff --git a/packages/core/admin/services/permission/engine.js b/packages/core/admin/server/services/permission/engine.js similarity index 100% rename from packages/core/admin/services/permission/engine.js rename to packages/core/admin/server/services/permission/engine.js diff --git a/packages/core/admin/services/permission/permissions-manager/index.js b/packages/core/admin/server/services/permission/permissions-manager/index.js similarity index 100% rename from packages/core/admin/services/permission/permissions-manager/index.js rename to packages/core/admin/server/services/permission/permissions-manager/index.js diff --git a/packages/core/admin/services/permission/permissions-manager/query-builers.js b/packages/core/admin/server/services/permission/permissions-manager/query-builers.js similarity index 100% rename from packages/core/admin/services/permission/permissions-manager/query-builers.js rename to packages/core/admin/server/services/permission/permissions-manager/query-builers.js diff --git a/packages/core/admin/services/permission/queries.js b/packages/core/admin/server/services/permission/queries.js similarity index 100% rename from packages/core/admin/services/permission/queries.js rename to packages/core/admin/server/services/permission/queries.js diff --git a/packages/core/admin/services/permission/sections-builder/builder.js b/packages/core/admin/server/services/permission/sections-builder/builder.js similarity index 100% rename from packages/core/admin/services/permission/sections-builder/builder.js rename to packages/core/admin/server/services/permission/sections-builder/builder.js diff --git a/packages/core/admin/services/permission/sections-builder/handlers.js b/packages/core/admin/server/services/permission/sections-builder/handlers.js similarity index 100% rename from packages/core/admin/services/permission/sections-builder/handlers.js rename to packages/core/admin/server/services/permission/sections-builder/handlers.js diff --git a/packages/core/admin/services/permission/sections-builder/index.js b/packages/core/admin/server/services/permission/sections-builder/index.js similarity index 100% rename from packages/core/admin/services/permission/sections-builder/index.js rename to packages/core/admin/server/services/permission/sections-builder/index.js diff --git a/packages/core/admin/services/permission/sections-builder/section.js b/packages/core/admin/server/services/permission/sections-builder/section.js similarity index 100% rename from packages/core/admin/services/permission/sections-builder/section.js rename to packages/core/admin/server/services/permission/sections-builder/section.js diff --git a/packages/core/admin/services/permission/sections-builder/utils.js b/packages/core/admin/server/services/permission/sections-builder/utils.js similarity index 100% rename from packages/core/admin/services/permission/sections-builder/utils.js rename to packages/core/admin/server/services/permission/sections-builder/utils.js diff --git a/packages/core/admin/services/role.js b/packages/core/admin/server/services/role.js similarity index 100% rename from packages/core/admin/services/role.js rename to packages/core/admin/server/services/role.js diff --git a/packages/core/admin/services/token.js b/packages/core/admin/server/services/token.js similarity index 100% rename from packages/core/admin/services/token.js rename to packages/core/admin/server/services/token.js diff --git a/packages/core/admin/services/user.js b/packages/core/admin/server/services/user.js similarity index 100% rename from packages/core/admin/services/user.js rename to packages/core/admin/server/services/user.js diff --git a/packages/core/admin/tests/admin-auth.test.e2e.js b/packages/core/admin/server/tests/admin-auth.test.e2e.js similarity index 98% rename from packages/core/admin/tests/admin-auth.test.e2e.js rename to packages/core/admin/server/tests/admin-auth.test.e2e.js index 76e91622ed..e673cd84a8 100644 --- a/packages/core/admin/tests/admin-auth.test.e2e.js +++ b/packages/core/admin/server/tests/admin-auth.test.e2e.js @@ -1,9 +1,9 @@ 'use strict'; // Helpers. -const { createAuthRequest } = require('../../../../test/helpers/request'); -const { createStrapiInstance, superAdmin } = require('../../../../test/helpers/strapi'); -const { createUtils } = require('../../../../test/helpers/utils'); +const { createAuthRequest } = require('../../../../../test/helpers/request'); +const { createStrapiInstance, superAdmin } = require('../../../../../test/helpers/strapi'); +const { createUtils } = require('../../../../../test/helpers/utils'); const edition = process.env.STRAPI_DISABLE_EE === 'true' ? 'CE' : 'EE'; diff --git a/packages/core/admin/tests/admin-authenticated-user.test.e2e.js b/packages/core/admin/server/tests/admin-authenticated-user.test.e2e.js similarity index 96% rename from packages/core/admin/tests/admin-authenticated-user.test.e2e.js rename to packages/core/admin/server/tests/admin-authenticated-user.test.e2e.js index 7803b85e89..d7c7e9a3c3 100644 --- a/packages/core/admin/tests/admin-authenticated-user.test.e2e.js +++ b/packages/core/admin/server/tests/admin-authenticated-user.test.e2e.js @@ -1,8 +1,8 @@ 'use strict'; // Helpers. -const { createStrapiInstance } = require('../../../../test/helpers/strapi'); -const { createAuthRequest, createRequest } = require('../../../../test/helpers/request'); +const { createStrapiInstance } = require('../../../../../test/helpers/strapi'); +const { createAuthRequest, createRequest } = require('../../../../../test/helpers/request'); describe('Authenticated User', () => { let rq; diff --git a/packages/core/admin/tests/admin-permission.test.e2e.js b/packages/core/admin/server/tests/admin-permission.test.e2e.js similarity index 99% rename from packages/core/admin/tests/admin-permission.test.e2e.js rename to packages/core/admin/server/tests/admin-permission.test.e2e.js index 091bf39e27..73f6f40c3c 100644 --- a/packages/core/admin/tests/admin-permission.test.e2e.js +++ b/packages/core/admin/server/tests/admin-permission.test.e2e.js @@ -2,8 +2,8 @@ const _ = require('lodash'); -const { createAuthRequest } = require('../../../../test/helpers/request'); -const { createStrapiInstance } = require('../../../../test/helpers/strapi'); +const { createAuthRequest } = require('../../../../../test/helpers/request'); +const { createStrapiInstance } = require('../../../../../test/helpers/strapi'); const edition = process.env.STRAPI_DISABLE_EE === 'true' ? 'CE' : 'EE'; diff --git a/packages/core/admin/tests/admin-permissions-conditions.test.e2e.js b/packages/core/admin/server/tests/admin-permissions-conditions.test.e2e.js similarity index 95% rename from packages/core/admin/tests/admin-permissions-conditions.test.e2e.js rename to packages/core/admin/server/tests/admin-permissions-conditions.test.e2e.js index 8d3a071e94..e0aaffe761 100644 --- a/packages/core/admin/tests/admin-permissions-conditions.test.e2e.js +++ b/packages/core/admin/server/tests/admin-permissions-conditions.test.e2e.js @@ -1,10 +1,10 @@ 'use strict'; const { prop } = require('lodash/fp'); -const { createTestBuilder } = require('../../../../test/helpers/builder'); -const { createStrapiInstance } = require('../../../../test/helpers/strapi'); -const { createRequest, createAuthRequest } = require('../../../../test/helpers/request'); -const { createUtils } = require('../../../../test/helpers/utils'); +const { createTestBuilder } = require('../../../../../test/helpers/builder'); +const { createStrapiInstance } = require('../../../../../test/helpers/strapi'); +const { createRequest, createAuthRequest } = require('../../../../../test/helpers/request'); +const { createUtils } = require('../../../../../test/helpers/utils'); const edition = process.env.STRAPI_DISABLE_EE === 'true' ? 'CE' : 'EE'; diff --git a/packages/core/admin/tests/admin-role.test.e2e.js b/packages/core/admin/server/tests/admin-role.test.e2e.js similarity index 99% rename from packages/core/admin/tests/admin-role.test.e2e.js rename to packages/core/admin/server/tests/admin-role.test.e2e.js index 6ce53d82f1..bbadcdf33f 100644 --- a/packages/core/admin/tests/admin-role.test.e2e.js +++ b/packages/core/admin/server/tests/admin-role.test.e2e.js @@ -2,8 +2,8 @@ const _ = require('lodash'); -const { createStrapiInstance } = require('../../../../test/helpers/strapi'); -const { createAuthRequest } = require('../../../../test/helpers/request'); +const { createStrapiInstance } = require('../../../../../test/helpers/strapi'); +const { createAuthRequest } = require('../../../../../test/helpers/request'); const edition = process.env.STRAPI_DISABLE_EE === 'true' ? 'CE' : 'EE'; diff --git a/packages/core/admin/tests/admin-user.test.e2e.js b/packages/core/admin/server/tests/admin-user.test.e2e.js similarity index 97% rename from packages/core/admin/tests/admin-user.test.e2e.js rename to packages/core/admin/server/tests/admin-user.test.e2e.js index 57f0bbae92..59b0724733 100644 --- a/packages/core/admin/tests/admin-user.test.e2e.js +++ b/packages/core/admin/server/tests/admin-user.test.e2e.js @@ -1,9 +1,9 @@ 'use strict'; const _ = require('lodash'); -const { createStrapiInstance } = require('../../../../test/helpers/strapi'); -const { createAuthRequest } = require('../../../../test/helpers/request'); -const { createUtils } = require('../../../../test/helpers/utils'); +const { createStrapiInstance } = require('../../../../../test/helpers/strapi'); +const { createAuthRequest } = require('../../../../../test/helpers/request'); +const { createUtils } = require('../../../../../test/helpers/utils'); const edition = process.env.STRAPI_DISABLE_EE === 'true' ? 'CE' : 'EE'; diff --git a/packages/core/admin/utils/index.d.ts b/packages/core/admin/server/utils/index.d.ts similarity index 100% rename from packages/core/admin/utils/index.d.ts rename to packages/core/admin/server/utils/index.d.ts diff --git a/packages/core/admin/utils/index.js b/packages/core/admin/server/utils/index.js similarity index 100% rename from packages/core/admin/utils/index.js rename to packages/core/admin/server/utils/index.js diff --git a/packages/core/admin/validation/__tests__/common-functions.test.js b/packages/core/admin/server/validation/__tests__/common-functions.test.js similarity index 100% rename from packages/core/admin/validation/__tests__/common-functions.test.js rename to packages/core/admin/server/validation/__tests__/common-functions.test.js diff --git a/packages/core/admin/validation/action-provider.js b/packages/core/admin/server/validation/action-provider.js similarity index 100% rename from packages/core/admin/validation/action-provider.js rename to packages/core/admin/server/validation/action-provider.js diff --git a/packages/core/admin/validation/authentication/forgot-password.js b/packages/core/admin/server/validation/authentication/forgot-password.js similarity index 100% rename from packages/core/admin/validation/authentication/forgot-password.js rename to packages/core/admin/server/validation/authentication/forgot-password.js diff --git a/packages/core/admin/validation/authentication/index.js b/packages/core/admin/server/validation/authentication/index.js similarity index 100% rename from packages/core/admin/validation/authentication/index.js rename to packages/core/admin/server/validation/authentication/index.js diff --git a/packages/core/admin/validation/authentication/register.js b/packages/core/admin/server/validation/authentication/register.js similarity index 100% rename from packages/core/admin/validation/authentication/register.js rename to packages/core/admin/server/validation/authentication/register.js diff --git a/packages/core/admin/validation/authentication/reset-password.js b/packages/core/admin/server/validation/authentication/reset-password.js similarity index 100% rename from packages/core/admin/validation/authentication/reset-password.js rename to packages/core/admin/server/validation/authentication/reset-password.js diff --git a/packages/core/admin/validation/common-functions/check-fields-are-correctly-nested.js b/packages/core/admin/server/validation/common-functions/check-fields-are-correctly-nested.js similarity index 100% rename from packages/core/admin/validation/common-functions/check-fields-are-correctly-nested.js rename to packages/core/admin/server/validation/common-functions/check-fields-are-correctly-nested.js diff --git a/packages/core/admin/validation/common-functions/check-fields-dont-have-duplicates.js b/packages/core/admin/server/validation/common-functions/check-fields-dont-have-duplicates.js similarity index 100% rename from packages/core/admin/validation/common-functions/check-fields-dont-have-duplicates.js rename to packages/core/admin/server/validation/common-functions/check-fields-dont-have-duplicates.js diff --git a/packages/core/admin/validation/common-functions/index.js b/packages/core/admin/server/validation/common-functions/index.js similarity index 100% rename from packages/core/admin/validation/common-functions/index.js rename to packages/core/admin/server/validation/common-functions/index.js diff --git a/packages/core/admin/validation/common-validators.js b/packages/core/admin/server/validation/common-validators.js similarity index 100% rename from packages/core/admin/validation/common-validators.js rename to packages/core/admin/server/validation/common-validators.js diff --git a/packages/core/admin/validation/permission.js b/packages/core/admin/server/validation/permission.js similarity index 100% rename from packages/core/admin/validation/permission.js rename to packages/core/admin/server/validation/permission.js diff --git a/packages/core/admin/validation/policies/hasPermissions.js b/packages/core/admin/server/validation/policies/hasPermissions.js similarity index 100% rename from packages/core/admin/validation/policies/hasPermissions.js rename to packages/core/admin/server/validation/policies/hasPermissions.js diff --git a/packages/core/admin/validation/role.js b/packages/core/admin/server/validation/role.js similarity index 100% rename from packages/core/admin/validation/role.js rename to packages/core/admin/server/validation/role.js diff --git a/packages/core/admin/validation/user.js b/packages/core/admin/server/validation/user.js similarity index 100% rename from packages/core/admin/validation/user.js rename to packages/core/admin/server/validation/user.js diff --git a/packages/core/admin/strapi-server.js b/packages/core/admin/strapi-server.js new file mode 100644 index 0000000000..988bed043d --- /dev/null +++ b/packages/core/admin/strapi-server.js @@ -0,0 +1,17 @@ +'use strict'; + +const _ = require('lodash'); + +const admin = require('./server'); + +const mergeRoutes = (a, b, key) => { + return _.isArray(a) && _.isArray(b) && key === 'routes' ? a.concat(b) : undefined; +}; + +if (process.env.STRAPI_DISABLE_EE !== 'true' && strapi.EE) { + const eeAdmin = require('./ee/strapi-server'); + + module.exports = _.mergeWith({}, admin, eeAdmin, mergeRoutes); +} else { + module.exports = admin; +} diff --git a/packages/core/strapi/lib/Strapi.js b/packages/core/strapi/lib/Strapi.js index 9713f27989..4e3f456cac 100644 --- a/packages/core/strapi/lib/Strapi.js +++ b/packages/core/strapi/lib/Strapi.js @@ -51,7 +51,6 @@ class Strapi { this.dir = opts.dir || process.cwd(); - this.admin = {}; this.plugins = {}; this.config = loadConfiguration(this.dir, opts); this.app.proxy = this.config.get('server.proxy'); @@ -327,8 +326,8 @@ class Strapi { const modules = await loadModules(this); + this.admin = require('@strapi/admin/strapi-server'); this.api = modules.api; - this.admin = modules.admin; this.components = modules.components; this.plugins = modules.plugins; this.middleware = modules.middlewares; diff --git a/packages/core/strapi/lib/core/load-admin.js b/packages/core/strapi/lib/core/load-admin.js deleted file mode 100644 index 0a9b5234dc..0000000000 --- a/packages/core/strapi/lib/core/load-admin.js +++ /dev/null @@ -1,36 +0,0 @@ -'use strict'; - -const _ = require('lodash'); - -const findPackagePath = require('../load/package-path'); -const loadFiles = require('../load/load-files'); -const loadConfig = require('../load/load-config-files'); - -const mergeRoutes = (a, b, key) => - _.isArray(a) && _.isArray(b) && key === 'routes' ? a.concat(b) : undefined; - -module.exports = async strapi => { - const adminPath = findPackagePath('@strapi/admin'); - const [files, config] = await Promise.all([ - loadFiles(adminPath, '!(config|node_modules|tests|ee|build|scripts)/*.*(js|json)'), - loadConfig(adminPath), - ]); - - // set admin config in strapi.config.server.admin - const userAdminConfig = strapi.config.get('server.admin'); - strapi.config.set('server.admin', _.merge(config.config, userAdminConfig)); - - // load ee files if they exist - let eeFiles = {}; - let eeConfig = {}; - - if (process.env.STRAPI_DISABLE_EE !== 'true' && strapi.EE) { - const eeAdminPath = `${adminPath}/ee`; - [eeFiles, eeConfig] = await Promise.all([ - loadFiles(eeAdminPath, '!(config|tests|test)/*.*(js|json)'), - loadConfig(eeAdminPath), - ]); - } - - return _.mergeWith({}, files, eeFiles, config, eeConfig, mergeRoutes); -}; diff --git a/packages/core/strapi/lib/core/load-modules.js b/packages/core/strapi/lib/core/load-modules.js index ebc95f90b0..330027bbcf 100644 --- a/packages/core/strapi/lib/core/load-modules.js +++ b/packages/core/strapi/lib/core/load-modules.js @@ -13,7 +13,6 @@ const _ = require('lodash'); const loadApis = require('./load-apis'); -const loadAdmin = require('./load-admin'); const loadPlugins = require('./load-plugins'); const loadMiddlewares = require('./load-middlewares'); const loadExtensions = require('./load-extensions'); @@ -21,9 +20,8 @@ const loadHooks = require('./load-hooks'); const loadComponents = require('./load-components'); module.exports = async strapi => { - const [api, admin, plugins, middlewares, hook, extensions, components] = await Promise.all([ + const [api, plugins, middlewares, hook, extensions, components] = await Promise.all([ loadApis(strapi), - loadAdmin(strapi), loadPlugins(strapi), loadMiddlewares(strapi), loadHooks(strapi.config), @@ -51,7 +49,6 @@ module.exports = async strapi => { return { api, - admin, plugins, middlewares, hook, diff --git a/packages/core/strapi/lib/utils/ee.js b/packages/core/strapi/lib/utils/ee.js index d02366a708..46d7ba0c5a 100644 --- a/packages/core/strapi/lib/utils/ee.js +++ b/packages/core/strapi/lib/utils/ee.js @@ -117,7 +117,7 @@ Object.defineProperty(module.exports, 'features', { const mustHaveKey = key => { if (!_.has(internals, key)) { const err = new Error('Tampering with license'); - err.stack = null; + // err.stack = null; throw err; } }; diff --git a/packages/core/strapi/package.json b/packages/core/strapi/package.json index 3e4c87ac7f..06c1ffc1c5 100644 --- a/packages/core/strapi/package.json +++ b/packages/core/strapi/package.json @@ -13,6 +13,7 @@ }, "dependencies": { "@koa/cors": "^3.0.0", + "@strapi/admin": "3.6.5", "@strapi/database": "3.6.5", "@strapi/generate": "3.6.5", "@strapi/generate-api": "3.6.5", diff --git a/packages/core/utils/lib/content-types.js b/packages/core/utils/lib/content-types.js index 7a941bdf63..304165f94a 100644 --- a/packages/core/utils/lib/content-types.js +++ b/packages/core/utils/lib/content-types.js @@ -148,6 +148,7 @@ const createContentType = (model, { modelName }, { apiName, pluginName } = {}) = // return strapi.getModel(model.uid).privateAttributes; return []; }, + configurable: true, }); Object.assign(model.attributes, { diff --git a/packages/core/utils/lib/policy.js b/packages/core/utils/lib/policy.js index 83a08c849f..e984f410cc 100644 --- a/packages/core/utils/lib/policy.js +++ b/packages/core/utils/lib/policy.js @@ -12,8 +12,12 @@ const APPLICATION_PREFIX = 'application::'; const isPolicyFactory = _.isArray; -const getPolicyIn = (container, policy) => - _.get(container, ['config', 'policies', _.toLower(policy)]); +const getPolicyIn = (container, policy) => { + return ( + _.get(container, ['config', 'policies', policy]) || + _.get(container, ['config', 'policies', _.toLower(policy)]) + ); +}; const policyExistsIn = (container, policy) => !_.isUndefined(getPolicyIn(container, policy)); From a0011840e8fa83fa7a601fbf931c7cf38041782b Mon Sep 17 00:00:00 2001 From: Alexandre Bodin Date: Tue, 3 Aug 2021 08:33:47 +0200 Subject: [PATCH 2/5] Merge admin config into strapic config --- examples/getstarted/config/server.js | 1 + packages/core/strapi/lib/Strapi.js | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/examples/getstarted/config/server.js b/examples/getstarted/config/server.js index d1989c8ec7..fbc1eb0c1f 100644 --- a/examples/getstarted/config/server.js +++ b/examples/getstarted/config/server.js @@ -2,6 +2,7 @@ module.exports = ({ env }) => ({ host: env('HOST', '0.0.0.0'), port: env.int('PORT', 1337), admin: { + autoOpen: true, auth: { secret: env('ADMIN_JWT_SECRET', 'example-token'), }, diff --git a/packages/core/strapi/lib/Strapi.js b/packages/core/strapi/lib/Strapi.js index 4e3f456cac..22986c85c6 100644 --- a/packages/core/strapi/lib/Strapi.js +++ b/packages/core/strapi/lib/Strapi.js @@ -327,6 +327,11 @@ class Strapi { const modules = await loadModules(this); this.admin = require('@strapi/admin/strapi-server'); + + // TODO: rename into just admin and ./config/admin.js + const userAdminConfig = strapi.config.get('server.admin'); + this.config.set('server.admin', _.merge(this.admin.config, userAdminConfig)); + this.api = modules.api; this.components = modules.components; this.plugins = modules.plugins; From 10ef480bc037fb0c518c546f0be4106a9bf293fe Mon Sep 17 00:00:00 2001 From: Alexandre Bodin Date: Tue, 3 Aug 2021 09:12:58 +0200 Subject: [PATCH 3/5] Move logger out of Strapi.js --- examples/getstarted/config/server.js | 2 +- packages/core/strapi/lib/Strapi.js | 130 +++------------- .../strapi/lib/middlewares/public/index.html | 6 +- .../strapi/lib/middlewares/public/index.js | 4 +- packages/core/strapi/lib/utils/index.js | 23 +-- .../core/strapi/lib/utils/is-initialized.js | 23 +++ .../core/strapi/lib/utils/open-browser.js | 12 ++ packages/core/strapi/lib/utils/openBrowser.js | 145 ------------------ .../utils/resources/openChrome.applescript | 83 ---------- .../core/strapi/lib/utils/startup-logger.js | 75 +++++++++ packages/core/strapi/package.json | 2 +- yarn.lock | 36 ++--- 12 files changed, 160 insertions(+), 381 deletions(-) create mode 100644 packages/core/strapi/lib/utils/is-initialized.js create mode 100644 packages/core/strapi/lib/utils/open-browser.js delete mode 100644 packages/core/strapi/lib/utils/openBrowser.js delete mode 100644 packages/core/strapi/lib/utils/resources/openChrome.applescript create mode 100644 packages/core/strapi/lib/utils/startup-logger.js diff --git a/examples/getstarted/config/server.js b/examples/getstarted/config/server.js index fbc1eb0c1f..9ae03d02e7 100644 --- a/examples/getstarted/config/server.js +++ b/examples/getstarted/config/server.js @@ -2,7 +2,7 @@ module.exports = ({ env }) => ({ host: env('HOST', '0.0.0.0'), port: env.int('PORT', 1337), admin: { - autoOpen: true, + // autoOpen: true, auth: { secret: env('ADMIN_JWT_SECRET', 'example-token'), }, diff --git a/packages/core/strapi/lib/Strapi.js b/packages/core/strapi/lib/Strapi.js index 22986c85c6..0012619b7b 100644 --- a/packages/core/strapi/lib/Strapi.js +++ b/packages/core/strapi/lib/Strapi.js @@ -1,18 +1,15 @@ 'use strict'; const http = require('http'); -const path = require('path'); -const fse = require('fs-extra'); + const Koa = require('koa'); const Router = require('koa-router'); const _ = require('lodash'); -const chalk = require('chalk'); -const CLITable = require('cli-table3'); -const { models, getAbsoluteAdminUrl, getAbsoluteServerUrl } = require('@strapi/utils'); +const { models } = require('@strapi/utils'); const { createLogger } = require('@strapi/logger'); const { Database } = require('@strapi/database'); -const loadConfiguration = require('./core/app-configuration'); +const loadConfiguration = require('./core/app-configuration'); const utils = require('./utils'); const loadModules = require('./core/load-modules'); const bootstrap = require('./core/bootstrap'); @@ -27,6 +24,7 @@ const createEntityService = require('./services/entity-service'); const entityValidator = require('./services/entity-validator'); const createTelemetry = require('./services/metrics'); const createUpdateNotifier = require('./utils/update-notifier'); +const createStartupLogger = require('./utils/startup-logger'); const ee = require('./utils/ee'); const LIFECYCLES = { @@ -64,8 +62,7 @@ class Strapi { // internal services. this.fs = createStrapiFs(this); this.eventHub = createEventHub(); - - this.requireProjectBootstrap(); + this.startupLogger = createStartupLogger(this); createUpdateNotifier(this).notify(); } @@ -82,78 +79,6 @@ class Strapi { return this.requestHandler(req, res); } - requireProjectBootstrap() { - const bootstrapPath = path.resolve(this.dir, 'config/functions/bootstrap.js'); - - if (fse.existsSync(bootstrapPath)) { - require(bootstrapPath); - } - } - - logStats() { - const columns = Math.min(process.stderr.columns, 80) - 2; - console.log(); - console.log(chalk.black.bgWhite(_.padEnd(' Project information', columns))); - console.log(); - - const infoTable = new CLITable({ - colWidths: [20, 50], - chars: { mid: '', 'left-mid': '', 'mid-mid': '', 'right-mid': '' }, - }); - - const isEE = strapi.EE === true && ee.isEE === true; - - infoTable.push( - [chalk.blue('Time'), `${new Date()}`], - [chalk.blue('Launched in'), Date.now() - this.config.launchedAt + ' ms'], - [chalk.blue('Environment'), this.config.environment], - [chalk.blue('Process PID'), process.pid], - [chalk.blue('Version'), `${this.config.info.strapi} (node ${process.version})`], - [chalk.blue('Edition'), isEE ? 'Enterprise' : 'Community'] - ); - - console.log(infoTable.toString()); - console.log(); - console.log(chalk.black.bgWhite(_.padEnd(' Actions available', columns))); - console.log(); - } - - logFirstStartupMessage() { - this.logStats(); - - console.log(chalk.bold('One more thing...')); - console.log( - chalk.grey('Create your first administrator 💻 by going to the administration panel at:') - ); - console.log(); - - const addressTable = new CLITable(); - - const adminUrl = getAbsoluteAdminUrl(strapi.config); - addressTable.push([chalk.bold(adminUrl)]); - - console.log(`${addressTable.toString()}`); - console.log(); - } - - logStartupMessage() { - this.logStats(); - - console.log(chalk.bold('Welcome back!')); - - if (this.config.serveAdminPanel === true) { - console.log(chalk.grey('To manage your project 🚀, go to the administration panel at:')); - const adminUrl = getAbsoluteAdminUrl(strapi.config); - console.log(chalk.bold(adminUrl)); - console.log(); - } - - console.log(chalk.grey('To access the server ⚡️, go to:')); - const serverUrl = getAbsoluteServerUrl(strapi.config); - console.log(chalk.bold(serverUrl)); - console.log(); - } - initServer() { this.server = http.createServer(this.handleRequest.bind(this)); // handle port in use cleanly @@ -237,7 +162,7 @@ class Strapi { if (err) return this.stopWithError(err); // Is the project initialised? - const isInitialised = await utils.isInitialised(this); + const isInitialized = await utils.isInitialized(this); // Should the startup message be displayed? const hideStartupMessage = process.env.STRAPI_HIDE_STARTUP_MESSAGE @@ -245,10 +170,10 @@ class Strapi { : false; if (hideStartupMessage === false) { - if (!isInitialised) { - this.logFirstStartupMessage(); + if (!isInitialized) { + this.startupLogger.logFirstStartupMessage(); } else { - this.logStartupMessage(); + this.startupLogger.logStartupMessage(); } } @@ -266,13 +191,13 @@ class Strapi { cb(); } - // if ( - // (this.config.environment === 'development' && - // this.config.get('server.admin.autoOpen', true) !== false) || - // !isInitialised - // ) { - // await utils.openBrowser.call(this); - // } + const shouldOpenAdmin = + this.config.environment === 'development' && + this.config.get('server.admin.autoOpen', true) !== false; + + if (shouldOpenAdmin || !isInitialized) { + await utils.openBrowser(this.config); + } }; const listenSocket = this.config.get('server.socket'); @@ -314,6 +239,14 @@ class Strapi { process.exit(exitCode); } + loadAdmin() { + this.admin = require('@strapi/admin/strapi-server'); + + // TODO: rename into just admin and ./config/admin.js + const userAdminConfig = strapi.config.get('server.admin'); + this.config.set('server.admin', _.merge(this.admin.config, userAdminConfig)); + } + async load() { this.app.use(async (ctx, next) => { if (ctx.request.url === '/_health' && ['HEAD', 'GET'].includes(ctx.request.method)) { @@ -326,11 +259,7 @@ class Strapi { const modules = await loadModules(this); - this.admin = require('@strapi/admin/strapi-server'); - - // TODO: rename into just admin and ./config/admin.js - const userAdminConfig = strapi.config.get('server.admin'); - this.config.set('server.admin', _.merge(this.admin.config, userAdminConfig)); + this.loadAdmin(); this.api = modules.api; this.components = modules.components; @@ -394,7 +323,6 @@ class Strapi { await initializeHooks.call(this); await this.runLifecyclesFunctions(LIFECYCLES.BOOTSTRAP); - await this.freeze(); this.isLoaded = true; return this; @@ -481,14 +409,6 @@ class Strapi { }); } - async freeze() { - Object.freeze(this.config); - Object.freeze(this.dir); - Object.freeze(this.admin); - Object.freeze(this.plugins); - Object.freeze(this.api); - } - getModel(uid) { return this.contentTypes[uid] || this.components[uid]; } diff --git a/packages/core/strapi/lib/middlewares/public/index.html b/packages/core/strapi/lib/middlewares/public/index.html index 6faa0d75f6..6a172c675d 100644 --- a/packages/core/strapi/lib/middlewares/public/index.html +++ b/packages/core/strapi/lib/middlewares/public/index.html @@ -16,7 +16,7 @@

- <% if (strapi.config.environment === 'development' && isInitialised) { %> + <% if (strapi.config.environment === 'development' && isInitialized) { %>
<%= strapi.config.environment %> @@ -31,7 +31,7 @@ <% } %>
- <% } else if (strapi.config.environment === 'development' && !isInitialised) { %> + <% } else if (strapi.config.environment === 'development' && !isInitialized) { %>

Let's get started!

To discover the power provided by Strapi, you need to create an administrator.

@@ -55,7 +55,7 @@ <% } %>
- <% if (strapi.config.environment === 'development' && !isInitialised) { %> + <% if (strapi.config.environment === 'development' && !isInitialized) { %>