diff --git a/examples/getstarted/config/server.js b/examples/getstarted/config/server.js index d1989c8ec7..9ae03d02e7 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/examples/getstarted/extensions/users-permissions/config/jwt.js b/examples/getstarted/extensions/users-permissions/config/jwt.js index 7d9cdc2398..22cb3cb1d2 100644 --- a/examples/getstarted/extensions/users-permissions/config/jwt.js +++ b/examples/getstarted/extensions/users-permissions/config/jwt.js @@ -1,3 +1,3 @@ module.exports = { - jwtSecret: process.env.JWT_SECRET || 'f12c8d28-5d60-401e-b480-3af1cb42febc', + jwtSecret: process.env.JWT_SECRET || '6dc1785c-5916-462f-a75e-7ae5fcb480ae', }; 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 e6f1e6f045..00dd7a3c03 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/index.js b/packages/core/admin/index.js index 3e018bef35..fcc09cbfcb 100644 --- a/packages/core/admin/index.js +++ b/packages/core/admin/index.js @@ -150,7 +150,7 @@ async function copyAdmin(dest) { await fs.ensureDir(path.resolve(dest, 'config')); await fs.copy(path.resolve(adminPath, 'admin'), path.resolve(dest, 'admin')); await fs.copy( - path.resolve(adminPath, 'config', 'layout.js'), + path.resolve(adminPath, 'server', 'config', 'layout.js'), path.resolve(dest, 'config', 'layout.js') ); diff --git a/packages/core/admin/server/bootstrap.js b/packages/core/admin/server/bootstrap.js deleted file mode 100644 index baf393ebe4..0000000000 --- a/packages/core/admin/server/bootstrap.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -const bootstrap = require('../config/functions/bootstrap'); - -module.exports = bootstrap; diff --git a/packages/core/admin/server/config.js b/packages/core/admin/server/config.js deleted file mode 100644 index 35b7af39e0..0000000000 --- a/packages/core/admin/server/config.js +++ /dev/null @@ -1,10 +0,0 @@ -'use strict'; - -const settings = require('../config/settings'); - -module.exports = { - default: { - settings, - }, - validator: () => {}, -}; 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 97% rename from packages/core/admin/models/Role.js rename to packages/core/admin/server/content-types/Role.js index 125bc97fe9..460515b9e7 100644 --- a/packages/core/admin/models/Role.js +++ b/packages/core/admin/server/content-types/Role.js @@ -11,7 +11,7 @@ module.exports = { description: '', singularName: 'role', pluralName: 'roles', - displayName: 'Role' + displayName: 'Role', }, options: {}, pluginOptions: { diff --git a/packages/core/admin/models/User.js b/packages/core/admin/server/content-types/User.js similarity index 98% rename from packages/core/admin/models/User.js rename to packages/core/admin/server/content-types/User.js index 57b3b2c6b3..e8ea013347 100644 --- a/packages/core/admin/models/User.js +++ b/packages/core/admin/server/content-types/User.js @@ -11,7 +11,7 @@ module.exports = { description: '', singularName: 'user', pluralName: 'users', - displayName: 'User' + displayName: 'User', }, pluginOptions: { 'content-manager': { diff --git a/packages/core/admin/server/content-types/index.js b/packages/core/admin/server/content-types/index.js index 98353a5109..60fd154746 100644 --- a/packages/core/admin/server/content-types/index.js +++ b/packages/core/admin/server/content-types/index.js @@ -1,17 +1,7 @@ 'use strict'; -const permission = require('../../models/Permission'); -const role = require('../../models/Role'); -const user = require('../../models/User'); - -module.exports = [ - { - schema: permission, - }, - { - schema: role, - }, - { - schema: user, - }, -]; +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 index 7e2046f280..296b6822bf 100644 --- a/packages/core/admin/controllers/admin.js +++ b/packages/core/admin/server/controllers/admin.js @@ -2,12 +2,12 @@ const execa = require('execa'); const _ = require('lodash'); -const { getService } = require('../utils'); - // FIXME // eslint-disable-next-line node/no-extraneous-require const ee = require('@strapi/strapi/lib/utils/ee'); +const { getService } = require('../utils'); + const PLUGIN_NAME_REGEX = /^[A-Za-z][A-Za-z0-9-_]+$/; /** 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 index 6195297e6a..a96d3cc6f4 100644 --- a/packages/core/admin/server/controllers/index.js +++ b/packages/core/admin/server/controllers/index.js @@ -1,19 +1,11 @@ 'use strict'; -const admin = require('../../controllers/admin'); -const authentication = require('../../controllers/authentication'); -const permission = require('../../controllers/permission'); -const role = require('../../controllers/role'); -const user = require('../../controllers/user'); -const webhooks = require('../../controllers/Webhooks'); -const authenticatedUser = require('../../controllers/authenticated-user'); - module.exports = { - admin, - authentication, - permission, - role, - user, - webhooks, - 'authenticated-user': authenticatedUser, + 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/server/policies/index.js b/packages/core/admin/server/policies/index.js deleted file mode 100644 index 554b90a634..0000000000 --- a/packages/core/admin/server/policies/index.js +++ /dev/null @@ -1,9 +0,0 @@ -'use strict'; - -const hasPermissions = require('../../config/policies/hasPermissions'); -const isAuthenticatedAdmin = require('../../config/policies/isAuthenticatedAdmin'); - -module.exports = { - hasPermissions, - isAuthenticatedAdmin, -}; diff --git a/packages/core/admin/server/register.js b/packages/core/admin/server/register.js deleted file mode 100644 index c05ad0dced..0000000000 --- a/packages/core/admin/server/register.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -const register = require('../config/functions/register'); - -module.exports = register; diff --git a/packages/core/admin/server/routes/index.js b/packages/core/admin/server/routes/index.js deleted file mode 100644 index d21bca7432..0000000000 --- a/packages/core/admin/server/routes/index.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -const routes = require('../../config/routes'); - -module.exports = routes.routes; 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 index c032393ea4..a6a184cf0d 100644 --- a/packages/core/admin/server/services/index.js +++ b/packages/core/admin/server/services/index.js @@ -1,25 +1,15 @@ 'use strict'; -const action = require('../../services/action'); -const auth = require('../../services/auth'); -const condition = require('../../services/condition'); -const contentType = require('../../services/content-type'); -const metrics = require('../../services/metrics'); -const passport = require('../../services/passport'); -const permission = require('../../services/permission'); -const role = require('../../services/role'); -const token = require('../../services/token'); -const user = require('../../services/user'); - module.exports = { - action, - auth, - condition, - 'content-type': contentType, - metrics, - passport, - permission, - role, - token, - user, + 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 858d4857a9..dd015444dd 100644 --- a/packages/core/strapi/lib/Strapi.js +++ b/packages/core/strapi/lib/Strapi.js @@ -1,18 +1,14 @@ '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 { 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/loaders/load-modules'); const bootstrap = require('./core/loaders/bootstrap'); @@ -27,6 +23,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 createContainer = require('./core/container'); const createConfigProvider = require('./core/base-providers/config-provider'); @@ -46,14 +43,8 @@ class Strapi { this.initServer(); - // Utils. - this.utils = { - models, - }; - this.dir = opts.dir || process.cwd(); - this.admin = {}; this.plugins = {}; const appConfig = loadConfiguration(this.dir, opts); @@ -70,8 +61,7 @@ class Strapi { // internal services. this.fs = createStrapiFs(this); this.eventHub = createEventHub(); - - this.requireProjectBootstrap(); + this.startupLogger = createStartupLogger(this); createUpdateNotifier(this).notify(); } @@ -88,78 +78,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.get('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 @@ -243,7 +161,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 @@ -251,10 +169,10 @@ class Strapi { : false; if (hideStartupMessage === false) { - if (!isInitialised) { - this.logFirstStartupMessage(); + if (!isInitialized) { + this.startupLogger.logFirstStartupMessage(); } else { - this.logStartupMessage(); + this.startupLogger.logStartupMessage(); } } @@ -272,13 +190,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'); @@ -320,6 +238,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)) { @@ -336,8 +262,9 @@ class Strapi { const modules = await loadModules(this); + this.loadAdmin(); + this.api = modules.api; - this.admin = modules.admin; this.components = modules.components; this.middleware = modules.middlewares; @@ -400,8 +327,6 @@ class Strapi { await this.runLifecyclesFunctions(LIFECYCLES.BOOTSTRAP); - await this.freeze(); - this.isLoaded = true; return this; } @@ -493,14 +418,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/core/loaders/load-admin.js b/packages/core/strapi/lib/core/loaders/load-admin.js deleted file mode 100644 index b643e0e55a..0000000000 --- a/packages/core/strapi/lib/core/loaders/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/loaders/load-modules.js b/packages/core/strapi/lib/core/loaders/load-modules.js index 5585f7ef2c..a8ec5e7b43 100644 --- a/packages/core/strapi/lib/core/loaders/load-modules.js +++ b/packages/core/strapi/lib/core/loaders/load-modules.js @@ -11,7 +11,6 @@ 'use strict'; const loadApis = require('./load-apis'); -const loadAdmin = require('./load-admin'); // const loadPlugins = require('./load-plugins'); @@ -21,10 +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, middlewares, hook, extensions, components] = await Promise.all([ loadApis(strapi), - loadAdmin(strapi), - // loadPlugins(strapi), loadMiddlewares(strapi), loadHooks(strapi.config), loadExtensions(strapi), @@ -51,8 +48,6 @@ module.exports = async strapi => { return { api, - admin, - // plugins, middlewares, hook, extensions, 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) { %>