@strapi/admin 5.43.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/StrapiApp.js +17 -4
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +18 -5
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/Form.js +18 -8
- package/dist/admin/admin/src/components/Form.js.map +1 -1
- package/dist/admin/admin/src/components/Form.mjs +18 -8
- package/dist/admin/admin/src/components/Form.mjs.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.js +1 -0
- package/dist/admin/admin/src/components/Layouts/Layout.js.map +1 -1
- package/dist/admin/admin/src/components/Layouts/Layout.mjs +1 -0
- package/dist/admin/admin/src/components/Layouts/Layout.mjs.map +1 -1
- 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/components/Widgets.js +52 -0
- package/dist/admin/admin/src/components/Widgets.js.map +1 -1
- package/dist/admin/admin/src/components/Widgets.mjs +54 -3
- package/dist/admin/admin/src/components/Widgets.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/ar.json.js +4 -1
- package/dist/admin/admin/src/translations/ar.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ar.json.mjs +4 -1
- package/dist/admin/admin/src/translations/ar.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/cs.json.js +736 -13
- package/dist/admin/admin/src/translations/cs.json.js.map +1 -1
- package/dist/admin/admin/src/translations/cs.json.mjs +728 -14
- package/dist/admin/admin/src/translations/cs.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/de.json.js +4 -1
- package/dist/admin/admin/src/translations/de.json.js.map +1 -1
- package/dist/admin/admin/src/translations/de.json.mjs +4 -1
- package/dist/admin/admin/src/translations/de.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/en.json.js +20 -2
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +20 -2
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/es.json.js +4 -1
- package/dist/admin/admin/src/translations/es.json.js.map +1 -1
- package/dist/admin/admin/src/translations/es.json.mjs +4 -1
- package/dist/admin/admin/src/translations/es.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/fr.json.js +4 -1
- package/dist/admin/admin/src/translations/fr.json.js.map +1 -1
- package/dist/admin/admin/src/translations/fr.json.mjs +4 -1
- package/dist/admin/admin/src/translations/fr.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/it.json.js +4 -1
- package/dist/admin/admin/src/translations/it.json.js.map +1 -1
- package/dist/admin/admin/src/translations/it.json.mjs +4 -1
- package/dist/admin/admin/src/translations/it.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/ru.json.js +32 -19
- package/dist/admin/admin/src/translations/ru.json.js.map +1 -1
- package/dist/admin/admin/src/translations/ru.json.mjs +32 -19
- package/dist/admin/admin/src/translations/ru.json.mjs.map +1 -1
- package/dist/admin/admin/src/translations/zh-Hans.json.js +4 -1
- package/dist/admin/admin/src/translations/zh-Hans.json.js.map +1 -1
- package/dist/admin/admin/src/translations/zh-Hans.json.mjs +4 -1
- package/dist/admin/admin/src/translations/zh-Hans.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +33 -4
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +33 -4
- 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/components/Widgets.d.ts +2 -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/admin/src/utils/getFetchClient.d.ts +14 -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 +10 -10
- 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,314 @@
|
|
|
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 formik = require('formik');
|
|
7
|
+
var reactIntl = require('react-intl');
|
|
8
|
+
var reactRouterDom = require('react-router-dom');
|
|
9
|
+
var Layout = require('../../../../../components/Layouts/Layout.js');
|
|
10
|
+
var PageHelpers = require('../../../../../components/PageHelpers.js');
|
|
11
|
+
var hooks = require('../../../../../core/store/hooks.js');
|
|
12
|
+
var Auth = require('../../../../../features/Auth.js');
|
|
13
|
+
var Notifications = require('../../../../../features/Notifications.js');
|
|
14
|
+
var Tracking = require('../../../../../features/Tracking.js');
|
|
15
|
+
var useAPIErrorHandler = require('../../../../../hooks/useAPIErrorHandler.js');
|
|
16
|
+
var useRBAC = require('../../../../../hooks/useRBAC.js');
|
|
17
|
+
var apiTokens = require('../../../../../services/apiTokens.js');
|
|
18
|
+
var baseQuery = require('../../../../../utils/baseQuery.js');
|
|
19
|
+
var constants = require('../../../components/Tokens/constants.js');
|
|
20
|
+
var FormApiTokenContainer = require('../../../components/Tokens/FormApiTokenContainer.js');
|
|
21
|
+
var FormHead = require('../../../components/Tokens/FormHead.js');
|
|
22
|
+
var TokenBox = require('../../../components/Tokens/TokenBox.js');
|
|
23
|
+
var AdminPermissions = require('./components/AdminPermissions.js');
|
|
24
|
+
|
|
25
|
+
function _interopNamespaceDefault(e) {
|
|
26
|
+
var n = Object.create(null);
|
|
27
|
+
if (e) {
|
|
28
|
+
Object.keys(e).forEach(function (k) {
|
|
29
|
+
if (k !== 'default') {
|
|
30
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
31
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () { return e[k]; }
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
n.default = e;
|
|
39
|
+
return Object.freeze(n);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
|
|
43
|
+
|
|
44
|
+
const getOwnerId = (owner)=>{
|
|
45
|
+
if (owner === undefined || owner === null) return null;
|
|
46
|
+
return typeof owner === 'object' ? owner.id : owner;
|
|
47
|
+
};
|
|
48
|
+
const isCurrentUserTokenOwner = (apiToken, currentUserId)=>{
|
|
49
|
+
if (apiToken === null || apiToken.kind !== 'admin') return true;
|
|
50
|
+
const ownerId = getOwnerId(apiToken.adminUserOwner);
|
|
51
|
+
if (ownerId === null) return true;
|
|
52
|
+
return currentUserId !== undefined && ownerId === currentUserId;
|
|
53
|
+
};
|
|
54
|
+
const EditView = ()=>{
|
|
55
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
56
|
+
const { toggleNotification } = Notifications.useNotification();
|
|
57
|
+
const { state: locationState } = reactRouterDom.useLocation();
|
|
58
|
+
const permissions = hooks.useTypedSelector((state)=>state.admin_app.permissions);
|
|
59
|
+
const [apiToken, setApiToken] = React__namespace.useState(locationState?.apiToken?.accessKey !== undefined && locationState?.apiToken?.accessKey !== '' ? {
|
|
60
|
+
...locationState.apiToken
|
|
61
|
+
} : null);
|
|
62
|
+
const [showToken, setShowToken] = React__namespace.useState(locationState?.apiToken?.accessKey !== undefined && locationState?.apiToken?.accessKey !== '');
|
|
63
|
+
const hideTimerRef = React__namespace.useRef(null);
|
|
64
|
+
const adminPermissionsRef = React__namespace.useRef(null);
|
|
65
|
+
const { trackUsage } = Tracking.useTracking();
|
|
66
|
+
const currentUser = Auth.useAuth('EditView', (state)=>state.user);
|
|
67
|
+
const { allowedActions: { canCreate, canUpdate, canRegenerate } } = useRBAC.useRBAC(permissions.settings?.['admin-tokens']);
|
|
68
|
+
const match = reactRouterDom.useMatch('/settings/admin-tokens/:id');
|
|
69
|
+
const id = match?.params?.id;
|
|
70
|
+
const isCreating = id === 'create';
|
|
71
|
+
const { _unstableFormatAPIError: formatAPIError, _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler.useAPIErrorHandler();
|
|
72
|
+
const navigate = reactRouterDom.useNavigate();
|
|
73
|
+
React__namespace.useEffect(()=>{
|
|
74
|
+
trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {
|
|
75
|
+
tokenType: constants.API_TOKEN_TYPE
|
|
76
|
+
});
|
|
77
|
+
}, [
|
|
78
|
+
isCreating,
|
|
79
|
+
trackUsage
|
|
80
|
+
]);
|
|
81
|
+
const { data, error, isLoading } = apiTokens.useGetAdminTokenQuery(id, {
|
|
82
|
+
skip: !id || isCreating,
|
|
83
|
+
refetchOnMountOrArgChange: true
|
|
84
|
+
});
|
|
85
|
+
React__namespace.useEffect(()=>{
|
|
86
|
+
if (error) {
|
|
87
|
+
toggleNotification({
|
|
88
|
+
type: 'danger',
|
|
89
|
+
message: formatAPIError(error)
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}, [
|
|
93
|
+
error,
|
|
94
|
+
formatAPIError,
|
|
95
|
+
toggleNotification
|
|
96
|
+
]);
|
|
97
|
+
React__namespace.useEffect(()=>{
|
|
98
|
+
if (data) {
|
|
99
|
+
setApiToken(data);
|
|
100
|
+
}
|
|
101
|
+
}, [
|
|
102
|
+
data
|
|
103
|
+
]);
|
|
104
|
+
React__namespace.useEffect(()=>{
|
|
105
|
+
if (showToken) {
|
|
106
|
+
hideTimerRef.current = setTimeout(()=>{
|
|
107
|
+
setShowToken(false);
|
|
108
|
+
}, 30000); // 30 seconds
|
|
109
|
+
return ()=>{
|
|
110
|
+
if (hideTimerRef.current) {
|
|
111
|
+
clearTimeout(hideTimerRef.current);
|
|
112
|
+
hideTimerRef.current = null;
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}, [
|
|
117
|
+
showToken
|
|
118
|
+
]);
|
|
119
|
+
const [createToken] = apiTokens.useCreateAdminTokenMutation();
|
|
120
|
+
const [updateToken] = apiTokens.useUpdateAdminTokenMutation();
|
|
121
|
+
const buildLifespan = (raw)=>raw && raw !== '0' ? parseInt(raw.toString(), 10) : null;
|
|
122
|
+
const handleSubmit = async (body, formik)=>{
|
|
123
|
+
trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {
|
|
124
|
+
tokenType: constants.API_TOKEN_TYPE
|
|
125
|
+
});
|
|
126
|
+
const adminPermissionsToSend = adminPermissionsRef.current?.getPermissions().permissionsToSend ?? [];
|
|
127
|
+
try {
|
|
128
|
+
if (isCreating) {
|
|
129
|
+
const res = await createToken({
|
|
130
|
+
name: body.name,
|
|
131
|
+
description: body.description,
|
|
132
|
+
lifespan: buildLifespan(body.lifespan),
|
|
133
|
+
adminPermissions: adminPermissionsToSend
|
|
134
|
+
});
|
|
135
|
+
if ('error' in res) {
|
|
136
|
+
if (baseQuery.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
137
|
+
formik.setErrors(formatValidationErrors(res.error));
|
|
138
|
+
} else {
|
|
139
|
+
toggleNotification({
|
|
140
|
+
type: 'danger',
|
|
141
|
+
message: formatAPIError(res.error)
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
toggleNotification({
|
|
147
|
+
type: 'success',
|
|
148
|
+
message: formatMessage({
|
|
149
|
+
id: 'notification.success.adminTokenCreated',
|
|
150
|
+
defaultMessage: 'Admin Token successfully created'
|
|
151
|
+
})
|
|
152
|
+
});
|
|
153
|
+
trackUsage('didCreateToken', {
|
|
154
|
+
kind: 'admin',
|
|
155
|
+
tokenType: constants.API_TOKEN_TYPE
|
|
156
|
+
});
|
|
157
|
+
adminPermissionsRef.current?.setFormAfterSubmit();
|
|
158
|
+
navigate(`../admin-tokens/${res.data.id.toString()}`, {
|
|
159
|
+
state: {
|
|
160
|
+
apiToken: res.data
|
|
161
|
+
},
|
|
162
|
+
replace: true
|
|
163
|
+
});
|
|
164
|
+
} else {
|
|
165
|
+
const res = await updateToken({
|
|
166
|
+
id: id,
|
|
167
|
+
name: body.name,
|
|
168
|
+
description: body.description,
|
|
169
|
+
adminPermissions: adminPermissionsToSend
|
|
170
|
+
});
|
|
171
|
+
if ('error' in res) {
|
|
172
|
+
if (baseQuery.isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
173
|
+
formik.setErrors(formatValidationErrors(res.error));
|
|
174
|
+
} else {
|
|
175
|
+
toggleNotification({
|
|
176
|
+
type: 'danger',
|
|
177
|
+
message: formatAPIError(res.error)
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
toggleNotification({
|
|
183
|
+
type: 'success',
|
|
184
|
+
message: formatMessage({
|
|
185
|
+
id: 'notification.success.adminTokenEdited',
|
|
186
|
+
defaultMessage: 'Admin Token successfully edited'
|
|
187
|
+
})
|
|
188
|
+
});
|
|
189
|
+
trackUsage('didEditToken', {
|
|
190
|
+
kind: 'admin',
|
|
191
|
+
tokenType: constants.API_TOKEN_TYPE
|
|
192
|
+
});
|
|
193
|
+
adminPermissionsRef.current?.setFormAfterSubmit();
|
|
194
|
+
}
|
|
195
|
+
} catch {
|
|
196
|
+
toggleNotification({
|
|
197
|
+
type: 'danger',
|
|
198
|
+
message: formatMessage({
|
|
199
|
+
id: 'notification.error',
|
|
200
|
+
defaultMessage: 'Something went wrong'
|
|
201
|
+
})
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
};
|
|
205
|
+
const toggleToken = ()=>{
|
|
206
|
+
setShowToken((prev)=>!prev);
|
|
207
|
+
if (hideTimerRef.current) {
|
|
208
|
+
clearTimeout(hideTimerRef.current);
|
|
209
|
+
hideTimerRef.current = null;
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
const canEditInputs = canUpdate && !isCreating || canCreate && isCreating;
|
|
213
|
+
const canShowToken = apiToken?.accessKey !== undefined && apiToken.accessKey !== '';
|
|
214
|
+
const canRegenerateToken = canRegenerate && isCurrentUserTokenOwner(apiToken, currentUser?.id);
|
|
215
|
+
const initialAdminPermissions = apiToken !== null && apiToken.kind === 'admin' ? apiToken.adminPermissions ?? [] : [];
|
|
216
|
+
const ownerUserId = apiToken !== null && apiToken.kind === 'admin' ? getOwnerId(apiToken.adminUserOwner) : null;
|
|
217
|
+
if (isLoading || !isCreating && apiToken === null) {
|
|
218
|
+
return /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Loading, {});
|
|
219
|
+
}
|
|
220
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(PageHelpers.Page.Main, {
|
|
221
|
+
children: [
|
|
222
|
+
/*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
|
|
223
|
+
children: formatMessage({
|
|
224
|
+
id: 'Settings.PageTitle',
|
|
225
|
+
defaultMessage: 'Settings - {name}'
|
|
226
|
+
}, {
|
|
227
|
+
name: 'Admin Tokens'
|
|
228
|
+
})
|
|
229
|
+
}),
|
|
230
|
+
/*#__PURE__*/ jsxRuntime.jsx(formik.Formik, {
|
|
231
|
+
validationSchema: constants.apiTokenInformationSchema,
|
|
232
|
+
validateOnChange: false,
|
|
233
|
+
initialValues: {
|
|
234
|
+
name: apiToken?.name || '',
|
|
235
|
+
description: apiToken?.description || '',
|
|
236
|
+
type: undefined,
|
|
237
|
+
lifespan: apiToken?.lifespan
|
|
238
|
+
},
|
|
239
|
+
enableReinitialize: true,
|
|
240
|
+
onSubmit: (body, actions)=>handleSubmit(body, actions),
|
|
241
|
+
children: ({ errors, handleChange, isSubmitting, values })=>/*#__PURE__*/ jsxRuntime.jsxs(formik.Form, {
|
|
242
|
+
children: [
|
|
243
|
+
/*#__PURE__*/ jsxRuntime.jsx(FormHead.FormHead, {
|
|
244
|
+
title: isCreating ? {
|
|
245
|
+
id: 'Settings.adminTokens.createPage.title',
|
|
246
|
+
defaultMessage: 'Create Admin Token'
|
|
247
|
+
} : {
|
|
248
|
+
id: 'Settings.adminTokens.editPage.title',
|
|
249
|
+
defaultMessage: 'Edit Admin Token'
|
|
250
|
+
},
|
|
251
|
+
token: apiToken,
|
|
252
|
+
setToken: setApiToken,
|
|
253
|
+
toggleToken: toggleToken,
|
|
254
|
+
showToken: showToken,
|
|
255
|
+
canEditInputs: canEditInputs,
|
|
256
|
+
canRegenerate: canRegenerateToken,
|
|
257
|
+
canShowToken: canShowToken,
|
|
258
|
+
isSubmitting: isSubmitting,
|
|
259
|
+
regenerateUrl: "/admin/admin-tokens/"
|
|
260
|
+
}),
|
|
261
|
+
/*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Content, {
|
|
262
|
+
children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
263
|
+
direction: "column",
|
|
264
|
+
alignItems: "stretch",
|
|
265
|
+
gap: 6,
|
|
266
|
+
children: [
|
|
267
|
+
apiToken?.accessKey !== undefined && apiToken.accessKey !== '' && showToken === true && /*#__PURE__*/ jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
268
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(TokenBox.ApiTokenBox, {
|
|
269
|
+
token: apiToken.accessKey,
|
|
270
|
+
tokenType: constants.API_TOKEN_TYPE
|
|
271
|
+
})
|
|
272
|
+
}),
|
|
273
|
+
/*#__PURE__*/ jsxRuntime.jsx(FormApiTokenContainer.FormApiTokenContainer, {
|
|
274
|
+
errors: errors,
|
|
275
|
+
onChange: handleChange,
|
|
276
|
+
canEditInputs: canEditInputs,
|
|
277
|
+
isCreating: isCreating,
|
|
278
|
+
values: values,
|
|
279
|
+
apiToken: apiToken,
|
|
280
|
+
kind: "admin",
|
|
281
|
+
onDispatch: ()=>{},
|
|
282
|
+
setHasChangedPermissions: ()=>{}
|
|
283
|
+
}),
|
|
284
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
285
|
+
shadow: "filterShadow",
|
|
286
|
+
hasRadius: true,
|
|
287
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(AdminPermissions.AdminPermissions, {
|
|
288
|
+
ref: adminPermissionsRef,
|
|
289
|
+
disabled: !canEditInputs,
|
|
290
|
+
initialAdminPermissions: initialAdminPermissions,
|
|
291
|
+
tokenId: !isCreating && id ? id : undefined,
|
|
292
|
+
ownerUserId: ownerUserId
|
|
293
|
+
})
|
|
294
|
+
})
|
|
295
|
+
]
|
|
296
|
+
})
|
|
297
|
+
})
|
|
298
|
+
]
|
|
299
|
+
})
|
|
300
|
+
})
|
|
301
|
+
]
|
|
302
|
+
});
|
|
303
|
+
};
|
|
304
|
+
const ProtectedEditView = ()=>{
|
|
305
|
+
const permissions = hooks.useTypedSelector((state)=>state.admin_app.permissions.settings?.['admin-tokens']?.read);
|
|
306
|
+
return /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Protect, {
|
|
307
|
+
permissions: permissions,
|
|
308
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(EditView, {})
|
|
309
|
+
});
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
exports.EditView = EditView;
|
|
313
|
+
exports.ProtectedEditView = ProtectedEditView;
|
|
314
|
+
//# sourceMappingURL=EditViewPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EditViewPage.js","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,292 @@
|
|
|
1
|
+
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Flex, Box } from '@strapi/design-system';
|
|
4
|
+
import { Formik, Form } from 'formik';
|
|
5
|
+
import { useIntl } from 'react-intl';
|
|
6
|
+
import { useLocation, useMatch, useNavigate } from 'react-router-dom';
|
|
7
|
+
import { Layouts } from '../../../../../components/Layouts/Layout.mjs';
|
|
8
|
+
import { Page } from '../../../../../components/PageHelpers.mjs';
|
|
9
|
+
import { useTypedSelector } from '../../../../../core/store/hooks.mjs';
|
|
10
|
+
import { useAuth } from '../../../../../features/Auth.mjs';
|
|
11
|
+
import { useNotification } from '../../../../../features/Notifications.mjs';
|
|
12
|
+
import { useTracking } from '../../../../../features/Tracking.mjs';
|
|
13
|
+
import { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler.mjs';
|
|
14
|
+
import { useRBAC } from '../../../../../hooks/useRBAC.mjs';
|
|
15
|
+
import { useGetAdminTokenQuery, useCreateAdminTokenMutation, useUpdateAdminTokenMutation } from '../../../../../services/apiTokens.mjs';
|
|
16
|
+
import { isBaseQueryError } from '../../../../../utils/baseQuery.mjs';
|
|
17
|
+
import { API_TOKEN_TYPE, apiTokenInformationSchema } from '../../../components/Tokens/constants.mjs';
|
|
18
|
+
import { FormApiTokenContainer } from '../../../components/Tokens/FormApiTokenContainer.mjs';
|
|
19
|
+
import { FormHead } from '../../../components/Tokens/FormHead.mjs';
|
|
20
|
+
import { ApiTokenBox } from '../../../components/Tokens/TokenBox.mjs';
|
|
21
|
+
import { AdminPermissions } from './components/AdminPermissions.mjs';
|
|
22
|
+
|
|
23
|
+
const getOwnerId = (owner)=>{
|
|
24
|
+
if (owner === undefined || owner === null) return null;
|
|
25
|
+
return typeof owner === 'object' ? owner.id : owner;
|
|
26
|
+
};
|
|
27
|
+
const isCurrentUserTokenOwner = (apiToken, currentUserId)=>{
|
|
28
|
+
if (apiToken === null || apiToken.kind !== 'admin') return true;
|
|
29
|
+
const ownerId = getOwnerId(apiToken.adminUserOwner);
|
|
30
|
+
if (ownerId === null) return true;
|
|
31
|
+
return currentUserId !== undefined && ownerId === currentUserId;
|
|
32
|
+
};
|
|
33
|
+
const EditView = ()=>{
|
|
34
|
+
const { formatMessage } = useIntl();
|
|
35
|
+
const { toggleNotification } = useNotification();
|
|
36
|
+
const { state: locationState } = useLocation();
|
|
37
|
+
const permissions = useTypedSelector((state)=>state.admin_app.permissions);
|
|
38
|
+
const [apiToken, setApiToken] = React.useState(locationState?.apiToken?.accessKey !== undefined && locationState?.apiToken?.accessKey !== '' ? {
|
|
39
|
+
...locationState.apiToken
|
|
40
|
+
} : null);
|
|
41
|
+
const [showToken, setShowToken] = React.useState(locationState?.apiToken?.accessKey !== undefined && locationState?.apiToken?.accessKey !== '');
|
|
42
|
+
const hideTimerRef = React.useRef(null);
|
|
43
|
+
const adminPermissionsRef = React.useRef(null);
|
|
44
|
+
const { trackUsage } = useTracking();
|
|
45
|
+
const currentUser = useAuth('EditView', (state)=>state.user);
|
|
46
|
+
const { allowedActions: { canCreate, canUpdate, canRegenerate } } = useRBAC(permissions.settings?.['admin-tokens']);
|
|
47
|
+
const match = useMatch('/settings/admin-tokens/:id');
|
|
48
|
+
const id = match?.params?.id;
|
|
49
|
+
const isCreating = id === 'create';
|
|
50
|
+
const { _unstableFormatAPIError: formatAPIError, _unstableFormatValidationErrors: formatValidationErrors } = useAPIErrorHandler();
|
|
51
|
+
const navigate = useNavigate();
|
|
52
|
+
React.useEffect(()=>{
|
|
53
|
+
trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {
|
|
54
|
+
tokenType: API_TOKEN_TYPE
|
|
55
|
+
});
|
|
56
|
+
}, [
|
|
57
|
+
isCreating,
|
|
58
|
+
trackUsage
|
|
59
|
+
]);
|
|
60
|
+
const { data, error, isLoading } = useGetAdminTokenQuery(id, {
|
|
61
|
+
skip: !id || isCreating,
|
|
62
|
+
refetchOnMountOrArgChange: true
|
|
63
|
+
});
|
|
64
|
+
React.useEffect(()=>{
|
|
65
|
+
if (error) {
|
|
66
|
+
toggleNotification({
|
|
67
|
+
type: 'danger',
|
|
68
|
+
message: formatAPIError(error)
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}, [
|
|
72
|
+
error,
|
|
73
|
+
formatAPIError,
|
|
74
|
+
toggleNotification
|
|
75
|
+
]);
|
|
76
|
+
React.useEffect(()=>{
|
|
77
|
+
if (data) {
|
|
78
|
+
setApiToken(data);
|
|
79
|
+
}
|
|
80
|
+
}, [
|
|
81
|
+
data
|
|
82
|
+
]);
|
|
83
|
+
React.useEffect(()=>{
|
|
84
|
+
if (showToken) {
|
|
85
|
+
hideTimerRef.current = setTimeout(()=>{
|
|
86
|
+
setShowToken(false);
|
|
87
|
+
}, 30000); // 30 seconds
|
|
88
|
+
return ()=>{
|
|
89
|
+
if (hideTimerRef.current) {
|
|
90
|
+
clearTimeout(hideTimerRef.current);
|
|
91
|
+
hideTimerRef.current = null;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
}, [
|
|
96
|
+
showToken
|
|
97
|
+
]);
|
|
98
|
+
const [createToken] = useCreateAdminTokenMutation();
|
|
99
|
+
const [updateToken] = useUpdateAdminTokenMutation();
|
|
100
|
+
const buildLifespan = (raw)=>raw && raw !== '0' ? parseInt(raw.toString(), 10) : null;
|
|
101
|
+
const handleSubmit = async (body, formik)=>{
|
|
102
|
+
trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {
|
|
103
|
+
tokenType: API_TOKEN_TYPE
|
|
104
|
+
});
|
|
105
|
+
const adminPermissionsToSend = adminPermissionsRef.current?.getPermissions().permissionsToSend ?? [];
|
|
106
|
+
try {
|
|
107
|
+
if (isCreating) {
|
|
108
|
+
const res = await createToken({
|
|
109
|
+
name: body.name,
|
|
110
|
+
description: body.description,
|
|
111
|
+
lifespan: buildLifespan(body.lifespan),
|
|
112
|
+
adminPermissions: adminPermissionsToSend
|
|
113
|
+
});
|
|
114
|
+
if ('error' in res) {
|
|
115
|
+
if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
116
|
+
formik.setErrors(formatValidationErrors(res.error));
|
|
117
|
+
} else {
|
|
118
|
+
toggleNotification({
|
|
119
|
+
type: 'danger',
|
|
120
|
+
message: formatAPIError(res.error)
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
toggleNotification({
|
|
126
|
+
type: 'success',
|
|
127
|
+
message: formatMessage({
|
|
128
|
+
id: 'notification.success.adminTokenCreated',
|
|
129
|
+
defaultMessage: 'Admin Token successfully created'
|
|
130
|
+
})
|
|
131
|
+
});
|
|
132
|
+
trackUsage('didCreateToken', {
|
|
133
|
+
kind: 'admin',
|
|
134
|
+
tokenType: API_TOKEN_TYPE
|
|
135
|
+
});
|
|
136
|
+
adminPermissionsRef.current?.setFormAfterSubmit();
|
|
137
|
+
navigate(`../admin-tokens/${res.data.id.toString()}`, {
|
|
138
|
+
state: {
|
|
139
|
+
apiToken: res.data
|
|
140
|
+
},
|
|
141
|
+
replace: true
|
|
142
|
+
});
|
|
143
|
+
} else {
|
|
144
|
+
const res = await updateToken({
|
|
145
|
+
id: id,
|
|
146
|
+
name: body.name,
|
|
147
|
+
description: body.description,
|
|
148
|
+
adminPermissions: adminPermissionsToSend
|
|
149
|
+
});
|
|
150
|
+
if ('error' in res) {
|
|
151
|
+
if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {
|
|
152
|
+
formik.setErrors(formatValidationErrors(res.error));
|
|
153
|
+
} else {
|
|
154
|
+
toggleNotification({
|
|
155
|
+
type: 'danger',
|
|
156
|
+
message: formatAPIError(res.error)
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
toggleNotification({
|
|
162
|
+
type: 'success',
|
|
163
|
+
message: formatMessage({
|
|
164
|
+
id: 'notification.success.adminTokenEdited',
|
|
165
|
+
defaultMessage: 'Admin Token successfully edited'
|
|
166
|
+
})
|
|
167
|
+
});
|
|
168
|
+
trackUsage('didEditToken', {
|
|
169
|
+
kind: 'admin',
|
|
170
|
+
tokenType: API_TOKEN_TYPE
|
|
171
|
+
});
|
|
172
|
+
adminPermissionsRef.current?.setFormAfterSubmit();
|
|
173
|
+
}
|
|
174
|
+
} catch {
|
|
175
|
+
toggleNotification({
|
|
176
|
+
type: 'danger',
|
|
177
|
+
message: formatMessage({
|
|
178
|
+
id: 'notification.error',
|
|
179
|
+
defaultMessage: 'Something went wrong'
|
|
180
|
+
})
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
const toggleToken = ()=>{
|
|
185
|
+
setShowToken((prev)=>!prev);
|
|
186
|
+
if (hideTimerRef.current) {
|
|
187
|
+
clearTimeout(hideTimerRef.current);
|
|
188
|
+
hideTimerRef.current = null;
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
const canEditInputs = canUpdate && !isCreating || canCreate && isCreating;
|
|
192
|
+
const canShowToken = apiToken?.accessKey !== undefined && apiToken.accessKey !== '';
|
|
193
|
+
const canRegenerateToken = canRegenerate && isCurrentUserTokenOwner(apiToken, currentUser?.id);
|
|
194
|
+
const initialAdminPermissions = apiToken !== null && apiToken.kind === 'admin' ? apiToken.adminPermissions ?? [] : [];
|
|
195
|
+
const ownerUserId = apiToken !== null && apiToken.kind === 'admin' ? getOwnerId(apiToken.adminUserOwner) : null;
|
|
196
|
+
if (isLoading || !isCreating && apiToken === null) {
|
|
197
|
+
return /*#__PURE__*/ jsx(Page.Loading, {});
|
|
198
|
+
}
|
|
199
|
+
return /*#__PURE__*/ jsxs(Page.Main, {
|
|
200
|
+
children: [
|
|
201
|
+
/*#__PURE__*/ jsx(Page.Title, {
|
|
202
|
+
children: formatMessage({
|
|
203
|
+
id: 'Settings.PageTitle',
|
|
204
|
+
defaultMessage: 'Settings - {name}'
|
|
205
|
+
}, {
|
|
206
|
+
name: 'Admin Tokens'
|
|
207
|
+
})
|
|
208
|
+
}),
|
|
209
|
+
/*#__PURE__*/ jsx(Formik, {
|
|
210
|
+
validationSchema: apiTokenInformationSchema,
|
|
211
|
+
validateOnChange: false,
|
|
212
|
+
initialValues: {
|
|
213
|
+
name: apiToken?.name || '',
|
|
214
|
+
description: apiToken?.description || '',
|
|
215
|
+
type: undefined,
|
|
216
|
+
lifespan: apiToken?.lifespan
|
|
217
|
+
},
|
|
218
|
+
enableReinitialize: true,
|
|
219
|
+
onSubmit: (body, actions)=>handleSubmit(body, actions),
|
|
220
|
+
children: ({ errors, handleChange, isSubmitting, values })=>/*#__PURE__*/ jsxs(Form, {
|
|
221
|
+
children: [
|
|
222
|
+
/*#__PURE__*/ jsx(FormHead, {
|
|
223
|
+
title: isCreating ? {
|
|
224
|
+
id: 'Settings.adminTokens.createPage.title',
|
|
225
|
+
defaultMessage: 'Create Admin Token'
|
|
226
|
+
} : {
|
|
227
|
+
id: 'Settings.adminTokens.editPage.title',
|
|
228
|
+
defaultMessage: 'Edit Admin Token'
|
|
229
|
+
},
|
|
230
|
+
token: apiToken,
|
|
231
|
+
setToken: setApiToken,
|
|
232
|
+
toggleToken: toggleToken,
|
|
233
|
+
showToken: showToken,
|
|
234
|
+
canEditInputs: canEditInputs,
|
|
235
|
+
canRegenerate: canRegenerateToken,
|
|
236
|
+
canShowToken: canShowToken,
|
|
237
|
+
isSubmitting: isSubmitting,
|
|
238
|
+
regenerateUrl: "/admin/admin-tokens/"
|
|
239
|
+
}),
|
|
240
|
+
/*#__PURE__*/ jsx(Layouts.Content, {
|
|
241
|
+
children: /*#__PURE__*/ jsxs(Flex, {
|
|
242
|
+
direction: "column",
|
|
243
|
+
alignItems: "stretch",
|
|
244
|
+
gap: 6,
|
|
245
|
+
children: [
|
|
246
|
+
apiToken?.accessKey !== undefined && apiToken.accessKey !== '' && showToken === true && /*#__PURE__*/ jsx(Fragment, {
|
|
247
|
+
children: /*#__PURE__*/ jsx(ApiTokenBox, {
|
|
248
|
+
token: apiToken.accessKey,
|
|
249
|
+
tokenType: API_TOKEN_TYPE
|
|
250
|
+
})
|
|
251
|
+
}),
|
|
252
|
+
/*#__PURE__*/ jsx(FormApiTokenContainer, {
|
|
253
|
+
errors: errors,
|
|
254
|
+
onChange: handleChange,
|
|
255
|
+
canEditInputs: canEditInputs,
|
|
256
|
+
isCreating: isCreating,
|
|
257
|
+
values: values,
|
|
258
|
+
apiToken: apiToken,
|
|
259
|
+
kind: "admin",
|
|
260
|
+
onDispatch: ()=>{},
|
|
261
|
+
setHasChangedPermissions: ()=>{}
|
|
262
|
+
}),
|
|
263
|
+
/*#__PURE__*/ jsx(Box, {
|
|
264
|
+
shadow: "filterShadow",
|
|
265
|
+
hasRadius: true,
|
|
266
|
+
children: /*#__PURE__*/ jsx(AdminPermissions, {
|
|
267
|
+
ref: adminPermissionsRef,
|
|
268
|
+
disabled: !canEditInputs,
|
|
269
|
+
initialAdminPermissions: initialAdminPermissions,
|
|
270
|
+
tokenId: !isCreating && id ? id : undefined,
|
|
271
|
+
ownerUserId: ownerUserId
|
|
272
|
+
})
|
|
273
|
+
})
|
|
274
|
+
]
|
|
275
|
+
})
|
|
276
|
+
})
|
|
277
|
+
]
|
|
278
|
+
})
|
|
279
|
+
})
|
|
280
|
+
]
|
|
281
|
+
});
|
|
282
|
+
};
|
|
283
|
+
const ProtectedEditView = ()=>{
|
|
284
|
+
const permissions = useTypedSelector((state)=>state.admin_app.permissions.settings?.['admin-tokens']?.read);
|
|
285
|
+
return /*#__PURE__*/ jsx(Page.Protect, {
|
|
286
|
+
permissions: permissions,
|
|
287
|
+
children: /*#__PURE__*/ jsx(EditView, {})
|
|
288
|
+
});
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
export { EditView, ProtectedEditView };
|
|
292
|
+
//# sourceMappingURL=EditViewPage.mjs.map
|