@strapi/admin 5.44.0 → 5.45.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/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/constants.js +49 -0
- package/dist/admin/admin/src/constants.js.map +1 -1
- package/dist/admin/admin/src/constants.mjs +49 -0
- package/dist/admin/admin/src/constants.mjs.map +1 -1
- package/dist/admin/admin/src/core/apis/router.js +4 -4
- package/dist/admin/admin/src/core/apis/router.js.map +1 -1
- package/dist/admin/admin/src/core/apis/router.mjs +4 -4
- package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView/components → components/Tokens}/FormApiTokenContainer.js +48 -11
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView/components → components/Tokens}/FormApiTokenContainer.mjs +49 -12
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +21 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +21 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +33 -0
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.mjs +14 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.js +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/constants.js +182 -151
- package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/constants.mjs +182 -151
- package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.js +17 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.mjs +15 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +314 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.mjs +292 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +70 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.mjs +49 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +254 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.mjs +231 -0
- package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +42 -33
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +43 -34
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +3 -2
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +23 -12
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +23 -12
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +124 -35
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +126 -37
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +24 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +24 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +5 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +5 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +171 -36
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +172 -37
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +5 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +5 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +59 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs +40 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.js +89 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.js.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.mjs +86 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.mjs.map +1 -0
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js +35 -9
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs +35 -10
- package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs.map +1 -1
- package/dist/admin/admin/src/render.js +6 -3
- package/dist/admin/admin/src/render.js.map +1 -1
- package/dist/admin/admin/src/render.mjs +6 -3
- package/dist/admin/admin/src/render.mjs.map +1 -1
- package/dist/admin/admin/src/router.js +4 -4
- package/dist/admin/admin/src/router.js.map +1 -1
- package/dist/admin/admin/src/router.mjs +1 -1
- package/dist/admin/admin/src/router.mjs.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.js +85 -2
- package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
- package/dist/admin/admin/src/services/apiTokens.mjs +80 -3
- package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +16 -1
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +16 -1
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +4 -1
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +4 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/admin/tests/server.js +99 -21
- package/dist/admin/admin/tests/server.js.map +1 -1
- package/dist/admin/admin/tests/server.mjs +99 -21
- package/dist/admin/admin/tests/server.mjs.map +1 -1
- package/dist/admin/src/constants.d.ts +26 -0
- package/dist/admin/src/core/apis/router.d.ts +1 -1
- package/dist/admin/src/features/Tracking.d.ts +2 -1
- package/dist/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.d.ts +24 -0
- package/dist/admin/src/pages/Settings/components/Tokens/Table.d.ts +2 -1
- package/dist/admin/src/pages/Settings/components/Tokens/constants.d.ts +17 -0
- package/dist/admin/src/pages/Settings/constants.d.ts +1 -1
- package/dist/admin/src/pages/Settings/pages/AdminTokens/CreateView.d.ts +1 -0
- package/dist/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.d.ts +13 -0
- package/dist/admin/src/pages/Settings/pages/AdminTokens/ListView.d.ts +2 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.d.ts +4 -3
- package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.d.ts +3 -1
- package/dist/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.d.ts +1 -0
- package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +5 -0
- package/dist/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.d.ts +8 -7
- package/dist/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.d.ts +27 -0
- package/dist/admin/src/pages/Settings/pages/Roles/utils/updateValues.d.ts +8 -2
- package/dist/admin/src/services/apiTokens.d.ts +5 -2
- package/dist/admin/src/types/permissions.d.ts +1 -1
- package/dist/server/server/src/bootstrap.js +37 -5
- package/dist/server/server/src/bootstrap.js.map +1 -1
- package/dist/server/server/src/bootstrap.mjs +37 -5
- package/dist/server/server/src/bootstrap.mjs.map +1 -1
- package/dist/server/server/src/config/admin-actions.js +48 -0
- package/dist/server/server/src/config/admin-actions.js.map +1 -1
- package/dist/server/server/src/config/admin-actions.mjs +48 -0
- package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
- package/dist/server/server/src/content-types/Permission.js +10 -1
- package/dist/server/server/src/content-types/Permission.js.map +1 -1
- package/dist/server/server/src/content-types/Permission.mjs +10 -1
- package/dist/server/server/src/content-types/Permission.mjs.map +1 -1
- package/dist/server/server/src/content-types/User.js +8 -0
- package/dist/server/server/src/content-types/User.js.map +1 -1
- package/dist/server/server/src/content-types/User.mjs +8 -0
- package/dist/server/server/src/content-types/User.mjs.map +1 -1
- package/dist/server/server/src/content-types/api-token.js +27 -1
- package/dist/server/server/src/content-types/api-token.js.map +1 -1
- package/dist/server/server/src/content-types/api-token.mjs +27 -1
- package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
- package/dist/server/server/src/controllers/admin-token.js +194 -0
- package/dist/server/server/src/controllers/admin-token.js.map +1 -0
- package/dist/server/server/src/controllers/admin-token.mjs +192 -0
- package/dist/server/server/src/controllers/admin-token.mjs.map +1 -0
- package/dist/server/server/src/controllers/api-token.js +48 -47
- package/dist/server/server/src/controllers/api-token.js.map +1 -1
- package/dist/server/server/src/controllers/api-token.mjs +48 -47
- package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
- package/dist/server/server/src/controllers/index.js +2 -0
- package/dist/server/server/src/controllers/index.js.map +1 -1
- package/dist/server/server/src/controllers/index.mjs +2 -0
- package/dist/server/server/src/controllers/index.mjs.map +1 -1
- package/dist/server/server/src/domain/permission/index.js +2 -1
- package/dist/server/server/src/domain/permission/index.js.map +1 -1
- package/dist/server/server/src/domain/permission/index.mjs +2 -1
- package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
- package/dist/server/server/src/policies/index.js +2 -0
- package/dist/server/server/src/policies/index.js.map +1 -1
- package/dist/server/server/src/policies/index.mjs +2 -0
- package/dist/server/server/src/policies/index.mjs.map +1 -1
- package/dist/server/server/src/policies/isAdminTokensEnabled.js +16 -0
- package/dist/server/server/src/policies/isAdminTokensEnabled.js.map +1 -0
- package/dist/server/server/src/policies/isAdminTokensEnabled.mjs +14 -0
- package/dist/server/server/src/policies/isAdminTokensEnabled.mjs.map +1 -0
- package/dist/server/server/src/register.js +4 -2
- package/dist/server/server/src/register.js.map +1 -1
- package/dist/server/server/src/register.mjs +4 -2
- package/dist/server/server/src/register.mjs.map +1 -1
- package/dist/server/server/src/routes/admin-tokens.js +140 -0
- package/dist/server/server/src/routes/admin-tokens.js.map +1 -0
- package/dist/server/server/src/routes/admin-tokens.mjs +138 -0
- package/dist/server/server/src/routes/admin-tokens.mjs.map +1 -0
- package/dist/server/server/src/routes/index.js +2 -0
- package/dist/server/server/src/routes/index.js.map +1 -1
- package/dist/server/server/src/routes/index.mjs +2 -0
- package/dist/server/server/src/routes/index.mjs.map +1 -1
- package/dist/server/server/src/services/api-token.js +805 -101
- package/dist/server/server/src/services/api-token.js.map +1 -1
- package/dist/server/server/src/services/api-token.mjs +800 -101
- package/dist/server/server/src/services/api-token.mjs.map +1 -1
- package/dist/server/server/src/services/constants.js +2 -0
- package/dist/server/server/src/services/constants.js.map +1 -1
- package/dist/server/server/src/services/constants.mjs +2 -0
- package/dist/server/server/src/services/constants.mjs.map +1 -1
- package/dist/server/server/src/services/homepage.js +1 -1
- package/dist/server/server/src/services/homepage.js.map +1 -1
- package/dist/server/server/src/services/homepage.mjs +1 -1
- package/dist/server/server/src/services/homepage.mjs.map +1 -1
- package/dist/server/server/src/services/index.js +2 -1
- package/dist/server/server/src/services/index.js.map +1 -1
- package/dist/server/server/src/services/index.mjs +3 -2
- package/dist/server/server/src/services/index.mjs.map +1 -1
- package/dist/server/server/src/services/permission/engine.js +6 -0
- package/dist/server/server/src/services/permission/engine.js.map +1 -1
- package/dist/server/server/src/services/permission/engine.mjs +6 -0
- package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
- package/dist/server/server/src/services/permission/queries.js +11 -2
- package/dist/server/server/src/services/permission/queries.js.map +1 -1
- package/dist/server/server/src/services/permission/queries.mjs +12 -3
- package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
- package/dist/server/server/src/services/role.js +3 -0
- package/dist/server/server/src/services/role.js.map +1 -1
- package/dist/server/server/src/services/role.mjs +3 -0
- package/dist/server/server/src/services/role.mjs.map +1 -1
- package/dist/server/server/src/strategies/admin-token.js +110 -0
- package/dist/server/server/src/strategies/admin-token.js.map +1 -0
- package/dist/server/server/src/strategies/admin-token.mjs +104 -0
- package/dist/server/server/src/strategies/admin-token.mjs.map +1 -0
- package/dist/server/server/src/strategies/api-token-utils.js +56 -0
- package/dist/server/server/src/strategies/api-token-utils.js.map +1 -0
- package/dist/server/server/src/strategies/api-token-utils.mjs +52 -0
- package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -0
- package/dist/server/server/src/strategies/content-api-token.js +104 -0
- package/dist/server/server/src/strategies/content-api-token.js.map +1 -0
- package/dist/server/server/src/strategies/content-api-token.mjs +98 -0
- package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -0
- package/dist/server/server/src/validation/admin-tokens.js +28 -0
- package/dist/server/server/src/validation/admin-tokens.js.map +1 -0
- package/dist/server/server/src/validation/admin-tokens.mjs +25 -0
- package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -0
- package/dist/server/server/src/validation/api-tokens.js +5 -2
- package/dist/server/server/src/validation/api-tokens.js.map +1 -1
- package/dist/server/server/src/validation/api-tokens.mjs +5 -2
- package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
- package/dist/server/server/src/validation/project-settings.js +15 -16
- package/dist/server/server/src/validation/project-settings.js.map +1 -1
- package/dist/server/server/src/validation/project-settings.mjs +4 -5
- package/dist/server/server/src/validation/project-settings.mjs.map +1 -1
- package/dist/server/src/bootstrap.d.ts.map +1 -1
- package/dist/server/src/config/admin-actions.d.ts.map +1 -1
- package/dist/server/src/content-types/Permission.d.ts +9 -0
- package/dist/server/src/content-types/Permission.d.ts.map +1 -1
- package/dist/server/src/content-types/User.d.ts +8 -0
- package/dist/server/src/content-types/User.d.ts.map +1 -1
- package/dist/server/src/content-types/api-token.d.ts +23 -0
- package/dist/server/src/content-types/api-token.d.ts.map +1 -1
- package/dist/server/src/content-types/index.d.ts +40 -0
- package/dist/server/src/content-types/index.d.ts.map +1 -1
- package/dist/server/src/controllers/admin-token.d.ts +12 -0
- package/dist/server/src/controllers/admin-token.d.ts.map +1 -0
- package/dist/server/src/controllers/api-token.d.ts +0 -1
- package/dist/server/src/controllers/api-token.d.ts.map +1 -1
- package/dist/server/src/controllers/index.d.ts +9 -1
- package/dist/server/src/controllers/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 +56 -2
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/policies/index.d.ts +5 -0
- package/dist/server/src/policies/index.d.ts.map +1 -1
- package/dist/server/src/policies/isAdminTokensEnabled.d.ts +7 -0
- package/dist/server/src/policies/isAdminTokensEnabled.d.ts.map +1 -0
- package/dist/server/src/register.d.ts.map +1 -1
- package/dist/server/src/routes/admin-tokens.d.ts +15 -0
- package/dist/server/src/routes/admin-tokens.d.ts.map +1 -0
- package/dist/server/src/routes/index.d.ts.map +1 -1
- package/dist/server/src/services/api-token.d.ts +136 -12
- package/dist/server/src/services/api-token.d.ts.map +1 -1
- package/dist/server/src/services/constants.d.ts +13 -11
- package/dist/server/src/services/constants.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/permission/engine.d.ts +5 -0
- package/dist/server/src/services/permission/engine.d.ts.map +1 -1
- package/dist/server/src/services/permission/queries.d.ts.map +1 -1
- package/dist/server/src/services/permission.d.ts +1 -0
- package/dist/server/src/services/permission.d.ts.map +1 -1
- package/dist/server/src/services/role.d.ts.map +1 -1
- package/dist/server/src/strategies/admin-token.d.ts +51 -0
- package/dist/server/src/strategies/admin-token.d.ts.map +1 -0
- package/dist/server/src/strategies/api-token-utils.d.ts +13 -0
- package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -0
- package/dist/server/src/strategies/{api-token.d.ts → content-api-token.d.ts} +10 -11
- package/dist/server/src/strategies/content-api-token.d.ts.map +1 -0
- package/dist/server/src/strategies/index.d.ts +2 -1
- package/dist/server/src/strategies/index.d.ts.map +1 -1
- package/dist/server/src/validation/admin-tokens.d.ts +75 -0
- package/dist/server/src/validation/admin-tokens.d.ts.map +1 -0
- package/dist/server/src/validation/api-tokens.d.ts +4 -2
- package/dist/server/src/validation/api-tokens.d.ts.map +1 -1
- package/dist/server/src/validation/project-settings.d.ts +10 -10
- package/dist/server/src/validation/project-settings.d.ts.map +1 -1
- package/dist/shared/contracts/admin-token.d.ts +122 -0
- package/dist/shared/contracts/admin-token.d.ts.map +1 -0
- package/dist/shared/contracts/api-token.d.ts +6 -95
- package/dist/shared/contracts/api-token.d.ts.map +1 -1
- package/dist/shared/contracts/content-api-token.d.ts +97 -0
- package/dist/shared/contracts/content-api-token.d.ts.map +1 -0
- package/dist/shared/contracts/shared.d.ts +1 -0
- package/dist/shared/contracts/shared.d.ts.map +1 -1
- package/package.json +7 -7
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js.map +0 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs.map +0 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js +0 -37
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js.map +0 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs +0 -16
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs.map +0 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.js.map +0 -1
- package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.mjs.map +0 -1
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.d.ts +0 -20
- package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.d.ts +0 -17
- package/dist/server/server/src/strategies/api-token.js +0 -144
- package/dist/server/server/src/strategies/api-token.js.map +0 -1
- package/dist/server/server/src/strategies/api-token.mjs +0 -138
- package/dist/server/server/src/strategies/api-token.mjs.map +0 -1
- package/dist/server/src/strategies/api-token.d.ts.map +0 -1
- /package/dist/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../server/src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../server/src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;qCAOd;IAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CAAE;AAAnD,wBAeE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
method: string;
|
|
3
|
+
path: string;
|
|
4
|
+
handler: string;
|
|
5
|
+
config: {
|
|
6
|
+
policies: (string | {
|
|
7
|
+
name: string;
|
|
8
|
+
config: {
|
|
9
|
+
actions: string[];
|
|
10
|
+
};
|
|
11
|
+
})[];
|
|
12
|
+
};
|
|
13
|
+
}[];
|
|
14
|
+
export default _default;
|
|
15
|
+
//# sourceMappingURL=admin-tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-tokens.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/admin-tokens.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,wBAqFE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/index.ts"],"names":[],"mappings":";AAaA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkBX,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -1,16 +1,84 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import type {
|
|
2
|
+
import type { Data } from '@strapi/types';
|
|
3
|
+
import type { Update, ContentApiApiToken, ContentApiApiTokenBody } from '../../../shared/contracts/api-token';
|
|
4
|
+
import type { AdminApiToken, AdminTokenBody } from '../../../shared/contracts/admin-token';
|
|
5
|
+
import type { AdminUser, Permission } from '../../../shared/contracts/shared';
|
|
6
|
+
type AnyApiToken = ContentApiApiToken | AdminApiToken;
|
|
7
|
+
/** API/body shape: permission without ids/timestamps and without actionParameters (defaulted by domain when creating). */
|
|
8
|
+
type PermissionInput = Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>;
|
|
9
|
+
/**
|
|
10
|
+
* Enforce that every requested admin permission stays within the calling
|
|
11
|
+
* user's own permission ceiling, then return the clamped permissions.
|
|
12
|
+
*
|
|
13
|
+
* Super-admins bypass this (they hold every permission).
|
|
14
|
+
* When admin permissions are requested, an authenticated user is required (no bypass when user is missing).
|
|
15
|
+
*
|
|
16
|
+
* For each requested permission:
|
|
17
|
+
* - action + subject must match at least one user permission
|
|
18
|
+
* - properties.fields must be ⊆ user's properties.fields
|
|
19
|
+
* (if the user's permission defines no fields, all fields are allowed)
|
|
20
|
+
* - conditions are inherited from the user's matching permission(s);
|
|
21
|
+
* the caller cannot configure conditions on their own tokens
|
|
22
|
+
*
|
|
23
|
+
* Returns the permissions with conditions enforced from the user's role.
|
|
24
|
+
* Throws ValidationError if any permission exceeds the user's ceiling.
|
|
25
|
+
*
|
|
26
|
+
* Guaranteed postcondition: all returned permissions have conditions filtered to
|
|
27
|
+
* registered conditions only, regardless of the user type.
|
|
28
|
+
*/
|
|
29
|
+
declare const enforceAdminPermissionsCeiling: (user: AdminUser | undefined | null, requestedPermissions?: PermissionInput[]) => Promise<PermissionInput[]>;
|
|
30
|
+
/**
|
|
31
|
+
* Assign admin permissions to an API token (similar to role permission assignment).
|
|
32
|
+
* ceilingUser is the user whose permissions act as the ceiling — always the token owner,
|
|
33
|
+
* regardless of who is making the request.
|
|
34
|
+
*/
|
|
35
|
+
declare const assignAdminPermissionsToToken: (tokenId: Data.ID, permissions: PermissionInput[], ceilingUser: AdminUser) => Promise<Permission[]>;
|
|
36
|
+
/**
|
|
37
|
+
* Reconcile a token's admin permissions against the owner's current effective ceiling.
|
|
38
|
+
*
|
|
39
|
+
* Pure / sync — no DB calls. Returns two buckets:
|
|
40
|
+
* toDelete – permissions that are no longer within the user's scope (action/subject missing
|
|
41
|
+
* or requested fields exceed the allowed set)
|
|
42
|
+
* toUpdate – permissions that are still in scope but whose conditions must be re-clamped
|
|
43
|
+
* to the current union of the matching user permissions' conditions
|
|
44
|
+
*/
|
|
45
|
+
declare const reconcileTokenPermissionsToUserCeiling: (userPermissions: Permission[], tokenPermissions: Permission[]) => {
|
|
46
|
+
toDelete: Permission[];
|
|
47
|
+
toUpdate: {
|
|
48
|
+
id: Data.ID;
|
|
49
|
+
conditions: string[];
|
|
50
|
+
}[];
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Re-sync all admin token permissions for a given user against their current effective ceiling.
|
|
54
|
+
*
|
|
55
|
+
* Skips super-admins (no ceiling). For each admin token owned by the user:
|
|
56
|
+
* - Deletes permissions that are no longer within the user's scope
|
|
57
|
+
* - Updates conditions on permissions whose conditions have drifted from the role's current set
|
|
58
|
+
*/
|
|
59
|
+
declare const syncApiTokenPermissionsForUser: (userId: Data.ID) => Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Re-sync admin token permissions for all admin users who hold a given role.
|
|
62
|
+
* Called after role permissions are updated.
|
|
63
|
+
*/
|
|
64
|
+
declare const syncApiTokenPermissionsForRole: (roleId: Data.ID) => Promise<void>;
|
|
3
65
|
type WhereParams = {
|
|
4
66
|
id?: string | number;
|
|
5
67
|
name?: string;
|
|
6
68
|
lastUsedAt?: number;
|
|
7
69
|
description?: string;
|
|
8
70
|
accessKey?: string;
|
|
71
|
+
kind?: 'content-api' | 'admin';
|
|
72
|
+
};
|
|
73
|
+
type GetByOptions = {
|
|
74
|
+
includeDecryptedKey?: boolean;
|
|
9
75
|
};
|
|
10
76
|
/**
|
|
11
|
-
* Get a token
|
|
77
|
+
* Get a token.
|
|
78
|
+
* By default the plaintext accessKey is NOT included.
|
|
79
|
+
* Pass { includeDecryptedKey: true } to decrypt and return it (owner-only paths).
|
|
12
80
|
*/
|
|
13
|
-
declare const getBy: (whereParams?: WhereParams) => Promise<
|
|
81
|
+
declare const getBy: (whereParams?: WhereParams, options?: GetByOptions) => Promise<AnyApiToken | null>;
|
|
14
82
|
/**
|
|
15
83
|
* Check if token exists
|
|
16
84
|
*/
|
|
@@ -22,29 +90,85 @@ declare const hash: (accessKey: string) => string;
|
|
|
22
90
|
/**
|
|
23
91
|
* Create a token and its permissions
|
|
24
92
|
*/
|
|
25
|
-
declare const create: (attributes:
|
|
26
|
-
|
|
93
|
+
declare const create: <K extends "admin" | "content-api">(attributes: {
|
|
94
|
+
kind: K;
|
|
95
|
+
} & (ContentApiApiTokenBody | AdminTokenBody), callingUser?: AdminUser) => Promise<K extends 'content-api' ? ContentApiApiToken : K extends 'admin' ? AdminApiToken : AnyApiToken>;
|
|
96
|
+
declare const regenerate: (id: string | number) => Promise<ContentApiApiToken | AdminApiToken>;
|
|
27
97
|
declare const checkSaltIsDefined: () => void;
|
|
28
98
|
/**
|
|
29
|
-
* Return a list of
|
|
99
|
+
* Return a list of tokens visible to the calling user.
|
|
100
|
+
* Super-admins see all tokens; regular admins see only ownerless tokens and their own.
|
|
30
101
|
*/
|
|
31
|
-
declare const list: (
|
|
102
|
+
declare const list: <K extends "admin" | "content-api">(callingUser: AdminUser, { filter }?: {
|
|
103
|
+
filter?: {
|
|
104
|
+
kind?: K;
|
|
105
|
+
};
|
|
106
|
+
}) => Promise<Array<K extends 'content-api' ? ContentApiApiToken : K extends 'admin' ? AdminApiToken : AnyApiToken>>;
|
|
32
107
|
/**
|
|
33
108
|
* Revoke (delete) a token
|
|
34
109
|
*/
|
|
35
|
-
declare const revoke: (id: string | number) => Promise<
|
|
110
|
+
declare const revoke: (id: string | number) => Promise<AnyApiToken>;
|
|
36
111
|
/**
|
|
37
112
|
* Retrieve a token by id
|
|
38
113
|
*/
|
|
39
|
-
declare const getById: (id: string | number) => Promise<
|
|
114
|
+
declare const getById: (id: string | number, options?: GetByOptions) => Promise<AnyApiToken | null>;
|
|
40
115
|
/**
|
|
41
116
|
* Retrieve a token by name
|
|
42
117
|
*/
|
|
43
|
-
declare const getByName: (name: string) => Promise<
|
|
118
|
+
declare const getByName: (name: string, options?: GetByOptions) => Promise<AnyApiToken | null>;
|
|
44
119
|
/**
|
|
45
120
|
* Update a token and its permissions
|
|
46
121
|
*/
|
|
47
|
-
declare const update: (id: string | number, attributes: Update.Request['body']) => Promise<
|
|
122
|
+
declare const update: (id: string | number, attributes: Update.Request['body']) => Promise<AnyApiToken>;
|
|
48
123
|
declare const count: (where?: {}) => Promise<number>;
|
|
49
|
-
|
|
124
|
+
/**
|
|
125
|
+
* Delete all admin API tokens owned by the given user, including their associated admin permissions.
|
|
126
|
+
* Called when the owner user is deleted so tokens don't linger with a dangling owner FK.
|
|
127
|
+
*/
|
|
128
|
+
declare const deleteAdminTokensForUser: (userId: Data.ID) => Promise<void>;
|
|
129
|
+
interface SharedTokenMethods {
|
|
130
|
+
hash(accessKey: string): string;
|
|
131
|
+
checkSaltIsDefined(): void;
|
|
132
|
+
/** Kind-agnostic lookup by hashed access key — used by the auth strategy. */
|
|
133
|
+
getByAccessKey(accessKeyHash: string, options?: GetByOptions): Promise<AnyApiToken | null>;
|
|
134
|
+
/** Total count across all kinds. */
|
|
135
|
+
countAll(where?: object): Promise<number>;
|
|
136
|
+
reconcileTokenPermissionsToUserCeiling(userPermissions: Permission[], tokenPermissions: Permission[]): {
|
|
137
|
+
toDelete: Permission[];
|
|
138
|
+
toUpdate: {
|
|
139
|
+
id: Data.ID;
|
|
140
|
+
conditions: string[];
|
|
141
|
+
}[];
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
export interface ContentApiTokenService extends SharedTokenMethods {
|
|
145
|
+
create(attributes: ContentApiApiTokenBody, callingUser?: AdminUser): Promise<ContentApiApiToken>;
|
|
146
|
+
list(callingUser: AdminUser): Promise<ContentApiApiToken[]>;
|
|
147
|
+
getById(id: string | number, options?: GetByOptions): Promise<ContentApiApiToken | null>;
|
|
148
|
+
getByName(name: string, options?: GetByOptions): Promise<ContentApiApiToken | null>;
|
|
149
|
+
update(id: string | number, attributes: Partial<ContentApiApiTokenBody>): Promise<ContentApiApiToken>;
|
|
150
|
+
revoke(id: string | number): Promise<ContentApiApiToken>;
|
|
151
|
+
regenerate(id: string | number): Promise<ContentApiApiToken>;
|
|
152
|
+
exists(where: WhereParams): Promise<boolean>;
|
|
153
|
+
count(where?: object): Promise<number>;
|
|
154
|
+
}
|
|
155
|
+
export interface AdminTokenService extends SharedTokenMethods {
|
|
156
|
+
create(attributes: AdminTokenBody, callingUser: AdminUser): Promise<AdminApiToken>;
|
|
157
|
+
list(callingUser: AdminUser): Promise<AdminApiToken[]>;
|
|
158
|
+
getById(id: string | number, options?: GetByOptions): Promise<AdminApiToken | null>;
|
|
159
|
+
getByName(name: string, options?: GetByOptions): Promise<AdminApiToken | null>;
|
|
160
|
+
update(id: string | number, attributes: Partial<AdminTokenBody>): Promise<AdminApiToken>;
|
|
161
|
+
revoke(id: string | number): Promise<AdminApiToken>;
|
|
162
|
+
regenerate(id: string | number): Promise<AdminApiToken>;
|
|
163
|
+
exists(where: WhereParams): Promise<boolean>;
|
|
164
|
+
count(where?: object): Promise<number>;
|
|
165
|
+
assignAdminPermissionsToToken(tokenId: Data.ID, permissions: PermissionInput[], ceilingUser: AdminUser): Promise<Permission[]>;
|
|
166
|
+
syncPermissionsForUser(userId: Data.ID): Promise<void>;
|
|
167
|
+
syncPermissionsForRole(roleId: Data.ID): Promise<void>;
|
|
168
|
+
deleteTokensForUser(userId: Data.ID): Promise<void>;
|
|
169
|
+
}
|
|
170
|
+
declare function createTokenService(kind: 'content-api'): ContentApiTokenService;
|
|
171
|
+
declare function createTokenService(kind: 'admin'): AdminTokenService;
|
|
172
|
+
export type { GetByOptions };
|
|
173
|
+
export { createTokenService, create, count, regenerate, exists, checkSaltIsDefined, hash, list, revoke, getById, update, getByName, getBy, assignAdminPermissionsToToken, enforceAdminPermissionsCeiling, reconcileTokenPermissionsToUserCeiling, syncApiTokenPermissionsForUser, syncApiTokenPermissionsForRole, deleteAdminTokensForUser, };
|
|
50
174
|
//# sourceMappingURL=api-token.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-token.d.ts","sourceRoot":"","sources":["../../../../server/src/services/api-token.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"api-token.d.ts","sourceRoot":"","sources":["../../../../server/src/services/api-token.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,17 +19,19 @@ declare const constants: {
|
|
|
19
19
|
DAYS_30: number;
|
|
20
20
|
DAYS_90: number;
|
|
21
21
|
};
|
|
22
|
-
DEFAULT_API_TOKENS:
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
22
|
+
DEFAULT_API_TOKENS: ({
|
|
23
|
+
name: string;
|
|
24
|
+
description: string;
|
|
25
|
+
kind: "content-api";
|
|
26
|
+
type: "read-only";
|
|
27
|
+
lifespan: null;
|
|
28
|
+
} | {
|
|
29
|
+
name: string;
|
|
30
|
+
description: string;
|
|
31
|
+
kind: "content-api";
|
|
32
|
+
type: "full-access";
|
|
33
|
+
lifespan: null;
|
|
34
|
+
})[];
|
|
33
35
|
TRANSFER_TOKEN_TYPE: {
|
|
34
36
|
PUSH: string;
|
|
35
37
|
PULL: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../server/src/services/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../server/src/services/constants.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDd,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -5,7 +5,6 @@ import * as contentType from './content-type';
|
|
|
5
5
|
import * as constants from './constants';
|
|
6
6
|
import * as condition from './condition';
|
|
7
7
|
import * as action from './action';
|
|
8
|
-
import * as apiToken from './api-token';
|
|
9
8
|
import * as transfer from './transfer';
|
|
10
9
|
import * as projectSettings from './project-settings';
|
|
11
10
|
declare const _default: {
|
|
@@ -105,7 +104,8 @@ declare const _default: {
|
|
|
105
104
|
constants: typeof constants;
|
|
106
105
|
condition: typeof condition;
|
|
107
106
|
action: typeof action;
|
|
108
|
-
'api-token':
|
|
107
|
+
'api-token-content-api': import("./api-token").ContentApiTokenService;
|
|
108
|
+
'api-token-admin': import("./api-token").AdminTokenService;
|
|
109
109
|
transfer: typeof transfer;
|
|
110
110
|
'project-settings': typeof projectSettings;
|
|
111
111
|
encryption: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAItD,wBAkBE"}
|
|
@@ -11,6 +11,11 @@ declare const _default: (params: {
|
|
|
11
11
|
* @param user
|
|
12
12
|
*/
|
|
13
13
|
generateUserAbility(user: AdminUser): Promise<Ability>;
|
|
14
|
+
/**
|
|
15
|
+
* Generate an ability based on an admin token's stored permissions, scoped to the owner.
|
|
16
|
+
* Token permissions are already validated and ceiling-clamped at write time.
|
|
17
|
+
*/
|
|
18
|
+
generateTokenAbility(tokenPermissions: Permission[], owner: AdminUser): Promise<Ability>;
|
|
14
19
|
/**
|
|
15
20
|
* Check many permissions based on an ability
|
|
16
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/permission/engine.ts"],"names":[],"mappings":";AACA,OAAoB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;iCAEzD;IAAE,SAAS,EAAE,OAAO,YAAY,CAAC,WAAW,CAAC,CAAA;CAAE;;IA4DnE;;;OAGG;8BAC6B,SAAS,GAAG,QAAQ,OAAO,CAAC;IAM5D;;OAEG;;;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/permission/engine.ts"],"names":[],"mappings":";AACA,OAAoB,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;iCAEzD;IAAE,SAAS,EAAE,OAAO,YAAY,CAAC,WAAW,CAAC,CAAA;CAAE;;IA4DnE;;;OAGG;8BAC6B,SAAS,GAAG,QAAQ,OAAO,CAAC;IAM5D;;;OAGG;2CAC0C,UAAU,EAAE,SAAS,SAAS,GAAG,QAAQ,OAAO,CAAC;IAI9F;;OAEG;;;AAhFP,wBAsFE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/permission/queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAyB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAGjF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,aAAoB,KAAK,EAAE,EAAE,KAAG,QAAQ,IAAI,CAWxE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAe,KAAK,EAAE,EAAE,KAAG,QAAQ,IAAI,CAO9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,gBAAuB,uBAAuB,EAAE,KAAG,QAAQ,UAAU,EAAE,CAW7F,CAAC;AAkBF;;;GAGG;AACH,eAAO,MAAM,QAAQ,mBAAwB,QAAQ,UAAU,EAAE,CAIhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,SAAgB,SAAS,KAAG,QAAQ,UAAU,EAAE,CAE/E,CAAC;AAqCF;;GAEG;AACH,eAAO,MAAM,0BAA0B,QAAa,QAAQ,IAAI,
|
|
1
|
+
{"version":3,"file":"queries.d.ts","sourceRoot":"","sources":["../../../../../server/src/services/permission/queries.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAyB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AAGjF;;;GAGG;AACH,eAAO,MAAM,gBAAgB,aAAoB,KAAK,EAAE,EAAE,KAAG,QAAQ,IAAI,CAWxE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAe,KAAK,EAAE,EAAE,KAAG,QAAQ,IAAI,CAO9D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,UAAU,gBAAuB,uBAAuB,EAAE,KAAG,QAAQ,UAAU,EAAE,CAW7F,CAAC;AAkBF;;;GAGG;AACH,eAAO,MAAM,QAAQ,mBAAwB,QAAQ,UAAU,EAAE,CAIhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,SAAgB,SAAS,KAAG,QAAQ,UAAU,EAAE,CAE/E,CAAC;AAqCF;;GAEG;AACH,eAAO,MAAM,0BAA0B,QAAa,QAAQ,IAAI,CA2D/D,CAAC;;;;;;;;;AAEF,wBAOE"}
|
|
@@ -79,6 +79,7 @@ declare const sanitizePermission: (p: import("../../../shared/contracts/shared")
|
|
|
79
79
|
declare const engine: {
|
|
80
80
|
readonly hooks: import("@strapi/permissions/dist/engine/hooks").PermissionEngineHooks;
|
|
81
81
|
generateUserAbility(user: import("../../../shared/contracts/shared").AdminUser): Promise<import("@casl/ability").Ability<import("@casl/ability").AbilityTuple, any>>;
|
|
82
|
+
generateTokenAbility(tokenPermissions: import("../../../shared/contracts/shared").Permission[], owner: import("../../../shared/contracts/shared").AdminUser): Promise<import("@casl/ability").Ability<import("@casl/ability").AbilityTuple, any>>;
|
|
82
83
|
checkMany: import("lodash").CurriedFunction2<import("@casl/ability").Ability<import("@casl/ability").AbilityTuple, any>, import("../../../shared/contracts/shared").Permission[], boolean[]>;
|
|
83
84
|
};
|
|
84
85
|
export { cleanPermissionsInDatabase, createMany, deleteByIds, deleteByRolesIds, findMany, findUserPermissions, createPermissionsManager, sectionsBuilder, sanitizePermission, engine, actionProvider, conditionProvider, };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../../../server/src/services/permission.ts"],"names":[],"mappings":";AAGA,OAAO,wBAAwB,MAAM,kCAAkC,CAAC;AAGxE,OAAO,EACL,0BAA0B,EAC1B,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyB,CAAC;AAC9C,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAA4B,CAAC;AACpD,QAAA,MAAM,eAAe;;;;;;CAA0B,CAAC;AAEhD,QAAA,MAAM,kBAAkB,6HAAkC,CAAC;AAE3D,QAAA,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"permission.d.ts","sourceRoot":"","sources":["../../../../server/src/services/permission.ts"],"names":[],"mappings":";AAGA,OAAO,wBAAwB,MAAM,kCAAkC,CAAC;AAGxE,OAAO,EACL,0BAA0B,EAC1B,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,QAAA,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAyB,CAAC;AAC9C,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAA4B,CAAC;AACpD,QAAA,MAAM,eAAe;;;;;;CAA0B,CAAC;AAEhD,QAAA,MAAM,kBAAkB,6HAAkC,CAAC;AAE3D,QAAA,MAAM,MAAM;;;;;CAEV,CAAC;AAEH,OAAO,EAEL,0BAA0B,EAC1B,UAAU,EACV,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,mBAAmB,EAEnB,wBAAwB,EACxB,eAAe,EACf,kBAAkB,EAElB,MAAM,EAEN,cAAc,EACd,iBAAiB,GAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../../../server/src/services/role.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,KAAK,IAAI,UAAU,EAAU,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AA0BzF,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../../../server/src/services/role.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,KAAK,IAAI,UAAU,EAAU,MAAM,eAAe,CAAC;AAC3E,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AA0BzF,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwazE,wBAuBE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Context } from 'koa';
|
|
2
|
+
import { errors } from '@strapi/utils';
|
|
3
|
+
import '@strapi/types';
|
|
4
|
+
/**
|
|
5
|
+
* Authenticate an admin token. Rejects tokens with kind !== 'admin'.
|
|
6
|
+
*/
|
|
7
|
+
export declare const authenticate: (ctx: Context) => Promise<{
|
|
8
|
+
authenticated: boolean;
|
|
9
|
+
error?: undefined;
|
|
10
|
+
credentials?: undefined;
|
|
11
|
+
ability?: undefined;
|
|
12
|
+
} | {
|
|
13
|
+
authenticated: boolean;
|
|
14
|
+
error: errors.UnauthorizedError<string, unknown>;
|
|
15
|
+
credentials?: undefined;
|
|
16
|
+
ability?: undefined;
|
|
17
|
+
} | {
|
|
18
|
+
authenticated: boolean;
|
|
19
|
+
credentials: import("../../../shared/contracts/admin-token").AdminApiToken;
|
|
20
|
+
ability: import("@casl/ability").Ability<import("@casl/ability").AbilityTuple, any>;
|
|
21
|
+
error?: undefined;
|
|
22
|
+
}>;
|
|
23
|
+
/**
|
|
24
|
+
* Re-check presence and expiry at verify time.
|
|
25
|
+
* Authorization is handled by isAuthenticatedAdmin + hasPermissions policies.
|
|
26
|
+
*
|
|
27
|
+
* @type {import('.').VerifyFunction}
|
|
28
|
+
*/
|
|
29
|
+
export declare const verify: (auth: any) => void;
|
|
30
|
+
declare const _default: {
|
|
31
|
+
name: string;
|
|
32
|
+
authenticate: (ctx: Context) => Promise<{
|
|
33
|
+
authenticated: boolean;
|
|
34
|
+
error?: undefined;
|
|
35
|
+
credentials?: undefined;
|
|
36
|
+
ability?: undefined;
|
|
37
|
+
} | {
|
|
38
|
+
authenticated: boolean;
|
|
39
|
+
error: errors.UnauthorizedError<string, unknown>;
|
|
40
|
+
credentials?: undefined;
|
|
41
|
+
ability?: undefined;
|
|
42
|
+
} | {
|
|
43
|
+
authenticated: boolean;
|
|
44
|
+
credentials: import("../../../shared/contracts/admin-token").AdminApiToken;
|
|
45
|
+
ability: import("@casl/ability").Ability<import("@casl/ability").AbilityTuple, any>;
|
|
46
|
+
error?: undefined;
|
|
47
|
+
}>;
|
|
48
|
+
verify: (auth: any) => void;
|
|
49
|
+
};
|
|
50
|
+
export default _default;
|
|
51
|
+
//# sourceMappingURL=admin-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-token.d.ts","sourceRoot":"","sources":["../../../../server/src/strategies/admin-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC,OAAO,eAAe,CAAC;AAIvB;;GAEG;AACH,eAAO,MAAM,YAAY,QAAe,OAAO;;;;;;;;;;;;;;;EA8D9C,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,SAAU,GAAG,KAAG,IAWlC,CAAC;;;;;;;;;;;;;;;;;;;;;AAEF,wBAIE"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Context } from 'koa';
|
|
2
|
+
import { errors } from '@strapi/utils';
|
|
3
|
+
declare const UnauthorizedError: typeof errors.UnauthorizedError;
|
|
4
|
+
export declare const extractToken: (ctx: Context) => string | null;
|
|
5
|
+
export declare const checkExpiry: (apiToken: {
|
|
6
|
+
expiresAt?: string | number | null;
|
|
7
|
+
}) => InstanceType<typeof UnauthorizedError> | null;
|
|
8
|
+
export declare const updateLastUsedAt: (apiToken: {
|
|
9
|
+
id: number | string;
|
|
10
|
+
lastUsedAt?: string | null;
|
|
11
|
+
}) => Promise<void>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=api-token-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-token-utils.d.ts","sourceRoot":"","sources":["../../../../server/src/strategies/api-token-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAGnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,QAAA,MAAQ,iBAAiB,iCAAW,CAAC;AAErC,eAAO,MAAM,YAAY,QAAS,OAAO,KAAG,MAAM,GAAG,IAYpD,CAAC;AAEF,eAAO,MAAM,WAAW,aAAc;IACpC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;CACpC,KAAG,aAAa,wBAAwB,CAAC,GAAG,IAS5C,CAAC;AAEF,eAAO,MAAM,gBAAgB,aAAoB;IAC/C,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,KAAG,QAAQ,IAAI,CAiBf,CAAC"}
|
|
@@ -2,7 +2,7 @@ import type { Context } from 'koa';
|
|
|
2
2
|
import { errors } from '@strapi/utils';
|
|
3
3
|
import '@strapi/types';
|
|
4
4
|
/**
|
|
5
|
-
* Authenticate
|
|
5
|
+
* Authenticate a content-api token. Rejects tokens with kind !== 'content-api'.
|
|
6
6
|
*/
|
|
7
7
|
export declare const authenticate: (ctx: Context) => Promise<{
|
|
8
8
|
authenticated: boolean;
|
|
@@ -11,27 +11,26 @@ export declare const authenticate: (ctx: Context) => Promise<{
|
|
|
11
11
|
credentials?: undefined;
|
|
12
12
|
} | {
|
|
13
13
|
authenticated: boolean;
|
|
14
|
-
error: errors.UnauthorizedError<
|
|
14
|
+
error: errors.UnauthorizedError<string, unknown>;
|
|
15
15
|
ability?: undefined;
|
|
16
16
|
credentials?: undefined;
|
|
17
17
|
} | {
|
|
18
18
|
authenticated: boolean;
|
|
19
19
|
ability: import("@casl/ability").Ability<import("@casl/ability").AbilityTuple, any>;
|
|
20
|
-
credentials: import("../../../shared/contracts/api-token").
|
|
20
|
+
credentials: import("../../../shared/contracts/content-api-token").ContentApiApiToken;
|
|
21
21
|
error?: undefined;
|
|
22
22
|
} | {
|
|
23
23
|
authenticated: boolean;
|
|
24
|
-
credentials: import("../../../shared/contracts/api-token").
|
|
24
|
+
credentials: import("../../../shared/contracts/content-api-token").ContentApiApiToken;
|
|
25
25
|
error?: undefined;
|
|
26
26
|
ability?: undefined;
|
|
27
27
|
}>;
|
|
28
28
|
/**
|
|
29
|
-
* Verify the token has the required abilities for the requested scope
|
|
29
|
+
* Verify the token has the required abilities for the requested scope.
|
|
30
30
|
*
|
|
31
|
-
*
|
|
31
|
+
* @type {import('.').VerifyFunction}
|
|
32
32
|
*/
|
|
33
33
|
export declare const verify: (auth: any, config: any) => void;
|
|
34
|
-
export declare const name = "api-token";
|
|
35
34
|
declare const _default: {
|
|
36
35
|
name: string;
|
|
37
36
|
authenticate: (ctx: Context) => Promise<{
|
|
@@ -41,21 +40,21 @@ declare const _default: {
|
|
|
41
40
|
credentials?: undefined;
|
|
42
41
|
} | {
|
|
43
42
|
authenticated: boolean;
|
|
44
|
-
error: errors.UnauthorizedError<
|
|
43
|
+
error: errors.UnauthorizedError<string, unknown>;
|
|
45
44
|
ability?: undefined;
|
|
46
45
|
credentials?: undefined;
|
|
47
46
|
} | {
|
|
48
47
|
authenticated: boolean;
|
|
49
48
|
ability: import("@casl/ability").Ability<import("@casl/ability").AbilityTuple, any>;
|
|
50
|
-
credentials: import("../../../shared/contracts/api-token").
|
|
49
|
+
credentials: import("../../../shared/contracts/content-api-token").ContentApiApiToken;
|
|
51
50
|
error?: undefined;
|
|
52
51
|
} | {
|
|
53
52
|
authenticated: boolean;
|
|
54
|
-
credentials: import("../../../shared/contracts/api-token").
|
|
53
|
+
credentials: import("../../../shared/contracts/content-api-token").ContentApiApiToken;
|
|
55
54
|
error?: undefined;
|
|
56
55
|
ability?: undefined;
|
|
57
56
|
}>;
|
|
58
57
|
verify: (auth: any, config: any) => void;
|
|
59
58
|
};
|
|
60
59
|
export default _default;
|
|
61
|
-
//# sourceMappingURL=api-token.d.ts.map
|
|
60
|
+
//# sourceMappingURL=content-api-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-api-token.d.ts","sourceRoot":"","sources":["../../../../server/src/strategies/content-api-token.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAEnC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAIvC,OAAO,eAAe,CAAC;AAMvB;;GAEG;AACH,eAAO,MAAM,YAAY,QAAe,OAAO;;;;;;;;;;;;;;;;;;;;EAoC9C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,MAAM,SAAU,GAAG,UAAU,GAAG,SAyC5C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,wBAIE"}
|
|
@@ -14,5 +14,6 @@
|
|
|
14
14
|
*/
|
|
15
15
|
export { default as admin } from './admin';
|
|
16
16
|
export { default as dataTransfer } from './data-transfer';
|
|
17
|
-
export { default as
|
|
17
|
+
export { default as contentApiToken } from './content-api-token';
|
|
18
|
+
export { default as adminToken } from './admin-token';
|
|
18
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/strategies/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/strategies/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { yup } from '@strapi/utils';
|
|
2
|
+
export declare const validateAdminTokenCreationInput: (body: unknown, errorMessage?: string | undefined) => Promise<import("yup/lib/object").AssertsShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
3
|
+
kind: import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>;
|
|
4
|
+
name: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
5
|
+
description: import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>;
|
|
6
|
+
lifespan: yup.NumberSchema<number | null | undefined, Record<string, any>, number | null | undefined>;
|
|
7
|
+
adminPermissions: yup.ArraySchema<import("yup").ObjectSchema<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
8
|
+
action: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
9
|
+
actionParameters: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape> | null>;
|
|
10
|
+
subject: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
11
|
+
properties: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape>>;
|
|
12
|
+
conditions: yup.ArraySchema<import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, (string | undefined)[] | undefined>;
|
|
13
|
+
}>, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
14
|
+
action: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
15
|
+
actionParameters: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape> | null>;
|
|
16
|
+
subject: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
17
|
+
properties: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape>>;
|
|
18
|
+
conditions: yup.ArraySchema<import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, (string | undefined)[] | undefined>;
|
|
19
|
+
}>>, import("yup/lib/object").AssertsShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
20
|
+
action: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
21
|
+
actionParameters: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape> | null>;
|
|
22
|
+
subject: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
23
|
+
properties: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape>>;
|
|
24
|
+
conditions: yup.ArraySchema<import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, (string | undefined)[] | undefined>;
|
|
25
|
+
}>>>, import("yup/lib/types").AnyObject, import("yup/lib/object").TypeOfShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
26
|
+
action: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
27
|
+
actionParameters: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape> | null>;
|
|
28
|
+
subject: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
29
|
+
properties: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape>>;
|
|
30
|
+
conditions: yup.ArraySchema<import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, (string | undefined)[] | undefined>;
|
|
31
|
+
}>>[] | undefined, import("yup/lib/object").AssertsShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
32
|
+
action: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
33
|
+
actionParameters: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape> | null>;
|
|
34
|
+
subject: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
35
|
+
properties: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape>>;
|
|
36
|
+
conditions: yup.ArraySchema<import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, (string | undefined)[] | undefined>;
|
|
37
|
+
}>>[] | undefined>;
|
|
38
|
+
adminUserOwner: import("yup/lib/mixed").MixedSchema<any, Record<string, any>, any>;
|
|
39
|
+
}>>>;
|
|
40
|
+
export declare const validateAdminTokenUpdateInput: (body: unknown, errorMessage?: string | undefined) => Promise<import("yup/lib/object").AssertsShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
41
|
+
name: import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>;
|
|
42
|
+
description: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
43
|
+
adminPermissions: yup.ArraySchema<import("yup").ObjectSchema<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
44
|
+
action: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
45
|
+
actionParameters: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape> | null>;
|
|
46
|
+
subject: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
47
|
+
properties: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape>>;
|
|
48
|
+
conditions: yup.ArraySchema<import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, (string | undefined)[] | undefined>;
|
|
49
|
+
}>, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
50
|
+
action: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
51
|
+
actionParameters: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape> | null>;
|
|
52
|
+
subject: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
53
|
+
properties: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape>>;
|
|
54
|
+
conditions: yup.ArraySchema<import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, (string | undefined)[] | undefined>;
|
|
55
|
+
}>>, import("yup/lib/object").AssertsShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
56
|
+
action: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
57
|
+
actionParameters: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape> | null>;
|
|
58
|
+
subject: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
59
|
+
properties: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape>>;
|
|
60
|
+
conditions: yup.ArraySchema<import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, (string | undefined)[] | undefined>;
|
|
61
|
+
}>>>, import("yup/lib/types").AnyObject, import("yup/lib/object").TypeOfShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
62
|
+
action: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
63
|
+
actionParameters: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape> | null>;
|
|
64
|
+
subject: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
65
|
+
properties: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape>>;
|
|
66
|
+
conditions: yup.ArraySchema<import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, (string | undefined)[] | undefined>;
|
|
67
|
+
}>>[] | null | undefined, import("yup/lib/object").AssertsShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
|
|
68
|
+
action: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
|
|
69
|
+
actionParameters: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape> | null>;
|
|
70
|
+
subject: import("yup").StringSchema<string | null | undefined, Record<string, any>, string | null | undefined>;
|
|
71
|
+
properties: import("yup/lib/object").OptionalObjectSchema<import("yup/lib/object").ObjectShape, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").ObjectShape>>;
|
|
72
|
+
conditions: yup.ArraySchema<import("yup").StringSchema<string | undefined, Record<string, any>, string | undefined>, import("yup/lib/types").AnyObject, (string | undefined)[] | undefined, (string | undefined)[] | undefined>;
|
|
73
|
+
}>>[] | null | undefined>;
|
|
74
|
+
}>>>;
|
|
75
|
+
//# sourceMappingURL=admin-tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-tokens.d.ts","sourceRoot":"","sources":["../../../../server/src/validation/admin-tokens.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAqB,MAAM,eAAe,CAAC;AA4BvD,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA8C,CAAC;AAC3F,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA4C,CAAC"}
|