@strapi/admin 5.57.0 → 5.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (190) hide show
  1. package/dist/admin/admin/src/components/FormInputs/Boolean.js +3 -2
  2. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  3. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  4. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  5. package/dist/admin/admin/src/constants.js +14 -0
  6. package/dist/admin/admin/src/constants.js.map +1 -1
  7. package/dist/admin/admin/src/constants.mjs +14 -0
  8. package/dist/admin/admin/src/constants.mjs.map +1 -1
  9. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +6 -12
  10. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  11. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs +6 -12
  12. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
  13. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +10 -2
  14. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  15. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +10 -2
  16. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  17. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +6 -56
  18. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  19. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +6 -56
  20. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  21. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js +217 -0
  22. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js.map +1 -0
  23. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs +195 -0
  24. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs.map +1 -0
  25. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js +185 -0
  26. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -0
  27. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs +162 -0
  28. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -0
  29. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js +342 -0
  30. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js.map +1 -0
  31. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs +320 -0
  32. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs.map +1 -0
  33. package/dist/admin/admin/src/services/admin.js +11 -1
  34. package/dist/admin/admin/src/services/admin.js.map +1 -1
  35. package/dist/admin/admin/src/services/admin.mjs +11 -2
  36. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  37. package/dist/admin/admin/src/translations/en.json.js +71 -4
  38. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  39. package/dist/admin/admin/src/translations/en.json.mjs +71 -4
  40. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  41. package/dist/admin/admin/src/utils/browserStrapi.js +1 -1
  42. package/dist/admin/admin/src/utils/browserStrapi.js.map +1 -1
  43. package/dist/admin/admin/src/utils/browserStrapi.mjs +1 -1
  44. package/dist/admin/admin/src/utils/browserStrapi.mjs.map +1 -1
  45. package/dist/admin/admin/src/utils/getFetchClient.js +24 -0
  46. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  47. package/dist/admin/admin/src/utils/getFetchClient.mjs +24 -1
  48. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  49. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +52 -22
  50. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  51. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +53 -23
  52. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  53. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +16 -29
  54. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  55. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +18 -31
  56. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  57. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js +473 -0
  58. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js.map +1 -0
  59. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs +471 -0
  60. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs.map +1 -0
  61. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +2 -0
  62. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  63. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +2 -0
  64. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  65. package/dist/admin/index.js +1 -0
  66. package/dist/admin/index.js.map +1 -1
  67. package/dist/admin/index.mjs +1 -1
  68. package/dist/admin/shared/utils/get-project-type.js +49 -0
  69. package/dist/admin/shared/utils/get-project-type.js.map +1 -0
  70. package/dist/admin/shared/utils/get-project-type.mjs +46 -0
  71. package/dist/admin/shared/utils/get-project-type.mjs.map +1 -0
  72. package/dist/admin/src/constants.d.ts +10 -0
  73. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.d.ts +1 -1
  74. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.d.ts +12 -0
  75. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.d.ts +14 -0
  76. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.d.ts +2 -0
  77. package/dist/admin/src/services/admin.d.ts +2 -2
  78. package/dist/admin/src/types/permissions.d.ts +1 -0
  79. package/dist/admin/src/utils/getFetchClient.d.ts +25 -0
  80. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +29 -0
  81. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.d.ts +6 -1
  82. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.d.ts +2 -0
  83. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +2 -0
  84. package/dist/ee/server/src/audit-logs/entitlements.d.ts +8 -0
  85. package/dist/ee/server/src/audit-logs/entitlements.d.ts.map +1 -0
  86. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +16 -0
  87. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  88. package/dist/ee/server/src/controllers/admin.d.ts +36 -10
  89. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  90. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
  91. package/dist/ee/server/src/controllers/index.d.ts +36 -10
  92. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  93. package/dist/ee/server/src/index.d.ts +36 -10
  94. package/dist/ee/server/src/index.d.ts.map +1 -1
  95. package/dist/server/ee/server/src/audit-logs/entitlements.js +25 -0
  96. package/dist/server/ee/server/src/audit-logs/entitlements.js.map +1 -0
  97. package/dist/server/ee/server/src/audit-logs/entitlements.mjs +23 -0
  98. package/dist/server/ee/server/src/audit-logs/entitlements.mjs.map +1 -0
  99. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +20 -8
  100. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  101. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +19 -9
  102. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  103. package/dist/server/ee/server/src/controllers/admin.js +76 -3
  104. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  105. package/dist/server/ee/server/src/controllers/admin.mjs +76 -3
  106. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  107. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +28 -10
  108. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  109. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +28 -10
  110. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  111. package/dist/server/ee/server/src/index.js +2 -0
  112. package/dist/server/ee/server/src/index.js.map +1 -1
  113. package/dist/server/ee/server/src/index.mjs +2 -0
  114. package/dist/server/ee/server/src/index.mjs.map +1 -1
  115. package/dist/server/server/src/audit-logs/auth.js +72 -0
  116. package/dist/server/server/src/audit-logs/auth.js.map +1 -0
  117. package/dist/server/server/src/audit-logs/auth.mjs +67 -0
  118. package/dist/server/server/src/audit-logs/auth.mjs.map +1 -0
  119. package/dist/server/server/src/config/admin-actions.js +7 -0
  120. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  121. package/dist/server/server/src/config/admin-actions.mjs +7 -0
  122. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  123. package/dist/server/server/src/controllers/admin.js +6 -0
  124. package/dist/server/server/src/controllers/admin.js.map +1 -1
  125. package/dist/server/server/src/controllers/admin.mjs +6 -0
  126. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  127. package/dist/server/server/src/controllers/authentication.js +34 -8
  128. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  129. package/dist/server/server/src/controllers/authentication.mjs +34 -8
  130. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  131. package/dist/server/server/src/register.js +4 -0
  132. package/dist/server/server/src/register.js.map +1 -1
  133. package/dist/server/server/src/register.mjs +4 -0
  134. package/dist/server/server/src/register.mjs.map +1 -1
  135. package/dist/server/server/src/routes/admin.js +18 -0
  136. package/dist/server/server/src/routes/admin.js.map +1 -1
  137. package/dist/server/server/src/routes/admin.mjs +18 -0
  138. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  139. package/dist/server/server/src/services/auth.js +4 -2
  140. package/dist/server/server/src/services/auth.js.map +1 -1
  141. package/dist/server/server/src/services/auth.mjs +4 -3
  142. package/dist/server/server/src/services/auth.mjs.map +1 -1
  143. package/dist/server/server/src/services/debug-dump.js +173 -0
  144. package/dist/server/server/src/services/debug-dump.js.map +1 -0
  145. package/dist/server/server/src/services/debug-dump.mjs +166 -0
  146. package/dist/server/server/src/services/debug-dump.mjs.map +1 -0
  147. package/dist/server/server/src/services/index.js +3 -1
  148. package/dist/server/server/src/services/index.js.map +1 -1
  149. package/dist/server/server/src/services/index.mjs +3 -1
  150. package/dist/server/server/src/services/index.mjs.map +1 -1
  151. package/dist/server/server/src/utils/debug-dump/redact.js +197 -0
  152. package/dist/server/server/src/utils/debug-dump/redact.js.map +1 -0
  153. package/dist/server/server/src/utils/debug-dump/redact.mjs +194 -0
  154. package/dist/server/server/src/utils/debug-dump/redact.mjs.map +1 -0
  155. package/dist/server/shared/utils/get-project-type.js +49 -0
  156. package/dist/server/shared/utils/get-project-type.js.map +1 -0
  157. package/dist/server/shared/utils/get-project-type.mjs +46 -0
  158. package/dist/server/shared/utils/get-project-type.mjs.map +1 -0
  159. package/dist/server/src/audit-logs/auth.d.ts +72 -0
  160. package/dist/server/src/audit-logs/auth.d.ts.map +1 -0
  161. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  162. package/dist/server/src/controllers/admin.d.ts +3 -0
  163. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  164. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  165. package/dist/server/src/controllers/index.d.ts +3 -0
  166. package/dist/server/src/controllers/index.d.ts.map +1 -1
  167. package/dist/server/src/index.d.ts +8 -0
  168. package/dist/server/src/index.d.ts.map +1 -1
  169. package/dist/server/src/register.d.ts.map +1 -1
  170. package/dist/server/src/routes/admin.d.ts.map +1 -1
  171. package/dist/server/src/services/auth.d.ts +6 -0
  172. package/dist/server/src/services/auth.d.ts.map +1 -1
  173. package/dist/server/src/services/debug-dump.d.ts +9 -0
  174. package/dist/server/src/services/debug-dump.d.ts.map +1 -0
  175. package/dist/server/src/services/index.d.ts +5 -0
  176. package/dist/server/src/services/index.d.ts.map +1 -1
  177. package/dist/server/src/utils/debug-dump/redact.d.ts +8 -0
  178. package/dist/server/src/utils/debug-dump/redact.d.ts.map +1 -0
  179. package/dist/shared/contracts/admin.d.ts +106 -0
  180. package/dist/shared/contracts/admin.d.ts.map +1 -1
  181. package/dist/shared/utils/__tests__/get-project-type.test.d.ts +1 -0
  182. package/dist/shared/utils/__tests__/get-project-type.test.d.ts.map +1 -0
  183. package/dist/shared/utils/get-project-type.d.ts +37 -0
  184. package/dist/shared/utils/get-project-type.d.ts.map +1 -0
  185. package/package.json +8 -8
  186. package/dist/admin/admin/src/utils/getProjectType.js +0 -22
  187. package/dist/admin/admin/src/utils/getProjectType.js.map +0 -1
  188. package/dist/admin/admin/src/utils/getProjectType.mjs +0 -20
  189. package/dist/admin/admin/src/utils/getProjectType.mjs.map +0 -1
  190. package/dist/admin/src/utils/getProjectType.d.ts +0 -16
@@ -15,7 +15,8 @@ const BooleanInput = /*#__PURE__*/ React.forwardRef(({ name, required, label, hi
15
15
  const handleClear = ()=>{
16
16
  field.onChange(name, null);
17
17
  };
18
- const showClearButton = !required && field.value !== null && !disabled;
18
+ const isUnset = field.value === null || field.value === undefined;
19
+ const showClearButton = !required && !isUnset && !disabled;
19
20
  return /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
20
21
  error: field.error,
21
22
  name: name,
@@ -43,7 +44,7 @@ const BooleanInput = /*#__PURE__*/ React.forwardRef(({ name, required, label, hi
43
44
  }),
44
45
  /*#__PURE__*/ jsxRuntime.jsx(designSystem.Toggle, {
45
46
  ref: composedRefs,
46
- checked: field.value === null ? null : field.value || false,
47
+ checked: isUnset ? null : field.value || false,
47
48
  offLabel: formatMessage({
48
49
  id: 'app.components.ToggleCheckbox.off-label',
49
50
  defaultMessage: 'False'
@@ -1 +1 @@
1
- {"version":3,"file":"Boolean.js","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field, Flex, TextButton } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, disabled, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const handleClear = () => {\n field.onChange(name, null);\n };\n\n const showClearButton = !required && field.value !== null && !disabled;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Flex justifyContent=\"space-between\" alignItems=\"flex-end\" gap={2}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n {showClearButton && (\n <TextButton onClick={handleClear}>\n {formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n </TextButton>\n )}\n </Flex>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n name={name}\n disabled={disabled}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","disabled","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","handleClear","onChange","showClearButton","value","_jsxs","Field","Root","error","maxWidth","Flex","justifyContent","alignItems","gap","_jsx","Label","action","TextButton","onClick","id","defaultMessage","Toggle","checked","offLabel","onLabel","Hint","Error","MemoizedBooleanInput","memo"],"mappings":";;;;;;;;;AAUA,MAAMA,6BAAeC,gBAAAA,CACnB,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;IACjE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,aAAAA,CAAyBX,IAAAA,CAAAA;AACvC,IAAA,MAAMY,WAAWC,qCAAAA,CAAqCb,IAAAA,CAAAA;IAEtD,MAAMc,YAAAA,GAAeC,6BAAgBR,GAAAA,EAAKK,QAAAA,CAAAA;AAE1C,IAAA,MAAMI,WAAAA,GAAc,IAAA;QAClBN,KAAAA,CAAMO,QAAQ,CAACjB,IAAAA,EAAM,IAAA,CAAA;AACvB,IAAA,CAAA;AAEA,IAAA,MAAMkB,kBAAkB,CAACjB,QAAAA,IAAYS,MAAMS,KAAK,KAAK,QAAQ,CAACd,QAAAA;IAE9D,qBACEe,eAAA,CAACC,mBAAMC,IAAI,EAAA;AAACC,QAAAA,KAAAA,EAAOb,MAAMa,KAAK;QAAEvB,IAAAA,EAAMA,IAAAA;QAAMG,IAAAA,EAAMA,IAAAA;QAAMF,QAAAA,EAAUA,QAAAA;QAAUuB,QAAAA,EAAS,OAAA;;0BACnFJ,eAAA,CAACK,iBAAAA,EAAAA;gBAAKC,cAAAA,EAAe,eAAA;gBAAgBC,UAAAA,EAAW,UAAA;gBAAWC,GAAAA,EAAK,CAAA;;AAC9D,kCAAAC,cAAA,CAACR,mBAAMS,KAAK,EAAA;wBAACC,MAAAA,EAAQ3B,WAAAA;AAAcF,wBAAAA,QAAAA,EAAAA;;AAClCgB,oBAAAA,eAAAA,kBACCW,cAAA,CAACG,uBAAAA,EAAAA;wBAAWC,OAAAA,EAASjB,WAAAA;kCAClBR,aAAAA,CAAc;4BAAE0B,EAAAA,EAAI,YAAA;4BAAcC,cAAAA,EAAgB;AAAQ,yBAAA;;;;0BAIjEN,cAAA,CAACO,mBAAAA,EAAAA;gBACC7B,GAAAA,EAAKO,YAAAA;AACLuB,gBAAAA,OAAAA,EAAS3B,MAAMS,KAAK,KAAK,OAAO,IAAA,GAAOT,KAAAA,CAAMS,KAAK,IAAI,KAAA;AACtDmB,gBAAAA,QAAAA,EAAU9B,aAAAA,CAAc;oBACtB0B,EAAAA,EAAI,yCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAI,gBAAAA,OAAAA,EAAS/B,aAAAA,CAAc;oBACrB0B,EAAAA,EAAI,wCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAlB,gBAAAA,QAAAA,EAAUP,MAAMO,QAAQ;gBACxBjB,IAAAA,EAAMA,IAAAA;gBACNK,QAAAA,EAAUA,QAAAA;AACT,gBAAA,GAAGC;;AAEN,0BAAAuB,cAAA,CAACR,mBAAMmB,IAAI,EAAA,EAAA,CAAA;AACX,0BAAAX,cAAA,CAACR,mBAAMoB,KAAK,EAAA,EAAA;;;AAGlB,CAAA,CAAA;AAGF,MAAMC,qCAAuBC,UAAAA,CAAK7C,YAAAA;;;;"}
1
+ {"version":3,"file":"Boolean.js","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field, Flex, TextButton } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, disabled, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const handleClear = () => {\n field.onChange(name, null);\n };\n\n const isUnset = field.value === null || field.value === undefined;\n\n const showClearButton = !required && !isUnset && !disabled;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Flex justifyContent=\"space-between\" alignItems=\"flex-end\" gap={2}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n {showClearButton && (\n <TextButton onClick={handleClear}>\n {formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n </TextButton>\n )}\n </Flex>\n <Toggle\n ref={composedRefs}\n checked={isUnset ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n name={name}\n disabled={disabled}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","disabled","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","handleClear","onChange","isUnset","value","undefined","showClearButton","_jsxs","Field","Root","error","maxWidth","Flex","justifyContent","alignItems","gap","_jsx","Label","action","TextButton","onClick","id","defaultMessage","Toggle","checked","offLabel","onLabel","Hint","Error","MemoizedBooleanInput","memo"],"mappings":";;;;;;;;;AAUA,MAAMA,6BAAeC,gBAAAA,CACnB,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;IACjE,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,aAAAA,CAAyBX,IAAAA,CAAAA;AACvC,IAAA,MAAMY,WAAWC,qCAAAA,CAAqCb,IAAAA,CAAAA;IAEtD,MAAMc,YAAAA,GAAeC,6BAAgBR,GAAAA,EAAKK,QAAAA,CAAAA;AAE1C,IAAA,MAAMI,WAAAA,GAAc,IAAA;QAClBN,KAAAA,CAAMO,QAAQ,CAACjB,IAAAA,EAAM,IAAA,CAAA;AACvB,IAAA,CAAA;AAEA,IAAA,MAAMkB,UAAUR,KAAAA,CAAMS,KAAK,KAAK,IAAA,IAAQT,KAAAA,CAAMS,KAAK,KAAKC,SAAAA;AAExD,IAAA,MAAMC,eAAAA,GAAkB,CAACpB,QAAAA,IAAY,CAACiB,WAAW,CAACb,QAAAA;IAElD,qBACEiB,eAAA,CAACC,mBAAMC,IAAI,EAAA;AAACC,QAAAA,KAAAA,EAAOf,MAAMe,KAAK;QAAEzB,IAAAA,EAAMA,IAAAA;QAAMG,IAAAA,EAAMA,IAAAA;QAAMF,QAAAA,EAAUA,QAAAA;QAAUyB,QAAAA,EAAS,OAAA;;0BACnFJ,eAAA,CAACK,iBAAAA,EAAAA;gBAAKC,cAAAA,EAAe,eAAA;gBAAgBC,UAAAA,EAAW,UAAA;gBAAWC,GAAAA,EAAK,CAAA;;AAC9D,kCAAAC,cAAA,CAACR,mBAAMS,KAAK,EAAA;wBAACC,MAAAA,EAAQ7B,WAAAA;AAAcF,wBAAAA,QAAAA,EAAAA;;AAClCmB,oBAAAA,eAAAA,kBACCU,cAAA,CAACG,uBAAAA,EAAAA;wBAAWC,OAAAA,EAASnB,WAAAA;kCAClBR,aAAAA,CAAc;4BAAE4B,EAAAA,EAAI,YAAA;4BAAcC,cAAAA,EAAgB;AAAQ,yBAAA;;;;0BAIjEN,cAAA,CAACO,mBAAAA,EAAAA;gBACC/B,GAAAA,EAAKO,YAAAA;AACLyB,gBAAAA,OAAAA,EAASrB,OAAAA,GAAU,IAAA,GAAOR,KAAAA,CAAMS,KAAK,IAAI,KAAA;AACzCqB,gBAAAA,QAAAA,EAAUhC,aAAAA,CAAc;oBACtB4B,EAAAA,EAAI,yCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAI,gBAAAA,OAAAA,EAASjC,aAAAA,CAAc;oBACrB4B,EAAAA,EAAI,wCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACApB,gBAAAA,QAAAA,EAAUP,MAAMO,QAAQ;gBACxBjB,IAAAA,EAAMA,IAAAA;gBACNK,QAAAA,EAAUA,QAAAA;AACT,gBAAA,GAAGC;;AAEN,0BAAAyB,cAAA,CAACR,mBAAMmB,IAAI,EAAA,EAAA,CAAA;AACX,0BAAAX,cAAA,CAACR,mBAAMoB,KAAK,EAAA,EAAA;;;AAGlB,CAAA,CAAA;AAGF,MAAMC,qCAAuBC,UAAAA,CAAK/C,YAAAA;;;;"}
@@ -13,7 +13,8 @@ const BooleanInput = /*#__PURE__*/ forwardRef(({ name, required, label, hint, la
13
13
  const handleClear = ()=>{
14
14
  field.onChange(name, null);
15
15
  };
16
- const showClearButton = !required && field.value !== null && !disabled;
16
+ const isUnset = field.value === null || field.value === undefined;
17
+ const showClearButton = !required && !isUnset && !disabled;
17
18
  return /*#__PURE__*/ jsxs(Field.Root, {
18
19
  error: field.error,
19
20
  name: name,
@@ -41,7 +42,7 @@ const BooleanInput = /*#__PURE__*/ forwardRef(({ name, required, label, hint, la
41
42
  }),
42
43
  /*#__PURE__*/ jsx(Toggle, {
43
44
  ref: composedRefs,
44
- checked: field.value === null ? null : field.value || false,
45
+ checked: isUnset ? null : field.value || false,
45
46
  offLabel: formatMessage({
46
47
  id: 'app.components.ToggleCheckbox.off-label',
47
48
  defaultMessage: 'False'
@@ -1 +1 @@
1
- {"version":3,"file":"Boolean.mjs","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field, Flex, TextButton } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, disabled, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const handleClear = () => {\n field.onChange(name, null);\n };\n\n const showClearButton = !required && field.value !== null && !disabled;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Flex justifyContent=\"space-between\" alignItems=\"flex-end\" gap={2}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n {showClearButton && (\n <TextButton onClick={handleClear}>\n {formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n </TextButton>\n )}\n </Flex>\n <Toggle\n ref={composedRefs}\n checked={field.value === null ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n name={name}\n disabled={disabled}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","disabled","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","handleClear","onChange","showClearButton","value","_jsxs","Field","Root","error","maxWidth","Flex","justifyContent","alignItems","gap","_jsx","Label","action","TextButton","onClick","id","defaultMessage","Toggle","checked","offLabel","onLabel","Hint","Error","MemoizedBooleanInput","memo"],"mappings":";;;;;;;AAUA,MAAMA,6BAAeC,UAAAA,CACnB,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;IACjE,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,QAAAA,CAAyBX,IAAAA,CAAAA;AACvC,IAAA,MAAMY,WAAWC,kBAAAA,CAAqCb,IAAAA,CAAAA;IAEtD,MAAMc,YAAAA,GAAeC,gBAAgBR,GAAAA,EAAKK,QAAAA,CAAAA;AAE1C,IAAA,MAAMI,WAAAA,GAAc,IAAA;QAClBN,KAAAA,CAAMO,QAAQ,CAACjB,IAAAA,EAAM,IAAA,CAAA;AACvB,IAAA,CAAA;AAEA,IAAA,MAAMkB,kBAAkB,CAACjB,QAAAA,IAAYS,MAAMS,KAAK,KAAK,QAAQ,CAACd,QAAAA;IAE9D,qBACEe,IAAA,CAACC,MAAMC,IAAI,EAAA;AAACC,QAAAA,KAAAA,EAAOb,MAAMa,KAAK;QAAEvB,IAAAA,EAAMA,IAAAA;QAAMG,IAAAA,EAAMA,IAAAA;QAAMF,QAAAA,EAAUA,QAAAA;QAAUuB,QAAAA,EAAS,OAAA;;0BACnFJ,IAAA,CAACK,IAAAA,EAAAA;gBAAKC,cAAAA,EAAe,eAAA;gBAAgBC,UAAAA,EAAW,UAAA;gBAAWC,GAAAA,EAAK,CAAA;;AAC9D,kCAAAC,GAAA,CAACR,MAAMS,KAAK,EAAA;wBAACC,MAAAA,EAAQ3B,WAAAA;AAAcF,wBAAAA,QAAAA,EAAAA;;AAClCgB,oBAAAA,eAAAA,kBACCW,GAAA,CAACG,UAAAA,EAAAA;wBAAWC,OAAAA,EAASjB,WAAAA;kCAClBR,aAAAA,CAAc;4BAAE0B,EAAAA,EAAI,YAAA;4BAAcC,cAAAA,EAAgB;AAAQ,yBAAA;;;;0BAIjEN,GAAA,CAACO,MAAAA,EAAAA;gBACC7B,GAAAA,EAAKO,YAAAA;AACLuB,gBAAAA,OAAAA,EAAS3B,MAAMS,KAAK,KAAK,OAAO,IAAA,GAAOT,KAAAA,CAAMS,KAAK,IAAI,KAAA;AACtDmB,gBAAAA,QAAAA,EAAU9B,aAAAA,CAAc;oBACtB0B,EAAAA,EAAI,yCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAI,gBAAAA,OAAAA,EAAS/B,aAAAA,CAAc;oBACrB0B,EAAAA,EAAI,wCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAlB,gBAAAA,QAAAA,EAAUP,MAAMO,QAAQ;gBACxBjB,IAAAA,EAAMA,IAAAA;gBACNK,QAAAA,EAAUA,QAAAA;AACT,gBAAA,GAAGC;;AAEN,0BAAAuB,GAAA,CAACR,MAAMmB,IAAI,EAAA,EAAA,CAAA;AACX,0BAAAX,GAAA,CAACR,MAAMoB,KAAK,EAAA,EAAA;;;AAGlB,CAAA,CAAA;AAGF,MAAMC,qCAAuBC,IAAAA,CAAK7C,YAAAA;;;;"}
1
+ {"version":3,"file":"Boolean.mjs","sources":["../../../../../../admin/src/components/FormInputs/Boolean.tsx"],"sourcesContent":["import { forwardRef, memo } from 'react';\n\nimport { Toggle, useComposedRefs, Field, Flex, TextButton } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { useFocusInputField } from '../../hooks/useFocusInputField';\nimport { useField } from '../Form';\n\nimport { InputProps } from './types';\n\nconst BooleanInput = forwardRef<HTMLInputElement, InputProps>(\n ({ name, required, label, hint, labelAction, disabled, ...props }, ref) => {\n const { formatMessage } = useIntl();\n const field = useField<boolean | null>(name);\n const fieldRef = useFocusInputField<HTMLInputElement>(name);\n\n const composedRefs = useComposedRefs(ref, fieldRef);\n\n const handleClear = () => {\n field.onChange(name, null);\n };\n\n const isUnset = field.value === null || field.value === undefined;\n\n const showClearButton = !required && !isUnset && !disabled;\n\n return (\n <Field.Root error={field.error} name={name} hint={hint} required={required} maxWidth=\"320px\">\n <Flex justifyContent=\"space-between\" alignItems=\"flex-end\" gap={2}>\n <Field.Label action={labelAction}>{label}</Field.Label>\n {showClearButton && (\n <TextButton onClick={handleClear}>\n {formatMessage({ id: 'clearLabel', defaultMessage: 'Clear' })}\n </TextButton>\n )}\n </Flex>\n <Toggle\n ref={composedRefs}\n checked={isUnset ? null : field.value || false}\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'False',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'True',\n })}\n onChange={field.onChange}\n name={name}\n disabled={disabled}\n {...props}\n />\n <Field.Hint />\n <Field.Error />\n </Field.Root>\n );\n }\n);\n\nconst MemoizedBooleanInput = memo(BooleanInput);\n\nexport { MemoizedBooleanInput as BooleanInput };\n"],"names":["BooleanInput","forwardRef","name","required","label","hint","labelAction","disabled","props","ref","formatMessage","useIntl","field","useField","fieldRef","useFocusInputField","composedRefs","useComposedRefs","handleClear","onChange","isUnset","value","undefined","showClearButton","_jsxs","Field","Root","error","maxWidth","Flex","justifyContent","alignItems","gap","_jsx","Label","action","TextButton","onClick","id","defaultMessage","Toggle","checked","offLabel","onLabel","Hint","Error","MemoizedBooleanInput","memo"],"mappings":";;;;;;;AAUA,MAAMA,6BAAeC,UAAAA,CACnB,CAAC,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,KAAK,EAAEC,IAAI,EAAEC,WAAW,EAAEC,QAAQ,EAAE,GAAGC,OAAO,EAAEC,GAAAA,GAAAA;IACjE,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,QAAQC,QAAAA,CAAyBX,IAAAA,CAAAA;AACvC,IAAA,MAAMY,WAAWC,kBAAAA,CAAqCb,IAAAA,CAAAA;IAEtD,MAAMc,YAAAA,GAAeC,gBAAgBR,GAAAA,EAAKK,QAAAA,CAAAA;AAE1C,IAAA,MAAMI,WAAAA,GAAc,IAAA;QAClBN,KAAAA,CAAMO,QAAQ,CAACjB,IAAAA,EAAM,IAAA,CAAA;AACvB,IAAA,CAAA;AAEA,IAAA,MAAMkB,UAAUR,KAAAA,CAAMS,KAAK,KAAK,IAAA,IAAQT,KAAAA,CAAMS,KAAK,KAAKC,SAAAA;AAExD,IAAA,MAAMC,eAAAA,GAAkB,CAACpB,QAAAA,IAAY,CAACiB,WAAW,CAACb,QAAAA;IAElD,qBACEiB,IAAA,CAACC,MAAMC,IAAI,EAAA;AAACC,QAAAA,KAAAA,EAAOf,MAAMe,KAAK;QAAEzB,IAAAA,EAAMA,IAAAA;QAAMG,IAAAA,EAAMA,IAAAA;QAAMF,QAAAA,EAAUA,QAAAA;QAAUyB,QAAAA,EAAS,OAAA;;0BACnFJ,IAAA,CAACK,IAAAA,EAAAA;gBAAKC,cAAAA,EAAe,eAAA;gBAAgBC,UAAAA,EAAW,UAAA;gBAAWC,GAAAA,EAAK,CAAA;;AAC9D,kCAAAC,GAAA,CAACR,MAAMS,KAAK,EAAA;wBAACC,MAAAA,EAAQ7B,WAAAA;AAAcF,wBAAAA,QAAAA,EAAAA;;AAClCmB,oBAAAA,eAAAA,kBACCU,GAAA,CAACG,UAAAA,EAAAA;wBAAWC,OAAAA,EAASnB,WAAAA;kCAClBR,aAAAA,CAAc;4BAAE4B,EAAAA,EAAI,YAAA;4BAAcC,cAAAA,EAAgB;AAAQ,yBAAA;;;;0BAIjEN,GAAA,CAACO,MAAAA,EAAAA;gBACC/B,GAAAA,EAAKO,YAAAA;AACLyB,gBAAAA,OAAAA,EAASrB,OAAAA,GAAU,IAAA,GAAOR,KAAAA,CAAMS,KAAK,IAAI,KAAA;AACzCqB,gBAAAA,QAAAA,EAAUhC,aAAAA,CAAc;oBACtB4B,EAAAA,EAAI,yCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAI,gBAAAA,OAAAA,EAASjC,aAAAA,CAAc;oBACrB4B,EAAAA,EAAI,wCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACApB,gBAAAA,QAAAA,EAAUP,MAAMO,QAAQ;gBACxBjB,IAAAA,EAAMA,IAAAA;gBACNK,QAAAA,EAAUA,QAAAA;AACT,gBAAA,GAAGC;;AAEN,0BAAAyB,GAAA,CAACR,MAAMmB,IAAI,EAAA,EAAA,CAAA;AACX,0BAAAX,GAAA,CAACR,MAAMoB,KAAK,EAAA,EAAA;;;AAGlB,CAAA,CAAA;AAGF,MAAMC,qCAAuBC,IAAAA,CAAK/C,YAAAA;;;;"}
@@ -306,6 +306,20 @@ const ADMIN_PERMISSIONS_CE = {
306
306
  }
307
307
  ]
308
308
  },
309
+ 'debug-dump': {
310
+ main: [
311
+ {
312
+ action: 'admin::debug-dump.read',
313
+ subject: null
314
+ }
315
+ ],
316
+ read: [
317
+ {
318
+ action: 'admin::debug-dump.read',
319
+ subject: null
320
+ }
321
+ ]
322
+ },
309
323
  plugins: {
310
324
  main: [
311
325
  {
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../admin/src/constants.ts"],"sourcesContent":["import { PermissionMap } from './types/permissions';\n\nimport type { StrapiAppSettingLink } from './core/apis/router';\n\nexport const ADMIN_PERMISSIONS_CE = {\n contentManager: {\n main: [],\n collectionTypesConfigurations: [\n {\n action: 'plugin::content-manager.collection-types.configure-view',\n subject: null,\n },\n ],\n componentsConfigurations: [\n {\n action: 'plugin::content-manager.components.configure-layout',\n subject: null,\n },\n ],\n singleTypesConfigurations: [\n {\n action: 'plugin::content-manager.single-types.configure-view',\n subject: null,\n },\n ],\n },\n marketplace: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n settings: {\n roles: {\n main: [\n { action: 'admin::roles.create', subject: null },\n { action: 'admin::roles.update', subject: null },\n { action: 'admin::roles.read', subject: null },\n { action: 'admin::roles.delete', subject: null },\n ],\n create: [{ action: 'admin::roles.create', subject: null }],\n delete: [{ action: 'admin::roles.delete', subject: null }],\n read: [{ action: 'admin::roles.read', subject: null }],\n update: [{ action: 'admin::roles.update', subject: null }],\n },\n users: {\n main: [\n { action: 'admin::users.create', subject: null },\n { action: 'admin::users.read', subject: null },\n { action: 'admin::users.update', subject: null },\n { action: 'admin::users.delete', subject: null },\n ],\n create: [{ action: 'admin::users.create', subject: null }],\n delete: [{ action: 'admin::users.delete', subject: null }],\n read: [{ action: 'admin::users.read', subject: null }],\n update: [{ action: 'admin::users.update', subject: null }],\n },\n webhooks: {\n main: [\n { action: 'admin::webhooks.create', subject: null },\n { action: 'admin::webhooks.read', subject: null },\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n create: [{ action: 'admin::webhooks.create', subject: null }],\n delete: [{ action: 'admin::webhooks.delete', subject: null }],\n read: [\n { action: 'admin::webhooks.read', subject: null },\n // NOTE: We need to check with the API\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n update: [{ action: 'admin::webhooks.update', subject: null }],\n },\n 'admin-tokens': {\n main: [{ action: 'admin::admin-tokens.access', subject: null }],\n create: [{ action: 'admin::admin-tokens.create', subject: null }],\n delete: [{ action: 'admin::admin-tokens.delete', subject: null }],\n read: [{ action: 'admin::admin-tokens.read', subject: null }],\n update: [{ action: 'admin::admin-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::admin-tokens.regenerate', subject: null }],\n },\n 'api-tokens': {\n main: [{ action: 'admin::api-tokens.access', subject: null }],\n create: [{ action: 'admin::api-tokens.create', subject: null }],\n delete: [{ action: 'admin::api-tokens.delete', subject: null }],\n read: [{ action: 'admin::api-tokens.read', subject: null }],\n update: [{ action: 'admin::api-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::api-tokens.regenerate', subject: null }],\n },\n 'transfer-tokens': {\n main: [{ action: 'admin::transfer.tokens.access', subject: null }],\n create: [{ action: 'admin::transfer.tokens.create', subject: null }],\n delete: [{ action: 'admin::transfer.tokens.delete', subject: null }],\n read: [{ action: 'admin::transfer.tokens.read', subject: null }],\n update: [{ action: 'admin::transfer.tokens.update', subject: null }],\n regenerate: [{ action: 'admin::transfer.tokens.regenerate', subject: null }],\n },\n 'project-settings': {\n read: [{ action: 'admin::project-settings.read', subject: null }],\n update: [{ action: 'admin::project-settings.update', subject: null }],\n },\n plugins: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n },\n} satisfies Partial<PermissionMap>;\n\nexport const HOOKS = {\n /**\n * Hook that allows to mutate the displayed headers of the list view table\n * @constant\n * @type {string}\n */\n INJECT_COLUMN_IN_TABLE: 'Admin/CM/pages/ListView/inject-column-in-table',\n\n /**\n * Hook that allows to mutate the displayed filters of the list view\n * @constant\n * @type {string}\n */\n INJECT_LIST_VIEW_FILTERS: 'Admin/CM/pages/ListView/inject-in-filters',\n\n /**\n * Hook that allows to mutate the CM's collection types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_COLLECTION_TYPES_LINKS: 'Admin/CM/pages/App/mutate-collection-types-links',\n\n /**\n * Hook that allows to mutate the CM's edit view layout\n * @constant\n * @type {string}\n */\n MUTATE_EDIT_VIEW_LAYOUT: 'Admin/CM/pages/EditView/mutate-edit-view-layout',\n\n /**\n * Hook that allows to mutate the CM's single types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_SINGLE_TYPES_LINKS: 'Admin/CM/pages/App/mutate-single-types-links',\n};\n\nexport interface SettingsMenuLink\n extends Omit<StrapiAppSettingLink, 'Component' | 'permissions' | 'licenseOnly'> {\n licenseOnly?: boolean;\n}\n\nexport type SettingsMenu = {\n admin: SettingsMenuLink[];\n global: SettingsMenuLink[];\n};\n\nexport const SETTINGS_LINKS_CE = (): SettingsMenu => ({\n global: [\n {\n intlLabel: { id: 'Settings.application.title', defaultMessage: 'Overview' },\n to: '/settings/application-infos',\n id: '000-application-infos',\n },\n {\n intlLabel: { id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' },\n to: '/settings/webhooks',\n id: 'webhooks',\n },\n {\n intlLabel: { id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' },\n to: '/settings/api-tokens?sort=name:ASC',\n id: 'api-tokens',\n },\n {\n intlLabel: { id: 'Settings.transferTokens.title', defaultMessage: 'Transfer Tokens' },\n to: '/settings/transfer-tokens?sort=name:ASC',\n id: 'transfer-tokens',\n },\n {\n intlLabel: {\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n },\n to: '/settings/list-plugins',\n id: 'plugins',\n },\n // If the Enterprise/Cloud feature is not enabled and if the config doesn't disable it, we promote the Enterprise/Cloud feature by displaying them in the settings menu.\n // Disable this by adding \"promoteEE: false\" to your `./config/admin.js` file\n ...(!window.strapi.features.isEnabled(window.strapi.features.SSO) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/purchase-single-sign-on',\n id: 'sso-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ...(!window.strapi.features.isEnabled('cms-content-history') && window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.content-history.title', defaultMessage: 'Content History' },\n to: '/settings/purchase-content-history',\n id: 'content-history-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ],\n\n admin: [\n {\n intlLabel: { id: 'global.roles', defaultMessage: 'Roles' },\n to: '/settings/roles',\n id: 'roles',\n },\n {\n intlLabel: { id: 'global.users', defaultMessage: 'Users' },\n // Init the search params directly\n to: '/settings/users?pageSize=10&page=1&sort=firstname',\n id: 'users',\n },\n {\n intlLabel: { id: 'Settings.adminTokens.title', defaultMessage: 'Admin Tokens' },\n to: '/settings/admin-tokens',\n id: 'admin-tokens',\n },\n ...(!window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/purchase-audit-logs',\n id: 'auditLogs-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ],\n});\n"],"names":["ADMIN_PERMISSIONS_CE","contentManager","main","collectionTypesConfigurations","action","subject","componentsConfigurations","singleTypesConfigurations","marketplace","read","settings","roles","create","delete","update","users","webhooks","regenerate","plugins","HOOKS","INJECT_COLUMN_IN_TABLE","INJECT_LIST_VIEW_FILTERS","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","SETTINGS_LINKS_CE","global","intlLabel","id","defaultMessage","to","window","strapi","features","isEnabled","SSO","flags","promoteEE","licenseOnly","admin","AUDIT_LOGS"],"mappings":"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"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../admin/src/constants.ts"],"sourcesContent":["import { PermissionMap } from './types/permissions';\n\nimport type { StrapiAppSettingLink } from './core/apis/router';\n\nexport const ADMIN_PERMISSIONS_CE = {\n contentManager: {\n main: [],\n collectionTypesConfigurations: [\n {\n action: 'plugin::content-manager.collection-types.configure-view',\n subject: null,\n },\n ],\n componentsConfigurations: [\n {\n action: 'plugin::content-manager.components.configure-layout',\n subject: null,\n },\n ],\n singleTypesConfigurations: [\n {\n action: 'plugin::content-manager.single-types.configure-view',\n subject: null,\n },\n ],\n },\n marketplace: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n settings: {\n roles: {\n main: [\n { action: 'admin::roles.create', subject: null },\n { action: 'admin::roles.update', subject: null },\n { action: 'admin::roles.read', subject: null },\n { action: 'admin::roles.delete', subject: null },\n ],\n create: [{ action: 'admin::roles.create', subject: null }],\n delete: [{ action: 'admin::roles.delete', subject: null }],\n read: [{ action: 'admin::roles.read', subject: null }],\n update: [{ action: 'admin::roles.update', subject: null }],\n },\n users: {\n main: [\n { action: 'admin::users.create', subject: null },\n { action: 'admin::users.read', subject: null },\n { action: 'admin::users.update', subject: null },\n { action: 'admin::users.delete', subject: null },\n ],\n create: [{ action: 'admin::users.create', subject: null }],\n delete: [{ action: 'admin::users.delete', subject: null }],\n read: [{ action: 'admin::users.read', subject: null }],\n update: [{ action: 'admin::users.update', subject: null }],\n },\n webhooks: {\n main: [\n { action: 'admin::webhooks.create', subject: null },\n { action: 'admin::webhooks.read', subject: null },\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n create: [{ action: 'admin::webhooks.create', subject: null }],\n delete: [{ action: 'admin::webhooks.delete', subject: null }],\n read: [\n { action: 'admin::webhooks.read', subject: null },\n // NOTE: We need to check with the API\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n update: [{ action: 'admin::webhooks.update', subject: null }],\n },\n 'admin-tokens': {\n main: [{ action: 'admin::admin-tokens.access', subject: null }],\n create: [{ action: 'admin::admin-tokens.create', subject: null }],\n delete: [{ action: 'admin::admin-tokens.delete', subject: null }],\n read: [{ action: 'admin::admin-tokens.read', subject: null }],\n update: [{ action: 'admin::admin-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::admin-tokens.regenerate', subject: null }],\n },\n 'api-tokens': {\n main: [{ action: 'admin::api-tokens.access', subject: null }],\n create: [{ action: 'admin::api-tokens.create', subject: null }],\n delete: [{ action: 'admin::api-tokens.delete', subject: null }],\n read: [{ action: 'admin::api-tokens.read', subject: null }],\n update: [{ action: 'admin::api-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::api-tokens.regenerate', subject: null }],\n },\n 'transfer-tokens': {\n main: [{ action: 'admin::transfer.tokens.access', subject: null }],\n create: [{ action: 'admin::transfer.tokens.create', subject: null }],\n delete: [{ action: 'admin::transfer.tokens.delete', subject: null }],\n read: [{ action: 'admin::transfer.tokens.read', subject: null }],\n update: [{ action: 'admin::transfer.tokens.update', subject: null }],\n regenerate: [{ action: 'admin::transfer.tokens.regenerate', subject: null }],\n },\n 'project-settings': {\n read: [{ action: 'admin::project-settings.read', subject: null }],\n update: [{ action: 'admin::project-settings.update', subject: null }],\n },\n 'debug-dump': {\n main: [{ action: 'admin::debug-dump.read', subject: null }],\n read: [{ action: 'admin::debug-dump.read', subject: null }],\n },\n plugins: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n },\n} satisfies Partial<PermissionMap>;\n\nexport const HOOKS = {\n /**\n * Hook that allows to mutate the displayed headers of the list view table\n * @constant\n * @type {string}\n */\n INJECT_COLUMN_IN_TABLE: 'Admin/CM/pages/ListView/inject-column-in-table',\n\n /**\n * Hook that allows to mutate the displayed filters of the list view\n * @constant\n * @type {string}\n */\n INJECT_LIST_VIEW_FILTERS: 'Admin/CM/pages/ListView/inject-in-filters',\n\n /**\n * Hook that allows to mutate the CM's collection types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_COLLECTION_TYPES_LINKS: 'Admin/CM/pages/App/mutate-collection-types-links',\n\n /**\n * Hook that allows to mutate the CM's edit view layout\n * @constant\n * @type {string}\n */\n MUTATE_EDIT_VIEW_LAYOUT: 'Admin/CM/pages/EditView/mutate-edit-view-layout',\n\n /**\n * Hook that allows to mutate the CM's single types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_SINGLE_TYPES_LINKS: 'Admin/CM/pages/App/mutate-single-types-links',\n};\n\nexport interface SettingsMenuLink\n extends Omit<StrapiAppSettingLink, 'Component' | 'permissions' | 'licenseOnly'> {\n licenseOnly?: boolean;\n}\n\nexport type SettingsMenu = {\n admin: SettingsMenuLink[];\n global: SettingsMenuLink[];\n};\n\nexport const SETTINGS_LINKS_CE = (): SettingsMenu => ({\n global: [\n {\n intlLabel: { id: 'Settings.application.title', defaultMessage: 'Overview' },\n to: '/settings/application-infos',\n id: '000-application-infos',\n },\n {\n intlLabel: { id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' },\n to: '/settings/webhooks',\n id: 'webhooks',\n },\n {\n intlLabel: { id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' },\n to: '/settings/api-tokens?sort=name:ASC',\n id: 'api-tokens',\n },\n {\n intlLabel: { id: 'Settings.transferTokens.title', defaultMessage: 'Transfer Tokens' },\n to: '/settings/transfer-tokens?sort=name:ASC',\n id: 'transfer-tokens',\n },\n {\n intlLabel: {\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n },\n to: '/settings/list-plugins',\n id: 'plugins',\n },\n // If the Enterprise/Cloud feature is not enabled and if the config doesn't disable it, we promote the Enterprise/Cloud feature by displaying them in the settings menu.\n // Disable this by adding \"promoteEE: false\" to your `./config/admin.js` file\n ...(!window.strapi.features.isEnabled(window.strapi.features.SSO) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/purchase-single-sign-on',\n id: 'sso-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ...(!window.strapi.features.isEnabled('cms-content-history') && window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.content-history.title', defaultMessage: 'Content History' },\n to: '/settings/purchase-content-history',\n id: 'content-history-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ],\n\n admin: [\n {\n intlLabel: { id: 'global.roles', defaultMessage: 'Roles' },\n to: '/settings/roles',\n id: 'roles',\n },\n {\n intlLabel: { id: 'global.users', defaultMessage: 'Users' },\n // Init the search params directly\n to: '/settings/users?pageSize=10&page=1&sort=firstname',\n id: 'users',\n },\n {\n intlLabel: { id: 'Settings.adminTokens.title', defaultMessage: 'Admin Tokens' },\n to: '/settings/admin-tokens',\n id: 'admin-tokens',\n },\n ...(!window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/purchase-audit-logs',\n id: 'auditLogs-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ],\n});\n"],"names":["ADMIN_PERMISSIONS_CE","contentManager","main","collectionTypesConfigurations","action","subject","componentsConfigurations","singleTypesConfigurations","marketplace","read","settings","roles","create","delete","update","users","webhooks","regenerate","plugins","HOOKS","INJECT_COLUMN_IN_TABLE","INJECT_LIST_VIEW_FILTERS","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","SETTINGS_LINKS_CE","global","intlLabel","id","defaultMessage","to","window","strapi","features","isEnabled","SSO","flags","promoteEE","licenseOnly","admin","AUDIT_LOGS"],"mappings":"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"}
@@ -304,6 +304,20 @@ const ADMIN_PERMISSIONS_CE = {
304
304
  }
305
305
  ]
306
306
  },
307
+ 'debug-dump': {
308
+ main: [
309
+ {
310
+ action: 'admin::debug-dump.read',
311
+ subject: null
312
+ }
313
+ ],
314
+ read: [
315
+ {
316
+ action: 'admin::debug-dump.read',
317
+ subject: null
318
+ }
319
+ ]
320
+ },
307
321
  plugins: {
308
322
  main: [
309
323
  {
@@ -1 +1 @@
1
- {"version":3,"file":"constants.mjs","sources":["../../../../admin/src/constants.ts"],"sourcesContent":["import { PermissionMap } from './types/permissions';\n\nimport type { StrapiAppSettingLink } from './core/apis/router';\n\nexport const ADMIN_PERMISSIONS_CE = {\n contentManager: {\n main: [],\n collectionTypesConfigurations: [\n {\n action: 'plugin::content-manager.collection-types.configure-view',\n subject: null,\n },\n ],\n componentsConfigurations: [\n {\n action: 'plugin::content-manager.components.configure-layout',\n subject: null,\n },\n ],\n singleTypesConfigurations: [\n {\n action: 'plugin::content-manager.single-types.configure-view',\n subject: null,\n },\n ],\n },\n marketplace: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n settings: {\n roles: {\n main: [\n { action: 'admin::roles.create', subject: null },\n { action: 'admin::roles.update', subject: null },\n { action: 'admin::roles.read', subject: null },\n { action: 'admin::roles.delete', subject: null },\n ],\n create: [{ action: 'admin::roles.create', subject: null }],\n delete: [{ action: 'admin::roles.delete', subject: null }],\n read: [{ action: 'admin::roles.read', subject: null }],\n update: [{ action: 'admin::roles.update', subject: null }],\n },\n users: {\n main: [\n { action: 'admin::users.create', subject: null },\n { action: 'admin::users.read', subject: null },\n { action: 'admin::users.update', subject: null },\n { action: 'admin::users.delete', subject: null },\n ],\n create: [{ action: 'admin::users.create', subject: null }],\n delete: [{ action: 'admin::users.delete', subject: null }],\n read: [{ action: 'admin::users.read', subject: null }],\n update: [{ action: 'admin::users.update', subject: null }],\n },\n webhooks: {\n main: [\n { action: 'admin::webhooks.create', subject: null },\n { action: 'admin::webhooks.read', subject: null },\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n create: [{ action: 'admin::webhooks.create', subject: null }],\n delete: [{ action: 'admin::webhooks.delete', subject: null }],\n read: [\n { action: 'admin::webhooks.read', subject: null },\n // NOTE: We need to check with the API\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n update: [{ action: 'admin::webhooks.update', subject: null }],\n },\n 'admin-tokens': {\n main: [{ action: 'admin::admin-tokens.access', subject: null }],\n create: [{ action: 'admin::admin-tokens.create', subject: null }],\n delete: [{ action: 'admin::admin-tokens.delete', subject: null }],\n read: [{ action: 'admin::admin-tokens.read', subject: null }],\n update: [{ action: 'admin::admin-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::admin-tokens.regenerate', subject: null }],\n },\n 'api-tokens': {\n main: [{ action: 'admin::api-tokens.access', subject: null }],\n create: [{ action: 'admin::api-tokens.create', subject: null }],\n delete: [{ action: 'admin::api-tokens.delete', subject: null }],\n read: [{ action: 'admin::api-tokens.read', subject: null }],\n update: [{ action: 'admin::api-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::api-tokens.regenerate', subject: null }],\n },\n 'transfer-tokens': {\n main: [{ action: 'admin::transfer.tokens.access', subject: null }],\n create: [{ action: 'admin::transfer.tokens.create', subject: null }],\n delete: [{ action: 'admin::transfer.tokens.delete', subject: null }],\n read: [{ action: 'admin::transfer.tokens.read', subject: null }],\n update: [{ action: 'admin::transfer.tokens.update', subject: null }],\n regenerate: [{ action: 'admin::transfer.tokens.regenerate', subject: null }],\n },\n 'project-settings': {\n read: [{ action: 'admin::project-settings.read', subject: null }],\n update: [{ action: 'admin::project-settings.update', subject: null }],\n },\n plugins: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n },\n} satisfies Partial<PermissionMap>;\n\nexport const HOOKS = {\n /**\n * Hook that allows to mutate the displayed headers of the list view table\n * @constant\n * @type {string}\n */\n INJECT_COLUMN_IN_TABLE: 'Admin/CM/pages/ListView/inject-column-in-table',\n\n /**\n * Hook that allows to mutate the displayed filters of the list view\n * @constant\n * @type {string}\n */\n INJECT_LIST_VIEW_FILTERS: 'Admin/CM/pages/ListView/inject-in-filters',\n\n /**\n * Hook that allows to mutate the CM's collection types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_COLLECTION_TYPES_LINKS: 'Admin/CM/pages/App/mutate-collection-types-links',\n\n /**\n * Hook that allows to mutate the CM's edit view layout\n * @constant\n * @type {string}\n */\n MUTATE_EDIT_VIEW_LAYOUT: 'Admin/CM/pages/EditView/mutate-edit-view-layout',\n\n /**\n * Hook that allows to mutate the CM's single types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_SINGLE_TYPES_LINKS: 'Admin/CM/pages/App/mutate-single-types-links',\n};\n\nexport interface SettingsMenuLink\n extends Omit<StrapiAppSettingLink, 'Component' | 'permissions' | 'licenseOnly'> {\n licenseOnly?: boolean;\n}\n\nexport type SettingsMenu = {\n admin: SettingsMenuLink[];\n global: SettingsMenuLink[];\n};\n\nexport const SETTINGS_LINKS_CE = (): SettingsMenu => ({\n global: [\n {\n intlLabel: { id: 'Settings.application.title', defaultMessage: 'Overview' },\n to: '/settings/application-infos',\n id: '000-application-infos',\n },\n {\n intlLabel: { id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' },\n to: '/settings/webhooks',\n id: 'webhooks',\n },\n {\n intlLabel: { id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' },\n to: '/settings/api-tokens?sort=name:ASC',\n id: 'api-tokens',\n },\n {\n intlLabel: { id: 'Settings.transferTokens.title', defaultMessage: 'Transfer Tokens' },\n to: '/settings/transfer-tokens?sort=name:ASC',\n id: 'transfer-tokens',\n },\n {\n intlLabel: {\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n },\n to: '/settings/list-plugins',\n id: 'plugins',\n },\n // If the Enterprise/Cloud feature is not enabled and if the config doesn't disable it, we promote the Enterprise/Cloud feature by displaying them in the settings menu.\n // Disable this by adding \"promoteEE: false\" to your `./config/admin.js` file\n ...(!window.strapi.features.isEnabled(window.strapi.features.SSO) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/purchase-single-sign-on',\n id: 'sso-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ...(!window.strapi.features.isEnabled('cms-content-history') && window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.content-history.title', defaultMessage: 'Content History' },\n to: '/settings/purchase-content-history',\n id: 'content-history-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ],\n\n admin: [\n {\n intlLabel: { id: 'global.roles', defaultMessage: 'Roles' },\n to: '/settings/roles',\n id: 'roles',\n },\n {\n intlLabel: { id: 'global.users', defaultMessage: 'Users' },\n // Init the search params directly\n to: '/settings/users?pageSize=10&page=1&sort=firstname',\n id: 'users',\n },\n {\n intlLabel: { id: 'Settings.adminTokens.title', defaultMessage: 'Admin Tokens' },\n to: '/settings/admin-tokens',\n id: 'admin-tokens',\n },\n ...(!window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/purchase-audit-logs',\n id: 'auditLogs-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ],\n});\n"],"names":["ADMIN_PERMISSIONS_CE","contentManager","main","collectionTypesConfigurations","action","subject","componentsConfigurations","singleTypesConfigurations","marketplace","read","settings","roles","create","delete","update","users","webhooks","regenerate","plugins","HOOKS","INJECT_COLUMN_IN_TABLE","INJECT_LIST_VIEW_FILTERS","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","SETTINGS_LINKS_CE","global","intlLabel","id","defaultMessage","to","window","strapi","features","isEnabled","SSO","flags","promoteEE","licenseOnly","admin","AUDIT_LOGS"],"mappings":"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"}
1
+ {"version":3,"file":"constants.mjs","sources":["../../../../admin/src/constants.ts"],"sourcesContent":["import { PermissionMap } from './types/permissions';\n\nimport type { StrapiAppSettingLink } from './core/apis/router';\n\nexport const ADMIN_PERMISSIONS_CE = {\n contentManager: {\n main: [],\n collectionTypesConfigurations: [\n {\n action: 'plugin::content-manager.collection-types.configure-view',\n subject: null,\n },\n ],\n componentsConfigurations: [\n {\n action: 'plugin::content-manager.components.configure-layout',\n subject: null,\n },\n ],\n singleTypesConfigurations: [\n {\n action: 'plugin::content-manager.single-types.configure-view',\n subject: null,\n },\n ],\n },\n marketplace: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n settings: {\n roles: {\n main: [\n { action: 'admin::roles.create', subject: null },\n { action: 'admin::roles.update', subject: null },\n { action: 'admin::roles.read', subject: null },\n { action: 'admin::roles.delete', subject: null },\n ],\n create: [{ action: 'admin::roles.create', subject: null }],\n delete: [{ action: 'admin::roles.delete', subject: null }],\n read: [{ action: 'admin::roles.read', subject: null }],\n update: [{ action: 'admin::roles.update', subject: null }],\n },\n users: {\n main: [\n { action: 'admin::users.create', subject: null },\n { action: 'admin::users.read', subject: null },\n { action: 'admin::users.update', subject: null },\n { action: 'admin::users.delete', subject: null },\n ],\n create: [{ action: 'admin::users.create', subject: null }],\n delete: [{ action: 'admin::users.delete', subject: null }],\n read: [{ action: 'admin::users.read', subject: null }],\n update: [{ action: 'admin::users.update', subject: null }],\n },\n webhooks: {\n main: [\n { action: 'admin::webhooks.create', subject: null },\n { action: 'admin::webhooks.read', subject: null },\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n create: [{ action: 'admin::webhooks.create', subject: null }],\n delete: [{ action: 'admin::webhooks.delete', subject: null }],\n read: [\n { action: 'admin::webhooks.read', subject: null },\n // NOTE: We need to check with the API\n { action: 'admin::webhooks.update', subject: null },\n { action: 'admin::webhooks.delete', subject: null },\n ],\n update: [{ action: 'admin::webhooks.update', subject: null }],\n },\n 'admin-tokens': {\n main: [{ action: 'admin::admin-tokens.access', subject: null }],\n create: [{ action: 'admin::admin-tokens.create', subject: null }],\n delete: [{ action: 'admin::admin-tokens.delete', subject: null }],\n read: [{ action: 'admin::admin-tokens.read', subject: null }],\n update: [{ action: 'admin::admin-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::admin-tokens.regenerate', subject: null }],\n },\n 'api-tokens': {\n main: [{ action: 'admin::api-tokens.access', subject: null }],\n create: [{ action: 'admin::api-tokens.create', subject: null }],\n delete: [{ action: 'admin::api-tokens.delete', subject: null }],\n read: [{ action: 'admin::api-tokens.read', subject: null }],\n update: [{ action: 'admin::api-tokens.update', subject: null }],\n regenerate: [{ action: 'admin::api-tokens.regenerate', subject: null }],\n },\n 'transfer-tokens': {\n main: [{ action: 'admin::transfer.tokens.access', subject: null }],\n create: [{ action: 'admin::transfer.tokens.create', subject: null }],\n delete: [{ action: 'admin::transfer.tokens.delete', subject: null }],\n read: [{ action: 'admin::transfer.tokens.read', subject: null }],\n update: [{ action: 'admin::transfer.tokens.update', subject: null }],\n regenerate: [{ action: 'admin::transfer.tokens.regenerate', subject: null }],\n },\n 'project-settings': {\n read: [{ action: 'admin::project-settings.read', subject: null }],\n update: [{ action: 'admin::project-settings.update', subject: null }],\n },\n 'debug-dump': {\n main: [{ action: 'admin::debug-dump.read', subject: null }],\n read: [{ action: 'admin::debug-dump.read', subject: null }],\n },\n plugins: {\n main: [{ action: 'admin::marketplace.read', subject: null }],\n read: [{ action: 'admin::marketplace.read', subject: null }],\n },\n },\n} satisfies Partial<PermissionMap>;\n\nexport const HOOKS = {\n /**\n * Hook that allows to mutate the displayed headers of the list view table\n * @constant\n * @type {string}\n */\n INJECT_COLUMN_IN_TABLE: 'Admin/CM/pages/ListView/inject-column-in-table',\n\n /**\n * Hook that allows to mutate the displayed filters of the list view\n * @constant\n * @type {string}\n */\n INJECT_LIST_VIEW_FILTERS: 'Admin/CM/pages/ListView/inject-in-filters',\n\n /**\n * Hook that allows to mutate the CM's collection types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_COLLECTION_TYPES_LINKS: 'Admin/CM/pages/App/mutate-collection-types-links',\n\n /**\n * Hook that allows to mutate the CM's edit view layout\n * @constant\n * @type {string}\n */\n MUTATE_EDIT_VIEW_LAYOUT: 'Admin/CM/pages/EditView/mutate-edit-view-layout',\n\n /**\n * Hook that allows to mutate the CM's single types links pre-set filters\n * @constant\n * @type {string}\n */\n MUTATE_SINGLE_TYPES_LINKS: 'Admin/CM/pages/App/mutate-single-types-links',\n};\n\nexport interface SettingsMenuLink\n extends Omit<StrapiAppSettingLink, 'Component' | 'permissions' | 'licenseOnly'> {\n licenseOnly?: boolean;\n}\n\nexport type SettingsMenu = {\n admin: SettingsMenuLink[];\n global: SettingsMenuLink[];\n};\n\nexport const SETTINGS_LINKS_CE = (): SettingsMenu => ({\n global: [\n {\n intlLabel: { id: 'Settings.application.title', defaultMessage: 'Overview' },\n to: '/settings/application-infos',\n id: '000-application-infos',\n },\n {\n intlLabel: { id: 'Settings.webhooks.title', defaultMessage: 'Webhooks' },\n to: '/settings/webhooks',\n id: 'webhooks',\n },\n {\n intlLabel: { id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' },\n to: '/settings/api-tokens?sort=name:ASC',\n id: 'api-tokens',\n },\n {\n intlLabel: { id: 'Settings.transferTokens.title', defaultMessage: 'Transfer Tokens' },\n to: '/settings/transfer-tokens?sort=name:ASC',\n id: 'transfer-tokens',\n },\n {\n intlLabel: {\n id: 'global.plugins',\n defaultMessage: 'Plugins',\n },\n to: '/settings/list-plugins',\n id: 'plugins',\n },\n // If the Enterprise/Cloud feature is not enabled and if the config doesn't disable it, we promote the Enterprise/Cloud feature by displaying them in the settings menu.\n // Disable this by adding \"promoteEE: false\" to your `./config/admin.js` file\n ...(!window.strapi.features.isEnabled(window.strapi.features.SSO) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.sso.title', defaultMessage: 'Single Sign-On' },\n to: '/settings/purchase-single-sign-on',\n id: 'sso-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ...(!window.strapi.features.isEnabled('cms-content-history') && window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'Settings.content-history.title', defaultMessage: 'Content History' },\n to: '/settings/purchase-content-history',\n id: 'content-history-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ],\n\n admin: [\n {\n intlLabel: { id: 'global.roles', defaultMessage: 'Roles' },\n to: '/settings/roles',\n id: 'roles',\n },\n {\n intlLabel: { id: 'global.users', defaultMessage: 'Users' },\n // Init the search params directly\n to: '/settings/users?pageSize=10&page=1&sort=firstname',\n id: 'users',\n },\n {\n intlLabel: { id: 'Settings.adminTokens.title', defaultMessage: 'Admin Tokens' },\n to: '/settings/admin-tokens',\n id: 'admin-tokens',\n },\n ...(!window.strapi.features.isEnabled(window.strapi.features.AUDIT_LOGS) &&\n window.strapi?.flags?.promoteEE\n ? [\n {\n intlLabel: { id: 'global.auditLogs', defaultMessage: 'Audit Logs' },\n to: '/settings/purchase-audit-logs',\n id: 'auditLogs-purchase-page',\n licenseOnly: true,\n },\n ]\n : []),\n ],\n});\n"],"names":["ADMIN_PERMISSIONS_CE","contentManager","main","collectionTypesConfigurations","action","subject","componentsConfigurations","singleTypesConfigurations","marketplace","read","settings","roles","create","delete","update","users","webhooks","regenerate","plugins","HOOKS","INJECT_COLUMN_IN_TABLE","INJECT_LIST_VIEW_FILTERS","MUTATE_COLLECTION_TYPES_LINKS","MUTATE_EDIT_VIEW_LAYOUT","MUTATE_SINGLE_TYPES_LINKS","SETTINGS_LINKS_CE","global","intlLabel","id","defaultMessage","to","window","strapi","features","isEnabled","SSO","flags","promoteEE","licenseOnly","admin","AUDIT_LOGS"],"mappings":"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"}
@@ -55,26 +55,20 @@ const RESET_PASSWORD_SCHEMA = yup__namespace.object().shape({
55
55
  const byteSize = strings.getByteSize(value);
56
56
  return byteSize <= 72;
57
57
  }).test('lowercase', {
58
- message: {
59
- id: 'components.Input.error.contain.lowercase',
60
- defaultMessage: 'Password must contain at least 1 lowercase letter'
61
- }
58
+ id: 'components.Input.error.contain.lowercase',
59
+ defaultMessage: 'Password must contain at least 1 lowercase letter'
62
60
  }, (value)=>{
63
61
  if (!value) return true;
64
62
  return /[a-z]/.test(value);
65
63
  }).test('uppercase', {
66
- message: {
67
- id: 'components.Input.error.contain.uppercase',
68
- defaultMessage: 'Password must contain at least 1 uppercase letter'
69
- }
64
+ id: 'components.Input.error.contain.uppercase',
65
+ defaultMessage: 'Password must contain at least 1 uppercase letter'
70
66
  }, (value)=>{
71
67
  if (!value) return true;
72
68
  return /[A-Z]/.test(value);
73
69
  }).test('number', {
74
- message: {
75
- id: 'components.Input.error.contain.number',
76
- defaultMessage: 'Password must contain at least 1 number'
77
- }
70
+ id: 'components.Input.error.contain.number',
71
+ defaultMessage: 'Password must contain at least 1 number'
78
72
  }, (value)=>{
79
73
  if (!value) return true;
80
74
  return /\d/.test(value);
@@ -1 +1 @@
1
- {"version":3,"file":"ResetPassword.js","sources":["../../../../../../../admin/src/pages/Auth/components/ResetPassword.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, Navigate, useLocation } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { ResetPassword } from '../../../../../shared/contracts/authentication';\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport { useResetPasswordMutation } from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst RESET_PASSWORD_SCHEMA = yup.object().shape({\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n // bcrypt has a max length of 72 bytes (not characters!)\n .test(\n 'required-byte-size',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .test(\n 'lowercase',\n {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n )\n .test(\n 'uppercase',\n {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n )\n .test(\n 'number',\n {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n },\n (value) => {\n if (!value) return true;\n return /\\d/.test(value);\n }\n )\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n});\n\nconst ResetPassword = () => {\n const { formatMessage } = useIntl();\n const dispatch = useTypedDispatch();\n const navigate = useNavigate();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [resetPassword, { error }] = useResetPasswordMutation();\n\n const handleSubmit = async (body: ResetPassword.Request['body']) => {\n const res = await resetPassword(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n navigate('/');\n }\n };\n /**\n * If someone doesn't have a reset password token\n * then they should just be redirected back to the login page.\n */\n if (!query.get('code')) {\n return <Navigate to=\"/auth/login\" />;\n }\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'global.reset-password',\n defaultMessage: 'Reset password',\n })}\n </Typography>\n </Box>\n {error ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {isBaseQueryError(error)\n ? formatAPIError(error)\n : formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"POST\"\n initialValues={{\n password: '',\n confirmPassword: '',\n }}\n onSubmit={(values) => {\n // We know query.code is defined because we check for it above.\n handleSubmit({ password: values.password, resetPasswordToken: query.get('code')! });\n }}\n validationSchema={RESET_PASSWORD_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Password must contain at least 8 characters, 1 uppercase, 1 lowercase and 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n type: 'password' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Button>\n </Flex>\n </Form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ResetPassword };\n"],"names":["RESET_PASSWORD_SCHEMA","yup","object","shape","password","string","min","id","translatedErrors","minLength","defaultMessage","values","test","value","byteSize","getByteSize","message","required","nullable","confirmPassword","oneOf","ref","ResetPassword","formatMessage","useIntl","dispatch","useTypedDispatch","navigate","useNavigate","search","searchString","useLocation","query","React","useMemo","URLSearchParams","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","resetPassword","error","useResetPasswordMutation","handleSubmit","body","res","login","token","data","get","_jsx","Navigate","to","UnauthenticatedLayout","_jsxs","Main","LayoutContent","Column","Logo","Box","paddingTop","paddingBottom","Typography","tag","variant","role","tabIndex","textColor","isBaseQueryError","Form","method","initialValues","onSubmit","resetPasswordToken","validationSchema","Flex","direction","alignItems","gap","hint","label","name","type","map","field","InputRenderer","Button","fullWidth","justifyContent","Link","NavLink"],"mappings":"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"}
1
+ {"version":3,"file":"ResetPassword.js","sources":["../../../../../../../admin/src/pages/Auth/components/ResetPassword.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, Navigate, useLocation } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { ResetPassword } from '../../../../../shared/contracts/authentication';\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport { useResetPasswordMutation } from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst RESET_PASSWORD_SCHEMA = yup.object().shape({\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n // bcrypt has a max length of 72 bytes (not characters!)\n .test(\n 'required-byte-size',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .test(\n 'lowercase',\n {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n (value) => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n )\n .test(\n 'uppercase',\n {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n (value) => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n )\n .test(\n 'number',\n {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n (value) => {\n if (!value) return true;\n return /\\d/.test(value);\n }\n )\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n});\n\nconst ResetPassword = () => {\n const { formatMessage } = useIntl();\n const dispatch = useTypedDispatch();\n const navigate = useNavigate();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [resetPassword, { error }] = useResetPasswordMutation();\n\n const handleSubmit = async (body: ResetPassword.Request['body']) => {\n const res = await resetPassword(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n navigate('/');\n }\n };\n /**\n * If someone doesn't have a reset password token\n * then they should just be redirected back to the login page.\n */\n if (!query.get('code')) {\n return <Navigate to=\"/auth/login\" />;\n }\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'global.reset-password',\n defaultMessage: 'Reset password',\n })}\n </Typography>\n </Box>\n {error ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {isBaseQueryError(error)\n ? formatAPIError(error)\n : formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"POST\"\n initialValues={{\n password: '',\n confirmPassword: '',\n }}\n onSubmit={(values) => {\n // We know query.code is defined because we check for it above.\n handleSubmit({ password: values.password, resetPasswordToken: query.get('code')! });\n }}\n validationSchema={RESET_PASSWORD_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Password must contain at least 8 characters, 1 uppercase, 1 lowercase and 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n type: 'password' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Button>\n </Flex>\n </Form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ResetPassword };\n"],"names":["RESET_PASSWORD_SCHEMA","yup","object","shape","password","string","min","id","translatedErrors","minLength","defaultMessage","values","test","value","byteSize","getByteSize","required","nullable","confirmPassword","oneOf","ref","ResetPassword","formatMessage","useIntl","dispatch","useTypedDispatch","navigate","useNavigate","search","searchString","useLocation","query","React","useMemo","URLSearchParams","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","resetPassword","error","useResetPasswordMutation","handleSubmit","body","res","login","token","data","get","_jsx","Navigate","to","UnauthenticatedLayout","_jsxs","Main","LayoutContent","Column","Logo","Box","paddingTop","paddingBottom","Typography","tag","variant","role","tabIndex","textColor","isBaseQueryError","Form","method","initialValues","onSubmit","resetPasswordToken","validationSchema","Flex","direction","alignItems","gap","hint","label","name","type","map","field","InputRenderer","Button","fullWidth","justifyContent","Link","NavLink"],"mappings":"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"}
@@ -32,26 +32,20 @@ const RESET_PASSWORD_SCHEMA = yup.object().shape({
32
32
  const byteSize = getByteSize(value);
33
33
  return byteSize <= 72;
34
34
  }).test('lowercase', {
35
- message: {
36
- id: 'components.Input.error.contain.lowercase',
37
- defaultMessage: 'Password must contain at least 1 lowercase letter'
38
- }
35
+ id: 'components.Input.error.contain.lowercase',
36
+ defaultMessage: 'Password must contain at least 1 lowercase letter'
39
37
  }, (value)=>{
40
38
  if (!value) return true;
41
39
  return /[a-z]/.test(value);
42
40
  }).test('uppercase', {
43
- message: {
44
- id: 'components.Input.error.contain.uppercase',
45
- defaultMessage: 'Password must contain at least 1 uppercase letter'
46
- }
41
+ id: 'components.Input.error.contain.uppercase',
42
+ defaultMessage: 'Password must contain at least 1 uppercase letter'
47
43
  }, (value)=>{
48
44
  if (!value) return true;
49
45
  return /[A-Z]/.test(value);
50
46
  }).test('number', {
51
- message: {
52
- id: 'components.Input.error.contain.number',
53
- defaultMessage: 'Password must contain at least 1 number'
54
- }
47
+ id: 'components.Input.error.contain.number',
48
+ defaultMessage: 'Password must contain at least 1 number'
55
49
  }, (value)=>{
56
50
  if (!value) return true;
57
51
  return /\d/.test(value);
@@ -1 +1 @@
1
- {"version":3,"file":"ResetPassword.mjs","sources":["../../../../../../../admin/src/pages/Auth/components/ResetPassword.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, Navigate, useLocation } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { ResetPassword } from '../../../../../shared/contracts/authentication';\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport { useResetPasswordMutation } from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst RESET_PASSWORD_SCHEMA = yup.object().shape({\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n // bcrypt has a max length of 72 bytes (not characters!)\n .test(\n 'required-byte-size',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .test(\n 'lowercase',\n {\n message: {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n )\n .test(\n 'uppercase',\n {\n message: {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n },\n (value) => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n )\n .test(\n 'number',\n {\n message: {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n },\n (value) => {\n if (!value) return true;\n return /\\d/.test(value);\n }\n )\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n});\n\nconst ResetPassword = () => {\n const { formatMessage } = useIntl();\n const dispatch = useTypedDispatch();\n const navigate = useNavigate();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [resetPassword, { error }] = useResetPasswordMutation();\n\n const handleSubmit = async (body: ResetPassword.Request['body']) => {\n const res = await resetPassword(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n navigate('/');\n }\n };\n /**\n * If someone doesn't have a reset password token\n * then they should just be redirected back to the login page.\n */\n if (!query.get('code')) {\n return <Navigate to=\"/auth/login\" />;\n }\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'global.reset-password',\n defaultMessage: 'Reset password',\n })}\n </Typography>\n </Box>\n {error ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {isBaseQueryError(error)\n ? formatAPIError(error)\n : formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"POST\"\n initialValues={{\n password: '',\n confirmPassword: '',\n }}\n onSubmit={(values) => {\n // We know query.code is defined because we check for it above.\n handleSubmit({ password: values.password, resetPasswordToken: query.get('code')! });\n }}\n validationSchema={RESET_PASSWORD_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Password must contain at least 8 characters, 1 uppercase, 1 lowercase and 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n type: 'password' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Button>\n </Flex>\n </Form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ResetPassword };\n"],"names":["RESET_PASSWORD_SCHEMA","yup","object","shape","password","string","min","id","translatedErrors","minLength","defaultMessage","values","test","value","byteSize","getByteSize","message","required","nullable","confirmPassword","oneOf","ref","ResetPassword","formatMessage","useIntl","dispatch","useTypedDispatch","navigate","useNavigate","search","searchString","useLocation","query","React","useMemo","URLSearchParams","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","resetPassword","error","useResetPasswordMutation","handleSubmit","body","res","login","token","data","get","_jsx","Navigate","to","UnauthenticatedLayout","_jsxs","Main","LayoutContent","Column","Logo","Box","paddingTop","paddingBottom","Typography","tag","variant","role","tabIndex","textColor","isBaseQueryError","Form","method","initialValues","onSubmit","resetPasswordToken","validationSchema","Flex","direction","alignItems","gap","hint","label","name","type","map","field","InputRenderer","Button","fullWidth","justifyContent","Link","NavLink"],"mappings":"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"}
1
+ {"version":3,"file":"ResetPassword.mjs","sources":["../../../../../../../admin/src/pages/Auth/components/ResetPassword.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Flex, Main, Typography, Link } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\nimport { NavLink, useNavigate, Navigate, useLocation } from 'react-router-dom';\nimport * as yup from 'yup';\n\nimport { ResetPassword } from '../../../../../shared/contracts/authentication';\nimport { Form } from '../../../components/Form';\nimport { InputRenderer } from '../../../components/FormInputs/Renderer';\nimport { Logo } from '../../../components/UnauthenticatedLogo';\nimport { useTypedDispatch } from '../../../core/store/hooks';\nimport { useAPIErrorHandler } from '../../../hooks/useAPIErrorHandler';\nimport {\n Column,\n LayoutContent,\n UnauthenticatedLayout,\n} from '../../../layouts/UnauthenticatedLayout';\nimport { login } from '../../../reducer';\nimport { useResetPasswordMutation } from '../../../services/auth';\nimport { isBaseQueryError } from '../../../utils/baseQuery';\nimport { getByteSize } from '../../../utils/strings';\nimport { translatedErrors } from '../../../utils/translatedErrors';\n\nconst RESET_PASSWORD_SCHEMA = yup.object().shape({\n password: yup\n .string()\n .min(8, {\n id: translatedErrors.minLength.id,\n defaultMessage: 'Password must be at least 8 characters',\n values: { min: 8 },\n })\n // bcrypt has a max length of 72 bytes (not characters!)\n .test(\n 'required-byte-size',\n {\n id: 'components.Input.error.contain.maxBytes',\n defaultMessage: 'Password must be less than 73 bytes',\n },\n function (value) {\n if (!value || typeof value !== 'string') return true; // validated elsewhere\n\n const byteSize = getByteSize(value);\n return byteSize <= 72;\n }\n )\n .test(\n 'lowercase',\n {\n id: 'components.Input.error.contain.lowercase',\n defaultMessage: 'Password must contain at least 1 lowercase letter',\n },\n (value) => {\n if (!value) return true;\n return /[a-z]/.test(value);\n }\n )\n .test(\n 'uppercase',\n {\n id: 'components.Input.error.contain.uppercase',\n defaultMessage: 'Password must contain at least 1 uppercase letter',\n },\n (value) => {\n if (!value) return true;\n return /[A-Z]/.test(value);\n }\n )\n .test(\n 'number',\n {\n id: 'components.Input.error.contain.number',\n defaultMessage: 'Password must contain at least 1 number',\n },\n (value) => {\n if (!value) return true;\n return /\\d/.test(value);\n }\n )\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Password is required',\n })\n .nullable(),\n confirmPassword: yup\n .string()\n .required({\n id: translatedErrors.required.id,\n defaultMessage: 'Confirm password is required',\n })\n .oneOf([yup.ref('password'), null], {\n id: 'components.Input.error.password.noMatch',\n defaultMessage: 'Passwords must match',\n })\n .nullable(),\n});\n\nconst ResetPassword = () => {\n const { formatMessage } = useIntl();\n const dispatch = useTypedDispatch();\n const navigate = useNavigate();\n const { search: searchString } = useLocation();\n const query = React.useMemo(() => new URLSearchParams(searchString), [searchString]);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [resetPassword, { error }] = useResetPasswordMutation();\n\n const handleSubmit = async (body: ResetPassword.Request['body']) => {\n const res = await resetPassword(body);\n\n if ('data' in res) {\n dispatch(login({ token: res.data.token }));\n navigate('/');\n }\n };\n /**\n * If someone doesn't have a reset password token\n * then they should just be redirected back to the login page.\n */\n if (!query.get('code')) {\n return <Navigate to=\"/auth/login\" />;\n }\n\n return (\n <UnauthenticatedLayout>\n <Main>\n <LayoutContent>\n <Column>\n <Logo />\n <Box paddingTop={6} paddingBottom={7}>\n <Typography tag=\"h1\" variant=\"alpha\">\n {formatMessage({\n id: 'global.reset-password',\n defaultMessage: 'Reset password',\n })}\n </Typography>\n </Box>\n {error ? (\n <Typography id=\"global-form-error\" role=\"alert\" tabIndex={-1} textColor=\"danger600\">\n {isBaseQueryError(error)\n ? formatAPIError(error)\n : formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred',\n })}\n </Typography>\n ) : null}\n </Column>\n <Form\n method=\"POST\"\n initialValues={{\n password: '',\n confirmPassword: '',\n }}\n onSubmit={(values) => {\n // We know query.code is defined because we check for it above.\n handleSubmit({ password: values.password, resetPasswordToken: query.get('code')! });\n }}\n validationSchema={RESET_PASSWORD_SCHEMA}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {[\n {\n hint: formatMessage({\n id: 'Auth.form.password.hint',\n defaultMessage:\n 'Password must contain at least 8 characters, 1 uppercase, 1 lowercase and 1 number',\n }),\n label: formatMessage({\n id: 'global.password',\n defaultMessage: 'Password',\n }),\n name: 'password',\n required: true,\n type: 'password' as const,\n },\n {\n label: formatMessage({\n id: 'Auth.form.confirmPassword.label',\n defaultMessage: 'Confirm Password',\n }),\n name: 'confirmPassword',\n required: true,\n type: 'password' as const,\n },\n ].map((field) => (\n <InputRenderer key={field.name} {...field} />\n ))}\n <Button fullWidth type=\"submit\">\n {formatMessage({\n id: 'global.change-password',\n defaultMessage: 'Change password',\n })}\n </Button>\n </Flex>\n </Form>\n </LayoutContent>\n <Flex justifyContent=\"center\">\n <Box paddingTop={4}>\n <Link tag={NavLink} to=\"/auth/login\">\n {formatMessage({ id: 'Auth.link.ready', defaultMessage: 'Ready to sign in?' })}\n </Link>\n </Box>\n </Flex>\n </Main>\n </UnauthenticatedLayout>\n );\n};\n\nexport { ResetPassword };\n"],"names":["RESET_PASSWORD_SCHEMA","yup","object","shape","password","string","min","id","translatedErrors","minLength","defaultMessage","values","test","value","byteSize","getByteSize","required","nullable","confirmPassword","oneOf","ref","ResetPassword","formatMessage","useIntl","dispatch","useTypedDispatch","navigate","useNavigate","search","searchString","useLocation","query","React","useMemo","URLSearchParams","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","resetPassword","error","useResetPasswordMutation","handleSubmit","body","res","login","token","data","get","_jsx","Navigate","to","UnauthenticatedLayout","_jsxs","Main","LayoutContent","Column","Logo","Box","paddingTop","paddingBottom","Typography","tag","variant","role","tabIndex","textColor","isBaseQueryError","Form","method","initialValues","onSubmit","resetPasswordToken","validationSchema","Flex","direction","alignItems","gap","hint","label","name","type","map","field","InputRenderer","Button","fullWidth","justifyContent","Link","NavLink"],"mappings":"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"}
@@ -22,13 +22,21 @@ const SettingsNav = ({ isFullPage = false })=>{
22
22
  const { trackUsage } = Tracking.useTracking();
23
23
  const { pathname } = reactRouterDom.useLocation();
24
24
  const { license } = useLicenseLimits.useLicenseLimits();
25
- const availableFeatureNames = license?.features.map((feature)=>feature.name);
25
+ // The live license's features, plus what a lapsed license granted: the same availability the
26
+ // Plan card shows, kept until the license key or file is removed.
27
+ const availableFeatureNames = [
28
+ ...(license?.features ?? []).map((feature)=>feature.name),
29
+ ...(license?.planEntitlements ?? []).filter((entitlement)=>entitlement.available).map((entitlement)=>entitlement.feature)
30
+ ];
26
31
  const linksIdsToLicenseFeaturesNames = {
27
32
  'content-releases': 'cms-content-releases',
28
33
  'review-workflows': 'review-workflows',
29
34
  sso: 'sso',
30
35
  auditLogs: 'audit-logs',
31
- 'auditLogs-purchase-page': 'audit-logs'
36
+ 'auditLogs-purchase-page': 'audit-logs',
37
+ // A lapsed license renders these as purchase links, under their own ids
38
+ 'sso-purchase-page': 'sso',
39
+ 'content-history-purchase-page': 'cms-content-history'
32
40
  };
33
41
  const filteredMenu = menu.filter((section)=>!section.links.every((link)=>link.isDisplayed === false));
34
42
  const sections = filteredMenu.map((section)=>{