@strapi/admin 5.48.0 → 5.49.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 (414) hide show
  1. package/dist/admin/admin/src/StrapiApp.js +41 -25
  2. package/dist/admin/admin/src/StrapiApp.js.map +1 -1
  3. package/dist/admin/admin/src/StrapiApp.mjs +15 -7
  4. package/dist/admin/admin/src/StrapiApp.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/ConfirmDialog.js +3 -2
  6. package/dist/admin/admin/src/components/ConfirmDialog.js.map +1 -1
  7. package/dist/admin/admin/src/components/Context.js +4 -3
  8. package/dist/admin/admin/src/components/Context.js.map +1 -1
  9. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js +8 -4
  10. package/dist/admin/admin/src/components/DescriptionComponentRenderer.js.map +1 -1
  11. package/dist/admin/admin/src/components/Filters.js +3 -2
  12. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  13. package/dist/admin/admin/src/components/Form.js +9 -5
  14. package/dist/admin/admin/src/components/Form.js.map +1 -1
  15. package/dist/admin/admin/src/components/FormInputs/Date.js +3 -2
  16. package/dist/admin/admin/src/components/FormInputs/Date.js.map +1 -1
  17. package/dist/admin/admin/src/components/FormInputs/Json.js +3 -2
  18. package/dist/admin/admin/src/components/FormInputs/Json.js.map +1 -1
  19. package/dist/admin/admin/src/components/GapDropZone.js +3 -2
  20. package/dist/admin/admin/src/components/GapDropZone.js.map +1 -1
  21. package/dist/admin/admin/src/components/GuidedTour/Context.js +3 -2
  22. package/dist/admin/admin/src/components/GuidedTour/Context.js.map +1 -1
  23. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js +3 -2
  24. package/dist/admin/admin/src/components/GuidedTour/Steps/Step.js.map +1 -1
  25. package/dist/admin/admin/src/components/GuidedTour/Tours.js +9 -3
  26. package/dist/admin/admin/src/components/GuidedTour/Tours.js.map +1 -1
  27. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs +6 -1
  28. package/dist/admin/admin/src/components/GuidedTour/Tours.mjs.map +1 -1
  29. package/dist/admin/admin/src/components/LanguageProvider.js +5 -1
  30. package/dist/admin/admin/src/components/LanguageProvider.js.map +1 -1
  31. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js +3 -2
  32. package/dist/admin/admin/src/components/Layouts/HeaderLayout.js.map +1 -1
  33. package/dist/admin/admin/src/components/LeftMenu.js +4 -3
  34. package/dist/admin/admin/src/components/LeftMenu.js.map +1 -1
  35. package/dist/admin/admin/src/components/LeftMenu.mjs +1 -1
  36. package/dist/admin/admin/src/components/LeftMenu.mjs.map +1 -1
  37. package/dist/admin/admin/src/components/NpsSurvey.js +4 -3
  38. package/dist/admin/admin/src/components/NpsSurvey.js.map +1 -1
  39. package/dist/admin/admin/src/components/PageHelpers.js +3 -2
  40. package/dist/admin/admin/src/components/PageHelpers.js.map +1 -1
  41. package/dist/admin/admin/src/components/Pagination.js +3 -2
  42. package/dist/admin/admin/src/components/Pagination.js.map +1 -1
  43. package/dist/admin/admin/src/components/PluginsInitializer.js +3 -2
  44. package/dist/admin/admin/src/components/PluginsInitializer.js.map +1 -1
  45. package/dist/admin/admin/src/components/RelativeTime.js +3 -2
  46. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  47. package/dist/admin/admin/src/components/ResizeIndicator.js +3 -2
  48. package/dist/admin/admin/src/components/ResizeIndicator.js.map +1 -1
  49. package/dist/admin/admin/src/components/SearchInput.js +3 -2
  50. package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
  51. package/dist/admin/admin/src/components/Table.js +3 -2
  52. package/dist/admin/admin/src/components/Table.js.map +1 -1
  53. package/dist/admin/admin/src/components/Theme.js +3 -2
  54. package/dist/admin/admin/src/components/Theme.js.map +1 -1
  55. package/dist/admin/admin/src/components/UpsellBanner.js +1 -1
  56. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  57. package/dist/admin/admin/src/components/UpsellBanner.mjs +1 -1
  58. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  59. package/dist/admin/admin/src/components/WidgetRoot.js +9 -5
  60. package/dist/admin/admin/src/components/WidgetRoot.js.map +1 -1
  61. package/dist/admin/admin/src/core/apis/CustomFields.js +14 -10
  62. package/dist/admin/admin/src/core/apis/CustomFields.js.map +1 -1
  63. package/dist/admin/admin/src/core/apis/Widgets.js +8 -4
  64. package/dist/admin/admin/src/core/apis/Widgets.js.map +1 -1
  65. package/dist/admin/admin/src/core/apis/router.js +20 -16
  66. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  67. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  68. package/dist/admin/admin/src/features/Auth.js +78 -6
  69. package/dist/admin/admin/src/features/Auth.js.map +1 -1
  70. package/dist/admin/admin/src/features/Auth.mjs +77 -6
  71. package/dist/admin/admin/src/features/Auth.mjs.map +1 -1
  72. package/dist/admin/admin/src/features/BackButton.js +3 -2
  73. package/dist/admin/admin/src/features/BackButton.js.map +1 -1
  74. package/dist/admin/admin/src/features/Configuration.js +3 -2
  75. package/dist/admin/admin/src/features/Configuration.js.map +1 -1
  76. package/dist/admin/admin/src/features/Notifications.js +3 -2
  77. package/dist/admin/admin/src/features/Notifications.js.map +1 -1
  78. package/dist/admin/admin/src/features/Tracking.js +7 -3
  79. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  80. package/dist/admin/admin/src/features/Widgets.js +3 -2
  81. package/dist/admin/admin/src/features/Widgets.js.map +1 -1
  82. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js +3 -2
  83. package/dist/admin/admin/src/hooks/useAPIErrorHandler.js.map +1 -1
  84. package/dist/admin/admin/src/hooks/useAdminRoles.js +3 -2
  85. package/dist/admin/admin/src/hooks/useAdminRoles.js.map +1 -1
  86. package/dist/admin/admin/src/hooks/useControllableState.js +3 -2
  87. package/dist/admin/admin/src/hooks/useControllableState.js.map +1 -1
  88. package/dist/admin/admin/src/hooks/useDebounce.js +3 -2
  89. package/dist/admin/admin/src/hooks/useDebounce.js.map +1 -1
  90. package/dist/admin/admin/src/hooks/useDeviceType.js +3 -2
  91. package/dist/admin/admin/src/hooks/useDeviceType.js.map +1 -1
  92. package/dist/admin/admin/src/hooks/useElementOnScreen.js +3 -2
  93. package/dist/admin/admin/src/hooks/useElementOnScreen.js.map +1 -1
  94. package/dist/admin/admin/src/hooks/useEnterprise.js +3 -2
  95. package/dist/admin/admin/src/hooks/useEnterprise.js.map +1 -1
  96. package/dist/admin/admin/src/hooks/useFetchClient.js +3 -2
  97. package/dist/admin/admin/src/hooks/useFetchClient.js.map +1 -1
  98. package/dist/admin/admin/src/hooks/useForceUpdate.js +3 -2
  99. package/dist/admin/admin/src/hooks/useForceUpdate.js.map +1 -1
  100. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js +85 -15
  101. package/dist/admin/admin/src/hooks/useIdleSessionLogout.js.map +1 -1
  102. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs +82 -14
  103. package/dist/admin/admin/src/hooks/useIdleSessionLogout.mjs.map +1 -1
  104. package/dist/admin/admin/src/hooks/useIsMounted.js +3 -2
  105. package/dist/admin/admin/src/hooks/useIsMounted.js.map +1 -1
  106. package/dist/admin/admin/src/hooks/useMediaQuery.js +3 -2
  107. package/dist/admin/admin/src/hooks/useMediaQuery.js.map +1 -1
  108. package/dist/admin/admin/src/hooks/useMenu.js +47 -8
  109. package/dist/admin/admin/src/hooks/useMenu.js.map +1 -1
  110. package/dist/admin/admin/src/hooks/useMenu.mjs +40 -6
  111. package/dist/admin/admin/src/hooks/useMenu.mjs.map +1 -1
  112. package/dist/admin/admin/src/hooks/useOnce.js +3 -2
  113. package/dist/admin/admin/src/hooks/useOnce.js.map +1 -1
  114. package/dist/admin/admin/src/hooks/useRBAC.js +7 -3
  115. package/dist/admin/admin/src/hooks/useRBAC.js.map +1 -1
  116. package/dist/admin/admin/src/hooks/useSettingsMenu.js +68 -4
  117. package/dist/admin/admin/src/hooks/useSettingsMenu.js.map +1 -1
  118. package/dist/admin/admin/src/hooks/useSettingsMenu.mjs +61 -2
  119. package/dist/admin/admin/src/hooks/useSettingsMenu.mjs.map +1 -1
  120. package/dist/admin/admin/src/hooks/useThrottledCallback.js +5 -1
  121. package/dist/admin/admin/src/hooks/useThrottledCallback.js.map +1 -1
  122. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +11 -5
  123. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  124. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js +3 -2
  125. package/dist/admin/admin/src/pages/Auth/components/ForgotPassword.js.map +1 -1
  126. package/dist/admin/admin/src/pages/Auth/components/Login.js +8 -4
  127. package/dist/admin/admin/src/pages/Auth/components/Login.js.map +1 -1
  128. package/dist/admin/admin/src/pages/Auth/components/Oops.js +3 -2
  129. package/dist/admin/admin/src/pages/Auth/components/Oops.js.map +1 -1
  130. package/dist/admin/admin/src/pages/Auth/components/Register.js +9 -5
  131. package/dist/admin/admin/src/pages/Auth/components/Register.js.map +1 -1
  132. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +4 -3
  133. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  134. package/dist/admin/admin/src/pages/Home/HomePage.js +9 -4
  135. package/dist/admin/admin/src/pages/Home/HomePage.js.map +1 -1
  136. package/dist/admin/admin/src/pages/Home/HomePage.mjs +6 -2
  137. package/dist/admin/admin/src/pages/Home/HomePage.mjs.map +1 -1
  138. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js +8 -4
  139. package/dist/admin/admin/src/pages/Home/components/AddWidgetModal.js.map +1 -1
  140. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js +8 -4
  141. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.js.map +1 -1
  142. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs +1 -1
  143. package/dist/admin/admin/src/pages/Home/components/FreeTrialEndedModal.mjs.map +1 -1
  144. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js +7 -3
  145. package/dist/admin/admin/src/pages/Home/components/FreeTrialWelcomeModal.js.map +1 -1
  146. package/dist/admin/admin/src/pages/ProfilePage.js +8 -4
  147. package/dist/admin/admin/src/pages/ProfilePage.js.map +1 -1
  148. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +3 -2
  149. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  150. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +3 -2
  151. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  152. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +3 -2
  153. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  154. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js +3 -2
  155. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -1
  156. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +3 -2
  157. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -1
  158. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +3 -2
  159. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -1
  160. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +4 -3
  161. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -1
  162. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +3 -2
  163. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  164. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js +7 -2
  165. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/BoundRoute.js.map +1 -1
  166. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js +5 -1
  167. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/CollapsableContentType.js.map +1 -1
  168. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js +6 -2
  169. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/reducer.js.map +1 -1
  170. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +4 -3
  171. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  172. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +5 -2
  173. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  174. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +2 -0
  175. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  176. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js +7 -3
  177. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/LogoInput.js.map +1 -1
  178. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js +3 -2
  179. package/dist/admin/admin/src/pages/Settings/pages/InstalledPlugins.js.map +1 -1
  180. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js +4 -3
  181. package/dist/admin/admin/src/pages/Settings/pages/Roles/CreatePage.js.map +1 -1
  182. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js +4 -3
  183. package/dist/admin/admin/src/pages/Settings/pages/Roles/EditPage.js.map +1 -1
  184. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js +3 -2
  185. package/dist/admin/admin/src/pages/Settings/pages/Roles/ListPage.js.map +1 -1
  186. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +10 -6
  187. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  188. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js +3 -2
  189. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsButton.js.map +1 -1
  190. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +13 -7
  191. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  192. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +15 -9
  193. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  194. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +9 -5
  195. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  196. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +33 -25
  197. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  198. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +10 -6
  199. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  200. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +3 -2
  201. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  202. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js +9 -3
  203. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/difference.js.map +1 -1
  204. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js +8 -3
  205. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/forms.js.map +1 -1
  206. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js +6 -2
  207. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/layouts.js.map +1 -1
  208. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js +8 -3
  209. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateConditionsToFalse.js.map +1 -1
  210. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js +4 -3
  211. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/EditView.js.map +1 -1
  212. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js +4 -3
  213. package/dist/admin/admin/src/pages/Settings/pages/TransferTokens/ListView.js.map +1 -1
  214. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js +9 -5
  215. package/dist/admin/admin/src/pages/Settings/pages/Users/EditPage.js.map +1 -1
  216. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js +4 -3
  217. package/dist/admin/admin/src/pages/Settings/pages/Users/ListPage.js.map +1 -1
  218. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js +3 -2
  219. package/dist/admin/admin/src/pages/Settings/pages/Users/components/CreateActionCE.js.map +1 -1
  220. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js +4 -3
  221. package/dist/admin/admin/src/pages/Settings/pages/Users/components/NewUserForm.js.map +1 -1
  222. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js +3 -2
  223. package/dist/admin/admin/src/pages/Settings/pages/Users/utils/validation.js.map +1 -1
  224. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js +3 -2
  225. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/EditPage.js.map +1 -1
  226. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js +3 -2
  227. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/ListPage.js.map +1 -1
  228. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js +3 -2
  229. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/HeadersInput.js.map +1 -1
  230. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js +4 -3
  231. package/dist/admin/admin/src/pages/Settings/pages/Webhooks/components/WebhookForm.js.map +1 -1
  232. package/dist/admin/admin/src/pages/UseCasePage.js +3 -2
  233. package/dist/admin/admin/src/pages/UseCasePage.js.map +1 -1
  234. package/dist/admin/admin/src/translations/ar.json.js +1 -1
  235. package/dist/admin/admin/src/translations/ar.json.mjs +1 -1
  236. package/dist/admin/admin/src/translations/cs.json.js +1 -1
  237. package/dist/admin/admin/src/translations/cs.json.mjs +1 -1
  238. package/dist/admin/admin/src/translations/de.json.js +1 -1
  239. package/dist/admin/admin/src/translations/de.json.mjs +1 -1
  240. package/dist/admin/admin/src/translations/en.json.js +1 -1
  241. package/dist/admin/admin/src/translations/en.json.mjs +1 -1
  242. package/dist/admin/admin/src/translations/es.json.js +1 -1
  243. package/dist/admin/admin/src/translations/es.json.mjs +1 -1
  244. package/dist/admin/admin/src/translations/fi.json.js +1 -1
  245. package/dist/admin/admin/src/translations/fi.json.mjs +1 -1
  246. package/dist/admin/admin/src/translations/fr.json.js +1 -1
  247. package/dist/admin/admin/src/translations/fr.json.mjs +1 -1
  248. package/dist/admin/admin/src/translations/it.json.js +1 -1
  249. package/dist/admin/admin/src/translations/it.json.mjs +1 -1
  250. package/dist/admin/admin/src/translations/ko.json.js +1 -1
  251. package/dist/admin/admin/src/translations/ko.json.mjs +1 -1
  252. package/dist/admin/admin/src/translations/nl.json.js +1 -1
  253. package/dist/admin/admin/src/translations/nl.json.mjs +1 -1
  254. package/dist/admin/admin/src/translations/pl.json.js +1 -1
  255. package/dist/admin/admin/src/translations/pl.json.mjs +1 -1
  256. package/dist/admin/admin/src/translations/ru.json.js +1 -1
  257. package/dist/admin/admin/src/translations/ru.json.mjs +1 -1
  258. package/dist/admin/admin/src/translations/tr.json.js +1 -1
  259. package/dist/admin/admin/src/translations/tr.json.mjs +1 -1
  260. package/dist/admin/admin/src/translations/uk.json.js +1 -1
  261. package/dist/admin/admin/src/translations/uk.json.mjs +1 -1
  262. package/dist/admin/admin/src/translations/vi.json.js +1 -1
  263. package/dist/admin/admin/src/translations/vi.json.mjs +1 -1
  264. package/dist/admin/admin/src/translations/zh-Hans.json.js +1 -1
  265. package/dist/admin/admin/src/translations/zh-Hans.json.mjs +1 -1
  266. package/dist/admin/admin/src/utils/getFetchClient.js +7 -2
  267. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  268. package/dist/admin/admin/src/utils/locales.js +3 -2
  269. package/dist/admin/admin/src/utils/locales.js.map +1 -1
  270. package/dist/admin/admin/src/utils/objects.js +9 -4
  271. package/dist/admin/admin/src/utils/objects.js.map +1 -1
  272. package/dist/admin/admin/src/utils/rulesEngine.js +5 -1
  273. package/dist/admin/admin/src/utils/rulesEngine.js.map +1 -1
  274. package/dist/admin/admin/src/utils/urls.js +5 -1
  275. package/dist/admin/admin/src/utils/urls.js.map +1 -1
  276. package/dist/admin/admin/src/utils/widgetVisibility.js +25 -0
  277. package/dist/admin/admin/src/utils/widgetVisibility.js.map +1 -0
  278. package/dist/admin/admin/src/utils/widgetVisibility.mjs +22 -0
  279. package/dist/admin/admin/src/utils/widgetVisibility.mjs.map +1 -0
  280. package/dist/admin/admin/tests/utils.js +3 -2
  281. package/dist/admin/admin/tests/utils.js.map +1 -1
  282. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js +7 -3
  283. package/dist/admin/ee/admin/src/hooks/useLicenseLimitNotification.js.map +1 -1
  284. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js +3 -2
  285. package/dist/admin/ee/admin/src/hooks/useLicenseLimits.js.map +1 -1
  286. package/dist/admin/ee/admin/src/pages/AuthResponse.js +3 -2
  287. package/dist/admin/ee/admin/src/pages/AuthResponse.js.map +1 -1
  288. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +6 -4
  289. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  290. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +6 -4
  291. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  292. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js +3 -2
  293. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/Modal.js.map +1 -1
  294. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js +3 -2
  295. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useAuditLogsData.js.map +1 -1
  296. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js +5 -1
  297. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useFormatTimeStamp.js.map +1 -1
  298. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js +3 -2
  299. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.js.map +1 -1
  300. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js +7 -3
  301. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/Users/components/CreateActionEE.js.map +1 -1
  302. package/dist/admin/src/StrapiApp.d.ts +7 -1
  303. package/dist/admin/src/core/apis/router.d.ts +1 -2
  304. package/dist/admin/src/hooks/useIdleSessionLogout.d.ts +66 -12
  305. package/dist/admin/src/hooks/useMenu.d.ts +2 -1
  306. package/dist/admin/src/hooks/useSettingsMenu.d.ts +2 -1
  307. package/dist/admin/src/utils/widgetVisibility.d.ts +18 -0
  308. package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
  309. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +5 -1
  310. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  311. package/dist/server/ee/server/src/controllers/authentication.js +5 -1
  312. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  313. package/dist/server/ee/server/src/controllers/user.js +12 -7
  314. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  315. package/dist/server/ee/server/src/controllers/user.mjs +7 -6
  316. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  317. package/dist/server/ee/server/src/services/auth.js +5 -1
  318. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  319. package/dist/server/ee/server/src/services/user.js +8 -4
  320. package/dist/server/ee/server/src/services/user.js.map +1 -1
  321. package/dist/server/index.js +6 -2
  322. package/dist/server/index.js.map +1 -1
  323. package/dist/server/server/src/ai/services/ai.js +10 -4
  324. package/dist/server/server/src/ai/services/ai.js.map +1 -1
  325. package/dist/server/server/src/controllers/admin.js +9 -4
  326. package/dist/server/server/src/controllers/admin.js.map +1 -1
  327. package/dist/server/server/src/controllers/authenticated-user.js +25 -4
  328. package/dist/server/server/src/controllers/authenticated-user.js.map +1 -1
  329. package/dist/server/server/src/controllers/authenticated-user.mjs +25 -4
  330. package/dist/server/server/src/controllers/authenticated-user.mjs.map +1 -1
  331. package/dist/server/server/src/controllers/authentication.js +8 -18
  332. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  333. package/dist/server/server/src/controllers/authentication.mjs +1 -16
  334. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  335. package/dist/server/server/src/controllers/user.js +9 -7
  336. package/dist/server/server/src/controllers/user.js.map +1 -1
  337. package/dist/server/server/src/controllers/user.mjs +6 -5
  338. package/dist/server/server/src/controllers/user.mjs.map +1 -1
  339. package/dist/server/server/src/controllers/webhooks.js +7 -2
  340. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  341. package/dist/server/server/src/middlewares/rateLimit.js +7 -2
  342. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  343. package/dist/server/server/src/policies/hasPermissions.js +7 -3
  344. package/dist/server/server/src/policies/hasPermissions.js.map +1 -1
  345. package/dist/server/server/src/routes/authentication.js +4 -1
  346. package/dist/server/server/src/routes/authentication.js.map +1 -1
  347. package/dist/server/server/src/routes/authentication.mjs +4 -1
  348. package/dist/server/server/src/routes/authentication.mjs.map +1 -1
  349. package/dist/server/server/src/routes/serve-admin-panel.js +8 -3
  350. package/dist/server/server/src/routes/serve-admin-panel.js.map +1 -1
  351. package/dist/server/server/src/services/api-token.js +7 -3
  352. package/dist/server/server/src/services/api-token.js.map +1 -1
  353. package/dist/server/server/src/services/auth.js +8 -3
  354. package/dist/server/server/src/services/auth.js.map +1 -1
  355. package/dist/server/server/src/services/content-type.js +6 -2
  356. package/dist/server/server/src/services/content-type.js.map +1 -1
  357. package/dist/server/server/src/services/encryption.js +8 -4
  358. package/dist/server/server/src/services/encryption.js.map +1 -1
  359. package/dist/server/server/src/services/passport.js +6 -2
  360. package/dist/server/server/src/services/passport.js.map +1 -1
  361. package/dist/server/server/src/services/permission/engine.js +5 -1
  362. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  363. package/dist/server/server/src/services/permission/permissions-manager/index.js +5 -1
  364. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  365. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +20 -11
  366. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  367. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +21 -12
  368. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  369. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js +14 -10
  370. package/dist/server/server/src/services/permission/permissions-manager/query-builders.js.map +1 -1
  371. package/dist/server/server/src/services/permission/queries.js +5 -1
  372. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  373. package/dist/server/server/src/services/project-settings.js +6 -2
  374. package/dist/server/server/src/services/project-settings.js.map +1 -1
  375. package/dist/server/server/src/services/role.js +8 -4
  376. package/dist/server/server/src/services/role.js.map +1 -1
  377. package/dist/server/server/src/services/token.js +7 -2
  378. package/dist/server/server/src/services/token.js.map +1 -1
  379. package/dist/server/server/src/services/transfer/permission.js +5 -1
  380. package/dist/server/server/src/services/transfer/permission.js.map +1 -1
  381. package/dist/server/server/src/services/transfer/token.js +10 -5
  382. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  383. package/dist/server/server/src/services/user.js +50 -9
  384. package/dist/server/server/src/services/user.js.map +1 -1
  385. package/dist/server/server/src/services/user.mjs +40 -3
  386. package/dist/server/server/src/services/user.mjs.map +1 -1
  387. package/dist/server/server/src/utils/normalize-email.js +24 -0
  388. package/dist/server/server/src/utils/normalize-email.js.map +1 -0
  389. package/dist/server/server/src/utils/normalize-email.mjs +22 -0
  390. package/dist/server/server/src/utils/normalize-email.mjs.map +1 -0
  391. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js +5 -1
  392. package/dist/server/server/src/validation/common-functions/check-fields-are-correctly-nested.js.map +1 -1
  393. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js +6 -2
  394. package/dist/server/server/src/validation/common-functions/check-fields-dont-have-duplicates.js.map +1 -1
  395. package/dist/server/server/src/validation/common-validators.js +6 -2
  396. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  397. package/dist/server/server/src/validation/policies/hasPermissions.js +6 -2
  398. package/dist/server/server/src/validation/policies/hasPermissions.js.map +1 -1
  399. package/dist/server/shared/utils/session-auth.js +5 -1
  400. package/dist/server/shared/utils/session-auth.js.map +1 -1
  401. package/dist/server/src/controllers/authenticated-user.d.ts.map +1 -1
  402. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  403. package/dist/server/src/controllers/user.d.ts.map +1 -1
  404. package/dist/server/src/index.d.ts +1 -0
  405. package/dist/server/src/index.d.ts.map +1 -1
  406. package/dist/server/src/routes/authentication.d.ts.map +1 -1
  407. package/dist/server/src/services/index.d.ts +1 -0
  408. package/dist/server/src/services/index.d.ts.map +1 -1
  409. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  410. package/dist/server/src/services/user.d.ts +1 -0
  411. package/dist/server/src/services/user.d.ts.map +1 -1
  412. package/dist/server/src/utils/normalize-email.d.ts +12 -0
  413. package/dist/server/src/utils/normalize-email.d.ts.map +1 -0
  414. package/package.json +11 -13
@@ -1 +1 @@
1
- {"version":3,"file":"common-validators.js","sources":["../../../../../server/src/validation/common-validators.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\nimport _ from 'lodash';\nimport { isEmpty, has, isNil, isArray } from 'lodash/fp';\nimport { getService } from '../utils';\nimport actionDomain, { type Action } from '../domain/action';\nimport { checkFieldsAreCorrectlyNested, checkFieldsDontHaveDuplicates } from './common-functions';\nimport actions from '../domain/action/index';\n\nconst { actionFields } = actions;\n\nconst getActionFromProvider = (actionId: string) => {\n return getService('permission').actionProvider.get(actionId);\n};\n\nexport const email = yup.string().email().lowercase();\n\nexport const firstname = yup.string().trim().min(1);\n\nexport const lastname = yup.string();\n\nexport const username = yup.string().min(1);\n\nexport const password = yup\n .string()\n .min(8)\n .test('required-byte-size', '${path} must be less than 73 bytes', function (value) {\n if (!value) return true;\n const byteSize = new TextEncoder().encode(value).length;\n return byteSize <= 72;\n })\n .matches(/[a-z]/, '${path} must contain at least one lowercase character')\n .matches(/[A-Z]/, '${path} must contain at least one uppercase character')\n .matches(/\\d/, '${path} must contain at least one number');\n\nexport const roles = yup.array(yup.strapiID()).min(1);\n\nconst isAPluginName = yup\n .string()\n .test('is-a-plugin-name', 'is not a plugin name', function (value) {\n return [undefined, 'admin', ...Object.keys(strapi.plugins)].includes(value)\n ? true\n : this.createError({ path: this.path, message: `${this.path} is not an existing plugin` });\n });\n\nexport const arrayOfConditionNames = yup\n .array()\n .of(yup.string())\n .test('is-an-array-of-conditions', 'is not a plugin name', function (value) {\n const ids = strapi.service('admin::permission').conditionProvider.keys();\n return _.isUndefined(value) || _.difference(value, ids).length === 0\n ? true\n : this.createError({ path: this.path, message: `contains conditions that don't exist` });\n });\n\nexport const permissionsAreEquals = (a: any, b: any) =>\n a.action === b.action && (a.subject === b.subject || (_.isNil(a.subject) && _.isNil(b.subject)));\n\nconst checkNoDuplicatedPermissions = (permissions: unknown) =>\n !Array.isArray(permissions) ||\n permissions.every((permA, i) =>\n permissions.slice(i + 1).every((permB) => !permissionsAreEquals(permA, permB))\n );\n\nconst checkNilFields = (action: Action) =>\n function (fields: typeof actionFields) {\n // If the parent has no action field, then we ignore this test\n if (isNil(action)) {\n return true;\n }\n\n return actionDomain.appliesToProperty('fields', action) || isNil(fields);\n };\n\nconst fieldsPropertyValidation = (action: Action) =>\n yup\n .array()\n .of(yup.string())\n .nullable()\n .test(\n 'field-nested',\n 'Fields format are incorrect (bad nesting).',\n checkFieldsAreCorrectlyNested\n )\n .test(\n 'field-nested',\n 'Fields format are incorrect (duplicates).',\n checkFieldsDontHaveDuplicates\n )\n .test(\n 'fields-restriction',\n 'The permission at ${path} must have fields set to null or undefined',\n // @ts-expect-error yup types\n checkNilFields(action)\n );\n\nexport const permission = yup\n .object()\n .shape({\n action: yup\n .string()\n .required()\n .test('action-validity', 'action is not an existing permission action', function (actionId) {\n // If the action field is Nil, ignore the test and let the required check handle the error\n if (isNil(actionId)) {\n return true;\n }\n\n return !!getActionFromProvider(actionId);\n }),\n actionParameters: yup.object().nullable(),\n subject: yup\n .string()\n .nullable()\n .test('subject-validity', 'Invalid subject submitted', function (subject) {\n // @ts-expect-error yup types\n const action = getActionFromProvider(this.options.parent.action);\n\n if (!action) {\n return true;\n }\n\n if (isNil(action.subjects)) {\n return isNil(subject);\n }\n\n if (isArray(action.subjects) && !isNil(subject)) {\n return action.subjects.includes(subject);\n }\n\n return false;\n }),\n properties: yup\n .object()\n .test('properties-structure', 'Invalid property set at ${path}', function (properties) {\n // @ts-expect-error yup types\n const action = getActionFromProvider(this.options.parent.action) as any;\n const hasNoProperties = isEmpty(properties) || isNil(properties);\n\n if (!has('options.applyToProperties', action)) {\n return hasNoProperties;\n }\n\n if (hasNoProperties) {\n return true;\n }\n\n const { applyToProperties } = action.options;\n\n if (!isArray(applyToProperties)) {\n return false;\n }\n\n return Object.keys(properties).every((property) => applyToProperties.includes(property));\n })\n .test(\n 'fields-property',\n 'Invalid fields property at ${path}',\n async function (properties = {}) {\n // @ts-expect-error yup types\n const action = getActionFromProvider(this.options.parent.action) as any;\n\n if (!action || !properties) {\n return true;\n }\n\n if (!actionDomain.appliesToProperty('fields', action)) {\n return true;\n }\n\n try {\n await fieldsPropertyValidation(action).validate(properties.fields, {\n strict: true,\n abortEarly: false,\n });\n return true;\n } catch (e: any) {\n // Propagate fieldsPropertyValidation error with updated path\n throw this.createError({\n message: e.message,\n path: `${this.path}.fields`,\n });\n }\n }\n ),\n conditions: yup.array().of(yup.string()),\n })\n .noUnknown();\n\nexport const updatePermissions = yup\n .object()\n .shape({\n permissions: yup\n .array()\n .required()\n .of(permission)\n .test(\n 'duplicated-permissions',\n 'Some permissions are duplicated (same action and subject)',\n checkNoDuplicatedPermissions\n ),\n })\n .required()\n .noUnknown();\n\nexport default {\n email,\n firstname,\n lastname,\n username,\n password,\n roles,\n isAPluginName,\n arrayOfConditionNames,\n permission,\n updatePermissions,\n};\n"],"names":["actionFields","actions","getActionFromProvider","actionId","getService","actionProvider","get","email","yup","string","lowercase","firstname","trim","min","lastname","username","password","test","value","byteSize","TextEncoder","encode","length","matches","roles","array","strapiID","isAPluginName","undefined","Object","keys","strapi","plugins","includes","createError","path","message","of","ids","service","conditionProvider","_","isUndefined","difference","permissionsAreEquals","a","b","action","subject","isNil","checkNoDuplicatedPermissions","permissions","Array","isArray","every","permA","i","slice","permB","checkNilFields","fields","actionDomain","appliesToProperty","fieldsPropertyValidation","nullable","checkFieldsAreCorrectlyNested","checkFieldsDontHaveDuplicates","permission","object","shape","required","actionParameters","options","parent","subjects","properties","hasNoProperties","isEmpty","has","applyToProperties","property","validate","strict","abortEarly","e","conditions","noUnknown","updatePermissions","arrayOfConditionNames"],"mappings":"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"}
1
+ {"version":3,"file":"common-validators.js","sources":["../../../../../server/src/validation/common-validators.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\nimport _ from 'lodash';\nimport { isEmpty, has, isNil, isArray } from 'lodash/fp';\nimport { getService } from '../utils';\nimport actionDomain, { type Action } from '../domain/action';\nimport { checkFieldsAreCorrectlyNested, checkFieldsDontHaveDuplicates } from './common-functions';\nimport actions from '../domain/action/index';\n\nconst { actionFields } = actions;\n\nconst getActionFromProvider = (actionId: string) => {\n return getService('permission').actionProvider.get(actionId);\n};\n\nexport const email = yup.string().email().lowercase();\n\nexport const firstname = yup.string().trim().min(1);\n\nexport const lastname = yup.string();\n\nexport const username = yup.string().min(1);\n\nexport const password = yup\n .string()\n .min(8)\n .test('required-byte-size', '${path} must be less than 73 bytes', function (value) {\n if (!value) return true;\n const byteSize = new TextEncoder().encode(value).length;\n return byteSize <= 72;\n })\n .matches(/[a-z]/, '${path} must contain at least one lowercase character')\n .matches(/[A-Z]/, '${path} must contain at least one uppercase character')\n .matches(/\\d/, '${path} must contain at least one number');\n\nexport const roles = yup.array(yup.strapiID()).min(1);\n\nconst isAPluginName = yup\n .string()\n .test('is-a-plugin-name', 'is not a plugin name', function (value) {\n return [undefined, 'admin', ...Object.keys(strapi.plugins)].includes(value)\n ? true\n : this.createError({ path: this.path, message: `${this.path} is not an existing plugin` });\n });\n\nexport const arrayOfConditionNames = yup\n .array()\n .of(yup.string())\n .test('is-an-array-of-conditions', 'is not a plugin name', function (value) {\n const ids = strapi.service('admin::permission').conditionProvider.keys();\n return _.isUndefined(value) || _.difference(value, ids).length === 0\n ? true\n : this.createError({ path: this.path, message: `contains conditions that don't exist` });\n });\n\nexport const permissionsAreEquals = (a: any, b: any) =>\n a.action === b.action && (a.subject === b.subject || (_.isNil(a.subject) && _.isNil(b.subject)));\n\nconst checkNoDuplicatedPermissions = (permissions: unknown) =>\n !Array.isArray(permissions) ||\n permissions.every((permA, i) =>\n permissions.slice(i + 1).every((permB) => !permissionsAreEquals(permA, permB))\n );\n\nconst checkNilFields = (action: Action) =>\n function (fields: typeof actionFields) {\n // If the parent has no action field, then we ignore this test\n if (isNil(action)) {\n return true;\n }\n\n return actionDomain.appliesToProperty('fields', action) || isNil(fields);\n };\n\nconst fieldsPropertyValidation = (action: Action) =>\n yup\n .array()\n .of(yup.string())\n .nullable()\n .test(\n 'field-nested',\n 'Fields format are incorrect (bad nesting).',\n checkFieldsAreCorrectlyNested\n )\n .test(\n 'field-nested',\n 'Fields format are incorrect (duplicates).',\n checkFieldsDontHaveDuplicates\n )\n .test(\n 'fields-restriction',\n 'The permission at ${path} must have fields set to null or undefined',\n // @ts-expect-error yup types\n checkNilFields(action)\n );\n\nexport const permission = yup\n .object()\n .shape({\n action: yup\n .string()\n .required()\n .test('action-validity', 'action is not an existing permission action', function (actionId) {\n // If the action field is Nil, ignore the test and let the required check handle the error\n if (isNil(actionId)) {\n return true;\n }\n\n return !!getActionFromProvider(actionId);\n }),\n actionParameters: yup.object().nullable(),\n subject: yup\n .string()\n .nullable()\n .test('subject-validity', 'Invalid subject submitted', function (subject) {\n // @ts-expect-error yup types\n const action = getActionFromProvider(this.options.parent.action);\n\n if (!action) {\n return true;\n }\n\n if (isNil(action.subjects)) {\n return isNil(subject);\n }\n\n if (isArray(action.subjects) && !isNil(subject)) {\n return action.subjects.includes(subject);\n }\n\n return false;\n }),\n properties: yup\n .object()\n .test('properties-structure', 'Invalid property set at ${path}', function (properties) {\n // @ts-expect-error yup types\n const action = getActionFromProvider(this.options.parent.action) as any;\n const hasNoProperties = isEmpty(properties) || isNil(properties);\n\n if (!has('options.applyToProperties', action)) {\n return hasNoProperties;\n }\n\n if (hasNoProperties) {\n return true;\n }\n\n const { applyToProperties } = action.options;\n\n if (!isArray(applyToProperties)) {\n return false;\n }\n\n return Object.keys(properties).every((property) => applyToProperties.includes(property));\n })\n .test(\n 'fields-property',\n 'Invalid fields property at ${path}',\n async function (properties = {}) {\n // @ts-expect-error yup types\n const action = getActionFromProvider(this.options.parent.action) as any;\n\n if (!action || !properties) {\n return true;\n }\n\n if (!actionDomain.appliesToProperty('fields', action)) {\n return true;\n }\n\n try {\n await fieldsPropertyValidation(action).validate(properties.fields, {\n strict: true,\n abortEarly: false,\n });\n return true;\n } catch (e: any) {\n // Propagate fieldsPropertyValidation error with updated path\n throw this.createError({\n message: e.message,\n path: `${this.path}.fields`,\n });\n }\n }\n ),\n conditions: yup.array().of(yup.string()),\n })\n .noUnknown();\n\nexport const updatePermissions = yup\n .object()\n .shape({\n permissions: yup\n .array()\n .required()\n .of(permission)\n .test(\n 'duplicated-permissions',\n 'Some permissions are duplicated (same action and subject)',\n checkNoDuplicatedPermissions\n ),\n })\n .required()\n .noUnknown();\n\nexport default {\n email,\n firstname,\n lastname,\n username,\n password,\n roles,\n isAPluginName,\n arrayOfConditionNames,\n permission,\n updatePermissions,\n};\n"],"names":["actionFields","actions","getActionFromProvider","actionId","getService","actionProvider","get","email","yup","string","lowercase","firstname","trim","min","lastname","username","password","test","value","byteSize","TextEncoder","encode","length","matches","roles","array","strapiID","isAPluginName","undefined","Object","keys","strapi","plugins","includes","createError","path","message","of","ids","service","conditionProvider","_","isUndefined","difference","permissionsAreEquals","a","b","action","subject","isNil","checkNoDuplicatedPermissions","permissions","Array","isArray","every","permA","i","slice","permB","checkNilFields","fields","actionDomain","appliesToProperty","fieldsPropertyValidation","nullable","checkFieldsAreCorrectlyNested","checkFieldsDontHaveDuplicates","permission","object","shape","required","actionParameters","options","parent","subjects","properties","hasNoProperties","isEmpty","has","applyToProperties","property","validate","strict","abortEarly","e","conditions","noUnknown","updatePermissions","arrayOfConditionNames"],"mappings":"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"}
@@ -3,13 +3,17 @@
3
3
  var _ = require('lodash');
4
4
  var utils = require('@strapi/utils');
5
5
 
6
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
7
+
8
+ var ___default = /*#__PURE__*/_interopDefault(_);
9
+
6
10
  const hasPermissionsSchema = utils.yup.object({
7
11
  actions: utils.yup.array().of(// @ts-expect-error yup types
8
12
  utils.yup.lazy((val)=>{
9
- if (_.isArray(val)) {
13
+ if (___default.default.isArray(val)) {
10
14
  return utils.yup.array().of(utils.yup.string()).min(1).max(2);
11
15
  }
12
- if (_.isString(val)) {
16
+ if (___default.default.isString(val)) {
13
17
  return utils.yup.string().required();
14
18
  }
15
19
  return utils.yup.object().shape({
@@ -1 +1 @@
1
- {"version":3,"file":"hasPermissions.js","sources":["../../../../../../server/src/validation/policies/hasPermissions.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup, validateYupSchema } from '@strapi/utils';\n\nconst hasPermissionsSchema = yup.object({\n actions: yup.array().of(\n // @ts-expect-error yup types\n yup.lazy((val) => {\n if (_.isArray(val)) {\n return yup.array().of(yup.string()).min(1).max(2);\n }\n\n if (_.isString(val)) {\n return yup.string().required();\n }\n\n return yup.object().shape({\n action: yup.string().required(),\n subject: yup.string(),\n });\n })\n ),\n});\n\nexport const validateHasPermissionsInput = validateYupSchema(hasPermissionsSchema);\n\nexport default {\n validateHasPermissionsInput,\n};\n"],"names":["hasPermissionsSchema","yup","object","actions","array","of","lazy","val","_","isArray","string","min","max","isString","required","shape","action","subject","validateHasPermissionsInput","validateYupSchema"],"mappings":";;;;;AAGA,MAAMA,oBAAAA,GAAuBC,SAAAA,CAAIC,MAAM,CAAC;AACtCC,IAAAA,OAAAA,EAASF,SAAAA,CAAIG,KAAK,EAAA,CAAGC,EAAE;IAErBJ,SAAAA,CAAIK,IAAI,CAAC,CAACC,GAAAA,GAAAA;QACR,IAAIC,CAAAA,CAAEC,OAAO,CAACF,GAAAA,CAAAA,EAAM;AAClB,YAAA,OAAON,SAAAA,CAAIG,KAAK,EAAA,CAAGC,EAAE,CAACJ,SAAAA,CAAIS,MAAM,EAAA,CAAA,CAAIC,GAAG,CAAC,CAAA,CAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;AACjD,QAAA;QAEA,IAAIJ,CAAAA,CAAEK,QAAQ,CAACN,GAAAA,CAAAA,EAAM;YACnB,OAAON,SAAAA,CAAIS,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAC9B,QAAA;AAEA,QAAA,OAAOb,SAAAA,CAAIC,MAAM,EAAA,CAAGa,KAAK,CAAC;YACxBC,MAAAA,EAAQf,SAAAA,CAAIS,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAC7BG,YAAAA,OAAAA,EAAShB,UAAIS,MAAM;AACrB,SAAA,CAAA;AACF,IAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEO,MAAMQ,2BAAAA,GAA8BC,uBAAAA,CAAkBnB,oBAAAA;;;;"}
1
+ {"version":3,"file":"hasPermissions.js","sources":["../../../../../../server/src/validation/policies/hasPermissions.ts"],"sourcesContent":["import _ from 'lodash';\nimport { yup, validateYupSchema } from '@strapi/utils';\n\nconst hasPermissionsSchema = yup.object({\n actions: yup.array().of(\n // @ts-expect-error yup types\n yup.lazy((val) => {\n if (_.isArray(val)) {\n return yup.array().of(yup.string()).min(1).max(2);\n }\n\n if (_.isString(val)) {\n return yup.string().required();\n }\n\n return yup.object().shape({\n action: yup.string().required(),\n subject: yup.string(),\n });\n })\n ),\n});\n\nexport const validateHasPermissionsInput = validateYupSchema(hasPermissionsSchema);\n\nexport default {\n validateHasPermissionsInput,\n};\n"],"names":["hasPermissionsSchema","yup","object","actions","array","of","lazy","val","_","isArray","string","min","max","isString","required","shape","action","subject","validateHasPermissionsInput","validateYupSchema"],"mappings":";;;;;;;;;AAGA,MAAMA,oBAAAA,GAAuBC,SAAAA,CAAIC,MAAM,CAAC;AACtCC,IAAAA,OAAAA,EAASF,SAAAA,CAAIG,KAAK,EAAA,CAAGC,EAAE;IAErBJ,SAAAA,CAAIK,IAAI,CAAC,CAACC,GAAAA,GAAAA;QACR,IAAIC,kBAAAA,CAAEC,OAAO,CAACF,GAAAA,CAAAA,EAAM;AAClB,YAAA,OAAON,SAAAA,CAAIG,KAAK,EAAA,CAAGC,EAAE,CAACJ,SAAAA,CAAIS,MAAM,EAAA,CAAA,CAAIC,GAAG,CAAC,CAAA,CAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;AACjD,QAAA;QAEA,IAAIJ,kBAAAA,CAAEK,QAAQ,CAACN,GAAAA,CAAAA,EAAM;YACnB,OAAON,SAAAA,CAAIS,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAC9B,QAAA;AAEA,QAAA,OAAOb,SAAAA,CAAIC,MAAM,EAAA,CAAGa,KAAK,CAAC;YACxBC,MAAAA,EAAQf,SAAAA,CAAIS,MAAM,EAAA,CAAGI,QAAQ,EAAA;AAC7BG,YAAAA,OAAAA,EAAShB,UAAIS,MAAM;AACrB,SAAA,CAAA;AACF,IAAA,CAAA,CAAA;AAEJ,CAAA,CAAA;AAEO,MAAMQ,2BAAAA,GAA8BC,uBAAAA,CAAkBnB,oBAAAA;;;;"}
@@ -2,6 +2,10 @@
2
2
 
3
3
  var crypto = require('crypto');
4
4
 
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var crypto__default = /*#__PURE__*/_interopDefault(crypto);
8
+
5
9
  const REFRESH_COOKIE_NAME = 'strapi_admin_refresh';
6
10
  const DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN = 30 * 24 * 60 * 60;
7
11
  const DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN = 14 * 24 * 60 * 60;
@@ -61,7 +65,7 @@ const getSessionManager = ()=>{
61
65
  const manager = strapi.sessionManager;
62
66
  return manager ?? null;
63
67
  };
64
- const generateDeviceId = ()=>crypto.randomUUID();
68
+ const generateDeviceId = ()=>crypto__default.default.randomUUID();
65
69
  const extractDeviceParams = (requestBody)=>{
66
70
  const body = requestBody ?? {};
67
71
  const deviceId = body.deviceId || generateDeviceId();
@@ -1 +1 @@
1
- {"version":3,"file":"session-auth.js","sources":["../../../../shared/utils/session-auth.ts"],"sourcesContent":["import crypto from 'crypto';\nimport type { Modules } from '@strapi/types';\n\nexport const REFRESH_COOKIE_NAME = 'strapi_admin_refresh';\n\nexport const DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN = 30 * 24 * 60 * 60;\nexport const DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN = 14 * 24 * 60 * 60;\nexport const DEFAULT_MAX_SESSION_LIFESPAN = 1 * 24 * 60 * 60;\nexport const DEFAULT_IDLE_SESSION_LIFESPAN = 2 * 60 * 60;\n\nexport const getRefreshCookieOptions = (secureRequest?: boolean) => {\n const configuredSecure = strapi.config.get('admin.auth.cookie.secure');\n const isProduction = process.env.NODE_ENV === 'production';\n\n const domain: string | undefined =\n strapi.config.get('admin.auth.cookie.domain') || strapi.config.get('admin.auth.domain');\n const path: string = strapi.config.get('admin.auth.cookie.path', '/admin');\n\n const sameSite: boolean | 'lax' | 'strict' | 'none' =\n strapi.config.get('admin.auth.cookie.sameSite') ?? 'lax';\n\n let isSecure: boolean;\n if (typeof configuredSecure === 'boolean') {\n isSecure = configuredSecure;\n } else if (secureRequest !== undefined) {\n isSecure = isProduction && secureRequest;\n } else {\n isSecure = isProduction;\n }\n\n return {\n httpOnly: true,\n secure: isSecure,\n overwrite: true,\n domain,\n path,\n sameSite,\n maxAge: undefined,\n };\n};\n\nconst getLifespansForType = (\n type: 'refresh' | 'session'\n): { idleSeconds: number; maxSeconds: number } => {\n if (type === 'refresh') {\n const idleSeconds = Number(\n strapi.config.get(\n 'admin.auth.sessions.idleRefreshTokenLifespan',\n DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN\n )\n );\n const maxSeconds = Number(\n strapi.config.get(\n 'admin.auth.sessions.maxRefreshTokenLifespan',\n DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN\n )\n );\n\n return { idleSeconds, maxSeconds };\n }\n\n const idleSeconds = Number(\n strapi.config.get('admin.auth.sessions.idleSessionLifespan', DEFAULT_IDLE_SESSION_LIFESPAN)\n );\n const maxSeconds = Number(\n strapi.config.get('admin.auth.sessions.maxSessionLifespan', DEFAULT_MAX_SESSION_LIFESPAN)\n );\n\n return { idleSeconds, maxSeconds };\n};\n\nexport const buildCookieOptionsWithExpiry = (\n type: 'refresh' | 'session',\n absoluteExpiresAtISO?: string,\n secureRequest?: boolean\n) => {\n const base = getRefreshCookieOptions(secureRequest);\n if (type === 'session') {\n return base;\n }\n\n const { idleSeconds } = getLifespansForType('refresh');\n const now = Date.now();\n const idleExpiry = now + idleSeconds * 1000;\n const absoluteExpiry = absoluteExpiresAtISO\n ? new Date(absoluteExpiresAtISO).getTime()\n : idleExpiry;\n const chosen = new Date(Math.min(idleExpiry, absoluteExpiry));\n\n return { ...base, expires: chosen, maxAge: Math.max(0, chosen.getTime() - now) };\n};\n\nexport const getSessionManager = (): Modules.SessionManager.SessionManagerService | null => {\n const manager = strapi.sessionManager as Modules.SessionManager.SessionManagerService | undefined;\n return manager ?? null;\n};\n\nexport const generateDeviceId = (): string => crypto.randomUUID();\n\nexport const extractDeviceParams = (\n requestBody: unknown\n): { deviceId: string; rememberMe: boolean } => {\n const body = (requestBody ?? {}) as { deviceId?: string; rememberMe?: boolean };\n const deviceId = body.deviceId || generateDeviceId();\n const rememberMe = Boolean(body.rememberMe);\n\n return { deviceId, rememberMe };\n};\n"],"names":["REFRESH_COOKIE_NAME","DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN","DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN","DEFAULT_MAX_SESSION_LIFESPAN","DEFAULT_IDLE_SESSION_LIFESPAN","getRefreshCookieOptions","secureRequest","configuredSecure","strapi","config","get","isProduction","process","env","NODE_ENV","domain","path","sameSite","isSecure","undefined","httpOnly","secure","overwrite","maxAge","getLifespansForType","type","idleSeconds","Number","maxSeconds","buildCookieOptionsWithExpiry","absoluteExpiresAtISO","base","now","Date","idleExpiry","absoluteExpiry","getTime","chosen","Math","min","expires","max","getSessionManager","manager","sessionManager","generateDeviceId","crypto","randomUUID","extractDeviceParams","requestBody","body","deviceId","rememberMe","Boolean"],"mappings":"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"}
1
+ {"version":3,"file":"session-auth.js","sources":["../../../../shared/utils/session-auth.ts"],"sourcesContent":["import crypto from 'crypto';\nimport type { Modules } from '@strapi/types';\n\nexport const REFRESH_COOKIE_NAME = 'strapi_admin_refresh';\n\nexport const DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN = 30 * 24 * 60 * 60;\nexport const DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN = 14 * 24 * 60 * 60;\nexport const DEFAULT_MAX_SESSION_LIFESPAN = 1 * 24 * 60 * 60;\nexport const DEFAULT_IDLE_SESSION_LIFESPAN = 2 * 60 * 60;\n\nexport const getRefreshCookieOptions = (secureRequest?: boolean) => {\n const configuredSecure = strapi.config.get('admin.auth.cookie.secure');\n const isProduction = process.env.NODE_ENV === 'production';\n\n const domain: string | undefined =\n strapi.config.get('admin.auth.cookie.domain') || strapi.config.get('admin.auth.domain');\n const path: string = strapi.config.get('admin.auth.cookie.path', '/admin');\n\n const sameSite: boolean | 'lax' | 'strict' | 'none' =\n strapi.config.get('admin.auth.cookie.sameSite') ?? 'lax';\n\n let isSecure: boolean;\n if (typeof configuredSecure === 'boolean') {\n isSecure = configuredSecure;\n } else if (secureRequest !== undefined) {\n isSecure = isProduction && secureRequest;\n } else {\n isSecure = isProduction;\n }\n\n return {\n httpOnly: true,\n secure: isSecure,\n overwrite: true,\n domain,\n path,\n sameSite,\n maxAge: undefined,\n };\n};\n\nconst getLifespansForType = (\n type: 'refresh' | 'session'\n): { idleSeconds: number; maxSeconds: number } => {\n if (type === 'refresh') {\n const idleSeconds = Number(\n strapi.config.get(\n 'admin.auth.sessions.idleRefreshTokenLifespan',\n DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN\n )\n );\n const maxSeconds = Number(\n strapi.config.get(\n 'admin.auth.sessions.maxRefreshTokenLifespan',\n DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN\n )\n );\n\n return { idleSeconds, maxSeconds };\n }\n\n const idleSeconds = Number(\n strapi.config.get('admin.auth.sessions.idleSessionLifespan', DEFAULT_IDLE_SESSION_LIFESPAN)\n );\n const maxSeconds = Number(\n strapi.config.get('admin.auth.sessions.maxSessionLifespan', DEFAULT_MAX_SESSION_LIFESPAN)\n );\n\n return { idleSeconds, maxSeconds };\n};\n\nexport const buildCookieOptionsWithExpiry = (\n type: 'refresh' | 'session',\n absoluteExpiresAtISO?: string,\n secureRequest?: boolean\n) => {\n const base = getRefreshCookieOptions(secureRequest);\n if (type === 'session') {\n return base;\n }\n\n const { idleSeconds } = getLifespansForType('refresh');\n const now = Date.now();\n const idleExpiry = now + idleSeconds * 1000;\n const absoluteExpiry = absoluteExpiresAtISO\n ? new Date(absoluteExpiresAtISO).getTime()\n : idleExpiry;\n const chosen = new Date(Math.min(idleExpiry, absoluteExpiry));\n\n return { ...base, expires: chosen, maxAge: Math.max(0, chosen.getTime() - now) };\n};\n\nexport const getSessionManager = (): Modules.SessionManager.SessionManagerService | null => {\n const manager = strapi.sessionManager as Modules.SessionManager.SessionManagerService | undefined;\n return manager ?? null;\n};\n\nexport const generateDeviceId = (): string => crypto.randomUUID();\n\nexport const extractDeviceParams = (\n requestBody: unknown\n): { deviceId: string; rememberMe: boolean } => {\n const body = (requestBody ?? {}) as { deviceId?: string; rememberMe?: boolean };\n const deviceId = body.deviceId || generateDeviceId();\n const rememberMe = Boolean(body.rememberMe);\n\n return { deviceId, rememberMe };\n};\n"],"names":["REFRESH_COOKIE_NAME","DEFAULT_MAX_REFRESH_TOKEN_LIFESPAN","DEFAULT_IDLE_REFRESH_TOKEN_LIFESPAN","DEFAULT_MAX_SESSION_LIFESPAN","DEFAULT_IDLE_SESSION_LIFESPAN","getRefreshCookieOptions","secureRequest","configuredSecure","strapi","config","get","isProduction","process","env","NODE_ENV","domain","path","sameSite","isSecure","undefined","httpOnly","secure","overwrite","maxAge","getLifespansForType","type","idleSeconds","Number","maxSeconds","buildCookieOptionsWithExpiry","absoluteExpiresAtISO","base","now","Date","idleExpiry","absoluteExpiry","getTime","chosen","Math","min","expires","max","getSessionManager","manager","sessionManager","generateDeviceId","crypto","randomUUID","extractDeviceParams","requestBody","body","deviceId","rememberMe","Boolean"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"authenticated-user.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/authenticated-user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;eAShB,OAAO;kBAQJ,OAAO;2BAiCE,OAAO;;AA1CtC,wBAqDE"}
1
+ {"version":3,"file":"authenticated-user.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/authenticated-user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;eAUhB,OAAO;kBAQJ,OAAO;2BAoDE,OAAO;;AA7DtC,wBAwEE"}
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAQ,MAAM,KAAK,CAAC;AAGzC,OAAO,eAAe,CAAC;;;0BAiHO,OAAO;kBAcf,OAAO;uBA8CF,OAAO;wBAmEN,OAAO;uBAUR,OAAO;qBAmDT,OAAO;gBAyCZ,OAAO;;AAtT3B,wBA+UE"}
1
+ {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/authentication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAQ,MAAM,KAAK,CAAC;AAGzC,OAAO,eAAe,CAAC;;;0BAkHO,OAAO;kBAcf,OAAO;uBA8CF,OAAO;wBAgDN,OAAO;uBAUR,OAAO;qBAmDT,OAAO;gBAyCZ,OAAO;;AAnS3B,wBA4TE"}
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;gBAuBf,OAAO;cAkCT,OAAO;iBAsBJ,OAAO;gBAcR,OAAO;mBA4BJ,OAAO;IAmB5B;;;OAGG;oBACmB,OAAO;;AA1H/B,wBA4IE"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../server/src/controllers/user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;gBAwBf,OAAO;cAkCT,OAAO;iBAsBJ,OAAO;gBAcR,OAAO;mBA4BJ,OAAO;IAmB5B;;;OAGG;oBACmB,OAAO;;AA1H/B,wBA4IE"}
@@ -108,6 +108,7 @@ declare let admin: {
108
108
  create: (attributes: Partial<import("../../shared/contracts/shared").AdminUserCreationPayload> & {
109
109
  isActive?: true | undefined;
110
110
  }) => Promise<import("../../shared/contracts/shared").AdminUser>;
111
+ createFirstAdmin: (attributes: Omit<Partial<import("../../shared/contracts/shared").AdminUserCreationPayload>, "roles" | "isActive" | "registrationToken">) => Promise<import("../../shared/contracts/shared").AdminUser>;
111
112
  updateById: (id: import("@strapi/types/dist/data").ID, attributes: Partial<import("../../shared/contracts/shared").AdminUserUpdatePayload>) => Promise<import("../../shared/contracts/shared").AdminUser>;
112
113
  exists: (attributes?: unknown) => Promise<boolean>;
113
114
  findRegistrationInfo: (registrationToken: string) => Promise<Pick<import("../../shared/contracts/shared").AdminUser, "firstname" | "lastname" | "email"> | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";AAeA,QAAA,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWR,CAAC;AAUF,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/src/index.ts"],"names":[],"mappings":";AAeA,QAAA,IAAI,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAWR,CAAC;AAUF,eAAe,KAAK,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/authentication.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA2DE"}
1
+ {"version":3,"file":"authentication.d.ts","sourceRoot":"","sources":["../../../../server/src/routes/authentication.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,wBA8DE"}
@@ -29,6 +29,7 @@ declare const _default: {
29
29
  create: (attributes: Partial<import("../../../shared/contracts/shared").AdminUserCreationPayload> & {
30
30
  isActive?: true | undefined;
31
31
  }) => Promise<import("../../../shared/contracts/shared").AdminUser>;
32
+ createFirstAdmin: (attributes: Omit<Partial<import("../../../shared/contracts/shared").AdminUserCreationPayload>, "roles" | "isActive" | "registrationToken">) => Promise<import("../../../shared/contracts/shared").AdminUser>;
32
33
  updateById: (id: import("@strapi/types/dist/data").ID, attributes: Partial<import("../../../shared/contracts/shared").AdminUserUpdatePayload>) => Promise<import("../../../shared/contracts/shared").AdminUser>;
33
34
  exists: (attributes?: unknown) => Promise<boolean>;
34
35
  findRegistrationInfo: (registrationToken: string) => Promise<Pick<import("../../../shared/contracts/shared").AdminUser, "firstname" | "lastname" | "email"> | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmBpD,sDAAsD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAZxD,wBAoBE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/src/services/index.ts"],"names":[],"mappings":";AAOA,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,WAAW,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,MAAM,MAAM,UAAU,CAAC;AAEnC,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,eAAe,MAAM,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmBpD,sDAAsD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAZxD,wBAoBE"}
@@ -1 +1 @@
1
- {"version":3,"file":"permission-fields.d.ts","sourceRoot":"","sources":["../../../../../../server/src/services/permission/permissions-manager/permission-fields.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,YAAa,OAAO;0CAGb,MAAM,WAAW,GAAG,KAAG,sBAAsB;;CA6C3F,CAAC"}
1
+ {"version":3,"file":"permission-fields.d.ts","sourceRoot":"","sources":["../../../../../../server/src/services/permission/permissions-manager/permission-fields.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,MAAM,WAAW,sBAAsB;IACrC,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,YAAa,OAAO;0CAGb,MAAM,WAAW,GAAG,KAAG,sBAAsB;;CAuD3F,CAAC"}
@@ -4,6 +4,7 @@ declare const _default: {
4
4
  create: (attributes: Partial<AdminUserCreationPayload> & {
5
5
  isActive?: true | undefined;
6
6
  }) => Promise<AdminUser>;
7
+ createFirstAdmin: (attributes: Omit<Partial<AdminUserCreationPayload>, "roles" | "isActive" | "registrationToken">) => Promise<AdminUser>;
7
8
  updateById: (id: Data.ID, attributes: Partial<AdminUserUpdatePayload>) => Promise<AdminUser>;
8
9
  exists: (attributes?: unknown) => Promise<boolean>;
9
10
  findRegistrationInfo: (registrationToken: string) => Promise<Pick<AdminUser, "firstname" | "lastname" | "email"> | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../server/src/services/user.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EACV,SAAS,EAET,wBAAwB,EACxB,kBAAkB,EAElB,sBAAsB,EAEvB,MAAM,kCAAkC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AAiZ1C,wBAmBE"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../server/src/services/user.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,KAAK,EACV,SAAS,EAET,wBAAwB,EACxB,kBAAkB,EAElB,sBAAsB,EAEvB,MAAM,kCAAkC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsc1C,wBAoBE"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Returns a shallow copy of an admin user payload with `email` lowercased.
3
+ *
4
+ * Admin email uniqueness depends on values being stored canonically lowercase: `admin_users.email`
5
+ * is a plain unique index with no guaranteed case-insensitive collation across SQLite/Postgres/MySQL,
6
+ * and the strict Yup email validator rejects mixed-case input rather than normalizing it. Controllers
7
+ * must therefore lowercase the email before validation, the uniqueness check, and persistence
8
+ * (mirroring `user.create`). The `email` key is only rewritten when present, so partial updates that
9
+ * omit it are left untouched.
10
+ */
11
+ export declare const normalizeEmail: <T extends object>(payload: T) => T;
12
+ //# sourceMappingURL=normalize-email.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalize-email.d.ts","sourceRoot":"","sources":["../../../../server/src/utils/normalize-email.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,8BAA+B,CAAC,KAAG,CAQ7D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/admin",
3
- "version": "5.48.0",
3
+ "version": "5.49.0",
4
4
  "description": "Strapi Admin",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -91,14 +91,14 @@
91
91
  "@reduxjs/toolkit": "1.9.7",
92
92
  "@strapi/design-system": "2.2.0",
93
93
  "@strapi/icons": "2.2.0",
94
- "@strapi/permissions": "5.48.0",
95
- "@strapi/types": "5.48.0",
96
- "@strapi/typescript-utils": "5.48.0",
97
- "@strapi/utils": "5.48.0",
94
+ "@strapi/permissions": "5.49.0",
95
+ "@strapi/types": "5.49.0",
96
+ "@strapi/typescript-utils": "5.49.0",
97
+ "@strapi/utils": "5.49.0",
98
98
  "@testing-library/dom": "10.4.1",
99
99
  "@testing-library/react": "16.3.2",
100
100
  "@testing-library/user-event": "14.6.1",
101
- "axios": "1.17.0",
101
+ "axios": "1.18.0",
102
102
  "bcryptjs": "2.4.3",
103
103
  "boxen": "5.1.2",
104
104
  "chalk": "^4.1.2",
@@ -138,7 +138,6 @@
138
138
  "react-select": "5.8.0",
139
139
  "react-window": "1.8.10",
140
140
  "rimraf": "6.1.3",
141
- "sanitize-html": "2.17.4",
142
141
  "scheduler": "0.23.0",
143
142
  "semver": "7.7.4",
144
143
  "sift": "16.0.1",
@@ -149,11 +148,11 @@
149
148
  "zod": "3.25.67"
150
149
  },
151
150
  "devDependencies": {
152
- "@strapi/admin-test-utils": "5.48.0",
153
- "@strapi/data-transfer": "5.48.0",
151
+ "@strapi/admin-test-utils": "5.49.0",
152
+ "@strapi/data-transfer": "5.49.0",
154
153
  "@types/codemirror5": "npm:@types/codemirror@^5.60.15",
155
154
  "@types/fs-extra": "11.0.4",
156
- "@types/invariant": "2.2.36",
155
+ "@types/invariant": "2.2.37",
157
156
  "@types/json-logic-js": "2.0.8",
158
157
  "@types/jsonwebtoken": "9.0.3",
159
158
  "@types/koa-passport": "6.0.1",
@@ -165,8 +164,7 @@
165
164
  "@types/passport-local": "1.0.36",
166
165
  "@types/pluralize": "0.0.32",
167
166
  "@types/react-window": "1.8.8",
168
- "@types/sanitize-html": "2.13.0",
169
- "@vitejs/plugin-react-swc": "3.6.0",
167
+ "@vitejs/plugin-react-swc": "3.11.0",
170
168
  "koa-body": "6.0.1",
171
169
  "msw": "2.13.4",
172
170
  "react": "18.3.1",
@@ -184,7 +182,7 @@
184
182
  "styled-components": "^6.0.0"
185
183
  },
186
184
  "engines": {
187
- "node": ">=20.0.0 <=24.x.x",
185
+ "node": ">=20.0.0 <=26.x.x",
188
186
  "npm": ">=6.0.0"
189
187
  },
190
188
  "nx": {