@strapi/admin 4.14.1 → 4.14.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/admin/src/content-manager/hooks/useRelation/useRelation.js +1 -0
- package/build/{Admin-authenticatedApp.c0c1c027.chunk.js → Admin-authenticatedApp.a16cdc37.chunk.js} +1 -1
- package/build/{content-manager.0d2b4a60.chunk.js → content-manager.e1e49cc9.chunk.js} +1 -1
- package/build/index.html +1 -1
- package/build/{runtime~main.6c489074.js → runtime~main.377a22d0.js} +1 -1
- package/dist/server/admin/server/src/bootstrap.d.ts +2 -0
- package/dist/server/admin/server/src/controllers/admin.d.ts +42 -0
- package/dist/server/admin/server/src/controllers/api-token.d.ts +10 -0
- package/dist/server/admin/server/src/controllers/authenticated-user.d.ts +6 -0
- package/dist/server/admin/server/src/controllers/authentication.d.ts +12 -0
- package/dist/server/admin/server/src/controllers/permission.d.ts +13 -0
- package/dist/server/admin/server/src/controllers/role.d.ts +43 -0
- package/dist/server/admin/server/src/controllers/transfer/token.d.ts +9 -0
- package/dist/server/admin/server/src/controllers/user.d.ts +13 -0
- package/dist/server/admin/server/src/destroy.d.ts +2 -0
- package/dist/server/admin/server/src/domain/condition/index.d.ts +56 -0
- package/dist/server/admin/server/src/domain/condition/index.js +53 -0
- package/dist/server/admin/server/src/domain/condition/index.js.map +1 -0
- package/dist/server/admin/server/src/domain/condition/provider.d.ts +30 -0
- package/dist/server/admin/server/src/domain/condition/provider.js +37 -0
- package/dist/server/admin/server/src/domain/condition/provider.js.map +1 -0
- package/dist/server/admin/server/src/index.d.ts +10 -0
- package/dist/server/admin/server/src/middlewares/data-transfer.d.ts +2 -0
- package/dist/server/admin/server/src/services/action.d.ts +9 -0
- package/dist/server/admin/server/src/services/auth.d.ts +42 -0
- package/dist/server/admin/server/src/services/condition.d.ts +2 -0
- package/dist/server/admin/server/src/services/content-type.d.ts +51 -0
- package/dist/server/admin/server/src/services/index.d.ts +61 -0
- package/dist/server/admin/server/src/services/metrics.d.ts +7 -0
- package/dist/server/admin/server/src/services/permission/engine.d.ts +15 -0
- package/dist/server/admin/server/src/services/permission/queries.d.ts +44 -0
- package/dist/server/admin/server/src/services/permission.d.ts +67 -0
- package/dist/server/admin/server/src/services/role.d.ts +116 -0
- package/dist/server/admin/server/src/services/transfer/token.d.ts +103 -0
- package/dist/server/admin/server/src/services/transfer/utils.d.ts +19 -0
- package/dist/server/admin/server/src/services/user.d.ts +96 -0
- package/dist/server/admin/server/src/strategies/admin.d.ts +25 -0
- package/dist/server/admin/server/src/strategies/api-token.d.ts +60 -0
- package/dist/server/admin/server/src/strategies/data-transfer.d.ts +50 -0
- package/dist/server/admin/server/src/validation/common-validators.d.ts +59 -0
- package/dist/server/admin/server/src/validation/permission.d.ts +9 -0
- package/dist/server/bootstrap.d.ts +2 -0
- package/dist/server/bootstrap.js +84 -0
- package/dist/server/bootstrap.js.map +1 -0
- package/dist/server/config/admin-actions.d.ts +33 -0
- package/dist/server/config/admin-actions.js +219 -0
- package/dist/server/config/admin-actions.js.map +1 -0
- package/dist/server/config/admin-conditions.d.ts +46 -0
- package/dist/server/config/admin-conditions.js +29 -0
- package/dist/server/config/admin-conditions.js.map +1 -0
- package/dist/server/config/email-templates/forgot-password.d.ts +6 -0
- package/dist/server/config/email-templates/forgot-password.js +19 -0
- package/dist/server/config/email-templates/forgot-password.js.map +1 -0
- package/dist/server/config/index.d.ts +17 -0
- package/dist/server/config/index.js +14 -0
- package/dist/server/config/index.js.map +1 -0
- package/dist/server/config/settings.d.ts +7 -0
- package/dist/server/config/settings.js +11 -0
- package/dist/server/config/settings.js.map +1 -0
- package/dist/server/content-types/Permission.d.ts +62 -0
- package/dist/server/content-types/Permission.js +64 -0
- package/dist/server/content-types/Permission.js.map +1 -0
- package/dist/server/content-types/Role.d.ts +57 -0
- package/dist/server/content-types/Role.js +59 -0
- package/dist/server/content-types/Role.js.map +1 -0
- package/dist/server/content-types/User.d.ts +106 -0
- package/dist/server/content-types/User.js +109 -0
- package/dist/server/content-types/User.js.map +1 -0
- package/dist/server/content-types/api-token-permission.d.ts +35 -0
- package/dist/server/content-types/api-token-permission.js +37 -0
- package/dist/server/content-types/api-token-permission.js.map +1 -0
- package/dist/server/content-types/api-token.d.ts +73 -0
- package/dist/server/content-types/api-token.js +79 -0
- package/dist/server/content-types/api-token.js.map +1 -0
- package/dist/server/content-types/index.d.ts +437 -0
- package/dist/server/content-types/index.js +22 -0
- package/dist/server/content-types/index.js.map +1 -0
- package/dist/server/content-types/transfer-token-permission.d.ts +35 -0
- package/dist/server/content-types/transfer-token-permission.js +37 -0
- package/dist/server/content-types/transfer-token-permission.js.map +1 -0
- package/dist/server/content-types/transfer-token.d.ts +65 -0
- package/dist/server/content-types/transfer-token.js +67 -0
- package/dist/server/content-types/transfer-token.js.map +1 -0
- package/dist/server/controllers/admin.d.ts +42 -0
- package/dist/server/controllers/admin.js +131 -0
- package/dist/server/controllers/admin.js.map +1 -0
- package/dist/server/controllers/api-token.d.ts +10 -0
- package/dist/server/controllers/api-token.js +106 -0
- package/dist/server/controllers/api-token.js.map +1 -0
- package/dist/server/controllers/authenticated-user.d.ts +6 -0
- package/dist/server/controllers/authenticated-user.js +41 -0
- package/dist/server/controllers/authenticated-user.js.map +1 -0
- package/dist/server/controllers/authentication.d.ts +12 -0
- package/dist/server/controllers/authentication.js +130 -0
- package/dist/server/controllers/authentication.js.map +1 -0
- package/dist/server/controllers/content-api.d.ts +5 -0
- package/dist/server/controllers/content-api.js +13 -0
- package/dist/server/controllers/content-api.js.map +1 -0
- package/dist/server/controllers/formatters/conditions.d.ts +3 -0
- package/dist/server/controllers/formatters/conditions.js +9 -0
- package/dist/server/controllers/formatters/conditions.js.map +1 -0
- package/dist/server/controllers/formatters/format-actions-by-sections.d.ts +7 -0
- package/dist/server/controllers/formatters/format-actions-by-sections.js +36 -0
- package/dist/server/controllers/formatters/format-actions-by-sections.js.map +1 -0
- package/dist/server/controllers/formatters/index.d.ts +2 -0
- package/dist/server/controllers/formatters/index.js +11 -0
- package/dist/server/controllers/formatters/index.js.map +1 -0
- package/dist/server/controllers/index.d.ts +68 -0
- package/dist/server/controllers/index.js +51 -0
- package/dist/server/controllers/index.js.map +1 -0
- package/dist/server/controllers/permission.d.ts +13 -0
- package/dist/server/controllers/permission.js +38 -0
- package/dist/server/controllers/permission.js.map +1 -0
- package/dist/server/controllers/role.d.ts +43 -0
- package/dist/server/controllers/role.js +148 -0
- package/dist/server/controllers/role.js.map +1 -0
- package/dist/server/controllers/transfer/index.d.ts +4 -0
- package/dist/server/controllers/transfer/index.js +14 -0
- package/dist/server/controllers/transfer/index.js.map +1 -0
- package/dist/server/controllers/transfer/runner.d.ts +6 -0
- package/dist/server/controllers/transfer/runner.js +25 -0
- package/dist/server/controllers/transfer/runner.js.map +1 -0
- package/dist/server/controllers/transfer/token.d.ts +9 -0
- package/dist/server/controllers/transfer/token.js +100 -0
- package/dist/server/controllers/transfer/token.js.map +1 -0
- package/dist/server/controllers/user.d.ts +13 -0
- package/dist/server/controllers/user.js +105 -0
- package/dist/server/controllers/user.js.map +1 -0
- package/dist/server/controllers/webhooks.d.ts +10 -0
- package/dist/server/controllers/webhooks.js +100 -0
- package/dist/server/controllers/webhooks.js.map +1 -0
- package/dist/server/destroy.d.ts +2 -0
- package/dist/server/destroy.js +9 -0
- package/dist/server/destroy.js.map +1 -0
- package/dist/server/domain/action/index.d.ts +33 -0
- package/dist/server/domain/action/index.js +98 -0
- package/dist/server/domain/action/index.js.map +1 -0
- package/dist/server/domain/action/provider.d.ts +38 -0
- package/dist/server/domain/action/provider.js +66 -0
- package/dist/server/domain/action/provider.js.map +1 -0
- package/dist/server/domain/condition/index.d.ts +53 -0
- package/dist/server/domain/condition/index.js +56 -0
- package/dist/server/domain/condition/index.js.map +1 -0
- package/dist/server/domain/condition/provider.d.ts +30 -0
- package/dist/server/domain/condition/provider.js +37 -0
- package/dist/server/domain/condition/provider.js.map +1 -0
- package/dist/server/domain/permission/index.d.ts +77 -0
- package/dist/server/domain/permission/index.js +119 -0
- package/dist/server/domain/permission/index.js.map +1 -0
- package/dist/server/domain/user.d.ts +32 -0
- package/dist/server/domain/user.js +28 -0
- package/dist/server/domain/user.js.map +1 -0
- package/dist/server/index.d.ts +10 -0
- package/dist/server/index.js +27 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/middlewares/data-transfer.d.ts +2 -0
- package/dist/server/middlewares/data-transfer.js +21 -0
- package/dist/server/middlewares/data-transfer.js.map +1 -0
- package/dist/server/middlewares/index.d.ts +9 -0
- package/dist/server/middlewares/index.js +17 -0
- package/dist/server/middlewares/index.js.map +1 -0
- package/dist/server/middlewares/rateLimit.d.ts +5 -0
- package/dist/server/middlewares/rateLimit.js +42 -0
- package/dist/server/middlewares/rateLimit.js.map +1 -0
- package/dist/server/policies/hasPermissions.d.ts +6 -0
- package/dist/server/policies/hasPermissions.js +38 -0
- package/dist/server/policies/hasPermissions.js.map +1 -0
- package/dist/server/policies/index.d.ts +14 -0
- package/dist/server/policies/index.js +10 -0
- package/dist/server/policies/index.js.map +1 -0
- package/dist/server/policies/isAuthenticatedAdmin.d.ts +2 -0
- package/dist/server/policies/isAuthenticatedAdmin.js +6 -0
- package/dist/server/policies/isAuthenticatedAdmin.js.map +1 -0
- package/dist/server/policies/isTelemetryEnabled.d.ts +10 -0
- package/dist/server/policies/isTelemetryEnabled.js +18 -0
- package/dist/server/policies/isTelemetryEnabled.js.map +1 -0
- package/dist/server/register.d.ts +2 -0
- package/dist/server/register.js +18 -0
- package/dist/server/register.js.map +1 -0
- package/dist/server/routes/admin.d.ts +23 -0
- package/dist/server/routes/admin.js +72 -0
- package/dist/server/routes/admin.js.map +1 -0
- package/dist/server/routes/api-tokens.d.ts +14 -0
- package/dist/server/routes/api-tokens.js +71 -0
- package/dist/server/routes/api-tokens.js.map +1 -0
- package/dist/server/routes/authentication.d.ts +29 -0
- package/dist/server/routes/authentication.js +58 -0
- package/dist/server/routes/authentication.js.map +1 -0
- package/dist/server/routes/content-api.d.ts +9 -0
- package/dist/server/routes/content-api.js +21 -0
- package/dist/server/routes/content-api.js.map +1 -0
- package/dist/server/routes/index.d.ts +66 -0
- package/dist/server/routes/index.js +32 -0
- package/dist/server/routes/index.js.map +1 -0
- package/dist/server/routes/permissions.d.ts +9 -0
- package/dist/server/routes/permissions.js +21 -0
- package/dist/server/routes/permissions.js.map +1 -0
- package/dist/server/routes/roles.d.ts +14 -0
- package/dist/server/routes/roles.js +108 -0
- package/dist/server/routes/roles.js.map +1 -0
- package/dist/server/routes/serve-admin-panel.d.ts +5 -0
- package/dist/server/routes/serve-admin-panel.js +65 -0
- package/dist/server/routes/serve-admin-panel.js.map +1 -0
- package/dist/server/routes/transfer.d.ts +55 -0
- package/dist/server/routes/transfer.js +105 -0
- package/dist/server/routes/transfer.js.map +1 -0
- package/dist/server/routes/users.d.ts +14 -0
- package/dist/server/routes/users.js +89 -0
- package/dist/server/routes/users.js.map +1 -0
- package/dist/server/routes/webhooks.d.ts +14 -0
- package/dist/server/routes/webhooks.js +82 -0
- package/dist/server/routes/webhooks.js.map +1 -0
- package/dist/server/services/action.d.ts +9 -0
- package/dist/server/services/action.js +29 -0
- package/dist/server/services/action.js.map +1 -0
- package/dist/server/services/api-token.d.ts +102 -0
- package/dist/server/services/api-token.js +378 -0
- package/dist/server/services/api-token.js.map +1 -0
- package/dist/server/services/auth.d.ts +42 -0
- package/dist/server/services/auth.js +98 -0
- package/dist/server/services/auth.js.map +1 -0
- package/dist/server/services/condition.d.ts +2 -0
- package/dist/server/services/condition.js +11 -0
- package/dist/server/services/condition.js.map +1 -0
- package/dist/server/services/constants.d.ts +33 -0
- package/dist/server/services/constants.js +37 -0
- package/dist/server/services/constants.js.map +1 -0
- package/dist/server/services/content-type.d.ts +51 -0
- package/dist/server/services/content-type.js +158 -0
- package/dist/server/services/content-type.js.map +1 -0
- package/dist/server/services/index.d.ts +61 -0
- package/dist/server/services/index.js +57 -0
- package/dist/server/services/index.js.map +1 -0
- package/dist/server/services/metrics.d.ts +7 -0
- package/dist/server/services/metrics.js +37 -0
- package/dist/server/services/metrics.js.map +1 -0
- package/dist/server/services/passport/local-strategy.d.ts +3 -0
- package/dist/server/services/passport/local-strategy.js +28 -0
- package/dist/server/services/passport/local-strategy.js.map +1 -0
- package/dist/server/services/passport.d.ts +7 -0
- package/dist/server/services/passport.js +40 -0
- package/dist/server/services/passport.js.map +1 -0
- package/dist/server/services/permission/engine.d.ts +15 -0
- package/dist/server/services/permission/engine.js +67 -0
- package/dist/server/services/permission/engine.js.map +1 -0
- package/dist/server/services/permission/permissions-manager/index.d.ts +16 -0
- package/dist/server/services/permission/permissions-manager/index.js +48 -0
- package/dist/server/services/permission/permissions-manager/index.js.map +1 -0
- package/dist/server/services/permission/permissions-manager/query-builders.d.ts +3 -0
- package/dist/server/services/permission/permissions-manager/query-builders.js +66 -0
- package/dist/server/services/permission/permissions-manager/query-builders.js.map +1 -0
- package/dist/server/services/permission/permissions-manager/sanitize.d.ts +6 -0
- package/dist/server/services/permission/permissions-manager/sanitize.js +184 -0
- package/dist/server/services/permission/permissions-manager/sanitize.js.map +1 -0
- package/dist/server/services/permission/permissions-manager/validate.d.ts +5 -0
- package/dist/server/services/permission/permissions-manager/validate.js +134 -0
- package/dist/server/services/permission/permissions-manager/validate.js.map +1 -0
- package/dist/server/services/permission/queries.d.ts +44 -0
- package/dist/server/services/permission/queries.js +159 -0
- package/dist/server/services/permission/queries.js.map +1 -0
- package/dist/server/services/permission/sections-builder/builder.d.ts +39 -0
- package/dist/server/services/permission/sections-builder/builder.js +75 -0
- package/dist/server/services/permission/sections-builder/builder.js.map +1 -0
- package/dist/server/services/permission/sections-builder/handlers.d.ts +44 -0
- package/dist/server/services/permission/sections-builder/handlers.js +124 -0
- package/dist/server/services/permission/sections-builder/handlers.js.map +1 -0
- package/dist/server/services/permission/sections-builder/index.d.ts +8 -0
- package/dist/server/services/permission/sections-builder/index.js +39 -0
- package/dist/server/services/permission/sections-builder/index.js.map +1 -0
- package/dist/server/services/permission/sections-builder/section.d.ts +38 -0
- package/dist/server/services/permission/sections-builder/section.js +56 -0
- package/dist/server/services/permission/sections-builder/section.js.map +1 -0
- package/dist/server/services/permission/sections-builder/utils.d.ts +12 -0
- package/dist/server/services/permission/sections-builder/utils.js +23 -0
- package/dist/server/services/permission/sections-builder/utils.js.map +1 -0
- package/dist/server/services/permission.d.ts +67 -0
- package/dist/server/services/permission.js +33 -0
- package/dist/server/services/permission.js.map +1 -0
- package/dist/server/services/project-settings.d.ts +5 -0
- package/dist/server/services/project-settings.js +139 -0
- package/dist/server/services/project-settings.js.map +1 -0
- package/dist/server/services/role.d.ts +116 -0
- package/dist/server/services/role.js +382 -0
- package/dist/server/services/role.js.map +1 -0
- package/dist/server/services/token.d.ts +35 -0
- package/dist/server/services/token.js +58 -0
- package/dist/server/services/token.js.map +1 -0
- package/dist/server/services/transfer/index.d.ts +4 -0
- package/dist/server/services/transfer/index.js +33 -0
- package/dist/server/services/transfer/index.js.map +1 -0
- package/dist/server/services/transfer/permission.d.ts +6 -0
- package/dist/server/services/transfer/permission.js +20 -0
- package/dist/server/services/transfer/permission.js.map +1 -0
- package/dist/server/services/transfer/token.d.ts +84 -0
- package/dist/server/services/transfer/token.js +273 -0
- package/dist/server/services/transfer/token.js.map +1 -0
- package/dist/server/services/transfer/utils.d.ts +13 -0
- package/dist/server/services/transfer/utils.js +29 -0
- package/dist/server/services/transfer/utils.js.map +1 -0
- package/dist/server/services/user.d.ts +96 -0
- package/dist/server/services/user.js +311 -0
- package/dist/server/services/user.js.map +1 -0
- package/dist/server/strategies/admin.d.ts +25 -0
- package/dist/server/strategies/admin.js +44 -0
- package/dist/server/strategies/admin.js.map +1 -0
- package/dist/server/strategies/api-token.d.ts +60 -0
- package/dist/server/strategies/api-token.js +121 -0
- package/dist/server/strategies/api-token.js.map +1 -0
- package/dist/server/strategies/data-transfer.d.ts +66 -0
- package/dist/server/strategies/data-transfer.js +94 -0
- package/dist/server/strategies/data-transfer.js.map +1 -0
- package/dist/server/strategies/index.d.ts +17 -0
- package/dist/server/strategies/index.js +27 -0
- package/dist/server/strategies/index.js.map +1 -0
- package/dist/server/types/src/types/utils/object.d.ts +58 -0
- package/dist/server/types/src/types/utils/object.js +3 -0
- package/dist/server/types/src/types/utils/object.js.map +1 -0
- package/dist/server/utils/index.d.ts +1 -0
- package/dist/server/utils/index.js +9 -0
- package/dist/server/utils/index.js.map +1 -0
- package/dist/server/utils/types.d.ts +14 -0
- package/dist/server/utils/types.js +3 -0
- package/dist/server/utils/types.js.map +1 -0
- package/dist/server/validation/action-provider.d.ts +5 -0
- package/dist/server/validation/action-provider.js +58 -0
- package/dist/server/validation/action-provider.js.map +1 -0
- package/dist/server/validation/api-tokens.d.ts +7 -0
- package/dist/server/validation/api-tokens.js +36 -0
- package/dist/server/validation/api-tokens.js.map +1 -0
- package/dist/server/validation/authentication/forgot-password.d.ts +2 -0
- package/dist/server/validation/authentication/forgot-password.js +16 -0
- package/dist/server/validation/authentication/forgot-password.js.map +1 -0
- package/dist/server/validation/authentication/index.d.ts +5 -0
- package/dist/server/validation/authentication/index.js +17 -0
- package/dist/server/validation/authentication/index.js.map +1 -0
- package/dist/server/validation/authentication/register.d.ts +9 -0
- package/dist/server/validation/authentication/register.js +49 -0
- package/dist/server/validation/authentication/register.js.map +1 -0
- package/dist/server/validation/authentication/renew-token.d.ts +2 -0
- package/dist/server/validation/authentication/renew-token.js +6 -0
- package/dist/server/validation/authentication/renew-token.js.map +1 -0
- package/dist/server/validation/authentication/reset-password.d.ts +2 -0
- package/dist/server/validation/authentication/reset-password.js +17 -0
- package/dist/server/validation/authentication/reset-password.js.map +1 -0
- package/dist/server/validation/common-functions/check-fields-are-correctly-nested.d.ts +2 -0
- package/dist/server/validation/common-functions/check-fields-are-correctly-nested.js +26 -0
- package/dist/server/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -0
- package/dist/server/validation/common-functions/check-fields-dont-have-duplicates.d.ts +2 -0
- package/dist/server/validation/common-functions/check-fields-dont-have-duplicates.js +18 -0
- package/dist/server/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -0
- package/dist/server/validation/common-functions/index.d.ts +3 -0
- package/dist/server/validation/common-functions/index.js +11 -0
- package/dist/server/validation/common-functions/index.js.map +1 -0
- package/dist/server/validation/common-validators.d.ts +59 -0
- package/dist/server/validation/common-validators.js +162 -0
- package/dist/server/validation/common-validators.js.map +1 -0
- package/dist/server/validation/permission.d.ts +9 -0
- package/dist/server/validation/permission.js +46 -0
- package/dist/server/validation/permission.js.map +1 -0
- package/dist/server/validation/policies/hasPermissions.d.ts +5 -0
- package/dist/server/validation/policies/hasPermissions.js +29 -0
- package/dist/server/validation/policies/hasPermissions.js.map +1 -0
- package/dist/server/validation/project-settings.d.ts +9 -0
- package/dist/server/validation/project-settings.js +44 -0
- package/dist/server/validation/project-settings.js.map +1 -0
- package/dist/server/validation/role.d.ts +11 -0
- package/dist/server/validation/role.js +62 -0
- package/dist/server/validation/role.js.map +1 -0
- package/dist/server/validation/transfer/index.d.ts +1 -0
- package/dist/server/validation/transfer/index.js +9 -0
- package/dist/server/validation/transfer/index.js.map +1 -0
- package/dist/server/validation/transfer/token.d.ts +7 -0
- package/dist/server/validation/transfer/token.js +46 -0
- package/dist/server/validation/transfer/token.js.map +1 -0
- package/dist/server/validation/user.d.ts +117 -0
- package/dist/server/validation/user.js +69 -0
- package/dist/server/validation/user.js.map +1 -0
- package/package.json +9 -9
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const _ = require("lodash");
|
|
4
|
+
const utils_1 = require("@strapi/utils");
|
|
5
|
+
const user_1 = require("../validation/user");
|
|
6
|
+
const utils_2 = require("../utils");
|
|
7
|
+
const { ApplicationError } = utils_1.errors;
|
|
8
|
+
exports.default = {
|
|
9
|
+
async create(ctx) {
|
|
10
|
+
const { body } = ctx.request;
|
|
11
|
+
const cleanData = { ...body, email: _.get(body, `email`, ``).toLowerCase() };
|
|
12
|
+
await (0, user_1.validateUserCreationInput)(cleanData);
|
|
13
|
+
const attributes = _.pick(cleanData, [
|
|
14
|
+
'firstname',
|
|
15
|
+
'lastname',
|
|
16
|
+
'email',
|
|
17
|
+
'roles',
|
|
18
|
+
'preferedLanguage',
|
|
19
|
+
]);
|
|
20
|
+
const userAlreadyExists = await (0, utils_2.getService)('user').exists({
|
|
21
|
+
email: attributes.email,
|
|
22
|
+
});
|
|
23
|
+
if (userAlreadyExists) {
|
|
24
|
+
throw new ApplicationError('Email already taken');
|
|
25
|
+
}
|
|
26
|
+
const createdUser = await (0, utils_2.getService)('user').create(attributes);
|
|
27
|
+
const userInfo = (0, utils_2.getService)('user').sanitizeUser(createdUser);
|
|
28
|
+
// Note: We need to assign manually the registrationToken to the
|
|
29
|
+
// final user payload so that it's not removed in the sanitation process.
|
|
30
|
+
Object.assign(userInfo, { registrationToken: createdUser.registrationToken });
|
|
31
|
+
// Send 201 created
|
|
32
|
+
ctx.created({ data: userInfo });
|
|
33
|
+
},
|
|
34
|
+
async find(ctx) {
|
|
35
|
+
const userService = (0, utils_2.getService)('user');
|
|
36
|
+
const permissionsManager = strapi.admin.services.permission.createPermissionsManager({
|
|
37
|
+
ability: ctx.state.userAbility,
|
|
38
|
+
model: 'admin::user',
|
|
39
|
+
});
|
|
40
|
+
await permissionsManager.validateQuery(ctx.query);
|
|
41
|
+
const sanitizedQuery = await permissionsManager.sanitizeQuery(ctx.query);
|
|
42
|
+
const { results, pagination } = await userService.findPage(sanitizedQuery);
|
|
43
|
+
ctx.body = {
|
|
44
|
+
data: {
|
|
45
|
+
results: results.map((user) => userService.sanitizeUser(user)),
|
|
46
|
+
pagination,
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
async findOne(ctx) {
|
|
51
|
+
const { id } = ctx.params;
|
|
52
|
+
const user = await (0, utils_2.getService)('user').findOne(id);
|
|
53
|
+
if (!user) {
|
|
54
|
+
return ctx.notFound('User does not exist');
|
|
55
|
+
}
|
|
56
|
+
ctx.body = {
|
|
57
|
+
data: (0, utils_2.getService)('user').sanitizeUser(user),
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
async update(ctx) {
|
|
61
|
+
const { id } = ctx.params;
|
|
62
|
+
const { body: input } = ctx.request;
|
|
63
|
+
await (0, user_1.validateUserUpdateInput)(input);
|
|
64
|
+
if (_.has(input, 'email')) {
|
|
65
|
+
const uniqueEmailCheck = await (0, utils_2.getService)('user').exists({
|
|
66
|
+
id: { $ne: id },
|
|
67
|
+
email: input.email,
|
|
68
|
+
});
|
|
69
|
+
if (uniqueEmailCheck) {
|
|
70
|
+
throw new ApplicationError('A user with this email address already exists');
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const updatedUser = await (0, utils_2.getService)('user').updateById(id, input);
|
|
74
|
+
if (!updatedUser) {
|
|
75
|
+
return ctx.notFound('User does not exist');
|
|
76
|
+
}
|
|
77
|
+
ctx.body = {
|
|
78
|
+
data: (0, utils_2.getService)('user').sanitizeUser(updatedUser),
|
|
79
|
+
};
|
|
80
|
+
},
|
|
81
|
+
async deleteOne(ctx) {
|
|
82
|
+
const { id } = ctx.params;
|
|
83
|
+
const deletedUser = await (0, utils_2.getService)('user').deleteById(id);
|
|
84
|
+
if (!deletedUser) {
|
|
85
|
+
return ctx.notFound('User not found');
|
|
86
|
+
}
|
|
87
|
+
return ctx.deleted({
|
|
88
|
+
data: (0, utils_2.getService)('user').sanitizeUser(deletedUser),
|
|
89
|
+
});
|
|
90
|
+
},
|
|
91
|
+
/**
|
|
92
|
+
* Delete several users
|
|
93
|
+
* @param {KoaContext} ctx - koa context
|
|
94
|
+
*/
|
|
95
|
+
async deleteMany(ctx) {
|
|
96
|
+
const { body } = ctx.request;
|
|
97
|
+
await (0, user_1.validateUsersDeleteInput)(body);
|
|
98
|
+
const users = await (0, utils_2.getService)('user').deleteByIds(body.ids);
|
|
99
|
+
const sanitizedUsers = users.map((0, utils_2.getService)('user').sanitizeUser);
|
|
100
|
+
return ctx.deleted({
|
|
101
|
+
data: sanitizedUsers,
|
|
102
|
+
});
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.js","sourceRoot":"","sources":["../../../server/src/controllers/user.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
listWebhooks(ctx: any): Promise<void>;
|
|
3
|
+
getWebhook(ctx: any): Promise<any>;
|
|
4
|
+
createWebhook(ctx: any): Promise<void>;
|
|
5
|
+
updateWebhook(ctx: any): Promise<any>;
|
|
6
|
+
deleteWebhook(ctx: any): Promise<any>;
|
|
7
|
+
deleteWebhooks(ctx: any): Promise<any>;
|
|
8
|
+
triggerWebhook(ctx: any): Promise<void>;
|
|
9
|
+
};
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
7
|
+
const utils_1 = require("@strapi/utils");
|
|
8
|
+
const urlRegex = /^(?:([a-z0-9+.-]+):\/\/)(?:\S+(?::\S*)?@)?(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9_]-*)*[a-z\u00a1-\uffff0-9_]+)(?:\.(?:[a-z\u00a1-\uffff0-9_]-*)*[a-z\u00a1-\uffff0-9_]+)*\.?)(?::\d{2,5})?(?:[/?#]\S*)?$/;
|
|
9
|
+
const webhookValidator = utils_1.yup
|
|
10
|
+
.object({
|
|
11
|
+
name: utils_1.yup.string().required(),
|
|
12
|
+
url: utils_1.yup.string().matches(urlRegex, 'url must be a valid URL').required(),
|
|
13
|
+
headers: utils_1.yup.lazy((data) => {
|
|
14
|
+
if (typeof data !== 'object') {
|
|
15
|
+
return utils_1.yup.object().required();
|
|
16
|
+
}
|
|
17
|
+
return utils_1.yup
|
|
18
|
+
.object(
|
|
19
|
+
// @ts-expect-error
|
|
20
|
+
lodash_1.default.mapValues(data, () => {
|
|
21
|
+
utils_1.yup.string().min(1).required();
|
|
22
|
+
}))
|
|
23
|
+
.required();
|
|
24
|
+
}),
|
|
25
|
+
events: utils_1.yup.array().of(utils_1.yup.string()).required(),
|
|
26
|
+
})
|
|
27
|
+
.noUnknown();
|
|
28
|
+
const updateWebhookValidator = webhookValidator.shape({
|
|
29
|
+
isEnabled: utils_1.yup.boolean(),
|
|
30
|
+
});
|
|
31
|
+
exports.default = {
|
|
32
|
+
async listWebhooks(ctx) {
|
|
33
|
+
const webhooks = await strapi.webhookStore.findWebhooks();
|
|
34
|
+
ctx.send({ data: webhooks });
|
|
35
|
+
},
|
|
36
|
+
async getWebhook(ctx) {
|
|
37
|
+
const { id } = ctx.params;
|
|
38
|
+
const webhook = await strapi.webhookStore.findWebhook(id);
|
|
39
|
+
if (!webhook) {
|
|
40
|
+
return ctx.notFound('webhook.notFound');
|
|
41
|
+
}
|
|
42
|
+
ctx.send({ data: webhook });
|
|
43
|
+
},
|
|
44
|
+
async createWebhook(ctx) {
|
|
45
|
+
const { body } = ctx.request;
|
|
46
|
+
await (0, utils_1.validateYupSchema)(webhookValidator)(body);
|
|
47
|
+
const webhook = await strapi.webhookStore.createWebhook(body);
|
|
48
|
+
strapi.webhookRunner.add(webhook);
|
|
49
|
+
ctx.created({ data: webhook });
|
|
50
|
+
},
|
|
51
|
+
async updateWebhook(ctx) {
|
|
52
|
+
const { id } = ctx.params;
|
|
53
|
+
const { body } = ctx.request;
|
|
54
|
+
await (0, utils_1.validateYupSchema)(updateWebhookValidator)(body);
|
|
55
|
+
const webhook = await strapi.webhookStore.findWebhook(id);
|
|
56
|
+
if (!webhook) {
|
|
57
|
+
return ctx.notFound('webhook.notFound');
|
|
58
|
+
}
|
|
59
|
+
const updatedWebhook = await strapi.webhookStore.updateWebhook(id, {
|
|
60
|
+
...webhook,
|
|
61
|
+
...body,
|
|
62
|
+
});
|
|
63
|
+
if (!updatedWebhook) {
|
|
64
|
+
return ctx.notFound('webhook.notFound');
|
|
65
|
+
}
|
|
66
|
+
strapi.webhookRunner.update(updatedWebhook);
|
|
67
|
+
ctx.send({ data: updatedWebhook });
|
|
68
|
+
},
|
|
69
|
+
async deleteWebhook(ctx) {
|
|
70
|
+
const { id } = ctx.params;
|
|
71
|
+
const webhook = await strapi.webhookStore.findWebhook(id);
|
|
72
|
+
if (!webhook) {
|
|
73
|
+
return ctx.notFound('webhook.notFound');
|
|
74
|
+
}
|
|
75
|
+
await strapi.webhookStore.deleteWebhook(id);
|
|
76
|
+
strapi.webhookRunner.remove(webhook);
|
|
77
|
+
ctx.body = { data: webhook };
|
|
78
|
+
},
|
|
79
|
+
async deleteWebhooks(ctx) {
|
|
80
|
+
const { ids } = ctx.request.body;
|
|
81
|
+
if (!Array.isArray(ids) || ids.length === 0) {
|
|
82
|
+
return ctx.badRequest('ids must be an array of id');
|
|
83
|
+
}
|
|
84
|
+
for (const id of ids) {
|
|
85
|
+
const webhook = await strapi.webhookStore.findWebhook(id);
|
|
86
|
+
if (webhook) {
|
|
87
|
+
await strapi.webhookStore.deleteWebhook(id);
|
|
88
|
+
strapi.webhookRunner.remove(webhook);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
ctx.send({ data: ids });
|
|
92
|
+
},
|
|
93
|
+
async triggerWebhook(ctx) {
|
|
94
|
+
const { id } = ctx.params;
|
|
95
|
+
const webhook = (await strapi.webhookStore.findWebhook(id));
|
|
96
|
+
const response = await strapi.webhookRunner.run(webhook, 'trigger-test', {});
|
|
97
|
+
ctx.body = { data: response };
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=webhooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../../server/src/controllers/webhooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const utils_1 = require("./utils");
|
|
4
|
+
exports.default = async () => {
|
|
5
|
+
const { conditionProvider, actionProvider } = (0, utils_1.getService)('permission');
|
|
6
|
+
await conditionProvider.clear();
|
|
7
|
+
await actionProvider.clear();
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=destroy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destroy.js","sourceRoot":"","sources":["../../server/src/destroy.ts"],"names":[],"mappings":";;AAAA,mCAAqC;AAErC,kBAAe,KAAK,IAAI,EAAE;IACxB,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,IAAA,kBAAU,EAAC,YAAY,CAAC,CAAC;IAEvE,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAChC,MAAM,cAAc,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/// <reference types="lodash" />
|
|
2
|
+
import { Utils } from '@strapi/types';
|
|
3
|
+
export type Action = {
|
|
4
|
+
actionId: string;
|
|
5
|
+
section: string;
|
|
6
|
+
displayName: string;
|
|
7
|
+
category: string;
|
|
8
|
+
subCategory?: string;
|
|
9
|
+
pluginName?: string;
|
|
10
|
+
subjects?: string[];
|
|
11
|
+
options: {
|
|
12
|
+
applyToProperties: string[] | null;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Set of attributes used to create a new {@link Action} object
|
|
17
|
+
* @typedef {Action, { uid: string }} CreateActionPayload
|
|
18
|
+
*/
|
|
19
|
+
export type CreateActionPayload = Utils.Object.PartialBy<Omit<Action, 'actionId'>, 'options'> & {
|
|
20
|
+
uid: string;
|
|
21
|
+
};
|
|
22
|
+
declare const _default: {
|
|
23
|
+
actionFields: readonly ["section", "displayName", "category", "subCategory", "pluginName", "subjects", "options", "actionId"];
|
|
24
|
+
appliesToProperty: import("lodash").CurriedFunction2<string, Action, boolean>;
|
|
25
|
+
appliesToSubject: import("lodash").CurriedFunction2<string, Action, boolean>;
|
|
26
|
+
assignActionId: (attrs: CreateActionPayload) => CreateActionPayload;
|
|
27
|
+
assignOrOmitSubCategory: (action: Action) => Action;
|
|
28
|
+
create: (payload: CreateActionPayload) => Action;
|
|
29
|
+
computeActionId: (attributes: CreateActionPayload) => string;
|
|
30
|
+
getDefaultActionAttributes: () => Partial<Action>;
|
|
31
|
+
sanitizeActionAttributes: (action: Action | CreateActionPayload) => Action;
|
|
32
|
+
};
|
|
33
|
+
export default _default;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const fp_1 = require("lodash/fp");
|
|
4
|
+
/**
|
|
5
|
+
* Return the default attributes of a new {@link Action}
|
|
6
|
+
* @return Partial<Action>
|
|
7
|
+
*/
|
|
8
|
+
const getDefaultActionAttributes = () => ({
|
|
9
|
+
options: {
|
|
10
|
+
applyToProperties: null,
|
|
11
|
+
},
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Get the list of all the valid attributes of an {@link Action}
|
|
15
|
+
*/
|
|
16
|
+
const actionFields = [
|
|
17
|
+
'section',
|
|
18
|
+
'displayName',
|
|
19
|
+
'category',
|
|
20
|
+
'subCategory',
|
|
21
|
+
'pluginName',
|
|
22
|
+
'subjects',
|
|
23
|
+
'options',
|
|
24
|
+
'actionId',
|
|
25
|
+
];
|
|
26
|
+
/**
|
|
27
|
+
* Remove unwanted attributes from an {@link Action}
|
|
28
|
+
*/
|
|
29
|
+
const sanitizeActionAttributes = (0, fp_1.pick)(actionFields);
|
|
30
|
+
/**
|
|
31
|
+
* Create and return an identifier for an {@link CreateActionPayload}.
|
|
32
|
+
* The format is based on the action's source ({@link CreateActionPayload.pluginName} or 'application') and {@link CreateActionPayload.uid}.
|
|
33
|
+
* @param {CreateActionPayload} attributes
|
|
34
|
+
* @return {string}
|
|
35
|
+
*/
|
|
36
|
+
// TODO: TS - Use Common.UID
|
|
37
|
+
const computeActionId = (attributes) => {
|
|
38
|
+
const { pluginName, uid } = attributes;
|
|
39
|
+
if (!pluginName) {
|
|
40
|
+
return `api::${uid}`;
|
|
41
|
+
}
|
|
42
|
+
if (pluginName === 'admin') {
|
|
43
|
+
return `admin::${uid}`;
|
|
44
|
+
}
|
|
45
|
+
return `plugin::${pluginName}.${uid}`;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Assign an actionId attribute to an {@link CreateActionPayload} object
|
|
49
|
+
*/
|
|
50
|
+
const assignActionId = (attrs) => (0, fp_1.set)('actionId', computeActionId(attrs), attrs);
|
|
51
|
+
/**
|
|
52
|
+
* Transform an action by adding or removing the {@link Action.subCategory} attribute
|
|
53
|
+
* @param {Action} action - The action to process
|
|
54
|
+
* @return {Action}
|
|
55
|
+
*/
|
|
56
|
+
const assignOrOmitSubCategory = (action) => {
|
|
57
|
+
const shouldHaveSubCategory = ['settings', 'plugins'].includes(action.section);
|
|
58
|
+
return shouldHaveSubCategory
|
|
59
|
+
? (0, fp_1.set)('subCategory', action.subCategory || 'general', action)
|
|
60
|
+
: (0, fp_1.omit)('subCategory', action);
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Check if a property can be applied to an {@link Action}
|
|
64
|
+
*/
|
|
65
|
+
const appliesToProperty = (0, fp_1.curry)((property, action) => {
|
|
66
|
+
return (0, fp_1.pipe)((0, fp_1.prop)('options.applyToProperties'), (0, fp_1.includes)(property))(action);
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Check if an action applies to a subject
|
|
70
|
+
*/
|
|
71
|
+
const appliesToSubject = (0, fp_1.curry)((subject, action) => {
|
|
72
|
+
return (0, fp_1.isArray)(action.subjects) && (0, fp_1.includes)(subject, action.subjects);
|
|
73
|
+
});
|
|
74
|
+
/**
|
|
75
|
+
* Transform the given attributes into a domain representation of an Action
|
|
76
|
+
*/
|
|
77
|
+
const create = (0, fp_1.pipe)(
|
|
78
|
+
// Create and assign an action identifier to the action
|
|
79
|
+
// (need to be done before the sanitizeActionAttributes since we need the uid here)
|
|
80
|
+
assignActionId,
|
|
81
|
+
// Add or remove the sub category field based on the pluginName attribute
|
|
82
|
+
assignOrOmitSubCategory,
|
|
83
|
+
// Remove unwanted attributes from the payload
|
|
84
|
+
sanitizeActionAttributes,
|
|
85
|
+
// Complete the action creation by adding default values for some attributes
|
|
86
|
+
(0, fp_1.merge)(getDefaultActionAttributes()));
|
|
87
|
+
exports.default = {
|
|
88
|
+
actionFields,
|
|
89
|
+
appliesToProperty,
|
|
90
|
+
appliesToSubject,
|
|
91
|
+
assignActionId,
|
|
92
|
+
assignOrOmitSubCategory,
|
|
93
|
+
create,
|
|
94
|
+
computeActionId,
|
|
95
|
+
getDefaultActionAttributes,
|
|
96
|
+
sanitizeActionAttributes,
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/src/domain/action/index.ts"],"names":[],"mappings":";;AAAA,kCAAyF;AA8BzF;;;GAGG;AACH,MAAM,0BAA0B,GAAG,GAAoB,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE;QACP,iBAAiB,EAAE,IAAI;KACxB;CACF,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,YAAY,GAAG;IACnB,SAAS;IACT,aAAa;IACb,UAAU;IACV,aAAa;IACb,YAAY;IACZ,UAAU;IACV,SAAS;IACT,UAAU;CACF,CAAC;AAEX;;GAEG;AACH,MAAM,wBAAwB,GAAG,IAAA,SAAI,EAAC,YAAY,CAEvC,CAAC;AAEZ;;;;;GAKG;AACH,4BAA4B;AAC5B,MAAM,eAAe,GAAG,CAAC,UAA+B,EAAU,EAAE;IAClE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC;IAEvC,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,QAAQ,GAAG,EAAE,CAAC;KACtB;IAED,IAAI,UAAU,KAAK,OAAO,EAAE;QAC1B,OAAO,UAAU,GAAG,EAAE,CAAC;KACxB;IAED,OAAO,WAAW,UAAU,IAAI,GAAG,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG,CAAC,KAA0B,EAAE,EAAE,CACpD,IAAA,QAAG,EAAC,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;AAEjD;;;;GAIG;AACH,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAU,EAAE;IACzD,MAAM,qBAAqB,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAE/E,OAAO,qBAAqB;QAC1B,CAAC,CAAC,IAAA,QAAG,EAAC,aAAa,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS,EAAE,MAAM,CAAC;QAC7D,CAAC,CAAC,IAAA,SAAI,EAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,iBAAiB,GAAG,IAAA,UAAK,EAAC,CAAC,QAAgB,EAAE,MAAc,EAAW,EAAE;IAC5E,OAAO,IAAA,SAAI,EAAC,IAAA,SAAI,EAAC,2BAA2B,CAAC,EAAE,IAAA,aAAQ,EAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAA,UAAK,EAAC,CAAC,OAAe,EAAE,MAAc,EAAW,EAAE;IAC1E,OAAO,IAAA,YAAO,EAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAA,aAAQ,EAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,GAA6C,IAAA,SAAI;AAC3D,uDAAuD;AACvD,mFAAmF;AACnF,cAAc;AACd,yEAAyE;AACzE,uBAAuB;AACvB,8CAA8C;AAC9C,wBAAwB;AACxB,4EAA4E;AAC5E,IAAA,UAAK,EAAC,0BAA0B,EAAE,CAAC,CACpC,CAAC;AAEF,kBAAe;IACb,YAAY;IACZ,iBAAiB;IACjB,gBAAgB;IAChB,cAAc;IACd,uBAAuB;IACvB,MAAM;IACN,eAAe;IACf,0BAA0B;IAC1B,wBAAwB;CACzB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { providerFactory } from '@strapi/utils';
|
|
2
|
+
import type { CreateActionPayload } from './index';
|
|
3
|
+
type Options = Parameters<typeof providerFactory>['0'];
|
|
4
|
+
/**
|
|
5
|
+
* Creates a new instance of an action provider
|
|
6
|
+
*/
|
|
7
|
+
declare const createActionProvider: (options?: Options) => {
|
|
8
|
+
hooks: {
|
|
9
|
+
appliesPropertyToSubject: {
|
|
10
|
+
call(context: unknown): Promise<any[]>;
|
|
11
|
+
getHandlers(): import("@strapi/utils/dist/hooks").Handler[];
|
|
12
|
+
register(handler: import("@strapi/utils/dist/hooks").Handler): import("@strapi/utils/dist/hooks").Hook<import("@strapi/utils/dist/hooks").Handler>;
|
|
13
|
+
delete(handler: import("@strapi/utils/dist/hooks").Handler): import("@strapi/utils/dist/hooks").Hook<import("@strapi/utils/dist/hooks").Handler>;
|
|
14
|
+
};
|
|
15
|
+
willRegister: import("@strapi/utils/dist/hooks").AsyncSeriesHook;
|
|
16
|
+
didRegister: import("@strapi/utils/dist/hooks").AsyncParallelHook;
|
|
17
|
+
willDelete: import("@strapi/utils/dist/hooks").AsyncParallelHook;
|
|
18
|
+
didDelete: import("@strapi/utils/dist/hooks").AsyncParallelHook;
|
|
19
|
+
};
|
|
20
|
+
register(actionAttributes: CreateActionPayload): Promise<import("@strapi/utils/dist/provider-factory").Provider>;
|
|
21
|
+
registerMany(actionsAttributes: CreateActionPayload[]): Promise<any>;
|
|
22
|
+
appliesToProperty(property: string, actionId: string, subject: string): Promise<boolean>;
|
|
23
|
+
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider>;
|
|
24
|
+
get(key: string): {
|
|
25
|
+
[x: string]: unknown;
|
|
26
|
+
} | undefined;
|
|
27
|
+
getWhere(filters?: Record<string, unknown> | undefined): {
|
|
28
|
+
[x: string]: unknown;
|
|
29
|
+
}[];
|
|
30
|
+
values(): {
|
|
31
|
+
[x: string]: unknown;
|
|
32
|
+
}[];
|
|
33
|
+
keys(): string[];
|
|
34
|
+
has(key: string): boolean;
|
|
35
|
+
size(): number;
|
|
36
|
+
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider>;
|
|
37
|
+
};
|
|
38
|
+
export default createActionProvider;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const utils_1 = require("@strapi/utils");
|
|
7
|
+
const action_provider_1 = require("../../validation/action-provider");
|
|
8
|
+
const index_1 = __importDefault(require("./index"));
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new instance of an action provider
|
|
11
|
+
*/
|
|
12
|
+
const createActionProvider = (options) => {
|
|
13
|
+
const provider = (0, utils_1.providerFactory)(options);
|
|
14
|
+
const actionHooks = {
|
|
15
|
+
appliesPropertyToSubject: utils_1.hooks.createAsyncParallelHook(),
|
|
16
|
+
};
|
|
17
|
+
return {
|
|
18
|
+
...provider,
|
|
19
|
+
hooks: {
|
|
20
|
+
...provider.hooks,
|
|
21
|
+
...actionHooks,
|
|
22
|
+
},
|
|
23
|
+
async register(actionAttributes) {
|
|
24
|
+
if (strapi.isLoaded) {
|
|
25
|
+
throw new Error(`You can't register new actions outside of the bootstrap function.`);
|
|
26
|
+
}
|
|
27
|
+
(0, action_provider_1.validateRegisterProviderAction)([actionAttributes]);
|
|
28
|
+
const action = index_1.default.create(actionAttributes);
|
|
29
|
+
return provider.register(action.actionId, action);
|
|
30
|
+
},
|
|
31
|
+
async registerMany(actionsAttributes) {
|
|
32
|
+
(0, action_provider_1.validateRegisterProviderAction)(actionsAttributes);
|
|
33
|
+
for (const attributes of actionsAttributes) {
|
|
34
|
+
await this.register(attributes);
|
|
35
|
+
}
|
|
36
|
+
return this;
|
|
37
|
+
},
|
|
38
|
+
async appliesToProperty(property, actionId, subject) {
|
|
39
|
+
const action = provider.get(actionId);
|
|
40
|
+
if (!action) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
const appliesToAction = index_1.default.appliesToProperty(property, action);
|
|
44
|
+
// If the property isn't valid for this action, ignore the rest of the checks
|
|
45
|
+
if (!appliesToAction) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
// If the property is valid for this action and there isn't any subject
|
|
49
|
+
if (!subject) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
// If the property is valid for this action and the subject is not handled by the action
|
|
53
|
+
if (!index_1.default.appliesToSubject(subject, action)) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const results = await actionHooks.appliesPropertyToSubject.call({
|
|
57
|
+
property,
|
|
58
|
+
action,
|
|
59
|
+
subject,
|
|
60
|
+
});
|
|
61
|
+
return results.every((result) => result !== false);
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
exports.default = createActionProvider;
|
|
66
|
+
//# sourceMappingURL=provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../server/src/domain/action/provider.ts"],"names":[],"mappings":";;;;;AAAA,yCAAuD;AACvD,sEAAkF;AAElF,oDAA6B;AAK7B;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAAC,OAAiB,EAAE,EAAE;IACjD,MAAM,QAAQ,GAAG,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,WAAW,GAAG;QAClB,wBAAwB,EAAE,aAAK,CAAC,uBAAuB,EAAE;KAC1D,CAAC;IAEF,OAAO;QACL,GAAG,QAAQ;QAEX,KAAK,EAAE;YACL,GAAG,QAAQ,CAAC,KAAK;YACjB,GAAG,WAAW;SACf;QAED,KAAK,CAAC,QAAQ,CAAC,gBAAqC;YAClD,IAAI,MAAM,CAAC,QAAQ,EAAE;gBACnB,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;aACtF;YAED,IAAA,gDAA8B,EAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;YAEnD,MAAM,MAAM,GAAG,eAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YAE/C,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;QAED,KAAK,CAAC,YAAY,CAAC,iBAAwC;YACzD,IAAA,gDAA8B,EAAC,iBAAiB,CAAC,CAAC;YAElD,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE;gBAC1C,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aACjC;YAED,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,QAAgB,EAAE,QAAgB,EAAE,OAAe;YACzE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAuB,CAAC;YAC5D,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,KAAK,CAAC;aACd;YAED,MAAM,eAAe,GAAG,eAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEnE,6EAA6E;YAC7E,IAAI,CAAC,eAAe,EAAE;gBACpB,OAAO,KAAK,CAAC;aACd;YAED,uEAAuE;YACvE,IAAI,CAAC,OAAO,EAAE;gBACZ,OAAO,IAAI,CAAC;aACb;YAED,wFAAwF;YACxF,IAAI,CAAC,eAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE;gBAC7C,OAAO,KAAK,CAAC;aACd;YAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,wBAAwB,CAAC,IAAI,CAAC;gBAC9D,QAAQ;gBACR,MAAM;gBACN,OAAO;aACR,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;QACrD,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export type Condition = {
|
|
2
|
+
id: string;
|
|
3
|
+
displayName: string;
|
|
4
|
+
name: string;
|
|
5
|
+
plugin?: string;
|
|
6
|
+
category?: string;
|
|
7
|
+
/**
|
|
8
|
+
* The handler of a {@link Condition}
|
|
9
|
+
*/
|
|
10
|
+
handler: (user: object, options: object) => object | boolean;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Set of attributes used to create a new {@link Action} object
|
|
14
|
+
*/
|
|
15
|
+
export type CreateConditionPayload = Omit<Condition, 'id'>;
|
|
16
|
+
/**
|
|
17
|
+
* Get the default value used for every condition
|
|
18
|
+
* @return {Condition}
|
|
19
|
+
*/
|
|
20
|
+
export declare const getDefaultConditionAttributes: () => {
|
|
21
|
+
category: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Get the list of all the valid attributes of a {@link Condition}
|
|
25
|
+
* @return {string[]}
|
|
26
|
+
*/
|
|
27
|
+
export declare const conditionFields: readonly ["id", "displayName", "handler", "plugin", "category"];
|
|
28
|
+
/**
|
|
29
|
+
* Remove unwanted attributes from a {@link Condition}
|
|
30
|
+
*/
|
|
31
|
+
export declare const sanitizeConditionAttributes: import("lodash/fp").LodashPick2x1;
|
|
32
|
+
export declare const computeConditionId: (condition: CreateConditionPayload) => string;
|
|
33
|
+
/**
|
|
34
|
+
* Assign an id attribute to a {@link CreateConditionPayload} object
|
|
35
|
+
* @param attrs - Payload used to create a condition
|
|
36
|
+
*/
|
|
37
|
+
export declare const assignConditionId: (attrs: CreateConditionPayload) => Condition;
|
|
38
|
+
/**
|
|
39
|
+
* Transform the given attributes into a domain representation of a Condition
|
|
40
|
+
* @param payload - The condition payload containing the attributes needed to create a {@link Condition}
|
|
41
|
+
*/
|
|
42
|
+
export declare const create: (payload: CreateConditionPayload) => Condition;
|
|
43
|
+
declare const _default: {
|
|
44
|
+
assignConditionId: (attrs: CreateConditionPayload) => Condition;
|
|
45
|
+
computeConditionId: (condition: CreateConditionPayload) => string;
|
|
46
|
+
conditionFields: readonly ["id", "displayName", "handler", "plugin", "category"];
|
|
47
|
+
create: (payload: CreateConditionPayload) => Condition;
|
|
48
|
+
getDefaultConditionAttributes: () => {
|
|
49
|
+
category: string;
|
|
50
|
+
};
|
|
51
|
+
sanitizeConditionAttributes: import("lodash/fp").LodashPick2x1;
|
|
52
|
+
};
|
|
53
|
+
export default _default;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.create = exports.assignConditionId = exports.computeConditionId = exports.sanitizeConditionAttributes = exports.conditionFields = exports.getDefaultConditionAttributes = void 0;
|
|
4
|
+
const fp_1 = require("lodash/fp");
|
|
5
|
+
const DEFAULT_CATEGORY = 'default';
|
|
6
|
+
/**
|
|
7
|
+
* Get the default value used for every condition
|
|
8
|
+
* @return {Condition}
|
|
9
|
+
*/
|
|
10
|
+
const getDefaultConditionAttributes = () => ({
|
|
11
|
+
category: DEFAULT_CATEGORY,
|
|
12
|
+
});
|
|
13
|
+
exports.getDefaultConditionAttributes = getDefaultConditionAttributes;
|
|
14
|
+
/**
|
|
15
|
+
* Get the list of all the valid attributes of a {@link Condition}
|
|
16
|
+
* @return {string[]}
|
|
17
|
+
*/
|
|
18
|
+
exports.conditionFields = ['id', 'displayName', 'handler', 'plugin', 'category'];
|
|
19
|
+
/**
|
|
20
|
+
* Remove unwanted attributes from a {@link Condition}
|
|
21
|
+
*/
|
|
22
|
+
exports.sanitizeConditionAttributes = (0, fp_1.pick)(exports.conditionFields);
|
|
23
|
+
const computeConditionId = (condition) => {
|
|
24
|
+
const { name, plugin } = condition;
|
|
25
|
+
if (!plugin) {
|
|
26
|
+
return `api::${name}`;
|
|
27
|
+
}
|
|
28
|
+
if (plugin === 'admin') {
|
|
29
|
+
return `admin::${name}`;
|
|
30
|
+
}
|
|
31
|
+
return `plugin::${plugin}.${name}`;
|
|
32
|
+
};
|
|
33
|
+
exports.computeConditionId = computeConditionId;
|
|
34
|
+
/**
|
|
35
|
+
* Assign an id attribute to a {@link CreateConditionPayload} object
|
|
36
|
+
* @param attrs - Payload used to create a condition
|
|
37
|
+
*/
|
|
38
|
+
const assignConditionId = (attrs) => {
|
|
39
|
+
const condition = (0, fp_1.set)('id', (0, exports.computeConditionId)(attrs), attrs);
|
|
40
|
+
return condition;
|
|
41
|
+
};
|
|
42
|
+
exports.assignConditionId = assignConditionId;
|
|
43
|
+
/**
|
|
44
|
+
* Transform the given attributes into a domain representation of a Condition
|
|
45
|
+
* @param payload - The condition payload containing the attributes needed to create a {@link Condition}
|
|
46
|
+
*/
|
|
47
|
+
exports.create = (0, fp_1.pipe)(exports.assignConditionId, exports.sanitizeConditionAttributes, (0, fp_1.merge)((0, exports.getDefaultConditionAttributes)()));
|
|
48
|
+
exports.default = {
|
|
49
|
+
assignConditionId: exports.assignConditionId,
|
|
50
|
+
computeConditionId: exports.computeConditionId,
|
|
51
|
+
conditionFields: exports.conditionFields,
|
|
52
|
+
create: exports.create,
|
|
53
|
+
getDefaultConditionAttributes: exports.getDefaultConditionAttributes,
|
|
54
|
+
sanitizeConditionAttributes: exports.sanitizeConditionAttributes,
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/src/domain/condition/index.ts"],"names":[],"mappings":";;;AAAA,kCAAmD;AAoBnD,MAAM,gBAAgB,GAAG,SAAS,CAAC;AAEnC;;;GAGG;AACI,MAAM,6BAA6B,GAAG,GAAG,EAAE,CAAC,CAAC;IAClD,QAAQ,EAAE,gBAAgB;CAC3B,CAAC,CAAC;AAFU,QAAA,6BAA6B,iCAEvC;AAEH;;;GAGG;AACU,QAAA,eAAe,GAAG,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAE/F;;GAEG;AACU,QAAA,2BAA2B,GAAG,IAAA,SAAI,EAAC,uBAAe,CAAC,CAAC;AAE1D,MAAM,kBAAkB,GAAG,CAAC,SAAiC,EAAE,EAAE;IACtE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAEnC,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,QAAQ,IAAI,EAAE,CAAC;KACvB;IAED,IAAI,MAAM,KAAK,OAAO,EAAE;QACtB,OAAO,UAAU,IAAI,EAAE,CAAC;KACzB;IAED,OAAO,WAAW,MAAM,IAAI,IAAI,EAAE,CAAC;AACrC,CAAC,CAAC;AAZW,QAAA,kBAAkB,sBAY7B;AAEF;;;GAGG;AACI,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAa,EAAE;IAC5E,MAAM,SAAS,GAAG,IAAA,QAAG,EAAC,IAAI,EAAE,IAAA,0BAAkB,EAAC,KAAK,CAAC,EAAE,KAAK,CAE3D,CAAC;IACF,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AALW,QAAA,iBAAiB,qBAK5B;AAEF;;;GAGG;AACU,QAAA,MAAM,GAAG,IAAA,SAAI,EACxB,yBAAiB,EACjB,mCAA2B,EAC3B,IAAA,UAAK,EAAC,IAAA,qCAA6B,GAAE,CAAC,CACW,CAAC;AAEpD,kBAAe;IACb,iBAAiB,EAAjB,yBAAiB;IACjB,kBAAkB,EAAlB,0BAAkB;IAClB,eAAe,EAAf,uBAAe;IACf,MAAM,EAAN,cAAM;IACN,6BAA6B,EAA7B,qCAA6B;IAC7B,2BAA2B,EAA3B,mCAA2B;CAC5B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { CreateConditionPayload } from '.';
|
|
2
|
+
/**
|
|
3
|
+
* @typedef ConditionProviderOverride
|
|
4
|
+
* @property {function(CreateConditionPayload)} register
|
|
5
|
+
* @property {function(attributes CreateConditionPayload[]): Promise<this>} registerMany
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Creates a new instance of a condition provider
|
|
9
|
+
* @return {Provider & ConditionProviderOverride}
|
|
10
|
+
*/
|
|
11
|
+
declare const createConditionProvider: () => {
|
|
12
|
+
register(conditionAttributes: CreateConditionPayload): Promise<import("@strapi/utils/dist/provider-factory").Provider>;
|
|
13
|
+
registerMany(conditionsAttributes: CreateConditionPayload[]): Promise<any>;
|
|
14
|
+
hooks: import("@strapi/utils/dist/provider-factory").ProviderHooksMap;
|
|
15
|
+
delete(key: string): Promise<import("@strapi/utils/dist/provider-factory").Provider>;
|
|
16
|
+
get(key: string): {
|
|
17
|
+
[x: string]: unknown;
|
|
18
|
+
} | undefined;
|
|
19
|
+
getWhere(filters?: Record<string, unknown> | undefined): {
|
|
20
|
+
[x: string]: unknown;
|
|
21
|
+
}[];
|
|
22
|
+
values(): {
|
|
23
|
+
[x: string]: unknown;
|
|
24
|
+
}[];
|
|
25
|
+
keys(): string[];
|
|
26
|
+
has(key: string): boolean;
|
|
27
|
+
size(): number;
|
|
28
|
+
clear(): Promise<import("@strapi/utils/dist/provider-factory").Provider>;
|
|
29
|
+
};
|
|
30
|
+
export default createConditionProvider;
|