@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditViewPage.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Box } from '@strapi/design-system';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useMatch, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { Page } from '../../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport { useAuth } from '../../../../../features/Auth';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useTracking } from '../../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../hooks/useRBAC';\nimport {\n useCreateAdminTokenMutation,\n useGetAdminTokenQuery,\n useUpdateAdminTokenMutation,\n} from '../../../../../services/apiTokens';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE, apiTokenInformationSchema } from '../../../components/Tokens/constants';\nimport { FormApiTokenContainer } from '../../../components/Tokens/FormApiTokenContainer';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { ApiTokenBox } from '../../../components/Tokens/TokenBox';\n\nimport { AdminPermissions } from './components/AdminPermissions';\n\nimport type { AdminApiToken, Get } from '../../../../../../../shared/contracts/admin-token';\nimport type { ApiToken } from '../../../../../../../shared/contracts/api-token';\nimport type { AuthContextValue } from '../../../../../features/Auth';\nimport type { PermissionsAPI } from '../../Roles/components/Permissions';\nimport type { Data } from '@strapi/types';\n\nconst getOwnerId = (owner: AdminApiToken['adminUserOwner']): Data.ID | null => {\n if (owner === undefined || owner === null) return null;\n return typeof owner === 'object' ? owner.id : owner;\n};\n\nconst isCurrentUserTokenOwner = (\n apiToken: ApiToken | null,\n currentUserId: Data.ID | undefined\n): boolean => {\n if (apiToken === null || apiToken.kind !== 'admin') return true;\n const ownerId = getOwnerId(apiToken.adminUserOwner);\n if (ownerId === null) return true;\n return currentUserId !== undefined && ownerId === currentUserId;\n};\n\nexport const EditView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { state: locationState } = useLocation();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey !== undefined && locationState?.apiToken?.accessKey !== ''\n ? { ...locationState.apiToken }\n : null\n );\n\n const [showToken, setShowToken] = React.useState(\n locationState?.apiToken?.accessKey !== undefined && locationState?.apiToken?.accessKey !== ''\n );\n const hideTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const adminPermissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const currentUser = useAuth('EditView', (state: AuthContextValue) => state.user);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['admin-tokens']);\n const match = useMatch('/settings/admin-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const navigate = useNavigate();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAdminTokenQuery(id!, {\n skip: !id || isCreating,\n refetchOnMountOrArgChange: true,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n }\n }, [data]);\n\n React.useEffect(() => {\n if (showToken) {\n hideTimerRef.current = setTimeout(() => {\n setShowToken(false);\n }, 30000); // 30 seconds\n\n return () => {\n if (hideTimerRef.current) {\n clearTimeout(hideTimerRef.current);\n hideTimerRef.current = null;\n }\n };\n }\n }, [showToken]);\n\n const [createToken] = useCreateAdminTokenMutation();\n const [updateToken] = useUpdateAdminTokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: undefined;\n }\n\n const buildLifespan = (raw: FormValues['lifespan']): number | null =>\n raw && raw !== '0' ? parseInt(raw.toString(), 10) : null;\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n const adminPermissionsToSend =\n adminPermissionsRef.current?.getPermissions().permissionsToSend ?? [];\n\n try {\n if (isCreating) {\n const res = await createToken({\n name: body.name,\n description: body.description,\n lifespan: buildLifespan(body.lifespan),\n adminPermissions: adminPermissionsToSend,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.adminTokenCreated',\n defaultMessage: 'Admin Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n kind: 'admin',\n tokenType: API_TOKEN_TYPE,\n });\n\n adminPermissionsRef.current?.setFormAfterSubmit();\n\n navigate(`../admin-tokens/${res.data.id.toString()}`, {\n state: { apiToken: res.data },\n replace: true,\n });\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n adminPermissions: adminPermissionsToSend,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.adminTokenEdited',\n defaultMessage: 'Admin Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n kind: 'admin',\n tokenType: API_TOKEN_TYPE,\n });\n\n adminPermissionsRef.current?.setFormAfterSubmit();\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n const toggleToken = () => {\n setShowToken((prev) => !prev);\n if (hideTimerRef.current) {\n clearTimeout(hideTimerRef.current);\n hideTimerRef.current = null;\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const canShowToken = apiToken?.accessKey !== undefined && apiToken.accessKey !== '';\n const canRegenerateToken = canRegenerate && isCurrentUserTokenOwner(apiToken, currentUser?.id);\n\n const initialAdminPermissions =\n apiToken !== null && apiToken.kind === 'admin' ? (apiToken.adminPermissions ?? []) : [];\n\n const ownerUserId =\n apiToken !== null && apiToken.kind === 'admin' ? getOwnerId(apiToken.adminUserOwner) : null;\n\n if (isLoading || (!isCreating && apiToken === null)) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Admin Tokens' }\n )}\n </Page.Title>\n <Formik\n validationSchema={apiTokenInformationSchema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: undefined,\n lifespan: apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body as FormValues, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => (\n <Form>\n <FormHead\n title={\n isCreating\n ? {\n id: 'Settings.adminTokens.createPage.title',\n defaultMessage: 'Create Admin Token',\n }\n : {\n id: 'Settings.adminTokens.editPage.title',\n defaultMessage: 'Edit Admin Token',\n }\n }\n token={apiToken}\n setToken={setApiToken}\n toggleToken={toggleToken}\n showToken={showToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerateToken}\n canShowToken={canShowToken}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/admin-tokens/\"\n />\n\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {apiToken?.accessKey !== undefined &&\n apiToken.accessKey !== '' &&\n showToken === true && (\n <>\n <ApiTokenBox token={apiToken.accessKey} tokenType={API_TOKEN_TYPE} />\n </>\n )}\n\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n kind=\"admin\"\n onDispatch={() => {}}\n setHasChangedPermissions={() => {}}\n />\n\n <Box shadow=\"filterShadow\" hasRadius>\n <AdminPermissions\n ref={adminPermissionsRef}\n disabled={!canEditInputs}\n initialAdminPermissions={initialAdminPermissions}\n tokenId={!isCreating && id ? id : undefined}\n ownerUserId={ownerUserId}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['admin-tokens']?.read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditView />\n </Page.Protect>\n );\n};\n"],"names":["getOwnerId","owner","undefined","id","isCurrentUserTokenOwner","apiToken","currentUserId","kind","ownerId","adminUserOwner","EditView","formatMessage","useIntl","toggleNotification","useNotification","state","locationState","useLocation","permissions","useTypedSelector","admin_app","setApiToken","React","useState","accessKey","showToken","setShowToken","hideTimerRef","useRef","adminPermissionsRef","trackUsage","useTracking","currentUser","useAuth","user","allowedActions","canCreate","canUpdate","canRegenerate","useRBAC","settings","match","useMatch","params","isCreating","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","navigate","useNavigate","useEffect","tokenType","API_TOKEN_TYPE","data","error","isLoading","useGetAdminTokenQuery","skip","refetchOnMountOrArgChange","type","message","current","setTimeout","clearTimeout","createToken","useCreateAdminTokenMutation","updateToken","useUpdateAdminTokenMutation","buildLifespan","raw","parseInt","toString","handleSubmit","body","formik","adminPermissionsToSend","getPermissions","permissionsToSend","res","name","description","lifespan","adminPermissions","isBaseQueryError","setErrors","defaultMessage","setFormAfterSubmit","replace","toggleToken","prev","canEditInputs","canShowToken","canRegenerateToken","initialAdminPermissions","ownerUserId","_jsx","Page","Loading","_jsxs","Main","Title","Formik","validationSchema","apiTokenInformationSchema","validateOnChange","initialValues","enableReinitialize","onSubmit","actions","errors","handleChange","isSubmitting","values","Form","FormHead","title","token","setToken","regenerateUrl","Layouts","Content","Flex","direction","alignItems","gap","_Fragment","ApiTokenBox","FormApiTokenContainer","onChange","onDispatch","setHasChangedPermissions","Box","shadow","hasRadius","AdminPermissions","ref","disabled","tokenId","ProtectedEditView","read","Protect"],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var PageHelpers = require('../../../../../../components/PageHelpers.js');
|
|
6
|
+
var Auth = require('../../../../../../features/Auth.js');
|
|
7
|
+
var apiTokens = require('../../../../../../services/apiTokens.js');
|
|
8
|
+
var users = require('../../../../../../services/users.js');
|
|
9
|
+
var Permissions = require('../../../Roles/components/Permissions.js');
|
|
10
|
+
|
|
11
|
+
function _interopNamespaceDefault(e) {
|
|
12
|
+
var n = Object.create(null);
|
|
13
|
+
if (e) {
|
|
14
|
+
Object.keys(e).forEach(function (k) {
|
|
15
|
+
if (k !== 'default') {
|
|
16
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
17
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return e[k]; }
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
n.default = e;
|
|
25
|
+
return Object.freeze(n);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
29
|
+
|
|
30
|
+
const AdminPermissions = /*#__PURE__*/ React__namespace.forwardRef(({ disabled, initialAdminPermissions, tokenId, ownerUserId }, ref)=>{
|
|
31
|
+
const { permissions: currentUserPermissions, user: currentUser } = Auth.useAuth('AdminPermissions', (auth)=>auth);
|
|
32
|
+
const isCurrentUserOwner = ownerUserId === undefined || ownerUserId === null || ownerUserId === currentUser?.id;
|
|
33
|
+
const { data: ownerPermissions } = apiTokens.useGetAPITokenOwnerPermissionsQuery(tokenId, {
|
|
34
|
+
skip: isCurrentUserOwner || tokenId === undefined,
|
|
35
|
+
refetchOnMountOrArgChange: true
|
|
36
|
+
});
|
|
37
|
+
const { data: layout, isLoading, error } = users.useGetRolePermissionLayoutQuery({
|
|
38
|
+
role: ''
|
|
39
|
+
});
|
|
40
|
+
const permissionsFormKey = React__namespace.useMemo(()=>JSON.stringify({
|
|
41
|
+
tokenId: tokenId ?? 'create',
|
|
42
|
+
ownerUserId: ownerUserId ?? 'current-user',
|
|
43
|
+
initialAdminPermissions
|
|
44
|
+
}), [
|
|
45
|
+
initialAdminPermissions,
|
|
46
|
+
ownerUserId,
|
|
47
|
+
tokenId
|
|
48
|
+
]);
|
|
49
|
+
if (isLoading) {
|
|
50
|
+
return /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Loading, {});
|
|
51
|
+
}
|
|
52
|
+
if (error !== undefined || layout === undefined) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
// If the current user is not the owner, but we failed to fetch the owner's permissions, we can't display the permissions form.
|
|
56
|
+
if (isCurrentUserOwner === false && ownerPermissions === undefined) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const effectivePermissions = isCurrentUserOwner ? currentUserPermissions : ownerPermissions;
|
|
60
|
+
return /*#__PURE__*/ jsxRuntime.jsx(Permissions.Permissions, {
|
|
61
|
+
ref: ref,
|
|
62
|
+
layout: layout,
|
|
63
|
+
permissions: initialAdminPermissions,
|
|
64
|
+
userPermissions: effectivePermissions,
|
|
65
|
+
isFormDisabled: disabled
|
|
66
|
+
}, permissionsFormKey);
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
exports.AdminPermissions = AdminPermissions;
|
|
70
|
+
//# sourceMappingURL=AdminPermissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminPermissions.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page } from '../../../../../../components/PageHelpers';\nimport { useAuth } from '../../../../../../features/Auth';\nimport { useGetAPITokenOwnerPermissionsQuery } from '../../../../../../services/apiTokens';\nimport { useGetRolePermissionLayoutQuery } from '../../../../../../services/users';\nimport { Permissions, PermissionsAPI } from '../../../Roles/components/Permissions';\n\nimport type { Permission } from '../../../../../../../../shared/contracts/shared';\nimport type { Data } from '@strapi/types';\n\nexport interface AdminPermissionsProps {\n disabled?: boolean;\n initialAdminPermissions: Permission[];\n /** Undefined in create mode. */\n tokenId?: string;\n /** The owner's user id. Undefined in create mode, user can only create a token for themselves. */\n ownerUserId?: Data.ID | null;\n}\n\nexport const AdminPermissions = React.forwardRef<PermissionsAPI, AdminPermissionsProps>(\n ({ disabled, initialAdminPermissions, tokenId, ownerUserId }, ref) => {\n const { permissions: currentUserPermissions, user: currentUser } = useAuth(\n 'AdminPermissions',\n (auth) => auth\n );\n\n const isCurrentUserOwner =\n ownerUserId === undefined || ownerUserId === null || ownerUserId === currentUser?.id;\n\n const { data: ownerPermissions } = useGetAPITokenOwnerPermissionsQuery(tokenId!, {\n skip: isCurrentUserOwner || tokenId === undefined,\n refetchOnMountOrArgChange: true,\n });\n\n const { data: layout, isLoading, error } = useGetRolePermissionLayoutQuery({ role: '' });\n\n const permissionsFormKey = React.useMemo(\n () =>\n JSON.stringify({\n tokenId: tokenId ?? 'create',\n ownerUserId: ownerUserId ?? 'current-user',\n initialAdminPermissions,\n }),\n [initialAdminPermissions, ownerUserId, tokenId]\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error !== undefined || layout === undefined) {\n return null;\n }\n\n // If the current user is not the owner, but we failed to fetch the owner's permissions, we can't display the permissions form.\n if (isCurrentUserOwner === false && ownerPermissions === undefined) {\n return null;\n }\n\n const effectivePermissions = isCurrentUserOwner ? currentUserPermissions : ownerPermissions;\n\n return (\n <Permissions\n key={permissionsFormKey}\n ref={ref}\n layout={layout}\n permissions={initialAdminPermissions}\n userPermissions={effectivePermissions}\n isFormDisabled={disabled}\n />\n );\n }\n);\n"],"names":["AdminPermissions","React","forwardRef","disabled","initialAdminPermissions","tokenId","ownerUserId","ref","permissions","currentUserPermissions","user","currentUser","useAuth","auth","isCurrentUserOwner","undefined","id","data","ownerPermissions","useGetAPITokenOwnerPermissionsQuery","skip","refetchOnMountOrArgChange","layout","isLoading","error","useGetRolePermissionLayoutQuery","role","permissionsFormKey","useMemo","JSON","stringify","_jsx","Page","Loading","effectivePermissions","Permissions","userPermissions","isFormDisabled"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,MAAMA,gBAAAA,iBAAmBC,gBAAAA,CAAMC,UAAU,CAC9C,CAAC,EAAEC,QAAQ,EAAEC,uBAAuB,EAAEC,OAAO,EAAEC,WAAW,EAAE,EAAEC,GAAAA,GAAAA;IAC5D,MAAM,EAAEC,WAAAA,EAAaC,sBAAsB,EAAEC,IAAAA,EAAMC,WAAW,EAAE,GAAGC,YAAAA,CACjE,kBAAA,EACA,CAACC,IAAAA,GAASA,IAAAA,CAAAA;AAGZ,IAAA,MAAMC,qBACJR,WAAAA,KAAgBS,SAAAA,IAAaT,WAAAA,KAAgB,IAAA,IAAQA,gBAAgBK,WAAAA,EAAaK,EAAAA;AAEpF,IAAA,MAAM,EAAEC,IAAAA,EAAMC,gBAAgB,EAAE,GAAGC,8CAAoCd,OAAAA,EAAU;AAC/Ee,QAAAA,IAAAA,EAAMN,sBAAsBT,OAAAA,KAAYU,SAAAA;QACxCM,yBAAAA,EAA2B;AAC7B,KAAA,CAAA;IAEA,MAAM,EAAEJ,MAAMK,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGC,qCAAAA,CAAgC;QAAEC,IAAAA,EAAM;AAAG,KAAA,CAAA;AAEtF,IAAA,MAAMC,qBAAqB1B,gBAAAA,CAAM2B,OAAO,CACtC,IACEC,IAAAA,CAAKC,SAAS,CAAC;AACbzB,YAAAA,OAAAA,EAASA,OAAAA,IAAW,QAAA;AACpBC,YAAAA,WAAAA,EAAaA,WAAAA,IAAe,cAAA;AAC5BF,YAAAA;SACF,CAAA,EACF;AAACA,QAAAA,uBAAAA;AAAyBE,QAAAA,WAAAA;AAAaD,QAAAA;AAAQ,KAAA,CAAA;AAGjD,IAAA,IAAIkB,SAAAA,EAAW;QACb,qBAAOQ,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,IAAIT,KAAAA,KAAUT,SAAAA,IAAaO,MAAAA,KAAWP,SAAAA,EAAW;QAC/C,OAAO,IAAA;AACT,IAAA;;IAGA,IAAID,kBAAAA,KAAuB,KAAA,IAASI,gBAAAA,KAAqBH,SAAAA,EAAW;QAClE,OAAO,IAAA;AACT,IAAA;IAEA,MAAMmB,oBAAAA,GAAuBpB,qBAAqBL,sBAAAA,GAAyBS,gBAAAA;AAE3E,IAAA,qBACEa,cAAA,CAACI,uBAAAA,EAAAA;QAEC5B,GAAAA,EAAKA,GAAAA;QACLe,MAAAA,EAAQA,MAAAA;QACRd,WAAAA,EAAaJ,uBAAAA;QACbgC,eAAAA,EAAiBF,oBAAAA;QACjBG,cAAAA,EAAgBlC;AALXwB,KAAAA,EAAAA,kBAAAA,CAAAA;AAQX,CAAA;;;;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Page } from '../../../../../../components/PageHelpers.mjs';
|
|
4
|
+
import { useAuth } from '../../../../../../features/Auth.mjs';
|
|
5
|
+
import { useGetAPITokenOwnerPermissionsQuery } from '../../../../../../services/apiTokens.mjs';
|
|
6
|
+
import { useGetRolePermissionLayoutQuery } from '../../../../../../services/users.mjs';
|
|
7
|
+
import { Permissions } from '../../../Roles/components/Permissions.mjs';
|
|
8
|
+
|
|
9
|
+
const AdminPermissions = /*#__PURE__*/ React.forwardRef(({ disabled, initialAdminPermissions, tokenId, ownerUserId }, ref)=>{
|
|
10
|
+
const { permissions: currentUserPermissions, user: currentUser } = useAuth('AdminPermissions', (auth)=>auth);
|
|
11
|
+
const isCurrentUserOwner = ownerUserId === undefined || ownerUserId === null || ownerUserId === currentUser?.id;
|
|
12
|
+
const { data: ownerPermissions } = useGetAPITokenOwnerPermissionsQuery(tokenId, {
|
|
13
|
+
skip: isCurrentUserOwner || tokenId === undefined,
|
|
14
|
+
refetchOnMountOrArgChange: true
|
|
15
|
+
});
|
|
16
|
+
const { data: layout, isLoading, error } = useGetRolePermissionLayoutQuery({
|
|
17
|
+
role: ''
|
|
18
|
+
});
|
|
19
|
+
const permissionsFormKey = React.useMemo(()=>JSON.stringify({
|
|
20
|
+
tokenId: tokenId ?? 'create',
|
|
21
|
+
ownerUserId: ownerUserId ?? 'current-user',
|
|
22
|
+
initialAdminPermissions
|
|
23
|
+
}), [
|
|
24
|
+
initialAdminPermissions,
|
|
25
|
+
ownerUserId,
|
|
26
|
+
tokenId
|
|
27
|
+
]);
|
|
28
|
+
if (isLoading) {
|
|
29
|
+
return /*#__PURE__*/ jsx(Page.Loading, {});
|
|
30
|
+
}
|
|
31
|
+
if (error !== undefined || layout === undefined) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
// If the current user is not the owner, but we failed to fetch the owner's permissions, we can't display the permissions form.
|
|
35
|
+
if (isCurrentUserOwner === false && ownerPermissions === undefined) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const effectivePermissions = isCurrentUserOwner ? currentUserPermissions : ownerPermissions;
|
|
39
|
+
return /*#__PURE__*/ jsx(Permissions, {
|
|
40
|
+
ref: ref,
|
|
41
|
+
layout: layout,
|
|
42
|
+
permissions: initialAdminPermissions,
|
|
43
|
+
userPermissions: effectivePermissions,
|
|
44
|
+
isFormDisabled: disabled
|
|
45
|
+
}, permissionsFormKey);
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
export { AdminPermissions };
|
|
49
|
+
//# sourceMappingURL=AdminPermissions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdminPermissions.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page } from '../../../../../../components/PageHelpers';\nimport { useAuth } from '../../../../../../features/Auth';\nimport { useGetAPITokenOwnerPermissionsQuery } from '../../../../../../services/apiTokens';\nimport { useGetRolePermissionLayoutQuery } from '../../../../../../services/users';\nimport { Permissions, PermissionsAPI } from '../../../Roles/components/Permissions';\n\nimport type { Permission } from '../../../../../../../../shared/contracts/shared';\nimport type { Data } from '@strapi/types';\n\nexport interface AdminPermissionsProps {\n disabled?: boolean;\n initialAdminPermissions: Permission[];\n /** Undefined in create mode. */\n tokenId?: string;\n /** The owner's user id. Undefined in create mode, user can only create a token for themselves. */\n ownerUserId?: Data.ID | null;\n}\n\nexport const AdminPermissions = React.forwardRef<PermissionsAPI, AdminPermissionsProps>(\n ({ disabled, initialAdminPermissions, tokenId, ownerUserId }, ref) => {\n const { permissions: currentUserPermissions, user: currentUser } = useAuth(\n 'AdminPermissions',\n (auth) => auth\n );\n\n const isCurrentUserOwner =\n ownerUserId === undefined || ownerUserId === null || ownerUserId === currentUser?.id;\n\n const { data: ownerPermissions } = useGetAPITokenOwnerPermissionsQuery(tokenId!, {\n skip: isCurrentUserOwner || tokenId === undefined,\n refetchOnMountOrArgChange: true,\n });\n\n const { data: layout, isLoading, error } = useGetRolePermissionLayoutQuery({ role: '' });\n\n const permissionsFormKey = React.useMemo(\n () =>\n JSON.stringify({\n tokenId: tokenId ?? 'create',\n ownerUserId: ownerUserId ?? 'current-user',\n initialAdminPermissions,\n }),\n [initialAdminPermissions, ownerUserId, tokenId]\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error !== undefined || layout === undefined) {\n return null;\n }\n\n // If the current user is not the owner, but we failed to fetch the owner's permissions, we can't display the permissions form.\n if (isCurrentUserOwner === false && ownerPermissions === undefined) {\n return null;\n }\n\n const effectivePermissions = isCurrentUserOwner ? currentUserPermissions : ownerPermissions;\n\n return (\n <Permissions\n key={permissionsFormKey}\n ref={ref}\n layout={layout}\n permissions={initialAdminPermissions}\n userPermissions={effectivePermissions}\n isFormDisabled={disabled}\n />\n );\n }\n);\n"],"names":["AdminPermissions","React","forwardRef","disabled","initialAdminPermissions","tokenId","ownerUserId","ref","permissions","currentUserPermissions","user","currentUser","useAuth","auth","isCurrentUserOwner","undefined","id","data","ownerPermissions","useGetAPITokenOwnerPermissionsQuery","skip","refetchOnMountOrArgChange","layout","isLoading","error","useGetRolePermissionLayoutQuery","role","permissionsFormKey","useMemo","JSON","stringify","_jsx","Page","Loading","effectivePermissions","Permissions","userPermissions","isFormDisabled"],"mappings":";;;;;;;;AAoBO,MAAMA,gBAAAA,iBAAmBC,KAAAA,CAAMC,UAAU,CAC9C,CAAC,EAAEC,QAAQ,EAAEC,uBAAuB,EAAEC,OAAO,EAAEC,WAAW,EAAE,EAAEC,GAAAA,GAAAA;IAC5D,MAAM,EAAEC,WAAAA,EAAaC,sBAAsB,EAAEC,IAAAA,EAAMC,WAAW,EAAE,GAAGC,OAAAA,CACjE,kBAAA,EACA,CAACC,IAAAA,GAASA,IAAAA,CAAAA;AAGZ,IAAA,MAAMC,qBACJR,WAAAA,KAAgBS,SAAAA,IAAaT,WAAAA,KAAgB,IAAA,IAAQA,gBAAgBK,WAAAA,EAAaK,EAAAA;AAEpF,IAAA,MAAM,EAAEC,IAAAA,EAAMC,gBAAgB,EAAE,GAAGC,oCAAoCd,OAAAA,EAAU;AAC/Ee,QAAAA,IAAAA,EAAMN,sBAAsBT,OAAAA,KAAYU,SAAAA;QACxCM,yBAAAA,EAA2B;AAC7B,KAAA,CAAA;IAEA,MAAM,EAAEJ,MAAMK,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGC,+BAAAA,CAAgC;QAAEC,IAAAA,EAAM;AAAG,KAAA,CAAA;AAEtF,IAAA,MAAMC,qBAAqB1B,KAAAA,CAAM2B,OAAO,CACtC,IACEC,IAAAA,CAAKC,SAAS,CAAC;AACbzB,YAAAA,OAAAA,EAASA,OAAAA,IAAW,QAAA;AACpBC,YAAAA,WAAAA,EAAaA,WAAAA,IAAe,cAAA;AAC5BF,YAAAA;SACF,CAAA,EACF;AAACA,QAAAA,uBAAAA;AAAyBE,QAAAA,WAAAA;AAAaD,QAAAA;AAAQ,KAAA,CAAA;AAGjD,IAAA,IAAIkB,SAAAA,EAAW;QACb,qBAAOQ,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,IAAIT,KAAAA,KAAUT,SAAAA,IAAaO,MAAAA,KAAWP,SAAAA,EAAW;QAC/C,OAAO,IAAA;AACT,IAAA;;IAGA,IAAID,kBAAAA,KAAuB,KAAA,IAASI,gBAAAA,KAAqBH,SAAAA,EAAW;QAClE,OAAO,IAAA;AACT,IAAA;IAEA,MAAMmB,oBAAAA,GAAuBpB,qBAAqBL,sBAAAA,GAAyBS,gBAAAA;AAE3E,IAAA,qBACEa,GAAA,CAACI,WAAAA,EAAAA;QAEC5B,GAAAA,EAAKA,GAAAA;QACLe,MAAAA,EAAQA,MAAAA;QACRd,WAAAA,EAAaJ,uBAAAA;QACbgC,eAAAA,EAAiBF,oBAAAA;QACjBG,cAAAA,EAAgBlC;AALXwB,KAAAA,EAAAA,kBAAAA,CAAAA;AAQX,CAAA;;;;"}
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var designSystem = require('@strapi/design-system');
|
|
6
|
+
var icons = require('@strapi/icons');
|
|
7
|
+
var symbols = require('@strapi/icons/symbols');
|
|
8
|
+
var qs = require('qs');
|
|
9
|
+
var reactIntl = require('react-intl');
|
|
10
|
+
var reactRouterDom = require('react-router-dom');
|
|
11
|
+
var Layout = require('../../../../components/Layouts/Layout.js');
|
|
12
|
+
var PageHelpers = require('../../../../components/PageHelpers.js');
|
|
13
|
+
var hooks = require('../../../../core/store/hooks.js');
|
|
14
|
+
var Notifications = require('../../../../features/Notifications.js');
|
|
15
|
+
var Tracking = require('../../../../features/Tracking.js');
|
|
16
|
+
var useAPIErrorHandler = require('../../../../hooks/useAPIErrorHandler.js');
|
|
17
|
+
var useOnce = require('../../../../hooks/useOnce.js');
|
|
18
|
+
var useRBAC = require('../../../../hooks/useRBAC.js');
|
|
19
|
+
var apiTokens = require('../../../../services/apiTokens.js');
|
|
20
|
+
var constants = require('../../components/Tokens/constants.js');
|
|
21
|
+
var Table = require('../../components/Tokens/Table.js');
|
|
22
|
+
|
|
23
|
+
function _interopNamespaceDefault(e) {
|
|
24
|
+
var n = Object.create(null);
|
|
25
|
+
if (e) {
|
|
26
|
+
Object.keys(e).forEach(function (k) {
|
|
27
|
+
if (k !== 'default') {
|
|
28
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
29
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () { return e[k]; }
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
n.default = e;
|
|
37
|
+
return Object.freeze(n);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
41
|
+
var qs__namespace = /*#__PURE__*/_interopNamespaceDefault(qs);
|
|
42
|
+
|
|
43
|
+
const TABLE_HEADERS = [
|
|
44
|
+
{
|
|
45
|
+
name: 'name',
|
|
46
|
+
label: {
|
|
47
|
+
id: 'Settings.adminTokens.ListView.headers.name',
|
|
48
|
+
defaultMessage: 'Name'
|
|
49
|
+
},
|
|
50
|
+
sortable: true
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'description',
|
|
54
|
+
label: {
|
|
55
|
+
id: 'Settings.adminTokens.ListView.headers.description',
|
|
56
|
+
defaultMessage: 'Description'
|
|
57
|
+
},
|
|
58
|
+
sortable: false
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'createdAt',
|
|
62
|
+
label: {
|
|
63
|
+
id: 'Settings.adminTokens.ListView.headers.createdAt',
|
|
64
|
+
defaultMessage: 'Created at'
|
|
65
|
+
},
|
|
66
|
+
sortable: false
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: 'lastUsedAt',
|
|
70
|
+
label: {
|
|
71
|
+
id: 'Settings.adminTokens.ListView.headers.lastUsedAt',
|
|
72
|
+
defaultMessage: 'Last used'
|
|
73
|
+
},
|
|
74
|
+
sortable: false
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'adminUserOwner',
|
|
78
|
+
label: {
|
|
79
|
+
id: 'Settings.adminTokens.ListView.headers.owner',
|
|
80
|
+
defaultMessage: 'Owner'
|
|
81
|
+
},
|
|
82
|
+
sortable: false
|
|
83
|
+
}
|
|
84
|
+
];
|
|
85
|
+
const ListView = ()=>{
|
|
86
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
87
|
+
const { toggleNotification } = Notifications.useNotification();
|
|
88
|
+
const permissions = hooks.useTypedSelector((state)=>state.admin_app.permissions.settings?.['admin-tokens']);
|
|
89
|
+
const { allowedActions: { canRead, canCreate, canDelete, canUpdate } } = useRBAC.useRBAC(permissions);
|
|
90
|
+
const navigate = reactRouterDom.useNavigate();
|
|
91
|
+
const { trackUsage } = Tracking.useTracking();
|
|
92
|
+
const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler.useAPIErrorHandler();
|
|
93
|
+
React__namespace.useEffect(()=>{
|
|
94
|
+
navigate({
|
|
95
|
+
search: qs__namespace.stringify({
|
|
96
|
+
sort: 'name:ASC'
|
|
97
|
+
}, {
|
|
98
|
+
encode: false
|
|
99
|
+
})
|
|
100
|
+
}, {
|
|
101
|
+
replace: true
|
|
102
|
+
});
|
|
103
|
+
}, [
|
|
104
|
+
navigate
|
|
105
|
+
]);
|
|
106
|
+
const headers = TABLE_HEADERS.map((header)=>({
|
|
107
|
+
...header,
|
|
108
|
+
label: formatMessage(header.label)
|
|
109
|
+
}));
|
|
110
|
+
useOnce.useOnce(()=>{
|
|
111
|
+
trackUsage('willAccessTokenList', {
|
|
112
|
+
tokenType: constants.API_TOKEN_TYPE
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
const { data: adminTokens = [], isLoading, error } = apiTokens.useGetAdminTokensQuery();
|
|
116
|
+
React__namespace.useEffect(()=>{
|
|
117
|
+
if (error) {
|
|
118
|
+
toggleNotification({
|
|
119
|
+
type: 'danger',
|
|
120
|
+
message: formatAPIError(error)
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}, [
|
|
124
|
+
error,
|
|
125
|
+
formatAPIError,
|
|
126
|
+
toggleNotification
|
|
127
|
+
]);
|
|
128
|
+
React__namespace.useEffect(()=>{
|
|
129
|
+
trackUsage('didAccessTokenList', {
|
|
130
|
+
number: adminTokens.length,
|
|
131
|
+
tokenType: constants.API_TOKEN_TYPE
|
|
132
|
+
});
|
|
133
|
+
}, [
|
|
134
|
+
adminTokens,
|
|
135
|
+
trackUsage
|
|
136
|
+
]);
|
|
137
|
+
const [deleteToken] = apiTokens.useDeleteAdminTokenMutation();
|
|
138
|
+
const handleDelete = async (id)=>{
|
|
139
|
+
try {
|
|
140
|
+
const res = await deleteToken(id);
|
|
141
|
+
if ('error' in res) {
|
|
142
|
+
toggleNotification({
|
|
143
|
+
type: 'danger',
|
|
144
|
+
message: formatAPIError(res.error)
|
|
145
|
+
});
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
trackUsage('didDeleteToken');
|
|
149
|
+
} catch {
|
|
150
|
+
toggleNotification({
|
|
151
|
+
type: 'danger',
|
|
152
|
+
message: formatMessage({
|
|
153
|
+
id: 'notification.error',
|
|
154
|
+
defaultMessage: 'Something went wrong'
|
|
155
|
+
})
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
160
|
+
children: [
|
|
161
|
+
/*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
|
|
162
|
+
children: formatMessage({
|
|
163
|
+
id: 'Settings.PageTitle',
|
|
164
|
+
defaultMessage: 'Settings - {name}'
|
|
165
|
+
}, {
|
|
166
|
+
name: 'Admin Tokens'
|
|
167
|
+
})
|
|
168
|
+
}),
|
|
169
|
+
/*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
|
|
170
|
+
title: formatMessage({
|
|
171
|
+
id: 'Settings.adminTokens.title',
|
|
172
|
+
defaultMessage: 'Admin Tokens'
|
|
173
|
+
}),
|
|
174
|
+
subtitle: formatMessage({
|
|
175
|
+
id: 'Settings.adminTokens.description',
|
|
176
|
+
defaultMessage: 'List of generated tokens to programmatically access the admin features'
|
|
177
|
+
}),
|
|
178
|
+
primaryAction: canCreate && /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
|
|
179
|
+
tag: reactRouterDom.Link,
|
|
180
|
+
"data-testid": "create-admin-token-button",
|
|
181
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
|
|
182
|
+
size: "S",
|
|
183
|
+
onClick: ()=>trackUsage('willAddTokenFromList', {
|
|
184
|
+
tokenType: constants.API_TOKEN_TYPE
|
|
185
|
+
}),
|
|
186
|
+
to: "/settings/admin-tokens/create",
|
|
187
|
+
children: formatMessage({
|
|
188
|
+
id: 'Settings.adminTokens.create',
|
|
189
|
+
defaultMessage: 'Create new Admin Token'
|
|
190
|
+
})
|
|
191
|
+
})
|
|
192
|
+
}),
|
|
193
|
+
!canRead ? /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.NoPermissions, {}) : /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Main, {
|
|
194
|
+
"aria-busy": isLoading,
|
|
195
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(Layout.Layouts.Content, {
|
|
196
|
+
children: [
|
|
197
|
+
adminTokens.length > 0 && /*#__PURE__*/ jsxRuntime.jsx(Table.Table, {
|
|
198
|
+
permissions: {
|
|
199
|
+
canRead,
|
|
200
|
+
canDelete,
|
|
201
|
+
canUpdate
|
|
202
|
+
},
|
|
203
|
+
headers: headers,
|
|
204
|
+
isLoading: isLoading,
|
|
205
|
+
onConfirmDelete: handleDelete,
|
|
206
|
+
tokens: adminTokens,
|
|
207
|
+
tokenType: constants.API_TOKEN_TYPE,
|
|
208
|
+
showOwner: true
|
|
209
|
+
}),
|
|
210
|
+
canCreate && adminTokens.length === 0 ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
|
|
211
|
+
icon: /*#__PURE__*/ jsxRuntime.jsx(symbols.EmptyDocuments, {
|
|
212
|
+
width: "16rem"
|
|
213
|
+
}),
|
|
214
|
+
content: formatMessage({
|
|
215
|
+
id: 'Settings.adminTokens.addFirstToken',
|
|
216
|
+
defaultMessage: 'Create your first Admin Token'
|
|
217
|
+
}),
|
|
218
|
+
action: /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
|
|
219
|
+
tag: reactRouterDom.Link,
|
|
220
|
+
variant: "secondary",
|
|
221
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
|
|
222
|
+
to: "/settings/admin-tokens/create",
|
|
223
|
+
children: formatMessage({
|
|
224
|
+
id: 'Settings.adminTokens.create',
|
|
225
|
+
defaultMessage: 'Create new Admin Token'
|
|
226
|
+
})
|
|
227
|
+
})
|
|
228
|
+
}) : null,
|
|
229
|
+
!canCreate && adminTokens.length === 0 ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
|
|
230
|
+
icon: /*#__PURE__*/ jsxRuntime.jsx(symbols.EmptyDocuments, {
|
|
231
|
+
width: "16rem"
|
|
232
|
+
}),
|
|
233
|
+
content: formatMessage({
|
|
234
|
+
id: 'Settings.adminTokens.emptyStateLayout',
|
|
235
|
+
defaultMessage: "You don't have any content yet..."
|
|
236
|
+
})
|
|
237
|
+
}) : null
|
|
238
|
+
]
|
|
239
|
+
})
|
|
240
|
+
})
|
|
241
|
+
]
|
|
242
|
+
});
|
|
243
|
+
};
|
|
244
|
+
const ProtectedListView = ()=>{
|
|
245
|
+
const permissions = hooks.useTypedSelector((state)=>state.admin_app.permissions.settings?.['admin-tokens']?.main);
|
|
246
|
+
return /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Protect, {
|
|
247
|
+
permissions: permissions,
|
|
248
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
|
|
249
|
+
});
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
exports.ListView = ListView;
|
|
253
|
+
exports.ProtectedListView = ProtectedListView;
|
|
254
|
+
//# sourceMappingURL=ListView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ListView.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/AdminTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { EmptyStateLayout, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteAdminTokenMutation,\n useGetAdminTokensQuery,\n} from '../../../../services/apiTokens';\nimport { API_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nimport type { Data } from '@strapi/types';\n\nconst TABLE_HEADERS = [\n {\n name: 'name',\n label: {\n id: 'Settings.adminTokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.adminTokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.adminTokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.adminTokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n {\n name: 'adminUserOwner',\n label: {\n id: 'Settings.adminTokens.ListView.headers.owner',\n defaultMessage: 'Owner',\n },\n sortable: false,\n },\n];\n\nexport const ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['admin-tokens']\n );\n const {\n allowedActions: { canRead, canCreate, canDelete, canUpdate },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) }, { replace: true });\n }, [navigate]);\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: API_TOKEN_TYPE,\n });\n });\n\n const { data: adminTokens = [], isLoading, error } = useGetAdminTokensQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n trackUsage('didAccessTokenList', { number: adminTokens.length, tokenType: API_TOKEN_TYPE });\n }, [adminTokens, trackUsage]);\n\n const [deleteToken] = useDeleteAdminTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n trackUsage('didDeleteToken');\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Admin Tokens' }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({ id: 'Settings.adminTokens.title', defaultMessage: 'Admin Tokens' })}\n subtitle={formatMessage({\n id: 'Settings.adminTokens.description',\n defaultMessage: 'List of generated tokens to programmatically access the admin features',\n })}\n primaryAction={\n canCreate && (\n <LinkButton\n tag={Link}\n data-testid=\"create-admin-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() => trackUsage('willAddTokenFromList', { tokenType: API_TOKEN_TYPE })}\n to=\"/settings/admin-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.adminTokens.create',\n defaultMessage: 'Create new Admin Token',\n })}\n </LinkButton>\n )\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <Layouts.Content>\n {adminTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={adminTokens}\n tokenType={API_TOKEN_TYPE}\n showOwner\n />\n )}\n {canCreate && adminTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.adminTokens.addFirstToken',\n defaultMessage: 'Create your first Admin Token',\n })}\n action={\n <LinkButton\n tag={Link}\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/admin-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.adminTokens.create',\n defaultMessage: 'Create new Admin Token',\n })}\n </LinkButton>\n }\n />\n ) : null}\n {!canCreate && adminTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.adminTokens.emptyStateLayout',\n defaultMessage: \"You don't have any content yet...\",\n })}\n />\n ) : null}\n </Layouts.Content>\n </Page.Main>\n )}\n </>\n );\n};\n\nexport const ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['admin-tokens']?.main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n"],"names":["TABLE_HEADERS","name","label","id","defaultMessage","sortable","ListView","formatMessage","useIntl","toggleNotification","useNotification","permissions","useTypedSelector","state","admin_app","settings","allowedActions","canRead","canCreate","canDelete","canUpdate","useRBAC","navigate","useNavigate","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","React","useEffect","search","qs","stringify","sort","encode","replace","headers","map","header","useOnce","tokenType","API_TOKEN_TYPE","data","adminTokens","isLoading","error","useGetAdminTokensQuery","type","message","number","length","deleteToken","useDeleteAdminTokenMutation","handleDelete","res","_jsxs","_Fragment","_jsx","Page","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","tag","Link","data-testid","startIcon","Plus","size","onClick","to","NoPermissions","Main","aria-busy","Content","Table","onConfirmDelete","tokens","showOwner","EmptyStateLayout","icon","EmptyDocuments","width","content","action","variant","ProtectedListView","main","Protect"],"mappings":"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"}
|