@strapi/admin 5.51.0 → 5.51.2
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 +3 -3
- package/dist/admin/admin/src/StrapiApp.js.map +1 -1
- package/dist/admin/admin/src/StrapiApp.mjs +3 -3
- package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs +1 -1
- package/dist/admin/admin/src/components/NpsSurvey.mjs.map +1 -1
- package/dist/admin/admin/src/features/Tracking.js +1 -1
- package/dist/admin/admin/src/features/Tracking.js.map +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs +1 -1
- package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs +1 -1
- package/dist/admin/admin/src/hooks/useAPIErrorHandler.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.js +35 -26
- package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs +35 -27
- package/dist/admin/admin/src/pages/Auth/components/Register.mjs.map +1 -1
- 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/pages/Roles/CreatePage.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +1 -3
- 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 +1 -3
- package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.mjs.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs +1 -1
- package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.mjs.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs +1 -1
- package/dist/admin/admin/src/pages/UseCasePage.mjs.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.js +3 -2
- package/dist/admin/admin/src/utils/baseQuery.js.map +1 -1
- package/dist/admin/admin/src/utils/baseQuery.mjs +3 -2
- package/dist/admin/admin/src/utils/baseQuery.mjs.map +1 -1
- package/dist/admin/admin/src/utils/users.js +1 -1
- package/dist/admin/admin/src/utils/users.js.map +1 -1
- package/dist/admin/admin/src/utils/users.mjs +1 -1
- package/dist/admin/admin/src/utils/users.mjs.map +1 -1
- package/dist/admin/admin/tests/server.js +642 -664
- package/dist/admin/admin/tests/server.js.map +1 -1
- package/dist/admin/admin/tests/server.mjs +642 -664
- package/dist/admin/admin/tests/server.mjs.map +1 -1
- package/dist/admin/ee/admin/src/constants.js +22 -26
- package/dist/admin/ee/admin/src/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/constants.mjs +22 -26
- package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +38 -7
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +18 -7
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js +4 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs +4 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +17 -6
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.mjs +18 -7
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js +23 -26
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs +23 -26
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.js +16 -20
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.mjs +16 -20
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.mjs.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.js +10 -1
- package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
- package/dist/admin/ee/admin/src/services/auditLogs.mjs +10 -2
- package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-domain.js +1 -0
- package/dist/admin/shared/utils/auth-cookie-domain.js.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-domain.mjs +1 -0
- package/dist/admin/shared/utils/auth-cookie-domain.mjs.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-path.js +1 -0
- package/dist/admin/shared/utils/auth-cookie-path.js.map +1 -1
- package/dist/admin/shared/utils/auth-cookie-path.mjs +1 -0
- package/dist/admin/shared/utils/auth-cookie-path.mjs.map +1 -1
- package/dist/admin/src/pages/Auth/components/Register.d.ts +10 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ComboboxFilter.d.ts +6 -1
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.d.ts +5 -3
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.d.ts +8 -4
- package/dist/ee/admin/src/pages/SettingsPage/pages/Users/components/ModalForm.d.ts +3 -1
- package/dist/ee/admin/src/services/auditLogs.d.ts +5 -2
- package/dist/ee/server/src/audit-logs/controllers/audit-logs.d.ts +1 -0
- package/dist/ee/server/src/audit-logs/controllers/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/routes/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +16 -0
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -0
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/destroy.d.ts +1 -4
- package/dist/ee/server/src/destroy.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +1 -0
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.js +10 -0
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.mjs +11 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.js +24 -32
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.mjs +24 -32
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.js +36 -4
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs +36 -4
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.js +8 -0
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.mjs +8 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.js +1 -1
- package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs +1 -1
- package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
- package/dist/server/ee/server/src/destroy.js +1 -1
- package/dist/server/ee/server/src/destroy.js.map +1 -1
- package/dist/server/ee/server/src/destroy.mjs +1 -1
- package/dist/server/ee/server/src/destroy.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +1 -3
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +1 -3
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/ee/server/src/services/index.js.map +1 -1
- package/dist/server/ee/server/src/services/index.mjs +2 -2
- package/dist/server/ee/server/src/services/index.mjs.map +1 -1
- package/dist/server/ee/server/src/services/persist-tables.js +2 -2
- package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
- package/dist/server/ee/server/src/services/persist-tables.mjs +4 -4
- package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.js +2 -2
- package/dist/server/server/src/ai/controllers/ai.js.map +1 -1
- package/dist/server/server/src/ai/controllers/ai.mjs +2 -2
- package/dist/server/server/src/ai/controllers/ai.mjs.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.js +1 -2
- package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
- package/dist/server/server/src/middlewares/rateLimit.mjs +2 -2
- package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
- package/dist/server/server/src/services/encryption.js +1 -1
- package/dist/server/server/src/services/encryption.js.map +1 -1
- package/dist/server/server/src/services/encryption.mjs +1 -1
- package/dist/server/server/src/services/encryption.mjs.map +1 -1
- package/dist/server/server/src/services/permission/engine.js +4 -8
- package/dist/server/server/src/services/permission/engine.js.map +1 -1
- package/dist/server/server/src/services/permission/engine.mjs +5 -5
- package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
- package/dist/server/server/src/services/transfer/permission.js +1 -5
- package/dist/server/server/src/services/transfer/permission.js.map +1 -1
- package/dist/server/server/src/services/transfer/permission.mjs +2 -2
- package/dist/server/server/src/services/transfer/permission.mjs.map +1 -1
- package/dist/server/server/src/services/user.js +1 -1
- package/dist/server/server/src/services/user.js.map +1 -1
- package/dist/server/server/src/services/user.mjs +1 -1
- package/dist/server/server/src/services/user.mjs.map +1 -1
- package/dist/server/shared/utils/auth-cookie-domain.js +1 -0
- package/dist/server/shared/utils/auth-cookie-domain.js.map +1 -1
- package/dist/server/shared/utils/auth-cookie-domain.mjs +1 -0
- package/dist/server/shared/utils/auth-cookie-domain.mjs.map +1 -1
- package/dist/server/shared/utils/auth-cookie-path.js +1 -0
- package/dist/server/shared/utils/auth-cookie-path.js.map +1 -1
- package/dist/server/shared/utils/auth-cookie-path.mjs +1 -0
- package/dist/server/shared/utils/auth-cookie-path.mjs.map +1 -1
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/middlewares/index.d.ts.map +1 -1
- package/dist/server/src/services/permission/engine.d.ts +1 -1
- package/dist/server/src/services/permission/engine.d.ts.map +1 -1
- package/dist/server/src/services/transfer/permission.d.ts +2 -2
- package/dist/server/src/services/transfer/permission.d.ts.map +1 -1
- package/dist/shared/contracts/api-token.d.ts +2 -2
- package/dist/shared/contracts/api-token.d.ts.map +1 -1
- package/dist/shared/contracts/audit-logs.d.ts +19 -1
- package/dist/shared/contracts/audit-logs.d.ts.map +1 -1
- package/dist/shared/contracts/authentication.d.ts +1 -1
- package/dist/shared/contracts/authentication.d.ts.map +1 -1
- package/dist/shared/contracts/homepage.d.ts +2 -2
- package/dist/shared/contracts/homepage.d.ts.map +1 -1
- package/dist/shared/contracts/user.d.ts +1 -1
- package/dist/shared/contracts/user.d.ts.map +1 -1
- package/dist/shared/utils/auth-cookie-domain.d.ts.map +1 -1
- package/dist/shared/utils/auth-cookie-path.d.ts.map +1 -1
- package/package.json +12 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Permissions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { Permission as AuthPermission } from '../../../../../features/Auth';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport {\n createFieldPermissionChecker,\n createDynamicActionPermissionChecker,\n} from '../utils/createPermissionChecker';\nimport { difference } from '../utils/difference';\nimport {\n ConditionForm,\n Form,\n PropertyChildForm,\n createDefaultCTForm,\n createDefaultForm,\n} from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { hasLocaleValidationErrors } from '../utils/localePermissionValidation';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues, updateValuesWithPermissions } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n hasLocaleValidationErrors: () => boolean;\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n onLocaleValidationChange?: (hasErrors: boolean) => void;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n userPermissions?: AuthPermission[];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n (\n { layout, isFormDisabled, onLocaleValidationChange, permissions = [], userPermissions },\n api\n ) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useEffect(() => {\n onLocaleValidationChange?.(hasLocaleValidationErrors(modifiedData));\n }, [modifiedData, onLocaleValidationChange]);\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n const permissionsToSend = formatPermissionsForAPI(modifiedData).map((perm) =>\n restoreNullLocalesIfUnchanged(perm, permissions, initialData, modifiedData)\n );\n\n return { permissionsToSend, didUpdateConditions };\n },\n hasLocaleValidationErrors() {\n return hasLocaleValidationErrors(modifiedData);\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = React.useCallback(\n (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeCollectionTypeGlobalActionCheckbox = React.useCallback(\n (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeConditions = React.useCallback(\n (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions, userPermissions });\n },\n [userPermissions]\n );\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(\n ({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(\n ({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n userPermissions={userPermissions}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\nconst buildInheritedConditionsFromExisting = (\n existing: unknown,\n enabledConditions: string[] = []\n): Record<string, boolean> | undefined => {\n if (!isObject(existing)) {\n return undefined;\n }\n\n const enabled = new Set(enabledConditions);\n\n return Object.keys(existing).reduce<Record<string, boolean>>((acc, key) => {\n acc[key] = enabled.has(key);\n\n return acc;\n }, {});\n};\n\nconst inheritConditionsAtPath = (\n data: unknown,\n pathToActionObject: string[],\n actionId: string,\n subject: string | null,\n userPermissions: AuthPermission[] | undefined\n) => {\n if (userPermissions === undefined) {\n return;\n }\n\n const matchingPermission = userPermissions.find(\n (perm) => perm.action === actionId && perm.subject === subject\n );\n\n if (matchingPermission === undefined) {\n return;\n }\n\n const obj = data as Record<string, unknown>;\n const existingConditions = get(obj, [...pathToActionObject, 'conditions'], undefined);\n const nextConditions = buildInheritedConditionsFromExisting(\n existingConditions,\n matchingPermission.conditions ?? []\n );\n\n if (nextConditions) {\n set(obj, [...pathToActionObject, 'conditions'], nextConditions);\n }\n};\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value, userPermissions } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n const subjectPermissionChecker = createFieldPermissionChecker(\n actionId,\n collectionType,\n userPermissions\n );\n\n let updatedValues = updateValuesWithPermissions(\n collectionTypeActionData,\n value,\n subjectPermissionChecker\n );\n\n if (value === true) {\n inheritConditionsAtPath(updatedValues, [], actionId, collectionType, userPermissions);\n }\n\n if (value === false && updatedValues.conditions !== undefined) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value, userPermissions } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n const subject =\n pathToModifiedDataCollectionType[pathToModifiedDataCollectionType.length - 1];\n\n Object.keys(objToUpdate).forEach((actionId) => {\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n if (userPermissions !== undefined && propertyName === 'fields') {\n const hasPermission = userPermissions.some((perm) => {\n if (perm.action !== actionId || perm.subject !== subject) return false;\n\n const fields = perm.properties?.fields;\n if (fields === null || fields === undefined) return true;\n if (Array.isArray(fields) && fields.length === 0) return false;\n\n return (\n Array.isArray(fields) &&\n fields.some((f) => rowName === f || rowName.startsWith(`${f}.`))\n );\n });\n\n if (hasPermission === true) {\n set(nextModifiedDataState, pathToDataToSet, value);\n if (value === true) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n } else {\n set(nextModifiedDataState, pathToDataToSet, value);\n if (value === true && userPermissions !== undefined) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n } else {\n const permissionChecker =\n userPermissions !== undefined && propertyName === 'fields'\n ? (path: string[]) => {\n const fullFieldPath = [rowName, ...path].join('.');\n const checker = createFieldPermissionChecker(\n actionId,\n subject,\n userPermissions\n );\n return checker === undefined\n ? true\n : checker(['properties', 'fields', fullFieldPath]);\n }\n : undefined;\n\n const updatedValue = updateValuesWithPermissions(objValue, value, permissionChecker);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n if (value === true && userPermissions !== undefined) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n }\n });\n\n if (value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n // In App Token context, conditions are inherited from the user's permissions and must be read-only.\n if (action.userPermissions !== undefined) {\n break;\n }\n\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n const keysArray = action.keys.split('..');\n set(nextModifiedDataState, [...keysArray], action.value);\n\n // In App Token context, when enabling a permission, inherit the user's conditions.\n if (action.value === true && action.userPermissions !== undefined) {\n const propertiesIndex = keysArray.indexOf('properties');\n\n if (propertiesIndex > 0) {\n const actionId = keysArray[propertiesIndex - 1];\n const root = keysArray[0];\n\n if ((root === 'collectionTypes' || root === 'singleTypes') && keysArray.length >= 3) {\n const subject = keysArray[1];\n inheritConditionsAtPath(\n nextModifiedDataState,\n [root, subject, actionId],\n actionId,\n subject,\n action.userPermissions\n );\n } else {\n const pathToActionObject = keysArray.slice(0, propertiesIndex);\n inheritConditionsAtPath(\n nextModifiedDataState,\n pathToActionObject,\n actionId,\n null,\n action.userPermissions\n );\n }\n }\n }\n\n if (action.value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value, userPermissions } = action;\n const pathToValue = [...keys.split('..')];\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const root = pathToValue[0];\n // Plugin & setting permissions are stored with `subject: null` and their real\n // action id is the full `plugin::`/`admin::` leaf segment (not the UI subcategory).\n // For those, let the checker derive the action from each leaf path (subject stays null).\n const isPluginOrSetting = root === 'plugins' || root === 'settings';\n\n let actionId: string | undefined;\n let subject: string | null | undefined;\n\n if (isPluginOrSetting) {\n subject = null;\n } else {\n if (pathToValue.length >= 2) {\n subject = pathToValue[1];\n }\n\n if (pathToValue.length >= 3) {\n actionId = pathToValue[2];\n }\n }\n\n const permissionChecker = createDynamicActionPermissionChecker(\n subject,\n actionId,\n userPermissions\n );\n\n const updatedValues = updateValuesWithPermissions(oldValues, value, permissionChecker);\n\n // In App Token context, when enabling, inherit conditions from the user's permissions.\n if (value === true && userPermissions !== undefined) {\n const subjectForLookup =\n root === 'collectionTypes' || root === 'singleTypes' ? (subject ?? null) : null;\n\n if (actionId !== undefined && subjectForLookup !== null) {\n inheritConditionsAtPath(updatedValues, [], actionId, subjectForLookup, userPermissions);\n } else if (isObject(updatedValues)) {\n const updatedValuesObj = updatedValues as Record<string, unknown>;\n\n Object.keys(updatedValuesObj).forEach((key) => {\n const maybeActionObj = updatedValuesObj[key];\n if (isObject(maybeActionObj)) {\n inheritConditionsAtPath(maybeActionObj, [], key, subjectForLookup, userPermissions);\n }\n });\n }\n }\n\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n if (value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * restoreNullLocalesIfUnchanged\n * Extracted at module level to avoid nesting arrow functions more than 4 levels deep inside\n * the useImperativeHandle → getPermissions → map chain.\n * -----------------------------------------------------------------------------------------------*/\n\ntype SentPermission = Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>;\n\nconst restoreNullLocalesIfUnchanged = (\n perm: SentPermission,\n originalPermissions: Permission[],\n initialData: PermissionForms,\n modifiedData: PermissionForms\n): SentPermission => {\n if (!perm.subject) return perm;\n\n const original = originalPermissions.find(\n (p) => p.action === perm.action && p.subject === perm.subject\n );\n\n // null means \"all locales\" in legacy DBs — preserve it if the user hasn't changed anything\n if (original?.properties?.locales !== null) return perm;\n\n const kind =\n perm.subject in modifiedData.collectionTypes\n ? ('collectionTypes' as const)\n : perm.subject in modifiedData.singleTypes\n ? ('singleTypes' as const)\n : null;\n if (!kind) return perm;\n\n const initialActionForm = initialData[kind]?.[perm.subject]?.[perm.action];\n const modifiedActionForm = modifiedData[kind]?.[perm.subject]?.[perm.action];\n\n if (!initialActionForm || !modifiedActionForm) return perm;\n\n const initialLocaleEntry = (initialActionForm.properties as PropertyChildForm)['locales'];\n const modifiedLocaleEntry = (modifiedActionForm.properties as PropertyChildForm)['locales'];\n\n if (\n !initialLocaleEntry ||\n typeof initialLocaleEntry === 'boolean' ||\n !modifiedLocaleEntry ||\n typeof modifiedLocaleEntry === 'boolean'\n ) {\n return perm;\n }\n\n const localesUnchanged =\n Object.keys(initialLocaleEntry).length === Object.keys(modifiedLocaleEntry).length &&\n Object.entries(initialLocaleEntry).every(\n ([locale, val]) => modifiedLocaleEntry[locale] === val\n );\n\n if (!localesUnchanged) return perm;\n\n return { ...perm, properties: { ...perm.properties, locales: null } };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","onLocaleValidationChange","permissions","userPermissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useEffect","hasLocaleValidationErrors","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","map","perm","restoreNullLocalesIfUnchanged","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","useCallback","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","buildInheritedConditionsFromExisting","existing","enabledConditions","isObject","undefined","enabled","Set","reduce","acc","key","inheritConditionsAtPath","data","pathToActionObject","subject","matchingPermission","find","action","obj","existingConditions","get","nextConditions","set","state","produce","draftState","pathToData","forEach","collectionType","collectionTypeActionData","subjectPermissionChecker","createFieldPermissionChecker","updatedValues","updateValuesWithPermissions","updatedConditions","updateValues","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","length","objValue","pathToDataToSet","hasPermission","fields","properties","Array","isArray","f","startsWith","permissionChecker","path","fullFieldPath","join","checker","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","keysArray","propertiesIndex","indexOf","root","slice","pathToValue","oldValues","isPluginOrSetting","createDynamicActionPermissionChecker","subjectForLookup","updatedValuesObj","maybeActionObj","originalPermissions","original","p","locales","initialActionForm","modifiedActionForm","initialLocaleEntry","modifiedLocaleEntry","localesUnchanged","every","locale","val","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Permissions.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/Roles/components/Permissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Tabs } from '@strapi/design-system';\nimport { produce } from 'immer';\nimport cloneDeep from 'lodash/cloneDeep';\nimport get from 'lodash/get';\nimport has from 'lodash/has';\nimport isEmpty from 'lodash/isEmpty';\nimport set from 'lodash/set';\nimport { useIntl } from 'react-intl';\n\nimport * as PermissonContracts from '../../../../../../../shared/contracts/permissions';\nimport { Permission } from '../../../../../../../shared/contracts/shared';\nimport { Permission as AuthPermission } from '../../../../../features/Auth';\nimport { isObject } from '../../../../../utils/objects';\nimport {\n PermissionsDataManagerContextValue,\n PermissionsDataManagerProvider,\n} from '../hooks/usePermissionsDataManager';\nimport {\n createFieldPermissionChecker,\n createDynamicActionPermissionChecker,\n} from '../utils/createPermissionChecker';\nimport { difference } from '../utils/difference';\nimport {\n ConditionForm,\n Form,\n PropertyChildForm,\n createDefaultCTForm,\n createDefaultForm,\n} from '../utils/forms';\nimport { GenericLayout, formatLayout } from '../utils/layouts';\nimport { hasLocaleValidationErrors } from '../utils/localePermissionValidation';\nimport { formatPermissionsForAPI } from '../utils/permissions';\nimport { updateConditionsToFalse } from '../utils/updateConditionsToFalse';\nimport { updateValues, updateValuesWithPermissions } from '../utils/updateValues';\n\nimport { ContentTypes } from './ContentTypes';\nimport { PluginsAndSettingsPermissions } from './PluginsAndSettings';\n\nconst TAB_LABELS = [\n {\n labelId: 'app.components.LeftMenuLinkContainer.collectionTypes',\n defaultMessage: 'Collection Types',\n id: 'collectionTypes',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.singleTypes',\n id: 'singleTypes',\n defaultMessage: 'Single Types',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.plugins',\n defaultMessage: 'Plugins',\n id: 'plugins',\n },\n {\n labelId: 'app.components.LeftMenuLinkContainer.settings',\n defaultMessage: 'Settings',\n id: 'settings',\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * Permissions\n * -----------------------------------------------------------------------------------------------*/\n\nexport interface PermissionsAPI {\n getPermissions: () => {\n didUpdateConditions: boolean;\n permissionsToSend: Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>[];\n };\n hasLocaleValidationErrors: () => boolean;\n resetForm: () => void;\n setFormAfterSubmit: () => void;\n}\n\ninterface PermissionsProps {\n isFormDisabled?: boolean;\n onLocaleValidationChange?: (hasErrors: boolean) => void;\n permissions?: Permission[];\n layout: PermissonContracts.GetAll.Response['data'];\n userPermissions?: AuthPermission[];\n}\n\nconst Permissions = React.forwardRef<PermissionsAPI, PermissionsProps>(\n (\n { layout, isFormDisabled, onLocaleValidationChange, permissions = [], userPermissions },\n api\n ) => {\n const [{ initialData, layouts, modifiedData }, dispatch] = React.useReducer(\n reducer,\n initialState,\n () => init(layout, permissions)\n );\n const { formatMessage } = useIntl();\n\n React.useEffect(() => {\n onLocaleValidationChange?.(hasLocaleValidationErrors(modifiedData));\n }, [modifiedData, onLocaleValidationChange]);\n\n React.useImperativeHandle(api, () => {\n return {\n getPermissions() {\n const collectionTypesDiff = difference(\n initialData.collectionTypes,\n modifiedData.collectionTypes\n );\n const singleTypesDiff = difference(initialData.singleTypes, modifiedData.singleTypes);\n\n const contentTypesDiff = { ...collectionTypesDiff, ...singleTypesDiff };\n\n let didUpdateConditions;\n\n if (isEmpty(contentTypesDiff)) {\n didUpdateConditions = false;\n } else {\n didUpdateConditions = Object.values(contentTypesDiff).some((permission = {}) => {\n return Object.values(permission).some((permissionValue) =>\n has(permissionValue, 'conditions')\n );\n });\n }\n\n const permissionsToSend = formatPermissionsForAPI(modifiedData).map((perm) =>\n restoreNullLocalesIfUnchanged(perm, permissions, initialData, modifiedData)\n );\n\n return { permissionsToSend, didUpdateConditions };\n },\n hasLocaleValidationErrors() {\n return hasLocaleValidationErrors(modifiedData);\n },\n resetForm() {\n dispatch({ type: 'RESET_FORM' });\n },\n setFormAfterSubmit() {\n dispatch({ type: 'SET_FORM_AFTER_SUBMIT' });\n },\n } satisfies PermissionsAPI;\n });\n\n const handleChangeCollectionTypeLeftActionRowCheckbox = React.useCallback(\n (\n pathToCollectionType: OnChangeCollectionTypeRowLeftCheckboxAction['pathToCollectionType'],\n propertyName: OnChangeCollectionTypeRowLeftCheckboxAction['propertyName'],\n rowName: OnChangeCollectionTypeRowLeftCheckboxAction['rowName'],\n value: OnChangeCollectionTypeRowLeftCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX',\n pathToCollectionType,\n propertyName,\n rowName,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeCollectionTypeGlobalActionCheckbox = React.useCallback(\n (\n collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'],\n actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'],\n value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']\n ) => {\n dispatch({\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX',\n collectionTypeKind,\n actionId,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeConditions = React.useCallback(\n (conditions: OnChangeConditionsAction['conditions']) => {\n dispatch({ type: 'ON_CHANGE_CONDITIONS', conditions, userPermissions });\n },\n [userPermissions]\n );\n\n const handleChangeSimpleCheckbox: PermissionsDataManagerContextValue['onChangeSimpleCheckbox'] =\n React.useCallback(\n ({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_SIMPLE_CHECKBOX',\n keys: name,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n const handleChangeParentCheckbox: PermissionsDataManagerContextValue['onChangeParentCheckbox'] =\n React.useCallback(\n ({ target: { name, value } }) => {\n dispatch({\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX',\n keys: name,\n value,\n userPermissions,\n });\n },\n [userPermissions]\n );\n\n return (\n <PermissionsDataManagerProvider\n availableConditions={layout.conditions}\n modifiedData={modifiedData}\n onChangeConditions={handleChangeConditions}\n onChangeSimpleCheckbox={handleChangeSimpleCheckbox}\n onChangeParentCheckbox={handleChangeParentCheckbox}\n onChangeCollectionTypeLeftActionRowCheckbox={\n handleChangeCollectionTypeLeftActionRowCheckbox\n }\n onChangeCollectionTypeGlobalActionCheckbox={handleChangeCollectionTypeGlobalActionCheckbox}\n userPermissions={userPermissions}\n >\n <Tabs.Root defaultValue={TAB_LABELS[0].id}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'Settings.permissions.users.tabs.label',\n defaultMessage: 'Tabs Permissions',\n })}\n >\n {TAB_LABELS.map((tabLabel) => (\n <Tabs.Trigger key={tabLabel.id} value={tabLabel.id}>\n {formatMessage({ id: tabLabel.labelId, defaultMessage: tabLabel.defaultMessage })}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n <Tabs.Content value={TAB_LABELS[0].id}>\n <ContentTypes\n layout={layouts.collectionTypes}\n kind=\"collectionTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[1].id}>\n <ContentTypes\n layout={layouts.singleTypes}\n kind=\"singleTypes\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[2].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.plugins}\n kind=\"plugins\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n <Tabs.Content value={TAB_LABELS[3].id}>\n <PluginsAndSettingsPermissions\n layout={layouts.settings}\n kind=\"settings\"\n isFormDisabled={isFormDisabled}\n />\n </Tabs.Content>\n </Tabs.Root>\n </PermissionsDataManagerProvider>\n );\n }\n);\n\n/* -------------------------------------------------------------------------------------------------\n * reducer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PermissionForms {\n collectionTypes: Form;\n plugins: Record<string, Form>;\n settings: Record<string, Form>;\n singleTypes: Form;\n}\n\ninterface State {\n initialData: PermissionForms;\n modifiedData: PermissionForms;\n layouts: {\n collectionTypes: PermissonContracts.ContentPermission;\n singleTypes: PermissonContracts.ContentPermission;\n plugins: GenericLayout<PermissonContracts.PluginPermission>[];\n settings: GenericLayout<PermissonContracts.SettingPermission>[];\n };\n}\n\nconst initialState = {\n initialData: {},\n modifiedData: {},\n layouts: {},\n};\n\ninterface OnChangeCollectionTypeGlobalActionCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX';\n collectionTypeKind: keyof PermissionForms;\n actionId: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeCollectionTypeRowLeftCheckboxAction {\n type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';\n pathToCollectionType: string;\n propertyName: string;\n rowName: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeConditionsAction {\n type: 'ON_CHANGE_CONDITIONS';\n conditions: Record<string, ConditionForm>;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeSimpleCheckboxAction {\n type: 'ON_CHANGE_SIMPLE_CHECKBOX';\n keys: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface OnChangeToggleParentCheckbox {\n type: 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX';\n keys: string;\n value: boolean;\n userPermissions?: AuthPermission[];\n}\n\ninterface ResetFormAction {\n type: 'RESET_FORM';\n}\n\ninterface SetFormAfterSubmitAction {\n type: 'SET_FORM_AFTER_SUBMIT';\n}\n\ntype Action =\n | OnChangeCollectionTypeGlobalActionCheckboxAction\n | OnChangeCollectionTypeRowLeftCheckboxAction\n | OnChangeConditionsAction\n | OnChangeSimpleCheckboxAction\n | OnChangeToggleParentCheckbox\n | ResetFormAction\n | SetFormAfterSubmitAction;\n\nconst buildInheritedConditionsFromExisting = (\n existing: unknown,\n enabledConditions: string[] = []\n): Record<string, boolean> | undefined => {\n if (!isObject(existing)) {\n return undefined;\n }\n\n const enabled = new Set(enabledConditions);\n\n return Object.keys(existing).reduce<Record<string, boolean>>((acc, key) => {\n acc[key] = enabled.has(key);\n\n return acc;\n }, {});\n};\n\nconst inheritConditionsAtPath = (\n data: unknown,\n pathToActionObject: string[],\n actionId: string,\n subject: string | null,\n userPermissions: AuthPermission[] | undefined\n) => {\n if (userPermissions === undefined) {\n return;\n }\n\n const matchingPermission = userPermissions.find(\n (perm) => perm.action === actionId && perm.subject === subject\n );\n\n if (matchingPermission === undefined) {\n return;\n }\n\n const obj = data as Record<string, unknown>;\n const existingConditions = get(obj, [...pathToActionObject, 'conditions'], undefined);\n const nextConditions = buildInheritedConditionsFromExisting(\n existingConditions,\n matchingPermission.conditions ?? []\n );\n\n if (nextConditions) {\n set(obj, [...pathToActionObject, 'conditions'], nextConditions);\n }\n};\n\n/* eslint-disable consistent-return */\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_CHANGE_COLLECTION_TYPE_GLOBAL_ACTION_CHECKBOX': {\n const { collectionTypeKind, actionId, value, userPermissions } = action;\n const pathToData = ['modifiedData', collectionTypeKind];\n\n Object.keys(get(state, pathToData)).forEach((collectionType) => {\n const collectionTypeActionData = get(\n state,\n [...pathToData, collectionType, actionId],\n undefined\n );\n\n if (collectionTypeActionData) {\n const subjectPermissionChecker = createFieldPermissionChecker(\n actionId,\n collectionType,\n userPermissions\n );\n\n let updatedValues = updateValuesWithPermissions(\n collectionTypeActionData,\n value,\n subjectPermissionChecker\n );\n\n if (value === true) {\n inheritConditionsAtPath(updatedValues, [], actionId, collectionType, userPermissions);\n }\n\n if (value === false && updatedValues.conditions !== undefined) {\n // @ts-expect-error – TODO: type better\n const updatedConditions = updateValues(updatedValues.conditions, false);\n\n updatedValues = { ...updatedValues, conditions: updatedConditions };\n }\n\n set(draftState, [...pathToData, collectionType, actionId], updatedValues);\n }\n });\n\n break;\n }\n case 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX': {\n const { pathToCollectionType, propertyName, rowName, value, userPermissions } = action;\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const pathToModifiedDataCollectionType = pathToCollectionType.split('..');\n\n const objToUpdate = get(nextModifiedDataState, pathToModifiedDataCollectionType, {});\n\n const subject =\n pathToModifiedDataCollectionType[pathToModifiedDataCollectionType.length - 1];\n\n Object.keys(objToUpdate).forEach((actionId) => {\n if (has(objToUpdate[actionId], `properties.${propertyName}`)) {\n const objValue = get(objToUpdate, [actionId, 'properties', propertyName, rowName]);\n const pathToDataToSet = [\n ...pathToModifiedDataCollectionType,\n actionId,\n 'properties',\n propertyName,\n rowName,\n ];\n\n if (!isObject(objValue)) {\n if (userPermissions !== undefined && propertyName === 'fields') {\n const hasPermission = userPermissions.some((perm) => {\n if (perm.action !== actionId || perm.subject !== subject) return false;\n\n const fields = perm.properties?.fields;\n if (fields === null || fields === undefined) return true;\n if (Array.isArray(fields) && fields.length === 0) return false;\n\n return (\n Array.isArray(fields) &&\n fields.some((f) => rowName === f || rowName.startsWith(`${f}.`))\n );\n });\n\n if (hasPermission === true) {\n set(nextModifiedDataState, pathToDataToSet, value);\n if (value === true) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n } else {\n set(nextModifiedDataState, pathToDataToSet, value);\n if (value === true && userPermissions !== undefined) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n } else {\n const permissionChecker =\n userPermissions !== undefined && propertyName === 'fields'\n ? (path: string[]) => {\n const fullFieldPath = [rowName, ...path].join('.');\n const checker = createFieldPermissionChecker(\n actionId,\n subject,\n userPermissions\n );\n return checker === undefined\n ? true\n : checker(['properties', 'fields', fullFieldPath]);\n }\n : undefined;\n\n const updatedValue = updateValuesWithPermissions(objValue, value, permissionChecker);\n\n set(nextModifiedDataState, pathToDataToSet, updatedValue);\n if (value === true && userPermissions !== undefined) {\n inheritConditionsAtPath(\n nextModifiedDataState,\n [...pathToModifiedDataCollectionType, actionId],\n actionId,\n subject,\n userPermissions\n );\n }\n }\n }\n });\n\n if (value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n case 'ON_CHANGE_CONDITIONS': {\n // In App Token context, conditions are inherited from the user's permissions and must be read-only.\n if (action.userPermissions !== undefined) {\n break;\n }\n\n Object.entries(action.conditions).forEach((array) => {\n const [stringPathToData, conditionsToUpdate] = array;\n\n set(\n draftState,\n ['modifiedData', ...stringPathToData.split('..'), 'conditions'],\n conditionsToUpdate\n );\n });\n\n break;\n }\n case 'ON_CHANGE_SIMPLE_CHECKBOX': {\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n\n const keysArray = action.keys.split('..');\n set(nextModifiedDataState, [...keysArray], action.value);\n\n // In App Token context, when enabling a permission, inherit the user's conditions.\n if (action.value === true && action.userPermissions !== undefined) {\n const propertiesIndex = keysArray.indexOf('properties');\n\n if (propertiesIndex > 0) {\n const actionId = keysArray[propertiesIndex - 1];\n const root = keysArray[0];\n\n if ((root === 'collectionTypes' || root === 'singleTypes') && keysArray.length >= 3) {\n const subject = keysArray[1];\n inheritConditionsAtPath(\n nextModifiedDataState,\n [root, subject, actionId],\n actionId,\n subject,\n action.userPermissions\n );\n } else {\n const pathToActionObject = keysArray.slice(0, propertiesIndex);\n inheritConditionsAtPath(\n nextModifiedDataState,\n pathToActionObject,\n actionId,\n null,\n action.userPermissions\n );\n }\n }\n }\n\n if (action.value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, 'modifiedData', nextModifiedDataState);\n\n break;\n }\n /*\n * Here the idea is to retrieve a specific value of the modifiedObject\n * then update all the boolean values of the retrieved one\n * and update the drafState.\n *\n * For instance in order to enable create action for all the fields and locales\n * of the restaurant content type we need to :\n * 1. Retrieve the modifiedData.collectionTypes.restaurant.create object\n * 2. Toggle all the end boolean values to the desired one\n * 3. Update the draftState\n *\n * Since the case works well in order to update what we called \"parent\" checkbox. We can\n * reuse the action when we need to toggle change all the values that depends on this one.\n * A parent checkbox is a checkbox which value is not a boolean but depends on its children ones, therefore,\n * a parent checkbox does not have a represented value in the draftState, they are just helpers.\n *\n * Given the following data:\n *\n * const data = {\n * restaurant: {\n * create: {\n * fields: { name: true },\n * locales: { en: false }\n * }\n * }\n * }\n *\n * The value of the create checkbox for the restaurant will be ƒalse since not all its children have\n * truthy values and in order to set its value to true when need to have all the values of its children set to true.\n *\n * Similarly, we can reuse the logic for the components attributes\n *\n */\n case 'ON_CHANGE_TOGGLE_PARENT_CHECKBOX': {\n const { keys, value, userPermissions } = action;\n const pathToValue = keys.split('..');\n let nextModifiedDataState = cloneDeep(state.modifiedData);\n const oldValues = get(nextModifiedDataState, pathToValue, {});\n\n const root = pathToValue[0];\n // Plugin & setting permissions are stored with `subject: null` and their real\n // action id is the full `plugin::`/`admin::` leaf segment (not the UI subcategory).\n // For those, let the checker derive the action from each leaf path (subject stays null).\n const isPluginOrSetting = root === 'plugins' || root === 'settings';\n\n let actionId: string | undefined;\n let subject: string | null | undefined;\n\n if (isPluginOrSetting) {\n subject = null;\n } else {\n if (pathToValue.length >= 2) {\n subject = pathToValue[1];\n }\n\n if (pathToValue.length >= 3) {\n actionId = pathToValue[2];\n }\n }\n\n const permissionChecker = createDynamicActionPermissionChecker(\n subject,\n actionId,\n userPermissions\n );\n\n const updatedValues = updateValuesWithPermissions(oldValues, value, permissionChecker);\n\n // In App Token context, when enabling, inherit conditions from the user's permissions.\n if (value === true && userPermissions !== undefined) {\n const subjectForLookup =\n root === 'collectionTypes' || root === 'singleTypes' ? (subject ?? null) : null;\n\n if (actionId !== undefined && subjectForLookup !== null) {\n inheritConditionsAtPath(updatedValues, [], actionId, subjectForLookup, userPermissions);\n } else if (isObject(updatedValues)) {\n const updatedValuesObj = updatedValues as Record<string, unknown>;\n\n Object.keys(updatedValuesObj).forEach((key) => {\n const maybeActionObj = updatedValuesObj[key];\n if (isObject(maybeActionObj)) {\n inheritConditionsAtPath(maybeActionObj, [], key, subjectForLookup, userPermissions);\n }\n });\n }\n }\n\n set(nextModifiedDataState, pathToValue, updatedValues);\n\n if (value === false) {\n // @ts-expect-error – TODO: type better\n nextModifiedDataState = updateConditionsToFalse(nextModifiedDataState);\n }\n\n set(draftState, ['modifiedData'], nextModifiedDataState);\n\n break;\n }\n case 'RESET_FORM': {\n draftState.modifiedData = state.initialData;\n break;\n }\n case 'SET_FORM_AFTER_SUBMIT': {\n draftState.initialData = state.modifiedData;\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * restoreNullLocalesIfUnchanged\n * Extracted at module level to avoid nesting arrow functions more than 4 levels deep inside\n * the useImperativeHandle → getPermissions → map chain.\n * -----------------------------------------------------------------------------------------------*/\n\ntype SentPermission = Omit<Permission, 'id' | 'createdAt' | 'updatedAt' | 'actionParameters'>;\n\nconst restoreNullLocalesIfUnchanged = (\n perm: SentPermission,\n originalPermissions: Permission[],\n initialData: PermissionForms,\n modifiedData: PermissionForms\n): SentPermission => {\n if (!perm.subject) return perm;\n\n const original = originalPermissions.find(\n (p) => p.action === perm.action && p.subject === perm.subject\n );\n\n // null means \"all locales\" in legacy DBs — preserve it if the user hasn't changed anything\n if (original?.properties?.locales !== null) return perm;\n\n const kind =\n perm.subject in modifiedData.collectionTypes\n ? ('collectionTypes' as const)\n : perm.subject in modifiedData.singleTypes\n ? ('singleTypes' as const)\n : null;\n if (!kind) return perm;\n\n const initialActionForm = initialData[kind]?.[perm.subject]?.[perm.action];\n const modifiedActionForm = modifiedData[kind]?.[perm.subject]?.[perm.action];\n\n if (!initialActionForm || !modifiedActionForm) return perm;\n\n const initialLocaleEntry = (initialActionForm.properties as PropertyChildForm)['locales'];\n const modifiedLocaleEntry = (modifiedActionForm.properties as PropertyChildForm)['locales'];\n\n if (\n !initialLocaleEntry ||\n typeof initialLocaleEntry === 'boolean' ||\n !modifiedLocaleEntry ||\n typeof modifiedLocaleEntry === 'boolean'\n ) {\n return perm;\n }\n\n const localesUnchanged =\n Object.keys(initialLocaleEntry).length === Object.keys(modifiedLocaleEntry).length &&\n Object.entries(initialLocaleEntry).every(\n ([locale, val]) => modifiedLocaleEntry[locale] === val\n );\n\n if (!localesUnchanged) return perm;\n\n return { ...perm, properties: { ...perm.properties, locales: null } };\n};\n\n/* -------------------------------------------------------------------------------------------------\n * init (reducer)\n * -----------------------------------------------------------------------------------------------*/\n\nconst init = (\n layout: PermissionsProps['layout'],\n permissions: PermissionsProps['permissions']\n): State => {\n const {\n conditions,\n sections: { collectionTypes, singleTypes, plugins, settings },\n } = layout;\n\n const layouts = {\n collectionTypes,\n singleTypes,\n plugins: formatLayout(plugins, 'plugin'),\n settings: formatLayout(settings, 'category'),\n };\n\n const defaultForm = {\n collectionTypes: createDefaultCTForm(collectionTypes, conditions, permissions),\n singleTypes: createDefaultCTForm(singleTypes, conditions, permissions),\n plugins: createDefaultForm(layouts.plugins, conditions, permissions),\n settings: createDefaultForm(layouts.settings, conditions, permissions),\n };\n\n return {\n initialData: defaultForm,\n modifiedData: defaultForm,\n layouts,\n };\n};\n\nexport { Permissions };\nexport type {\n State,\n OnChangeCollectionTypeRowLeftCheckboxAction,\n OnChangeConditionsAction,\n OnChangeCollectionTypeGlobalActionCheckboxAction,\n};\n"],"names":["TAB_LABELS","labelId","defaultMessage","id","Permissions","React","forwardRef","layout","isFormDisabled","onLocaleValidationChange","permissions","userPermissions","api","initialData","layouts","modifiedData","dispatch","useReducer","reducer","initialState","init","formatMessage","useIntl","useEffect","hasLocaleValidationErrors","useImperativeHandle","getPermissions","collectionTypesDiff","difference","collectionTypes","singleTypesDiff","singleTypes","contentTypesDiff","didUpdateConditions","isEmpty","Object","values","some","permission","permissionValue","has","permissionsToSend","formatPermissionsForAPI","map","perm","restoreNullLocalesIfUnchanged","resetForm","type","setFormAfterSubmit","handleChangeCollectionTypeLeftActionRowCheckbox","useCallback","pathToCollectionType","propertyName","rowName","value","handleChangeCollectionTypeGlobalActionCheckbox","collectionTypeKind","actionId","handleChangeConditions","conditions","handleChangeSimpleCheckbox","target","name","keys","handleChangeParentCheckbox","_jsx","PermissionsDataManagerProvider","availableConditions","onChangeConditions","onChangeSimpleCheckbox","onChangeParentCheckbox","onChangeCollectionTypeLeftActionRowCheckbox","onChangeCollectionTypeGlobalActionCheckbox","_jsxs","Tabs","Root","defaultValue","List","aria-label","tabLabel","Trigger","Content","ContentTypes","kind","PluginsAndSettingsPermissions","plugins","settings","buildInheritedConditionsFromExisting","existing","enabledConditions","isObject","undefined","enabled","Set","reduce","acc","key","inheritConditionsAtPath","data","pathToActionObject","subject","matchingPermission","find","action","obj","existingConditions","get","nextConditions","set","state","produce","draftState","pathToData","forEach","collectionType","collectionTypeActionData","subjectPermissionChecker","createFieldPermissionChecker","updatedValues","updateValuesWithPermissions","updatedConditions","updateValues","nextModifiedDataState","cloneDeep","pathToModifiedDataCollectionType","split","objToUpdate","length","objValue","pathToDataToSet","hasPermission","fields","properties","Array","isArray","f","startsWith","permissionChecker","path","fullFieldPath","join","checker","updatedValue","updateConditionsToFalse","entries","array","stringPathToData","conditionsToUpdate","keysArray","propertiesIndex","indexOf","root","slice","pathToValue","oldValues","isPluginOrSetting","createDynamicActionPermissionChecker","subjectForLookup","updatedValuesObj","maybeActionObj","originalPermissions","original","p","locales","initialActionForm","modifiedActionForm","initialLocaleEntry","modifiedLocaleEntry","localesUnchanged","every","locale","val","sections","formatLayout","defaultForm","createDefaultCTForm","createDefaultForm"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditView.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Formik, Form, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate, useMatch } from 'react-router-dom';\nimport * as yup from 'yup';\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 { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useCreateTransferTokenMutation,\n useGetTransferTokenQuery,\n useUpdateTransferTokenMutation,\n} from '../../../../services/transferTokens';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TransferToken,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required.id),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required.id),\n permissions: yup.string().required(translatedErrors.required.id),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const { state: locationState } = useLocation();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions);\n const match = useMatch('/settings/transfer-tokens/:id');\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error } = useGetTransferTokenQuery(id!, {\n skip: isCreating || transferToken !== null || !id,\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 setTransferToken(data);\n }\n }, [data]);\n\n const [createToken] = useCreateTransferTokenMutation();\n const [updateToken] = useUpdateTransferTokenMutation();\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan:\n body?.lifespan && body.lifespan !== '0'\n ? parseInt(body.lifespan.toString(), 10)\n : null,\n permissions,\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 setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n navigate(`../transfer-tokens/${res.data.id.toString()}`, {\n replace: true,\n state: { transferToken: res.data },\n });\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n permissions,\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 setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan || null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canShowToken={false}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </Layouts.Content>\n </Form>\n );\n }}\n </Formik>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditView />\n </Page.Protect>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={transferToken}\n />\n </Grid.Item>\n <Grid.Item key=\"permissions\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["schema","yup","object","shape","name","string","max","required","translatedErrors","id","description","nullable","lifespan","number","integer","min","defined","permissions","EditView","formatMessage","useIntl","toggleNotification","useNotification","navigate","useNavigate","state","locationState","useLocation","transferToken","setTransferToken","React","useState","trackUsage","useTracking","useTypedSelector","admin_app","settings","allowedActions","canCreate","canUpdate","canRegenerate","useRBAC","match","useMatch","params","isCreating","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","useEffect","tokenType","TRANSFER_TOKEN_TYPE","data","error","useGetTransferTokenQuery","skip","type","message","createToken","useCreateTransferTokenMutation","updateToken","useUpdateTransferTokenMutation","handleSubmit","body","formik","split","isPermissionsTransferPermission","permission","length","res","parseInt","toString","isBaseQueryError","setErrors","defaultMessage","replace","err","canEditInputs","isLoading","_jsx","Page","Loading","_jsxs","Main","Title","Formik","validationSchema","validateOnChange","initialValues","join","enableReinitialize","onSubmit","actions","errors","handleChange","isSubmitting","values","Form","FormHead","title","token","setToken","canShowToken","regenerateUrl","Layouts","Content","Flex","direction","alignItems","gap","Boolean","TokenBox","accessKey","FormTransferTokenContainer","onChange","ProtectedEditView","read","Protect","typeOptions","value","label","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","Grid","Root","Item","col","xs","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","target","options"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditView.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Formik, Form, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate, useMatch } from 'react-router-dom';\nimport * as yup from 'yup';\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 { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useCreateTransferTokenMutation,\n useGetTransferTokenQuery,\n useUpdateTransferTokenMutation,\n} from '../../../../services/transferTokens';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TransferToken,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required.id),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required.id),\n permissions: yup.string().required(translatedErrors.required.id),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const { state: locationState } = useLocation();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions);\n const match = useMatch('/settings/transfer-tokens/:id');\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error } = useGetTransferTokenQuery(id!, {\n skip: isCreating || transferToken !== null || !id,\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 setTransferToken(data);\n }\n }, [data]);\n\n const [createToken] = useCreateTransferTokenMutation();\n const [updateToken] = useUpdateTransferTokenMutation();\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan:\n body?.lifespan && body.lifespan !== '0'\n ? parseInt(body.lifespan.toString(), 10)\n : null,\n permissions,\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 setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n navigate(`../transfer-tokens/${res.data.id.toString()}`, {\n replace: true,\n state: { transferToken: res.data },\n });\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n permissions,\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 setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\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\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan || null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canShowToken={false}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </Layouts.Content>\n </Form>\n );\n }}\n </Formik>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditView />\n </Page.Protect>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={transferToken}\n />\n </Grid.Item>\n <Grid.Item key=\"permissions\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["schema","yup","object","shape","name","string","max","required","translatedErrors","id","description","nullable","lifespan","number","integer","min","defined","permissions","EditView","formatMessage","useIntl","toggleNotification","useNotification","navigate","useNavigate","state","locationState","useLocation","transferToken","setTransferToken","React","useState","trackUsage","useTracking","useTypedSelector","admin_app","settings","allowedActions","canCreate","canUpdate","canRegenerate","useRBAC","match","useMatch","params","isCreating","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","useEffect","tokenType","TRANSFER_TOKEN_TYPE","data","error","useGetTransferTokenQuery","skip","type","message","createToken","useCreateTransferTokenMutation","updateToken","useUpdateTransferTokenMutation","handleSubmit","body","formik","split","isPermissionsTransferPermission","permission","length","res","parseInt","toString","isBaseQueryError","setErrors","defaultMessage","replace","canEditInputs","isLoading","_jsx","Page","Loading","_jsxs","Main","Title","Formik","validationSchema","validateOnChange","initialValues","join","enableReinitialize","onSubmit","actions","errors","handleChange","isSubmitting","values","Form","FormHead","title","token","setToken","canShowToken","regenerateUrl","Layouts","Content","Flex","direction","alignItems","gap","Boolean","TokenBox","accessKey","FormTransferTokenContainer","onChange","ProtectedEditView","read","Protect","typeOptions","value","label","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","Grid","Root","Item","col","xs","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","target","options"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EditView.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Formik, Form, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate, useMatch } from 'react-router-dom';\nimport * as yup from 'yup';\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 { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useCreateTransferTokenMutation,\n useGetTransferTokenQuery,\n useUpdateTransferTokenMutation,\n} from '../../../../services/transferTokens';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TransferToken,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required.id),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required.id),\n permissions: yup.string().required(translatedErrors.required.id),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const { state: locationState } = useLocation();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions);\n const match = useMatch('/settings/transfer-tokens/:id');\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error } = useGetTransferTokenQuery(id!, {\n skip: isCreating || transferToken !== null || !id,\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 setTransferToken(data);\n }\n }, [data]);\n\n const [createToken] = useCreateTransferTokenMutation();\n const [updateToken] = useUpdateTransferTokenMutation();\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan:\n body?.lifespan && body.lifespan !== '0'\n ? parseInt(body.lifespan.toString(), 10)\n : null,\n permissions,\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 setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n navigate(`../transfer-tokens/${res.data.id.toString()}`, {\n replace: true,\n state: { transferToken: res.data },\n });\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n permissions,\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 setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan || null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canShowToken={false}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </Layouts.Content>\n </Form>\n );\n }}\n </Formik>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditView />\n </Page.Protect>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={transferToken}\n />\n </Grid.Item>\n <Grid.Item key=\"permissions\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["schema","yup","object","shape","name","string","max","required","translatedErrors","id","description","nullable","lifespan","number","integer","min","defined","permissions","EditView","formatMessage","useIntl","toggleNotification","useNotification","navigate","useNavigate","state","locationState","useLocation","transferToken","setTransferToken","React","useState","trackUsage","useTracking","useTypedSelector","admin_app","settings","allowedActions","canCreate","canUpdate","canRegenerate","useRBAC","match","useMatch","params","isCreating","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","useEffect","tokenType","TRANSFER_TOKEN_TYPE","data","error","useGetTransferTokenQuery","skip","type","message","createToken","useCreateTransferTokenMutation","updateToken","useUpdateTransferTokenMutation","handleSubmit","body","formik","split","isPermissionsTransferPermission","permission","length","res","parseInt","toString","isBaseQueryError","setErrors","defaultMessage","replace","err","canEditInputs","isLoading","_jsx","Page","Loading","_jsxs","Main","Title","Formik","validationSchema","validateOnChange","initialValues","join","enableReinitialize","onSubmit","actions","errors","handleChange","isSubmitting","values","Form","FormHead","title","token","setToken","canShowToken","regenerateUrl","Layouts","Content","Flex","direction","alignItems","gap","Boolean","TokenBox","accessKey","FormTransferTokenContainer","onChange","ProtectedEditView","read","Protect","typeOptions","value","label","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","Grid","Root","Item","col","xs","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","target","options"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EditView.mjs","sources":["../../../../../../../../admin/src/pages/Settings/pages/TransferTokens/EditView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Flex, Grid, Typography } from '@strapi/design-system';\nimport { Formik, Form, FormikErrors, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useNavigate, useMatch } from 'react-router-dom';\nimport * as yup from 'yup';\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 { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useCreateTransferTokenMutation,\n useGetTransferTokenQuery,\n useUpdateTransferTokenMutation,\n} from '../../../../services/transferTokens';\nimport { isBaseQueryError } from '../../../../utils/baseQuery';\nimport { translatedErrors } from '../../../../utils/translatedErrors';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { FormHead } from '../../components/Tokens/FormHead';\nimport { LifeSpanInput } from '../../components/Tokens/LifeSpanInput';\nimport { TokenBox } from '../../components/Tokens/TokenBox';\nimport { TokenDescription } from '../../components/Tokens/TokenDescription';\nimport { TokenName } from '../../components/Tokens/TokenName';\nimport { TokenTypeSelect } from '../../components/Tokens/TokenTypeSelect';\n\nimport type {\n TransferToken,\n SanitizedTransferToken,\n} from '../../../../../../shared/contracts/transfer';\n\nconst schema = yup.object().shape({\n name: yup.string().max(100).required(translatedErrors.required.id),\n description: yup.string().nullable(),\n lifespan: yup.number().integer().min(0).nullable().defined(translatedErrors.required.id),\n permissions: yup.string().required(translatedErrors.required.id),\n});\n\n/* -------------------------------------------------------------------------------------------------\n * EditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst EditView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const navigate = useNavigate();\n const { state: locationState } = useLocation();\n const [transferToken, setTransferToken] = React.useState<\n TransferToken | SanitizedTransferToken | null\n >(\n locationState && 'accessKey' in locationState.transferToken\n ? {\n ...locationState.transferToken,\n }\n : null\n );\n const { trackUsage } = useTracking();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions);\n const match = useMatch('/settings/transfer-tokens/:id');\n\n const id = match?.params?.id;\n const isCreating = id === 'create';\n\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error } = useGetTransferTokenQuery(id!, {\n skip: isCreating || transferToken !== null || !id,\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 setTransferToken(data);\n }\n }, [data]);\n\n const [createToken] = useCreateTransferTokenMutation();\n const [updateToken] = useUpdateTransferTokenMutation();\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n const permissions = body.permissions.split('-');\n\n const isPermissionsTransferPermission = (\n permission: string[]\n ): permission is Array<'push' | 'pull'> => {\n if (permission.length === 1) {\n return permission[0] === 'push' || permission[0] === 'pull';\n }\n\n return permission[0] === 'push' && permission[1] === 'pull';\n };\n\n // this type-guard is necessary to satisfy the type for `permissions` in the request body,\n // because String.split returns stringp[]\n if (isPermissionsTransferPermission(permissions)) {\n try {\n if (isCreating) {\n const res = await createToken({\n ...body,\n // lifespan must be \"null\" for unlimited (0 would mean instantly expired and isn't accepted)\n lifespan:\n body?.lifespan && body.lifespan !== '0'\n ? parseInt(body.lifespan.toString(), 10)\n : null,\n permissions,\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 setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokencreated',\n defaultMessage: 'Transfer Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n\n navigate(`../transfer-tokens/${res.data.id.toString()}`, {\n replace: true,\n state: { transferToken: res.data },\n });\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n permissions,\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 setTransferToken(res.data);\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.transfertokenedited',\n defaultMessage: 'Transfer Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n type: transferToken?.permissions,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\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\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const isLoading = !isCreating && !transferToken;\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <Formik\n validationSchema={schema}\n validateOnChange={false}\n initialValues={\n {\n name: transferToken?.name || '',\n description: transferToken?.description || '',\n lifespan: transferToken?.lifespan || null,\n /**\n * We need to cast the permissions to satisfy the type for `permissions`\n * in the request body incase we don't have a transferToken and instead\n * use an empty string.\n */\n permissions: (transferToken?.permissions.join('-') ?? '') as FormValues['permissions'],\n } satisfies FormValues\n }\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => {\n return (\n <Form>\n <FormHead\n title={{\n id: 'Settings.transferTokens.createPage.title',\n defaultMessage: 'TokenCreate Transfer Token',\n }}\n token={transferToken}\n setToken={setTransferToken}\n canShowToken={false}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerate}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/transfer/tokens/\"\n />\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {transferToken &&\n Boolean(transferToken?.name) &&\n 'accessKey' in transferToken && (\n <TokenBox token={transferToken.accessKey} tokenType={TRANSFER_TOKEN_TYPE} />\n )}\n <FormTransferTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n transferToken={transferToken}\n />\n </Flex>\n </Layouts.Content>\n </Form>\n );\n }}\n </Formik>\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedEditView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditView />\n </Page.Protect>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * FormTransferTokenContainer\n * -----------------------------------------------------------------------------------------------*/\n\ninterface FormValues extends Pick<TransferToken, 'description' | 'name' | 'lifespan'> {\n permissions: Extract<TransferToken['permissions'][number], string>;\n}\n\ninterface FormTransferTokenContainerProps {\n errors: FormikErrors<FormValues>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values: FormValues;\n isCreating: boolean;\n transferToken: Partial<TransferToken> | null;\n}\n\nconst FormTransferTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values,\n transferToken = {},\n}: FormTransferTokenContainerProps) => {\n const { formatMessage } = useIntl();\n\n const typeOptions = [\n {\n value: 'push',\n label: {\n id: 'Settings.transferTokens.types.push',\n defaultMessage: 'Push',\n },\n },\n {\n value: 'pull',\n label: {\n id: 'Settings.transferTokens.types.pull',\n defaultMessage: 'Pull',\n },\n },\n {\n value: 'push-pull',\n label: {\n id: 'Settings.transferTokens.types.push-pull',\n defaultMessage: 'Full Access',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={transferToken}\n />\n </Grid.Item>\n <Grid.Item key=\"permissions\" col={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenTypeSelect\n name=\"permissions\"\n value={values['permissions']}\n error={errors['permissions']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n // @ts-expect-error – DS Select passes number | string, will be fixed in V2\n onChange={(value: string) => {\n onChange({ target: { name: 'permissions', value } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n\nexport { EditView, ProtectedEditView };\n"],"names":["schema","yup","object","shape","name","string","max","required","translatedErrors","id","description","nullable","lifespan","number","integer","min","defined","permissions","EditView","formatMessage","useIntl","toggleNotification","useNotification","navigate","useNavigate","state","locationState","useLocation","transferToken","setTransferToken","React","useState","trackUsage","useTracking","useTypedSelector","admin_app","settings","allowedActions","canCreate","canUpdate","canRegenerate","useRBAC","match","useMatch","params","isCreating","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","useEffect","tokenType","TRANSFER_TOKEN_TYPE","data","error","useGetTransferTokenQuery","skip","type","message","createToken","useCreateTransferTokenMutation","updateToken","useUpdateTransferTokenMutation","handleSubmit","body","formik","split","isPermissionsTransferPermission","permission","length","res","parseInt","toString","isBaseQueryError","setErrors","defaultMessage","replace","canEditInputs","isLoading","_jsx","Page","Loading","_jsxs","Main","Title","Formik","validationSchema","validateOnChange","initialValues","join","enableReinitialize","onSubmit","actions","errors","handleChange","isSubmitting","values","Form","FormHead","title","token","setToken","canShowToken","regenerateUrl","Layouts","Content","Flex","direction","alignItems","gap","Boolean","TokenBox","accessKey","FormTransferTokenContainer","onChange","ProtectedEditView","read","Protect","typeOptions","value","label","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","Typography","variant","tag","Grid","Root","Item","col","xs","TokenName","TokenDescription","LifeSpanInput","TokenTypeSelect","target","options"],"mappings":"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"}
|