@strapi/admin 5.56.0 → 5.57.0
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/dist/admin/admin/src/components/Filters.js +1 -1
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +1 -1
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -2
- package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -2
- package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
- package/dist/admin/admin/src/components/MediaLibraryBanner.js +38 -2
- package/dist/admin/admin/src/components/MediaLibraryBanner.js.map +1 -1
- package/dist/admin/admin/src/components/MediaLibraryBanner.mjs +18 -2
- package/dist/admin/admin/src/components/MediaLibraryBanner.mjs.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.js +9 -0
- package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs +10 -1
- package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
- package/dist/admin/admin/src/components/TopBanners.js +52 -0
- package/dist/admin/admin/src/components/TopBanners.js.map +1 -0
- package/dist/admin/admin/src/components/TopBanners.mjs +30 -0
- package/dist/admin/admin/src/components/TopBanners.mjs.map +1 -0
- package/dist/admin/admin/src/features/Tracking.js +28 -8
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +29 -10
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +4 -20
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -20
- package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
- package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js +59 -0
- package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js.map +1 -0
- package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs +37 -0
- package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs.map +1 -0
- package/dist/admin/admin/src/translations/en.json.js +5 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +5 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +3 -3
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +2 -2
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +6 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +6 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
- package/dist/admin/src/components/MediaLibraryBanner.d.ts +10 -1
- package/dist/admin/src/components/TopBanners.d.ts +8 -0
- package/dist/admin/src/features/Tracking.d.ts +12 -1
- package/dist/admin/src/layouts/useAuthenticatedAccessTracking.d.ts +6 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +5 -0
- package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +8 -2
- package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/authentication.d.ts.map +1 -1
- package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +4 -1
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/ee/server/src/services/index.d.ts +4 -1
- package/dist/ee/server/src/services/index.d.ts.map +1 -1
- package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
- package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
- package/dist/ee/server/src/services/seat-enforcement.d.ts +3 -1
- package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +3 -4
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +3 -4
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.js +2 -2
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +2 -2
- package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.js +11 -11
- package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
- package/dist/server/ee/server/src/controllers/authentication.mjs +11 -11
- package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/user.js +7 -8
- package/dist/server/ee/server/src/controllers/user.js.map +1 -1
- package/dist/server/ee/server/src/controllers/user.mjs +8 -9
- package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
- package/dist/server/ee/server/src/services/metrics.js +9 -7
- package/dist/server/ee/server/src/services/metrics.js.map +1 -1
- package/dist/server/ee/server/src/services/metrics.mjs +9 -7
- package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
- package/dist/server/ee/server/src/services/persist-tables.js +3 -4
- package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
- package/dist/server/ee/server/src/services/persist-tables.mjs +3 -4
- package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
- package/dist/server/ee/server/src/services/role.js +2 -2
- package/dist/server/ee/server/src/services/role.js.map +1 -1
- package/dist/server/ee/server/src/services/role.mjs +1 -1
- package/dist/server/ee/server/src/services/role.mjs.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.js +20 -20
- package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
- package/dist/server/ee/server/src/services/seat-enforcement.mjs +20 -20
- package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
- package/dist/server/ee/server/src/services/user.js +1 -2
- package/dist/server/ee/server/src/services/user.js.map +1 -1
- package/dist/server/ee/server/src/services/user.mjs +2 -3
- package/dist/server/ee/server/src/services/user.mjs.map +1 -1
- package/dist/server/ee/server/src/utils/sso-lock.js +2 -2
- package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
- package/dist/server/ee/server/src/utils/sso-lock.mjs +1 -1
- package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
- package/dist/server/server/src/audit-logs/admin-users.js +3 -3
- package/dist/server/server/src/audit-logs/admin-users.js.map +1 -1
- package/dist/server/server/src/audit-logs/admin-users.mjs +2 -2
- package/dist/server/server/src/audit-logs/admin-users.mjs.map +1 -1
- package/dist/server/server/src/audit-logs/tokens.js +3 -3
- package/dist/server/server/src/audit-logs/tokens.js.map +1 -1
- package/dist/server/server/src/audit-logs/tokens.mjs +2 -2
- package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -1
- package/dist/server/server/src/audit-logs/webhooks.js +2 -2
- package/dist/server/server/src/audit-logs/webhooks.js.map +1 -1
- package/dist/server/server/src/audit-logs/webhooks.mjs +1 -1
- package/dist/server/server/src/audit-logs/webhooks.mjs.map +1 -1
- package/dist/server/server/src/bootstrap.js +6 -4
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +6 -4
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin-token.js +8 -8
- package/dist/server/server/src/controllers/admin-token.js.map +1 -1
- package/dist/server/server/src/controllers/admin-token.mjs +4 -4
- package/dist/server/server/src/controllers/admin-token.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin.js +3 -5
- package/dist/server/server/src/controllers/admin.js.map +1 -1
- package/dist/server/server/src/controllers/admin.mjs +2 -4
- package/dist/server/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/server/src/controllers/api-token.js +8 -8
- package/dist/server/server/src/controllers/api-token.js.map +1 -1
- package/dist/server/server/src/controllers/api-token.mjs +4 -4
- package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
- package/dist/server/server/src/controllers/formatters/conditions.js +2 -2
- package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
- package/dist/server/server/src/controllers/formatters/conditions.mjs +2 -2
- package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
- package/dist/server/server/src/controllers/transfer/index.js +2 -2
- package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
- package/dist/server/server/src/controllers/transfer/index.mjs +2 -2
- package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
- package/dist/server/server/src/controllers/transfer/token.js +8 -8
- package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
- package/dist/server/server/src/controllers/transfer/token.mjs +4 -4
- package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
- package/dist/server/server/src/domain/action/index.js +18 -16
- package/dist/server/server/src/domain/action/index.js.map +1 -1
- package/dist/server/server/src/domain/action/index.mjs +16 -14
- package/dist/server/server/src/domain/action/index.mjs.map +1 -1
- package/dist/server/server/src/domain/action/provider.mjs +4 -4
- package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
- package/dist/server/server/src/domain/condition/index.js +7 -4
- package/dist/server/server/src/domain/condition/index.js.map +1 -1
- package/dist/server/server/src/domain/condition/index.mjs +7 -4
- package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
- package/dist/server/server/src/domain/permission/index.js +24 -15
- package/dist/server/server/src/domain/permission/index.js.map +1 -1
- package/dist/server/server/src/domain/permission/index.mjs +21 -12
- package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.js +5 -5
- package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.mjs +4 -4
- package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/server/src/register.js +6 -0
- package/dist/server/server/src/register.js.map +1 -1
- package/dist/server/server/src/register.mjs +6 -0
- package/dist/server/server/src/register.mjs.map +1 -1
- package/dist/server/server/src/services/action.js +1 -2
- package/dist/server/server/src/services/action.js.map +1 -1
- package/dist/server/server/src/services/action.mjs +1 -2
- package/dist/server/server/src/services/action.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +61 -49
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +53 -41
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/condition.js +2 -2
- package/dist/server/server/src/services/condition.js.map +1 -1
- package/dist/server/server/src/services/condition.mjs +1 -1
- package/dist/server/server/src/services/condition.mjs.map +1 -1
- package/dist/server/server/src/services/content-type.js +5 -4
- package/dist/server/server/src/services/content-type.js.map +1 -1
- package/dist/server/server/src/services/content-type.mjs +8 -7
- package/dist/server/server/src/services/content-type.mjs.map +1 -1
- package/dist/server/server/src/services/homepage.js +2 -1
- package/dist/server/server/src/services/homepage.js.map +1 -1
- package/dist/server/server/src/services/homepage.mjs +2 -1
- package/dist/server/server/src/services/homepage.mjs.map +1 -1
- package/dist/server/server/src/services/passport/local-strategy.js +2 -2
- package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
- package/dist/server/server/src/services/passport/local-strategy.mjs +1 -1
- package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
- package/dist/server/server/src/services/passport.js +1 -2
- package/dist/server/server/src/services/passport.js.map +1 -1
- package/dist/server/server/src/services/passport.mjs +1 -2
- package/dist/server/server/src/services/passport.mjs.map +1 -1
- package/dist/server/server/src/services/permission/engine.js +4 -4
- package/dist/server/server/src/services/permission/engine.js.map +1 -1
- package/dist/server/server/src/services/permission/engine.mjs +2 -2
- package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/index.js +2 -3
- package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/index.mjs +1 -2
- package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +6 -6
- package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +4 -4
- package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +47 -41
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +44 -38
- package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/validate.js +30 -26
- package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
- package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +28 -24
- package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
- package/dist/server/server/src/services/permission/queries.js +9 -9
- package/dist/server/server/src/services/permission/queries.js.map +1 -1
- package/dist/server/server/src/services/permission/queries.mjs +9 -9
- package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
- package/dist/server/server/src/services/permission/rename-fields.js +118 -0
- package/dist/server/server/src/services/permission/rename-fields.js.map +1 -0
- package/dist/server/server/src/services/permission/rename-fields.mjs +116 -0
- package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -0
- package/dist/server/server/src/services/permission/sections-builder/index.js +2 -2
- package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/index.mjs +2 -2
- package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/section.js +1 -2
- package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/section.mjs +1 -2
- package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/utils.js +6 -6
- package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
- package/dist/server/server/src/services/permission/sections-builder/utils.mjs +4 -4
- package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
- package/dist/server/server/src/services/role.js +20 -19
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +20 -19
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/token.js +20 -16
- package/dist/server/server/src/services/transfer/token.js.map +1 -1
- package/dist/server/server/src/services/transfer/token.mjs +14 -10
- package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
- package/dist/server/server/src/services/user.js +2 -3
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +3 -4
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/server/src/strategies/api-token-utils.js +2 -3
- package/dist/server/server/src/strategies/api-token-utils.js.map +1 -1
- package/dist/server/server/src/strategies/api-token-utils.mjs +2 -3
- package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -1
- package/dist/server/server/src/strategies/content-api-token.js +3 -3
- package/dist/server/server/src/strategies/content-api-token.js.map +1 -1
- package/dist/server/server/src/strategies/content-api-token.mjs +1 -1
- package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -1
- package/dist/server/server/src/strategies/data-transfer.js +4 -4
- package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
- package/dist/server/server/src/strategies/data-transfer.mjs +3 -3
- package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
- package/dist/server/server/src/validation/common-validators.js +9 -10
- package/dist/server/server/src/validation/common-validators.js.map +1 -1
- package/dist/server/server/src/validation/common-validators.mjs +13 -14
- package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
- package/dist/server/server/src/validation/user.js +1 -2
- package/dist/server/server/src/validation/user.js.map +1 -1
- package/dist/server/server/src/validation/user.mjs +1 -2
- package/dist/server/server/src/validation/user.mjs.map +1 -1
- package/dist/server/src/audit-logs/tokens.d.ts.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-token.d.ts.map +1 -1
- package/dist/server/src/controllers/admin.d.ts.map +1 -1
- package/dist/server/src/controllers/api-token.d.ts.map +1 -1
- package/dist/server/src/controllers/formatters/conditions.d.ts +1 -1
- package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
- package/dist/server/src/controllers/homepage.d.ts +1 -1
- package/dist/server/src/controllers/index.d.ts +1 -1
- package/dist/server/src/controllers/transfer/index.d.ts.map +1 -1
- package/dist/server/src/controllers/transfer/token.d.ts.map +1 -1
- package/dist/server/src/domain/action/index.d.ts +1 -0
- package/dist/server/src/domain/action/index.d.ts.map +1 -1
- package/dist/server/src/domain/condition/index.d.ts +2 -2
- package/dist/server/src/domain/condition/index.d.ts.map +1 -1
- package/dist/server/src/domain/permission/index.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -3
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/services/action.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/condition.d.ts.map +1 -1
- package/dist/server/src/services/content-type.d.ts.map +1 -1
- package/dist/server/src/services/homepage.d.ts +1 -1
- package/dist/server/src/services/homepage.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +2 -2
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
- package/dist/server/src/services/passport.d.ts.map +1 -1
- package/dist/server/src/services/permission/engine.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
- package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
- package/dist/server/src/services/permission/queries.d.ts.map +1 -1
- package/dist/server/src/services/permission/rename-fields.d.ts +21 -0
- package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -0
- package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
- package/dist/server/src/services/permission/sections-builder/utils.d.ts +1 -1
- package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts +1 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/services/transfer/token.d.ts.map +1 -1
- package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
- package/dist/server/src/validation/user.d.ts.map +1 -1
- package/package.json +9 -9
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { assign } from 'lodash/fp';
|
|
2
1
|
import { getService } from '../utils/index.mjs';
|
|
3
2
|
|
|
4
3
|
const getSSOProvidersList = async ()=>{
|
|
@@ -13,10 +12,11 @@ const sendUpdateProjectInformation = async (strapi1)=>{
|
|
|
13
12
|
const numberOfAdminUsers = await getService('user').count();
|
|
14
13
|
if (strapi1.ee.features.isEnabled('sso')) {
|
|
15
14
|
const SSOProviders = await getSSOProvidersList();
|
|
16
|
-
groupProperties =
|
|
15
|
+
groupProperties = {
|
|
16
|
+
...groupProperties,
|
|
17
17
|
SSOProviders,
|
|
18
18
|
isSSOConfigured: SSOProviders.length !== 0
|
|
19
|
-
}
|
|
19
|
+
};
|
|
20
20
|
}
|
|
21
21
|
if (strapi1.ee.features.isEnabled('cms-content-releases')) {
|
|
22
22
|
const numberOfContentReleases = await strapi1.db.query('plugin::content-releases.release').count();
|
|
@@ -27,15 +27,17 @@ const sendUpdateProjectInformation = async (strapi1)=>{
|
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
});
|
|
30
|
-
groupProperties =
|
|
30
|
+
groupProperties = {
|
|
31
|
+
...groupProperties,
|
|
31
32
|
numberOfContentReleases,
|
|
32
33
|
numberOfPublishedContentReleases
|
|
33
|
-
}
|
|
34
|
+
};
|
|
34
35
|
}
|
|
35
|
-
groupProperties =
|
|
36
|
+
groupProperties = {
|
|
37
|
+
...groupProperties,
|
|
36
38
|
numberOfActiveAdminUsers,
|
|
37
39
|
numberOfAdminUsers
|
|
38
|
-
}
|
|
40
|
+
};
|
|
39
41
|
strapi1.telemetry.send('didUpdateProjectInformation', {
|
|
40
42
|
groupProperties
|
|
41
43
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"metrics.mjs","sources":["../../../../../../ee/server/src/services/metrics.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"metrics.mjs","sources":["../../../../../../ee/server/src/services/metrics.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { getService } from '../utils';\n\nconst getSSOProvidersList = async () => {\n const { providerRegistry } = strapi.service('admin::passport');\n\n return providerRegistry.getAll().map(({ uid }: { uid: string }) => uid);\n};\n\nconst sendUpdateProjectInformation = async (strapi: Core.Strapi) => {\n let groupProperties = {};\n\n const numberOfActiveAdminUsers = await getService('user').count({ isActive: true });\n const numberOfAdminUsers = await getService('user').count();\n\n if (strapi.ee.features.isEnabled('sso')) {\n const SSOProviders = await getSSOProvidersList();\n\n groupProperties = {\n ...groupProperties,\n SSOProviders,\n isSSOConfigured: SSOProviders.length !== 0,\n };\n }\n\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n const numberOfContentReleases = await strapi\n .db!.query('plugin::content-releases.release')\n .count();\n\n const numberOfPublishedContentReleases = await strapi\n .db!.query('plugin::content-releases.release')\n .count({\n filters: { releasedAt: { $notNull: true } },\n });\n\n groupProperties = {\n ...groupProperties,\n numberOfContentReleases,\n numberOfPublishedContentReleases,\n };\n }\n\n groupProperties = { ...groupProperties, numberOfActiveAdminUsers, numberOfAdminUsers };\n\n strapi.telemetry.send('didUpdateProjectInformation', {\n groupProperties,\n });\n};\n\nconst startCron = (strapi: Core.Strapi) => {\n strapi.cron.add({\n sendProjectInformation: {\n task: () => sendUpdateProjectInformation(strapi),\n options: '0 0 0 * * *',\n },\n });\n};\n\nexport default { startCron, getSSOProvidersList, sendUpdateProjectInformation };\n"],"names":["getSSOProvidersList","providerRegistry","strapi","service","getAll","map","uid","sendUpdateProjectInformation","groupProperties","numberOfActiveAdminUsers","getService","count","isActive","numberOfAdminUsers","ee","features","isEnabled","SSOProviders","isSSOConfigured","length","numberOfContentReleases","db","query","numberOfPublishedContentReleases","filters","releasedAt","$notNull","telemetry","send","startCron","cron","add","sendProjectInformation","task","options"],"mappings":";;AAGA,MAAMA,mBAAAA,GAAsB,UAAA;AAC1B,IAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;IAE5C,OAAOF,gBAAAA,CAAiBG,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAC,EAAEC,GAAG,EAAmB,GAAKA,GAAAA,CAAAA;AACrE,CAAA;AAEA,MAAMC,+BAA+B,OAAOL,OAAAA,GAAAA;AAC1C,IAAA,IAAIM,kBAAkB,EAAC;AAEvB,IAAA,MAAMC,wBAAAA,GAA2B,MAAMC,UAAAA,CAAW,MAAA,CAAA,CAAQC,KAAK,CAAC;QAAEC,QAAAA,EAAU;AAAK,KAAA,CAAA;AACjF,IAAA,MAAMC,kBAAAA,GAAqB,MAAMH,UAAAA,CAAW,MAAA,CAAA,CAAQC,KAAK,EAAA;AAEzD,IAAA,IAAIT,QAAOY,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,KAAA,CAAA,EAAQ;AACvC,QAAA,MAAMC,eAAe,MAAMjB,mBAAAA,EAAAA;QAE3BQ,eAAAA,GAAkB;AAChB,YAAA,GAAGA,eAAe;AAClBS,YAAAA,YAAAA;YACAC,eAAAA,EAAiBD,YAAAA,CAAaE,MAAM,KAAK;AAC3C,SAAA;AACF,IAAA;AAEA,IAAA,IAAIjB,QAAOY,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA,EAAyB;QACxD,MAAMI,uBAAAA,GAA0B,MAAMlB,OAAAA,CACnCmB,EAAE,CAAEC,KAAK,CAAC,oCACVX,KAAK,EAAA;QAER,MAAMY,gCAAAA,GAAmC,MAAMrB,OAAAA,CAC5CmB,EAAE,CAAEC,KAAK,CAAC,kCAAA,CAAA,CACVX,KAAK,CAAC;YACLa,OAAAA,EAAS;gBAAEC,UAAAA,EAAY;oBAAEC,QAAAA,EAAU;AAAK;AAAE;AAC5C,SAAA,CAAA;QAEFlB,eAAAA,GAAkB;AAChB,YAAA,GAAGA,eAAe;AAClBY,YAAAA,uBAAAA;AACAG,YAAAA;AACF,SAAA;AACF,IAAA;IAEAf,eAAAA,GAAkB;AAAE,QAAA,GAAGA,eAAe;AAAEC,QAAAA,wBAAAA;AAA0BI,QAAAA;AAAmB,KAAA;AAErFX,IAAAA,OAAAA,CAAOyB,SAAS,CAACC,IAAI,CAAC,6BAAA,EAA+B;AACnDpB,QAAAA;AACF,KAAA,CAAA;AACF,CAAA;AAEA,MAAMqB,YAAY,CAAC3B,OAAAA,GAAAA;IACjBA,OAAAA,CAAO4B,IAAI,CAACC,GAAG,CAAC;QACdC,sBAAAA,EAAwB;AACtBC,YAAAA,IAAAA,EAAM,IAAM1B,4BAAAA,CAA6BL,OAAAA,CAAAA;YACzCgC,OAAAA,EAAS;AACX;AACF,KAAA,CAAA;AACF,CAAA;AAEA,cAAe;AAAEL,IAAAA,SAAAA;AAAW7B,IAAAA,mBAAAA;AAAqBO,IAAAA;AAA6B,CAAA;;;;"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _ = require('lodash');
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Transform table name to the object format
|
|
@@ -32,13 +32,12 @@ var fp = require('lodash/fp');
|
|
|
32
32
|
});
|
|
33
33
|
const tables = tableNames.map(transformTableName);
|
|
34
34
|
// Get new tables to be persisted, remove tables if they already were persisted
|
|
35
|
-
const notPersistedTableNames =
|
|
35
|
+
const notPersistedTableNames = _.differenceWith(tables, persistedTables, _.isEqual);
|
|
36
36
|
// Remove tables that are going to be changed
|
|
37
|
-
const tablesToPersist =
|
|
37
|
+
const tablesToPersist = _.differenceWith(persistedTables, notPersistedTableNames, (t1, t2)=>t1.name === t2.name);
|
|
38
38
|
if (!notPersistedTableNames.length) {
|
|
39
39
|
return;
|
|
40
40
|
}
|
|
41
|
-
// @ts-expect-error lodash types
|
|
42
41
|
tablesToPersist.push(...notPersistedTableNames);
|
|
43
42
|
await strapi1.store.set({
|
|
44
43
|
type: 'core',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist-tables.js","sources":["../../../../../../ee/server/src/services/persist-tables.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"persist-tables.js","sources":["../../../../../../ee/server/src/services/persist-tables.ts"],"sourcesContent":["import { isEqual, differenceWith } from 'lodash';\nimport type { Core } from '@strapi/types';\n\nexport interface PersistedTable {\n name: string;\n dependsOn?: Array<{ name: string }>;\n}\n\n/**\n * Transform table name to the object format\n */\nconst transformTableName = (table: string | PersistedTable) => {\n if (typeof table === 'string') {\n return { name: table };\n }\n return table;\n};\n\n/**\n * Finds all tables in the database matching the regular expression\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\nexport async function findTables({ strapi }: { strapi: Core.Strapi }, regex: any) {\n const tables = await strapi.db.dialect.schemaInspector.getTables();\n return tables.filter((tableName: string) => regex.test(tableName));\n}\n\n/**\n * Add tables name to the reserved tables in core store\n */\nasync function addPersistTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n const persistedTables = await getPersistedTables({ strapi });\n const tables = tableNames.map(transformTableName);\n\n // Get new tables to be persisted, remove tables if they already were persisted\n const notPersistedTableNames = differenceWith(tables, persistedTables, isEqual);\n // Remove tables that are going to be changed\n const tablesToPersist = differenceWith(\n persistedTables,\n notPersistedTableNames,\n (t1: any, t2: any) => t1.name === t2.name\n );\n\n if (!notPersistedTableNames.length) {\n return;\n }\n\n tablesToPersist.push(...notPersistedTableNames);\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tablesToPersist,\n });\n}\n\n/**\n * Get all reserved table names from the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\n\nasync function getPersistedTables({ strapi }: { strapi: Core.Strapi }) {\n const persistedTables: any = await strapi.store.get({\n type: 'core',\n key: 'persisted_tables',\n });\n\n return (persistedTables || []).map(transformTableName);\n}\n\n/**\n * Set all reserved table names in the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {Array<string|{ table: string; dependsOn?: Array<{ table: string;}> }>} tableNames\n * @returns {Promise<void>}\n */\nasync function setPersistedTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tableNames,\n });\n}\n/**\n * Add all table names that start with a prefix to the reserved tables in\n * core store\n * @param {string} tableNamePrefix\n * @return {Promise<void>}\n */\n\nexport const persistTablesWithPrefix = async (tableNamePrefix: string) => {\n const tableNameRegex = new RegExp(`^${tableNamePrefix}.*`);\n const tableNames = await findTables({ strapi }, tableNameRegex);\n\n await addPersistTables({ strapi }, tableNames);\n};\n\n/**\n * Remove all table names that end with a suffix from the reserved tables in core store\n * @param {string} tableNameSuffix\n * @return {Promise<void>}\n */\nexport const removePersistedTablesWithSuffix = async (tableNameSuffix: string) => {\n const tableNameRegex = new RegExp(`.*${tableNameSuffix}$`);\n const persistedTables = await getPersistedTables({ strapi });\n\n const filteredPersistedTables = persistedTables.filter((table: any) => {\n return !tableNameRegex.test(table.name);\n });\n\n if (filteredPersistedTables.length === persistedTables.length) {\n return;\n }\n\n await setPersistedTables({ strapi }, filteredPersistedTables);\n};\n\n/**\n * Add tables to the reserved tables in core store\n */\nexport const persistTables = async (tables: Array<string | PersistedTable>) => {\n await addPersistTables({ strapi }, tables);\n};\n\nexport default {\n persistTablesWithPrefix,\n removePersistedTablesWithSuffix,\n persistTables,\n findTables,\n};\n"],"names":["transformTableName","table","name","findTables","strapi","regex","tables","db","dialect","schemaInspector","getTables","filter","tableName","test","addPersistTables","tableNames","persistedTables","getPersistedTables","map","notPersistedTableNames","differenceWith","isEqual","tablesToPersist","t1","t2","length","push","store","set","type","key","value","get","setPersistedTables","persistTablesWithPrefix","tableNamePrefix","tableNameRegex","RegExp","removePersistedTablesWithSuffix","tableNameSuffix","filteredPersistedTables","persistTables"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { differenceWith, isEqual } from 'lodash
|
|
1
|
+
import { differenceWith, isEqual } from 'lodash';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Transform table name to the object format
|
|
@@ -28,13 +28,12 @@ import { differenceWith, isEqual } from 'lodash/fp';
|
|
|
28
28
|
});
|
|
29
29
|
const tables = tableNames.map(transformTableName);
|
|
30
30
|
// Get new tables to be persisted, remove tables if they already were persisted
|
|
31
|
-
const notPersistedTableNames = differenceWith(
|
|
31
|
+
const notPersistedTableNames = differenceWith(tables, persistedTables, isEqual);
|
|
32
32
|
// Remove tables that are going to be changed
|
|
33
|
-
const tablesToPersist = differenceWith((t1, t2)=>t1.name === t2.name
|
|
33
|
+
const tablesToPersist = differenceWith(persistedTables, notPersistedTableNames, (t1, t2)=>t1.name === t2.name);
|
|
34
34
|
if (!notPersistedTableNames.length) {
|
|
35
35
|
return;
|
|
36
36
|
}
|
|
37
|
-
// @ts-expect-error lodash types
|
|
38
37
|
tablesToPersist.push(...notPersistedTableNames);
|
|
39
38
|
await strapi1.store.set({
|
|
40
39
|
type: 'core',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persist-tables.mjs","sources":["../../../../../../ee/server/src/services/persist-tables.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"persist-tables.mjs","sources":["../../../../../../ee/server/src/services/persist-tables.ts"],"sourcesContent":["import { isEqual, differenceWith } from 'lodash';\nimport type { Core } from '@strapi/types';\n\nexport interface PersistedTable {\n name: string;\n dependsOn?: Array<{ name: string }>;\n}\n\n/**\n * Transform table name to the object format\n */\nconst transformTableName = (table: string | PersistedTable) => {\n if (typeof table === 'string') {\n return { name: table };\n }\n return table;\n};\n\n/**\n * Finds all tables in the database matching the regular expression\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\nexport async function findTables({ strapi }: { strapi: Core.Strapi }, regex: any) {\n const tables = await strapi.db.dialect.schemaInspector.getTables();\n return tables.filter((tableName: string) => regex.test(tableName));\n}\n\n/**\n * Add tables name to the reserved tables in core store\n */\nasync function addPersistTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n const persistedTables = await getPersistedTables({ strapi });\n const tables = tableNames.map(transformTableName);\n\n // Get new tables to be persisted, remove tables if they already were persisted\n const notPersistedTableNames = differenceWith(tables, persistedTables, isEqual);\n // Remove tables that are going to be changed\n const tablesToPersist = differenceWith(\n persistedTables,\n notPersistedTableNames,\n (t1: any, t2: any) => t1.name === t2.name\n );\n\n if (!notPersistedTableNames.length) {\n return;\n }\n\n tablesToPersist.push(...notPersistedTableNames);\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tablesToPersist,\n });\n}\n\n/**\n * Get all reserved table names from the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\n\nasync function getPersistedTables({ strapi }: { strapi: Core.Strapi }) {\n const persistedTables: any = await strapi.store.get({\n type: 'core',\n key: 'persisted_tables',\n });\n\n return (persistedTables || []).map(transformTableName);\n}\n\n/**\n * Set all reserved table names in the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {Array<string|{ table: string; dependsOn?: Array<{ table: string;}> }>} tableNames\n * @returns {Promise<void>}\n */\nasync function setPersistedTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tableNames,\n });\n}\n/**\n * Add all table names that start with a prefix to the reserved tables in\n * core store\n * @param {string} tableNamePrefix\n * @return {Promise<void>}\n */\n\nexport const persistTablesWithPrefix = async (tableNamePrefix: string) => {\n const tableNameRegex = new RegExp(`^${tableNamePrefix}.*`);\n const tableNames = await findTables({ strapi }, tableNameRegex);\n\n await addPersistTables({ strapi }, tableNames);\n};\n\n/**\n * Remove all table names that end with a suffix from the reserved tables in core store\n * @param {string} tableNameSuffix\n * @return {Promise<void>}\n */\nexport const removePersistedTablesWithSuffix = async (tableNameSuffix: string) => {\n const tableNameRegex = new RegExp(`.*${tableNameSuffix}$`);\n const persistedTables = await getPersistedTables({ strapi });\n\n const filteredPersistedTables = persistedTables.filter((table: any) => {\n return !tableNameRegex.test(table.name);\n });\n\n if (filteredPersistedTables.length === persistedTables.length) {\n return;\n }\n\n await setPersistedTables({ strapi }, filteredPersistedTables);\n};\n\n/**\n * Add tables to the reserved tables in core store\n */\nexport const persistTables = async (tables: Array<string | PersistedTable>) => {\n await addPersistTables({ strapi }, tables);\n};\n\nexport default {\n persistTablesWithPrefix,\n removePersistedTablesWithSuffix,\n persistTables,\n findTables,\n};\n"],"names":["transformTableName","table","name","findTables","strapi","regex","tables","db","dialect","schemaInspector","getTables","filter","tableName","test","addPersistTables","tableNames","persistedTables","getPersistedTables","map","notPersistedTableNames","differenceWith","isEqual","tablesToPersist","t1","t2","length","push","store","set","type","key","value","get","setPersistedTables","persistTablesWithPrefix","tableNamePrefix","tableNameRegex","RegExp","removePersistedTablesWithSuffix","tableNameSuffix","filteredPersistedTables","persistTables"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _ = require('lodash');
|
|
4
4
|
var utils = require('@strapi/utils');
|
|
5
5
|
|
|
6
6
|
const { ApplicationError } = utils.errors;
|
|
@@ -13,7 +13,7 @@ const ssoCheckRolesIdForDeletion = async (ids)=>{
|
|
|
13
13
|
key: 'auth'
|
|
14
14
|
});
|
|
15
15
|
for (const roleId of ids){
|
|
16
|
-
if (defaultRole &&
|
|
16
|
+
if (defaultRole && _.toString(defaultRole) === _.toString(roleId)) {
|
|
17
17
|
throw new ApplicationError('This role is used as the default SSO role. Make sure to change this configuration before deleting the role');
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.js","sources":["../../../../../../ee/server/src/services/role.ts"],"sourcesContent":["import { toString } from 'lodash
|
|
1
|
+
{"version":3,"file":"role.js","sources":["../../../../../../ee/server/src/services/role.ts"],"sourcesContent":["import { toString } from 'lodash';\nimport { errors } from '@strapi/utils';\n\nconst { ApplicationError } = errors;\n\nconst ssoCheckRolesIdForDeletion = async (ids: any) => {\n const adminStore = await strapi.store({ type: 'core', name: 'admin' });\n\n const {\n providers: { defaultRole },\n } = (await adminStore.get({ key: 'auth' })) as any;\n\n for (const roleId of ids) {\n if (defaultRole && toString(defaultRole) === toString(roleId)) {\n throw new ApplicationError(\n 'This role is used as the default SSO role. Make sure to change this configuration before deleting the role'\n );\n }\n }\n};\n\nexport default {\n ssoCheckRolesIdForDeletion,\n};\n"],"names":["ApplicationError","errors","ssoCheckRolesIdForDeletion","ids","adminStore","strapi","store","type","name","providers","defaultRole","get","key","roleId","toString"],"mappings":";;;;;AAGA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,YAAAA;AAE7B,MAAMC,6BAA6B,OAAOC,GAAAA,GAAAA;AACxC,IAAA,MAAMC,UAAAA,GAAa,MAAMC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,MAAA;QAAQC,IAAAA,EAAM;AAAQ,KAAA,CAAA;IAEpE,MAAM,EACJC,SAAAA,EAAW,EAAEC,WAAW,EAAE,EAC3B,GAAI,MAAMN,UAAAA,CAAWO,GAAG,CAAC;QAAEC,GAAAA,EAAK;AAAO,KAAA,CAAA;IAExC,KAAK,MAAMC,UAAUV,GAAAA,CAAK;AACxB,QAAA,IAAIO,WAAAA,IAAeI,UAAAA,CAASJ,WAAAA,CAAAA,KAAiBI,UAAAA,CAASD,MAAAA,CAAAA,EAAS;AAC7D,YAAA,MAAM,IAAIb,gBAAAA,CACR,4GAAA,CAAA;AAEJ,QAAA;AACF,IAAA;AACF,CAAA;AAEA,WAAe;AACbE,IAAAA;AACF,CAAA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.mjs","sources":["../../../../../../ee/server/src/services/role.ts"],"sourcesContent":["import { toString } from 'lodash
|
|
1
|
+
{"version":3,"file":"role.mjs","sources":["../../../../../../ee/server/src/services/role.ts"],"sourcesContent":["import { toString } from 'lodash';\nimport { errors } from '@strapi/utils';\n\nconst { ApplicationError } = errors;\n\nconst ssoCheckRolesIdForDeletion = async (ids: any) => {\n const adminStore = await strapi.store({ type: 'core', name: 'admin' });\n\n const {\n providers: { defaultRole },\n } = (await adminStore.get({ key: 'auth' })) as any;\n\n for (const roleId of ids) {\n if (defaultRole && toString(defaultRole) === toString(roleId)) {\n throw new ApplicationError(\n 'This role is used as the default SSO role. Make sure to change this configuration before deleting the role'\n );\n }\n }\n};\n\nexport default {\n ssoCheckRolesIdForDeletion,\n};\n"],"names":["ApplicationError","errors","ssoCheckRolesIdForDeletion","ids","adminStore","strapi","store","type","name","providers","defaultRole","get","key","roleId","toString"],"mappings":";;;AAGA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAE7B,MAAMC,6BAA6B,OAAOC,GAAAA,GAAAA;AACxC,IAAA,MAAMC,UAAAA,GAAa,MAAMC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,MAAA;QAAQC,IAAAA,EAAM;AAAQ,KAAA,CAAA;IAEpE,MAAM,EACJC,SAAAA,EAAW,EAAEC,WAAW,EAAE,EAC3B,GAAI,MAAMN,UAAAA,CAAWO,GAAG,CAAC;QAAEC,GAAAA,EAAK;AAAO,KAAA,CAAA;IAExC,KAAK,MAAMC,UAAUV,GAAAA,CAAK;AACxB,QAAA,IAAIO,WAAAA,IAAeI,QAAAA,CAASJ,WAAAA,CAAAA,KAAiBI,QAAAA,CAASD,MAAAA,CAAAA,EAAS;AAC7D,YAAA,MAAM,IAAIb,gBAAAA,CACR,4GAAA,CAAA;AAEJ,QAAA;AACF,IAAA;AACF,CAAA;AAEA,WAAe;AACbE,IAAAA;AACF,CAAA;;;;"}
|
|
@@ -1,31 +1,34 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _ = require('lodash');
|
|
4
4
|
var index = require('../utils/index.js');
|
|
5
5
|
var constants = require('../../../../server/src/services/constants.js');
|
|
6
6
|
|
|
7
7
|
const { SUPER_ADMIN_CODE } = constants;
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Returns users disabled by seat enforcement, or an empty list when none are stored.
|
|
10
10
|
*/ const getDisabledUserList = async ()=>{
|
|
11
|
-
|
|
11
|
+
const disabledUsers = await strapi.store.get({
|
|
12
12
|
type: 'ee',
|
|
13
13
|
key: 'disabled_users'
|
|
14
14
|
});
|
|
15
|
+
return disabledUsers ?? [];
|
|
15
16
|
};
|
|
16
17
|
const enableMaximumUserCount = async (numberOfUsersToEnable)=>{
|
|
17
18
|
const disabledUsers = await getDisabledUserList();
|
|
18
|
-
const orderedDisabledUsers =
|
|
19
|
-
|
|
19
|
+
const orderedDisabledUsers = [
|
|
20
|
+
...disabledUsers
|
|
21
|
+
].reverse();
|
|
22
|
+
const usersToEnable = _.take(orderedDisabledUsers, numberOfUsersToEnable);
|
|
20
23
|
await strapi.db.query('admin::user').updateMany({
|
|
21
24
|
where: {
|
|
22
|
-
id:
|
|
25
|
+
id: usersToEnable.map((user)=>user?.id)
|
|
23
26
|
},
|
|
24
27
|
data: {
|
|
25
28
|
isActive: true
|
|
26
29
|
}
|
|
27
30
|
});
|
|
28
|
-
const remainingDisabledUsers =
|
|
31
|
+
const remainingDisabledUsers = _.drop(orderedDisabledUsers, numberOfUsersToEnable);
|
|
29
32
|
await strapi.store.set({
|
|
30
33
|
type: 'ee',
|
|
31
34
|
key: 'disabled_users',
|
|
@@ -33,7 +36,7 @@ const enableMaximumUserCount = async (numberOfUsersToEnable)=>{
|
|
|
33
36
|
});
|
|
34
37
|
};
|
|
35
38
|
const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
|
|
36
|
-
const currentlyDisabledUsers = await getDisabledUserList()
|
|
39
|
+
const currentlyDisabledUsers = await getDisabledUserList();
|
|
37
40
|
const usersToDisable = [];
|
|
38
41
|
const nonSuperAdminUsersToDisable = await strapi.db.query('admin::user').findMany({
|
|
39
42
|
where: {
|
|
@@ -67,7 +70,7 @@ const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
|
|
|
67
70
|
}
|
|
68
71
|
await strapi.db.query('admin::user').updateMany({
|
|
69
72
|
where: {
|
|
70
|
-
id:
|
|
73
|
+
id: usersToDisable.map((user)=>user?.id)
|
|
71
74
|
},
|
|
72
75
|
data: {
|
|
73
76
|
isActive: false
|
|
@@ -76,23 +79,20 @@ const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
|
|
|
76
79
|
await strapi.store.set({
|
|
77
80
|
type: 'ee',
|
|
78
81
|
key: 'disabled_users',
|
|
79
|
-
value: currentlyDisabledUsers.concat(
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
82
|
+
value: currentlyDisabledUsers.concat(usersToDisable.map((user)=>_.pick(user, [
|
|
83
|
+
'id',
|
|
84
|
+
'isActive'
|
|
85
|
+
])))
|
|
83
86
|
});
|
|
84
87
|
};
|
|
85
88
|
const syncDisabledUserRecords = async ()=>{
|
|
86
|
-
const disabledUsers = await
|
|
87
|
-
|
|
88
|
-
key: 'disabled_users'
|
|
89
|
-
});
|
|
90
|
-
if (!disabledUsers) {
|
|
89
|
+
const disabledUsers = await getDisabledUserList();
|
|
90
|
+
if (disabledUsers.length === 0) {
|
|
91
91
|
return;
|
|
92
92
|
}
|
|
93
93
|
await strapi.db.query('admin::user').updateMany({
|
|
94
94
|
where: {
|
|
95
|
-
id:
|
|
95
|
+
id: Array.from(disabledUsers, (user)=>user?.id)
|
|
96
96
|
},
|
|
97
97
|
data: {
|
|
98
98
|
isActive: false
|
|
@@ -101,7 +101,7 @@ const syncDisabledUserRecords = async ()=>{
|
|
|
101
101
|
};
|
|
102
102
|
const seatEnforcementWorkflow = async ()=>{
|
|
103
103
|
const adminSeats = strapi.ee.seats;
|
|
104
|
-
if (
|
|
104
|
+
if (adminSeats == null) {
|
|
105
105
|
return;
|
|
106
106
|
}
|
|
107
107
|
// TODO: we need to make sure an admin can decide to disable specific user and reactivate others
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-enforcement.js","sources":["../../../../../../ee/server/src/services/seat-enforcement.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"seat-enforcement.js","sources":["../../../../../../ee/server/src/services/seat-enforcement.ts"],"sourcesContent":["import { pick, take, drop } from 'lodash';\n\nimport { getService } from '../utils';\nimport constants from '../../../../server/src/services/constants';\nimport type { AdminUser } from '../../../../shared/contracts/shared';\n\nconst { SUPER_ADMIN_CODE } = constants;\n\ntype DisabledUser = Pick<AdminUser, 'id' | 'isActive'>;\n\n/**\n * Returns users disabled by seat enforcement, or an empty list when none are stored.\n */\nconst getDisabledUserList = async (): Promise<DisabledUser[]> => {\n const disabledUsers = (await strapi.store.get({ type: 'ee', key: 'disabled_users' })) as\n | DisabledUser[]\n | null\n | undefined;\n\n return disabledUsers ?? [];\n};\n\nconst enableMaximumUserCount = async (numberOfUsersToEnable: number) => {\n const disabledUsers = await getDisabledUserList();\n const orderedDisabledUsers = [...disabledUsers].reverse();\n\n const usersToEnable = take(orderedDisabledUsers, numberOfUsersToEnable);\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: usersToEnable.map((user) => user?.id) },\n data: { isActive: true },\n });\n\n const remainingDisabledUsers = drop(orderedDisabledUsers, numberOfUsersToEnable);\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: remainingDisabledUsers,\n });\n};\n\nconst disableUsersAboveLicenseLimit = async (numberOfUsersToDisable: number) => {\n const currentlyDisabledUsers = await getDisabledUserList();\n\n const usersToDisable = [];\n const nonSuperAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: {\n code: { $ne: SUPER_ADMIN_CODE },\n },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable,\n });\n\n usersToDisable.push(...nonSuperAdminUsersToDisable);\n\n if (nonSuperAdminUsersToDisable.length < numberOfUsersToDisable) {\n const superAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: { code: SUPER_ADMIN_CODE },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable - nonSuperAdminUsersToDisable.length,\n });\n\n usersToDisable.push(...superAdminUsersToDisable);\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: usersToDisable.map((user) => user?.id) },\n data: { isActive: false },\n });\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: currentlyDisabledUsers.concat(\n usersToDisable.map((user) => pick(user, ['id', 'isActive']))\n ),\n });\n};\n\nconst syncDisabledUserRecords = async () => {\n const disabledUsers = await getDisabledUserList();\n\n if (disabledUsers.length === 0) {\n return;\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: Array.from(disabledUsers, (user) => user?.id) },\n data: { isActive: false },\n });\n};\n\nconst seatEnforcementWorkflow = async () => {\n const adminSeats = strapi.ee.seats;\n if (adminSeats == null) {\n return;\n }\n\n // TODO: we need to make sure an admin can decide to disable specific user and reactivate others\n await syncDisabledUserRecords();\n\n const currentActiveUserCount = await getService('user').getCurrentActiveUserCount();\n\n const adminSeatsLeft = adminSeats - currentActiveUserCount;\n\n if (adminSeatsLeft > 0) {\n await enableMaximumUserCount(adminSeatsLeft);\n } else if (adminSeatsLeft < 0) {\n await disableUsersAboveLicenseLimit(-adminSeatsLeft);\n }\n};\n\nexport default {\n seatEnforcementWorkflow,\n getDisabledUserList,\n};\n"],"names":["SUPER_ADMIN_CODE","constants","getDisabledUserList","disabledUsers","strapi","store","get","type","key","enableMaximumUserCount","numberOfUsersToEnable","orderedDisabledUsers","reverse","usersToEnable","take","db","query","updateMany","where","id","map","user","data","isActive","remainingDisabledUsers","drop","set","value","disableUsersAboveLicenseLimit","numberOfUsersToDisable","currentlyDisabledUsers","usersToDisable","nonSuperAdminUsersToDisable","findMany","roles","code","$ne","orderBy","createdAt","limit","push","length","superAdminUsersToDisable","concat","pick","syncDisabledUserRecords","Array","from","seatEnforcementWorkflow","adminSeats","ee","seats","currentActiveUserCount","getService","getCurrentActiveUserCount","adminSeatsLeft"],"mappings":"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"}
|
|
@@ -1,29 +1,32 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { take, drop, pick } from 'lodash';
|
|
2
2
|
import { getService } from '../utils/index.mjs';
|
|
3
3
|
import constants from '../../../../server/src/services/constants.mjs';
|
|
4
4
|
|
|
5
5
|
const { SUPER_ADMIN_CODE } = constants;
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* Returns users disabled by seat enforcement, or an empty list when none are stored.
|
|
8
8
|
*/ const getDisabledUserList = async ()=>{
|
|
9
|
-
|
|
9
|
+
const disabledUsers = await strapi.store.get({
|
|
10
10
|
type: 'ee',
|
|
11
11
|
key: 'disabled_users'
|
|
12
12
|
});
|
|
13
|
+
return disabledUsers ?? [];
|
|
13
14
|
};
|
|
14
15
|
const enableMaximumUserCount = async (numberOfUsersToEnable)=>{
|
|
15
16
|
const disabledUsers = await getDisabledUserList();
|
|
16
|
-
const orderedDisabledUsers =
|
|
17
|
-
|
|
17
|
+
const orderedDisabledUsers = [
|
|
18
|
+
...disabledUsers
|
|
19
|
+
].reverse();
|
|
20
|
+
const usersToEnable = take(orderedDisabledUsers, numberOfUsersToEnable);
|
|
18
21
|
await strapi.db.query('admin::user').updateMany({
|
|
19
22
|
where: {
|
|
20
|
-
id: map(
|
|
23
|
+
id: usersToEnable.map((user)=>user?.id)
|
|
21
24
|
},
|
|
22
25
|
data: {
|
|
23
26
|
isActive: true
|
|
24
27
|
}
|
|
25
28
|
});
|
|
26
|
-
const remainingDisabledUsers = drop(
|
|
29
|
+
const remainingDisabledUsers = drop(orderedDisabledUsers, numberOfUsersToEnable);
|
|
27
30
|
await strapi.store.set({
|
|
28
31
|
type: 'ee',
|
|
29
32
|
key: 'disabled_users',
|
|
@@ -31,7 +34,7 @@ const enableMaximumUserCount = async (numberOfUsersToEnable)=>{
|
|
|
31
34
|
});
|
|
32
35
|
};
|
|
33
36
|
const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
|
|
34
|
-
const currentlyDisabledUsers = await getDisabledUserList()
|
|
37
|
+
const currentlyDisabledUsers = await getDisabledUserList();
|
|
35
38
|
const usersToDisable = [];
|
|
36
39
|
const nonSuperAdminUsersToDisable = await strapi.db.query('admin::user').findMany({
|
|
37
40
|
where: {
|
|
@@ -65,7 +68,7 @@ const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
|
|
|
65
68
|
}
|
|
66
69
|
await strapi.db.query('admin::user').updateMany({
|
|
67
70
|
where: {
|
|
68
|
-
id: map(
|
|
71
|
+
id: usersToDisable.map((user)=>user?.id)
|
|
69
72
|
},
|
|
70
73
|
data: {
|
|
71
74
|
isActive: false
|
|
@@ -74,23 +77,20 @@ const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
|
|
|
74
77
|
await strapi.store.set({
|
|
75
78
|
type: 'ee',
|
|
76
79
|
key: 'disabled_users',
|
|
77
|
-
value: currentlyDisabledUsers.concat(map(pick([
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
value: currentlyDisabledUsers.concat(usersToDisable.map((user)=>pick(user, [
|
|
81
|
+
'id',
|
|
82
|
+
'isActive'
|
|
83
|
+
])))
|
|
81
84
|
});
|
|
82
85
|
};
|
|
83
86
|
const syncDisabledUserRecords = async ()=>{
|
|
84
|
-
const disabledUsers = await
|
|
85
|
-
|
|
86
|
-
key: 'disabled_users'
|
|
87
|
-
});
|
|
88
|
-
if (!disabledUsers) {
|
|
87
|
+
const disabledUsers = await getDisabledUserList();
|
|
88
|
+
if (disabledUsers.length === 0) {
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
91
91
|
await strapi.db.query('admin::user').updateMany({
|
|
92
92
|
where: {
|
|
93
|
-
id:
|
|
93
|
+
id: Array.from(disabledUsers, (user)=>user?.id)
|
|
94
94
|
},
|
|
95
95
|
data: {
|
|
96
96
|
isActive: false
|
|
@@ -99,7 +99,7 @@ const syncDisabledUserRecords = async ()=>{
|
|
|
99
99
|
};
|
|
100
100
|
const seatEnforcementWorkflow = async ()=>{
|
|
101
101
|
const adminSeats = strapi.ee.seats;
|
|
102
|
-
if (
|
|
102
|
+
if (adminSeats == null) {
|
|
103
103
|
return;
|
|
104
104
|
}
|
|
105
105
|
// TODO: we need to make sure an admin can decide to disable specific user and reactivate others
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seat-enforcement.mjs","sources":["../../../../../../ee/server/src/services/seat-enforcement.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"seat-enforcement.mjs","sources":["../../../../../../ee/server/src/services/seat-enforcement.ts"],"sourcesContent":["import { pick, take, drop } from 'lodash';\n\nimport { getService } from '../utils';\nimport constants from '../../../../server/src/services/constants';\nimport type { AdminUser } from '../../../../shared/contracts/shared';\n\nconst { SUPER_ADMIN_CODE } = constants;\n\ntype DisabledUser = Pick<AdminUser, 'id' | 'isActive'>;\n\n/**\n * Returns users disabled by seat enforcement, or an empty list when none are stored.\n */\nconst getDisabledUserList = async (): Promise<DisabledUser[]> => {\n const disabledUsers = (await strapi.store.get({ type: 'ee', key: 'disabled_users' })) as\n | DisabledUser[]\n | null\n | undefined;\n\n return disabledUsers ?? [];\n};\n\nconst enableMaximumUserCount = async (numberOfUsersToEnable: number) => {\n const disabledUsers = await getDisabledUserList();\n const orderedDisabledUsers = [...disabledUsers].reverse();\n\n const usersToEnable = take(orderedDisabledUsers, numberOfUsersToEnable);\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: usersToEnable.map((user) => user?.id) },\n data: { isActive: true },\n });\n\n const remainingDisabledUsers = drop(orderedDisabledUsers, numberOfUsersToEnable);\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: remainingDisabledUsers,\n });\n};\n\nconst disableUsersAboveLicenseLimit = async (numberOfUsersToDisable: number) => {\n const currentlyDisabledUsers = await getDisabledUserList();\n\n const usersToDisable = [];\n const nonSuperAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: {\n code: { $ne: SUPER_ADMIN_CODE },\n },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable,\n });\n\n usersToDisable.push(...nonSuperAdminUsersToDisable);\n\n if (nonSuperAdminUsersToDisable.length < numberOfUsersToDisable) {\n const superAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: { code: SUPER_ADMIN_CODE },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable - nonSuperAdminUsersToDisable.length,\n });\n\n usersToDisable.push(...superAdminUsersToDisable);\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: usersToDisable.map((user) => user?.id) },\n data: { isActive: false },\n });\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: currentlyDisabledUsers.concat(\n usersToDisable.map((user) => pick(user, ['id', 'isActive']))\n ),\n });\n};\n\nconst syncDisabledUserRecords = async () => {\n const disabledUsers = await getDisabledUserList();\n\n if (disabledUsers.length === 0) {\n return;\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: Array.from(disabledUsers, (user) => user?.id) },\n data: { isActive: false },\n });\n};\n\nconst seatEnforcementWorkflow = async () => {\n const adminSeats = strapi.ee.seats;\n if (adminSeats == null) {\n return;\n }\n\n // TODO: we need to make sure an admin can decide to disable specific user and reactivate others\n await syncDisabledUserRecords();\n\n const currentActiveUserCount = await getService('user').getCurrentActiveUserCount();\n\n const adminSeatsLeft = adminSeats - currentActiveUserCount;\n\n if (adminSeatsLeft > 0) {\n await enableMaximumUserCount(adminSeatsLeft);\n } else if (adminSeatsLeft < 0) {\n await disableUsersAboveLicenseLimit(-adminSeatsLeft);\n }\n};\n\nexport default {\n seatEnforcementWorkflow,\n getDisabledUserList,\n};\n"],"names":["SUPER_ADMIN_CODE","constants","getDisabledUserList","disabledUsers","strapi","store","get","type","key","enableMaximumUserCount","numberOfUsersToEnable","orderedDisabledUsers","reverse","usersToEnable","take","db","query","updateMany","where","id","map","user","data","isActive","remainingDisabledUsers","drop","set","value","disableUsersAboveLicenseLimit","numberOfUsersToDisable","currentlyDisabledUsers","usersToDisable","nonSuperAdminUsersToDisable","findMany","roles","code","$ne","orderBy","createdAt","limit","push","length","superAdminUsersToDisable","concat","pick","syncDisabledUserRecords","Array","from","seatEnforcementWorkflow","adminSeats","ee","seats","currentActiveUserCount","getService","getCurrentActiveUserCount","adminSeatsLeft"],"mappings":";;;;AAMA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,SAAAA;AAI7B;;AAEC,IACD,MAAMC,mBAAAA,GAAsB,UAAA;AAC1B,IAAA,MAAMC,gBAAiB,MAAMC,MAAAA,CAAOC,KAAK,CAACC,GAAG,CAAC;QAAEC,IAAAA,EAAM,IAAA;QAAMC,GAAAA,EAAK;AAAiB,KAAA,CAAA;AAKlF,IAAA,OAAOL,iBAAiB,EAAE;AAC5B,CAAA;AAEA,MAAMM,yBAAyB,OAAOC,qBAAAA,GAAAA;AACpC,IAAA,MAAMP,gBAAgB,MAAMD,mBAAAA,EAAAA;AAC5B,IAAA,MAAMS,oBAAAA,GAAuB;AAAIR,QAAAA,GAAAA;AAAc,KAAA,CAACS,OAAO,EAAA;IAEvD,MAAMC,aAAAA,GAAgBC,KAAKH,oBAAAA,EAAsBD,qBAAAA,CAAAA;AAEjD,IAAA,MAAMN,OAAOW,EAAE,CAACC,KAAK,CAAC,aAAA,CAAA,CAAeC,UAAU,CAAC;QAC9CC,KAAAA,EAAO;AAAEC,YAAAA,EAAAA,EAAIN,aAAAA,CAAcO,GAAG,CAAC,CAACC,OAASA,IAAAA,EAAMF,EAAAA;AAAI,SAAA;QACnDG,IAAAA,EAAM;YAAEC,QAAAA,EAAU;AAAK;AACzB,KAAA,CAAA;IAEA,MAAMC,sBAAAA,GAAyBC,KAAKd,oBAAAA,EAAsBD,qBAAAA,CAAAA;AAE1D,IAAA,MAAMN,MAAAA,CAAOC,KAAK,CAACqB,GAAG,CAAC;QACrBnB,IAAAA,EAAM,IAAA;QACNC,GAAAA,EAAK,gBAAA;QACLmB,KAAAA,EAAOH;AACT,KAAA,CAAA;AACF,CAAA;AAEA,MAAMI,gCAAgC,OAAOC,sBAAAA,GAAAA;AAC3C,IAAA,MAAMC,yBAAyB,MAAM5B,mBAAAA,EAAAA;AAErC,IAAA,MAAM6B,iBAAiB,EAAE;IACzB,MAAMC,2BAAAA,GAA8B,MAAM5B,MAAAA,CAAOW,EAAE,CAACC,KAAK,CAAC,aAAA,CAAA,CAAeiB,QAAQ,CAAC;QAChFf,KAAAA,EAAO;YACLK,QAAAA,EAAU,IAAA;YACVW,KAAAA,EAAO;gBACLC,IAAAA,EAAM;oBAAEC,GAAAA,EAAKpC;AAAiB;AAChC;AACF,SAAA;QACAqC,OAAAA,EAAS;YAAEC,SAAAA,EAAW;AAAO,SAAA;QAC7BC,KAAAA,EAAOV;AACT,KAAA,CAAA;AAEAE,IAAAA,cAAAA,CAAeS,IAAI,CAAA,GAAIR,2BAAAA,CAAAA;IAEvB,IAAIA,2BAAAA,CAA4BS,MAAM,GAAGZ,sBAAAA,EAAwB;QAC/D,MAAMa,wBAAAA,GAA2B,MAAMtC,MAAAA,CAAOW,EAAE,CAACC,KAAK,CAAC,aAAA,CAAA,CAAeiB,QAAQ,CAAC;YAC7Ef,KAAAA,EAAO;gBACLK,QAAAA,EAAU,IAAA;gBACVW,KAAAA,EAAO;oBAAEC,IAAAA,EAAMnC;AAAiB;AAClC,aAAA;YACAqC,OAAAA,EAAS;gBAAEC,SAAAA,EAAW;AAAO,aAAA;YAC7BC,KAAAA,EAAOV,sBAAAA,GAAyBG,4BAA4BS;AAC9D,SAAA,CAAA;AAEAV,QAAAA,cAAAA,CAAeS,IAAI,CAAA,GAAIE,wBAAAA,CAAAA;AACzB,IAAA;AAEA,IAAA,MAAMtC,OAAOW,EAAE,CAACC,KAAK,CAAC,aAAA,CAAA,CAAeC,UAAU,CAAC;QAC9CC,KAAAA,EAAO;AAAEC,YAAAA,EAAAA,EAAIY,cAAAA,CAAeX,GAAG,CAAC,CAACC,OAASA,IAAAA,EAAMF,EAAAA;AAAI,SAAA;QACpDG,IAAAA,EAAM;YAAEC,QAAAA,EAAU;AAAM;AAC1B,KAAA,CAAA;AAEA,IAAA,MAAMnB,MAAAA,CAAOC,KAAK,CAACqB,GAAG,CAAC;QACrBnB,IAAAA,EAAM,IAAA;QACNC,GAAAA,EAAK,gBAAA;QACLmB,KAAAA,EAAOG,sBAAAA,CAAuBa,MAAM,CAClCZ,cAAAA,CAAeX,GAAG,CAAC,CAACC,IAAAA,GAASuB,IAAAA,CAAKvB,IAAAA,EAAM;AAAC,gBAAA,IAAA;AAAM,gBAAA;AAAW,aAAA,CAAA,CAAA;AAE9D,KAAA,CAAA;AACF,CAAA;AAEA,MAAMwB,uBAAAA,GAA0B,UAAA;AAC9B,IAAA,MAAM1C,gBAAgB,MAAMD,mBAAAA,EAAAA;IAE5B,IAAIC,aAAAA,CAAcsC,MAAM,KAAK,CAAA,EAAG;AAC9B,QAAA;AACF,IAAA;AAEA,IAAA,MAAMrC,OAAOW,EAAE,CAACC,KAAK,CAAC,aAAA,CAAA,CAAeC,UAAU,CAAC;QAC9CC,KAAAA,EAAO;AAAEC,YAAAA,EAAAA,EAAI2B,MAAMC,IAAI,CAAC5C,aAAAA,EAAe,CAACkB,OAASA,IAAAA,EAAMF,EAAAA;AAAI,SAAA;QAC3DG,IAAAA,EAAM;YAAEC,QAAAA,EAAU;AAAM;AAC1B,KAAA,CAAA;AACF,CAAA;AAEA,MAAMyB,uBAAAA,GAA0B,UAAA;AAC9B,IAAA,MAAMC,UAAAA,GAAa7C,MAAAA,CAAO8C,EAAE,CAACC,KAAK;AAClC,IAAA,IAAIF,cAAc,IAAA,EAAM;AACtB,QAAA;AACF,IAAA;;IAGA,MAAMJ,uBAAAA,EAAAA;AAEN,IAAA,MAAMO,sBAAAA,GAAyB,MAAMC,UAAAA,CAAW,MAAA,CAAA,CAAQC,yBAAyB,EAAA;AAEjF,IAAA,MAAMC,iBAAiBN,UAAAA,GAAaG,sBAAAA;AAEpC,IAAA,IAAIG,iBAAiB,CAAA,EAAG;AACtB,QAAA,MAAM9C,sBAAAA,CAAuB8C,cAAAA,CAAAA;IAC/B,CAAA,MAAO,IAAIA,iBAAiB,CAAA,EAAG;AAC7B,QAAA,MAAM3B,8BAA8B,CAAC2B,cAAAA,CAAAA;AACvC,IAAA;AACF,CAAA;AAEA,sBAAe;AACbP,IAAAA,uBAAAA;AACA9C,IAAAA;AACF,CAAA;;;;"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var _ = require('lodash');
|
|
4
|
-
var fp = require('lodash/fp');
|
|
5
4
|
var utils = require('@strapi/utils');
|
|
6
5
|
var user$1 = require('../../../../server/src/domain/user.js');
|
|
7
6
|
var constants = require('../../../../server/src/services/constants.js');
|
|
@@ -39,7 +38,7 @@ const getSessionManager = ()=>{
|
|
|
39
38
|
});
|
|
40
39
|
}
|
|
41
40
|
};
|
|
42
|
-
const castNumberArray =
|
|
41
|
+
const castNumberArray = (ids)=>_.castArray(ids).map((id)=>_.toNumber(id));
|
|
43
42
|
const removeFromEEDisabledUsersList = async (ids)=>{
|
|
44
43
|
let idsToCheck;
|
|
45
44
|
if (typeof ids === 'object') {
|