@strapi/admin 5.0.0-beta.3 → 5.0.0-beta.5

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 (191) hide show
  1. package/dist/admin/{AuthResponse-5G-7aJDM.mjs → AuthResponse-B3Y_lz50.mjs} +18 -4
  2. package/dist/admin/AuthResponse-B3Y_lz50.mjs.map +1 -0
  3. package/dist/admin/{AuthResponse-kdo9DYPT.js → AuthResponse-FrsRAqFn.js} +18 -7
  4. package/dist/admin/AuthResponse-FrsRAqFn.js.map +1 -0
  5. package/dist/admin/{AuthenticatedLayout-zaOd05gw.mjs → AuthenticatedLayout-CHSwnqUb.mjs} +61 -19
  6. package/dist/admin/AuthenticatedLayout-CHSwnqUb.mjs.map +1 -0
  7. package/dist/admin/{AuthenticatedLayout-1x0WC6c6.js → AuthenticatedLayout-vS7Bwbws.js} +58 -16
  8. package/dist/admin/AuthenticatedLayout-vS7Bwbws.js.map +1 -0
  9. package/dist/admin/{CreatePage-pniatTP-.mjs → CreatePage-BrnwHVcz.mjs} +3 -3
  10. package/dist/admin/{CreatePage-pniatTP-.mjs.map → CreatePage-BrnwHVcz.mjs.map} +1 -1
  11. package/dist/admin/{CreatePage-z4ERqv1R.js → CreatePage-FylqLa6E.js} +2 -2
  12. package/dist/admin/{CreatePage-z4ERqv1R.js.map → CreatePage-FylqLa6E.js.map} +1 -1
  13. package/dist/admin/{CreatePage-J84OUqE4.js → CreatePage-aBOoUjUW.js} +3 -3
  14. package/dist/admin/{CreatePage-J84OUqE4.js.map → CreatePage-aBOoUjUW.js.map} +1 -1
  15. package/dist/admin/{CreatePage-gSoe3n8A.mjs → CreatePage-rnuGS1p6.mjs} +2 -2
  16. package/dist/admin/{CreatePage-gSoe3n8A.mjs.map → CreatePage-rnuGS1p6.mjs.map} +1 -1
  17. package/dist/admin/{CreateView-NwMXZjDh.js → CreateView-L-2WWDGY.js} +2 -2
  18. package/dist/admin/{CreateView-NwMXZjDh.js.map → CreateView-L-2WWDGY.js.map} +1 -1
  19. package/dist/admin/{CreateView-sFb3ySEj.mjs → CreateView-g1_N_BFO.mjs} +2 -2
  20. package/dist/admin/{CreateView-sFb3ySEj.mjs.map → CreateView-g1_N_BFO.mjs.map} +1 -1
  21. package/dist/admin/{CreateView-JNmfRawb.js → CreateView-s_woT94q.js} +2 -2
  22. package/dist/admin/{CreateView-JNmfRawb.js.map → CreateView-s_woT94q.js.map} +1 -1
  23. package/dist/admin/{CreateView-BdO0Pvex.mjs → CreateView-v0E-2MUk.mjs} +2 -2
  24. package/dist/admin/{CreateView-BdO0Pvex.mjs.map → CreateView-v0E-2MUk.mjs.map} +1 -1
  25. package/dist/admin/{EditPage-rdOE18EC.js → EditPage-FLtTVd-J.js} +4 -4
  26. package/dist/admin/{EditPage-rdOE18EC.js.map → EditPage-FLtTVd-J.js.map} +1 -1
  27. package/dist/admin/{EditPage-eR6riBsR.js → EditPage-QD0hqEQx.js} +3 -3
  28. package/dist/admin/{EditPage-eR6riBsR.js.map → EditPage-QD0hqEQx.js.map} +1 -1
  29. package/dist/admin/{EditPage-yztdPcnM.mjs → EditPage-RH6-47fP.mjs} +4 -4
  30. package/dist/admin/{EditPage-yztdPcnM.mjs.map → EditPage-RH6-47fP.mjs.map} +1 -1
  31. package/dist/admin/{EditPage-dAyJwJfs.js → EditPage-l77sfwOj.js} +5 -5
  32. package/dist/admin/{EditPage-dAyJwJfs.js.map → EditPage-l77sfwOj.js.map} +1 -1
  33. package/dist/admin/{EditPage-IQRLHMer.mjs → EditPage-pZmycDG6.mjs} +5 -5
  34. package/dist/admin/{EditPage-IQRLHMer.mjs.map → EditPage-pZmycDG6.mjs.map} +1 -1
  35. package/dist/admin/{EditPage-3wx6NJgA.mjs → EditPage-x0JVIh4C.mjs} +3 -3
  36. package/dist/admin/{EditPage-3wx6NJgA.mjs.map → EditPage-x0JVIh4C.mjs.map} +1 -1
  37. package/dist/admin/{EditView-oyHNBKvL.js → EditView-0jWi165t.js} +3 -3
  38. package/dist/admin/{EditView-oyHNBKvL.js.map → EditView-0jWi165t.js.map} +1 -1
  39. package/dist/admin/{EditView-fbzip_S8.mjs → EditView-dEKhCE7v.mjs} +3 -3
  40. package/dist/admin/{EditView-fbzip_S8.mjs.map → EditView-dEKhCE7v.mjs.map} +1 -1
  41. package/dist/admin/{EditViewPage-LdDGNi6d.js → EditViewPage-mLGPwfRP.js} +3 -3
  42. package/dist/admin/{EditViewPage-LdDGNi6d.js.map → EditViewPage-mLGPwfRP.js.map} +1 -1
  43. package/dist/admin/{EditViewPage-rDgxiutd.mjs → EditViewPage-urKxemM0.mjs} +3 -3
  44. package/dist/admin/{EditViewPage-rDgxiutd.mjs.map → EditViewPage-urKxemM0.mjs.map} +1 -1
  45. package/dist/admin/{EventsTable-rNMPq-X1.mjs → EventsTable-BCAvurrX.mjs} +2 -2
  46. package/dist/admin/{EventsTable-rNMPq-X1.mjs.map → EventsTable-BCAvurrX.mjs.map} +1 -1
  47. package/dist/admin/{EventsTable--peC0Geq.js → EventsTable-y0d489dF.js} +2 -2
  48. package/dist/admin/{EventsTable--peC0Geq.js.map → EventsTable-y0d489dF.js.map} +1 -1
  49. package/dist/admin/{HomePage-14WM2hIE.js → HomePage-1CH8bE47.js} +2 -2
  50. package/dist/admin/{HomePage-14WM2hIE.js.map → HomePage-1CH8bE47.js.map} +1 -1
  51. package/dist/admin/{HomePage-qgAro8dS.mjs → HomePage-hsBKC9UT.mjs} +3 -3
  52. package/dist/admin/{HomePage-qgAro8dS.mjs.map → HomePage-hsBKC9UT.mjs.map} +1 -1
  53. package/dist/admin/{HomePage-zQ7HL9y6.mjs → HomePage-jcsulO2V.mjs} +2 -2
  54. package/dist/admin/{HomePage-zQ7HL9y6.mjs.map → HomePage-jcsulO2V.mjs.map} +1 -1
  55. package/dist/admin/{HomePage-e2Bs6Kar.js → HomePage-p-eVAC_O.js} +3 -3
  56. package/dist/admin/{HomePage-e2Bs6Kar.js.map → HomePage-p-eVAC_O.js.map} +1 -1
  57. package/dist/admin/{Layout-mEj5c1Bi.mjs → Layout-E5qOsA9X.mjs} +3 -3
  58. package/dist/admin/{Layout-mEj5c1Bi.mjs.map → Layout-E5qOsA9X.mjs.map} +1 -1
  59. package/dist/admin/{Layout-KAX2c8wc.js → Layout-TtAytojj.js} +3 -3
  60. package/dist/admin/{Layout-KAX2c8wc.js.map → Layout-TtAytojj.js.map} +1 -1
  61. package/dist/admin/{ListPage-AI8neqxV.mjs → ListPage-54QP9CgX.mjs} +2 -2
  62. package/dist/admin/{ListPage-AI8neqxV.mjs.map → ListPage-54QP9CgX.mjs.map} +1 -1
  63. package/dist/admin/{ListPage-AUimd0cK.js → ListPage-AzfR4Vrk.js} +5 -5
  64. package/dist/admin/{ListPage-AUimd0cK.js.map → ListPage-AzfR4Vrk.js.map} +1 -1
  65. package/dist/admin/{ListPage-asZ9aDzG.mjs → ListPage-DVSiz4k2.mjs} +3 -4
  66. package/dist/admin/ListPage-DVSiz4k2.mjs.map +1 -0
  67. package/dist/admin/{ListPage-DxI49fdQ.js → ListPage-FJ7Z1gS2.js} +3 -4
  68. package/dist/admin/ListPage-FJ7Z1gS2.js.map +1 -0
  69. package/dist/admin/{ListPage-BIpKdUdv.mjs → ListPage-M4WMxB5d.mjs} +2 -2
  70. package/dist/admin/{ListPage-BIpKdUdv.mjs.map → ListPage-M4WMxB5d.mjs.map} +1 -1
  71. package/dist/admin/{ListPage-tniramRN.mjs → ListPage-VymLq96p.mjs} +5 -5
  72. package/dist/admin/{ListPage-tniramRN.mjs.map → ListPage-VymLq96p.mjs.map} +1 -1
  73. package/dist/admin/{ListPage-ZDEeaYvm.mjs → ListPage-_p5xKu6Q.mjs} +2 -2
  74. package/dist/admin/{ListPage-ZDEeaYvm.mjs.map → ListPage-_p5xKu6Q.mjs.map} +1 -1
  75. package/dist/admin/{ListPage-ARW72ceH.js → ListPage-av7186GD.js} +2 -2
  76. package/dist/admin/{ListPage-ARW72ceH.js.map → ListPage-av7186GD.js.map} +1 -1
  77. package/dist/admin/{ListPage-romICg1Z.js → ListPage-hhPlIMGc.js} +2 -2
  78. package/dist/admin/{ListPage-romICg1Z.js.map → ListPage-hhPlIMGc.js.map} +1 -1
  79. package/dist/admin/{ListPage-MvgbZlgc.js → ListPage-ojfvM5qr.js} +2 -2
  80. package/dist/admin/{ListPage-MvgbZlgc.js.map → ListPage-ojfvM5qr.js.map} +1 -1
  81. package/dist/admin/{ListView-ph55AtDF.js → ListView-MHzoKSAg.js} +8 -5
  82. package/dist/admin/ListView-MHzoKSAg.js.map +1 -0
  83. package/dist/admin/{ListView-6hlTFx5H.mjs → ListView-QWjCBmaw.mjs} +8 -5
  84. package/dist/admin/ListView-QWjCBmaw.mjs.map +1 -0
  85. package/dist/admin/{ListView-1VRmjfh8.js → ListView-WmnatWVx.js} +7 -4
  86. package/dist/admin/ListView-WmnatWVx.js.map +1 -0
  87. package/dist/admin/{ListView-GYuN24HV.mjs → ListView-lSCZzdzM.mjs} +7 -4
  88. package/dist/admin/ListView-lSCZzdzM.mjs.map +1 -0
  89. package/dist/admin/{Login-LxE58baP.mjs → Login--ZDAgCsE.mjs} +2 -2
  90. package/dist/admin/{Login-LxE58baP.mjs.map → Login--ZDAgCsE.mjs.map} +1 -1
  91. package/dist/admin/{Login-WeDT3kAj.js → Login-Qfx7Y8LA.js} +2 -2
  92. package/dist/admin/{Login-WeDT3kAj.js.map → Login-Qfx7Y8LA.js.map} +1 -1
  93. package/dist/admin/{MagicLinkEE-AO_SBYi5.mjs → MagicLinkEE-HT2w-ynq.mjs} +3 -3
  94. package/dist/admin/{MagicLinkEE-AO_SBYi5.mjs.map → MagicLinkEE-HT2w-ynq.mjs.map} +1 -1
  95. package/dist/admin/{MagicLinkEE-_fUwHKdf.js → MagicLinkEE-QVRUN_dM.js} +3 -3
  96. package/dist/admin/{MagicLinkEE-_fUwHKdf.js.map → MagicLinkEE-QVRUN_dM.js.map} +1 -1
  97. package/dist/admin/{MarketplacePage-m8Lf3adM.js → MarketplacePage-bs_XrVBk.js} +2 -2
  98. package/dist/admin/{MarketplacePage-m8Lf3adM.js.map → MarketplacePage-bs_XrVBk.js.map} +1 -1
  99. package/dist/admin/{MarketplacePage-26cUn4e5.mjs → MarketplacePage-e41eJgNp.mjs} +2 -2
  100. package/dist/admin/{MarketplacePage-26cUn4e5.mjs.map → MarketplacePage-e41eJgNp.mjs.map} +1 -1
  101. package/dist/admin/{Permissions-NRzJqZEr.js → Permissions-IbcPzM2X.js} +2 -2
  102. package/dist/admin/{Permissions-NRzJqZEr.js.map → Permissions-IbcPzM2X.js.map} +1 -1
  103. package/dist/admin/{Permissions-VzklM1ie.mjs → Permissions-eyokRb6a.mjs} +2 -2
  104. package/dist/admin/{Permissions-VzklM1ie.mjs.map → Permissions-eyokRb6a.mjs.map} +1 -1
  105. package/dist/admin/{ProfilePage-oSih4pcL.js → ProfilePage-1ptv647K.js} +3 -3
  106. package/dist/admin/{ProfilePage-oSih4pcL.js.map → ProfilePage-1ptv647K.js.map} +1 -1
  107. package/dist/admin/{ProfilePage-0d-k7mtP.mjs → ProfilePage-jsFPZpKL.mjs} +3 -3
  108. package/dist/admin/{ProfilePage-0d-k7mtP.mjs.map → ProfilePage-jsFPZpKL.mjs.map} +1 -1
  109. package/dist/admin/{SelectRoles-V_PZUtVT.mjs → SelectRoles-9TYXaG64.mjs} +3 -3
  110. package/dist/admin/{SelectRoles-V_PZUtVT.mjs.map → SelectRoles-9TYXaG64.mjs.map} +1 -1
  111. package/dist/admin/{SelectRoles-ZsRUnSdr.js → SelectRoles-OEKLwb7S.js} +3 -3
  112. package/dist/admin/{SelectRoles-ZsRUnSdr.js.map → SelectRoles-OEKLwb7S.js.map} +1 -1
  113. package/dist/admin/{SingleSignOnPage-kbLz1A_y.mjs → SingleSignOnPage-ELEF2pqT.mjs} +4 -4
  114. package/dist/admin/SingleSignOnPage-ELEF2pqT.mjs.map +1 -0
  115. package/dist/admin/{SingleSignOnPage-jtjy4_4U.js → SingleSignOnPage-TFMqxPEF.js} +4 -4
  116. package/dist/admin/SingleSignOnPage-TFMqxPEF.js.map +1 -0
  117. package/dist/admin/{Table-kMt3jQ2g.js → Table--gMZz8mZ.js} +2 -2
  118. package/dist/admin/{Table-kMt3jQ2g.js.map → Table--gMZz8mZ.js.map} +1 -1
  119. package/dist/admin/{Table-ZFyORhH3.mjs → Table-PQ0O80QL.mjs} +2 -2
  120. package/dist/admin/{Table-ZFyORhH3.mjs.map → Table-PQ0O80QL.mjs.map} +1 -1
  121. package/dist/admin/{TokenTypeSelect-Ngz4ONEL.js → TokenTypeSelect-QB3M2AO_.js} +2 -2
  122. package/dist/admin/{TokenTypeSelect-Ngz4ONEL.js.map → TokenTypeSelect-QB3M2AO_.js.map} +1 -1
  123. package/dist/admin/{TokenTypeSelect-oOKwvsQ2.mjs → TokenTypeSelect-zx8B_1pv.mjs} +2 -2
  124. package/dist/admin/{TokenTypeSelect-oOKwvsQ2.mjs.map → TokenTypeSelect-zx8B_1pv.mjs.map} +1 -1
  125. package/dist/admin/{UseCasePage-qrhHiF5S.js → UseCasePage-R3vzwRYQ.js} +2 -2
  126. package/dist/admin/{UseCasePage-qrhHiF5S.js.map → UseCasePage-R3vzwRYQ.js.map} +1 -1
  127. package/dist/admin/{UseCasePage-2wum_xzS.mjs → UseCasePage-khHikw1F.mjs} +2 -2
  128. package/dist/admin/{UseCasePage-2wum_xzS.mjs.map → UseCasePage-khHikw1F.mjs.map} +1 -1
  129. package/dist/admin/{constants-jQFnBWVd.js → constants-EH1lNehX.js} +2 -2
  130. package/dist/admin/{constants-jQFnBWVd.js.map → constants-EH1lNehX.js.map} +1 -1
  131. package/dist/admin/{constants-enREoOEa.mjs → constants-O2S8dPXm.mjs} +2 -2
  132. package/dist/admin/{constants-enREoOEa.mjs.map → constants-O2S8dPXm.mjs.map} +1 -1
  133. package/dist/admin/{index-oBxjGftZ.mjs → index-3MYZ88xc.mjs} +52 -56
  134. package/dist/admin/index-3MYZ88xc.mjs.map +1 -0
  135. package/dist/admin/{index-dcaxfEDi.js → index-Ze-KuF2r.js} +49 -53
  136. package/dist/admin/index-Ze-KuF2r.js.map +1 -0
  137. package/dist/admin/index.js +1 -1
  138. package/dist/admin/index.mjs +1 -1
  139. package/dist/admin/src/components/Form.d.ts +1 -1
  140. package/dist/admin/src/components/MainNav/NavBrand.d.ts +1 -0
  141. package/dist/admin/src/hooks/useAdminRoles.d.ts +2 -2
  142. package/dist/admin/src/index.d.ts +1 -1
  143. package/dist/admin/src/services/auth.d.ts +3 -3
  144. package/dist/admin/src/services/users.d.ts +4 -4
  145. package/dist/admin/test.js +2 -2
  146. package/dist/admin/test.js.map +1 -1
  147. package/dist/admin/test.mjs +2 -2
  148. package/dist/admin/test.mjs.map +1 -1
  149. package/dist/admin/{useAdminRoles-Q2BxHs4o.js → useAdminRoles-K6leAcQd.js} +2 -2
  150. package/dist/admin/{useAdminRoles-Q2BxHs4o.js.map → useAdminRoles-K6leAcQd.js.map} +1 -1
  151. package/dist/admin/{useAdminRoles-HWIbyk2Z.mjs → useAdminRoles-dMrStp_i.mjs} +2 -2
  152. package/dist/admin/{useAdminRoles-HWIbyk2Z.mjs.map → useAdminRoles-dMrStp_i.mjs.map} +1 -1
  153. package/dist/admin/{validation-gH-06ERZ.mjs → validation-EKBCSsCp.mjs} +2 -2
  154. package/dist/admin/{validation-gH-06ERZ.mjs.map → validation-EKBCSsCp.mjs.map} +1 -1
  155. package/dist/admin/{validation-2MGgF10o.js → validation-FXocLGal.js} +2 -2
  156. package/dist/admin/{validation-2MGgF10o.js.map → validation-FXocLGal.js.map} +1 -1
  157. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +2 -2
  158. package/dist/ee/admin/src/utils/cookies.d.ts +2 -0
  159. package/dist/ee/server/index.js +102 -1916
  160. package/dist/ee/server/index.js.map +1 -1
  161. package/dist/ee/server/index.mjs +107 -1920
  162. package/dist/ee/server/index.mjs.map +1 -1
  163. package/dist/package.json.d.ts +11 -13
  164. package/dist/server/index.js +66 -49
  165. package/dist/server/index.js.map +1 -1
  166. package/dist/server/index.mjs +42 -42
  167. package/dist/server/index.mjs.map +1 -1
  168. package/dist/server/src/bootstrap.d.ts.map +1 -1
  169. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  170. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  171. package/dist/server/src/register.d.ts.map +1 -1
  172. package/dist/server/src/routes/serve-admin-panel.d.ts.map +1 -1
  173. package/dist/server/src/services/permission/sections-builder/handlers.d.ts.map +1 -1
  174. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  175. package/dist/shared/contracts/admin.d.ts +7 -1
  176. package/dist/shared/contracts/admin.d.ts.map +1 -1
  177. package/package.json +12 -14
  178. package/dist/admin/AuthResponse-5G-7aJDM.mjs.map +0 -1
  179. package/dist/admin/AuthResponse-kdo9DYPT.js.map +0 -1
  180. package/dist/admin/AuthenticatedLayout-1x0WC6c6.js.map +0 -1
  181. package/dist/admin/AuthenticatedLayout-zaOd05gw.mjs.map +0 -1
  182. package/dist/admin/ListPage-DxI49fdQ.js.map +0 -1
  183. package/dist/admin/ListPage-asZ9aDzG.mjs.map +0 -1
  184. package/dist/admin/ListView-1VRmjfh8.js.map +0 -1
  185. package/dist/admin/ListView-6hlTFx5H.mjs.map +0 -1
  186. package/dist/admin/ListView-GYuN24HV.mjs.map +0 -1
  187. package/dist/admin/ListView-ph55AtDF.js.map +0 -1
  188. package/dist/admin/SingleSignOnPage-jtjy4_4U.js.map +0 -1
  189. package/dist/admin/SingleSignOnPage-kbLz1A_y.mjs.map +0 -1
  190. package/dist/admin/index-dcaxfEDi.js.map +0 -1
  191. package/dist/admin/index-oBxjGftZ.mjs.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListPage-DxI49fdQ.js","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleRow.tsx","../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import { Box, Flex, IconButton, IconButtonProps, Td, Tr, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\n\ninterface RoleRowProps extends Pick<AdminRole, 'id' | 'name' | 'description' | 'usersCount'> {\n icons: Array<Required<Pick<IconButtonProps, 'icon' | 'label' | 'onClick'>>>;\n rowIndex: number;\n canUpdate?: boolean;\n}\n\nconst RoleRow = ({\n id,\n name,\n description,\n usersCount,\n icons,\n rowIndex,\n canUpdate,\n}: RoleRowProps) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n // @ts-expect-error – the prop uses `HTMLButtonElement` but we just specify `HTMLElement`\n onClick={canUpdate ? editObject.onClick : undefined}\n >\n <Td maxWidth={`${130 / 16}rem`}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={`${250 / 16}rem`}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" onClick={(e) => e.stopPropagation()}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton\n onClick={icon.onClick}\n label={icon.label}\n borderWidth={0}\n icon={icon.icon}\n />\n </Box>\n ) : null\n )}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nexport { RoleRow };\nexport type { RoleRowProps };\n","import * as React from 'react';\n\nimport {\n ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { AxiosError } from 'axios';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Page } from '../../../../components/PageHelpers';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const navigate = useNavigate();\n const [{ roleToDelete }, dispatch] = React.useReducer(reducer, initialState);\n const { post } = useFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (error instanceof AxiosError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n handleToggleModal();\n };\n\n const handleNewRoleClick = () => navigate('new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'Roles.ListPage.notification.delete-not-allowed' }),\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n navigate(`duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <HeaderLayout\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <ContentLayout>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n icon: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => navigate(role.id.toString()),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n onClose={handleToggleModal}\n />\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":["useIntl","jsxs","Tr","jsx","Td","Typography","Flex","Box","IconButton","useTypedSelector","selectAdminPermissions","useAPIErrorHandler","useNotification","React","useQueryParams","useRBAC","useAdminRoles","useNavigate","useFetchClient","AxiosError","Page","HeaderLayout","Button","Plus","ActionLayout","SearchInput","ContentLayout","Table","TFooter","Thead","Th","VisuallyHidden","Tbody","Duplicate","Pencil","Trash","ConfirmDialog","produce"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListPage-asZ9aDzG.mjs","sources":["../../admin/src/pages/Settings/pages/Roles/components/RoleRow.tsx","../../admin/src/pages/Settings/pages/Roles/ListPage.tsx"],"sourcesContent":["import { Box, Flex, IconButton, IconButtonProps, Td, Tr, Typography } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport type { AdminRole } from '../../../../../hooks/useAdminRoles';\n\ninterface RoleRowProps extends Pick<AdminRole, 'id' | 'name' | 'description' | 'usersCount'> {\n icons: Array<Required<Pick<IconButtonProps, 'icon' | 'label' | 'onClick'>>>;\n rowIndex: number;\n canUpdate?: boolean;\n}\n\nconst RoleRow = ({\n id,\n name,\n description,\n usersCount,\n icons,\n rowIndex,\n canUpdate,\n}: RoleRowProps) => {\n const { formatMessage } = useIntl();\n const [, editObject] = icons;\n\n const usersCountText = formatMessage(\n {\n id: `Roles.RoleRow.user-count`,\n defaultMessage: '{number, plural, =0 {# user} one {# user} other {# users}}',\n },\n { number: usersCount }\n );\n\n return (\n <Tr\n aria-rowindex={rowIndex}\n key={id}\n // @ts-expect-error – the prop uses `HTMLButtonElement` but we just specify `HTMLElement`\n onClick={canUpdate ? editObject.onClick : undefined}\n >\n <Td maxWidth={`${130 / 16}rem`}>\n <Typography ellipsis textColor=\"neutral800\">\n {name}\n </Typography>\n </Td>\n <Td maxWidth={`${250 / 16}rem`}>\n <Typography ellipsis textColor=\"neutral800\">\n {description}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{usersCountText}</Typography>\n </Td>\n <Td>\n <Flex justifyContent=\"flex-end\" onClick={(e) => e.stopPropagation()}>\n {icons.map((icon, i) =>\n icon ? (\n <Box key={icon.label} paddingLeft={i === 0 ? 0 : 1}>\n <IconButton\n onClick={icon.onClick}\n label={icon.label}\n borderWidth={0}\n icon={icon.icon}\n />\n </Box>\n ) : null\n )}\n </Flex>\n </Td>\n </Tr>\n );\n};\n\nexport { RoleRow };\nexport type { RoleRowProps };\n","import * as React from 'react';\n\nimport {\n ActionLayout,\n Button,\n ContentLayout,\n HeaderLayout,\n Table,\n Tbody,\n TFooter,\n Th,\n Thead,\n Tr,\n Typography,\n VisuallyHidden,\n} from '@strapi/design-system';\nimport { Duplicate, Pencil, Plus, Trash } from '@strapi/icons';\nimport { AxiosError } from 'axios';\nimport { produce } from 'immer';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { Page } from '../../../../components/PageHelpers';\nimport { SearchInput } from '../../../../components/SearchInput';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAdminRoles, AdminRole } from '../../../../hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useFetchClient } from '../../../../hooks/useFetchClient';\nimport { useQueryParams } from '../../../../hooks/useQueryParams';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { selectAdminPermissions } from '../../../../selectors';\n\nimport { RoleRow, RoleRowProps } from './components/RoleRow';\n\nconst ListPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector(selectAdminPermissions);\n const { formatAPIError } = useAPIErrorHandler();\n const { toggleNotification } = useNotification();\n const [isWarningDeleteAllOpened, setIsWarningDeleteAllOpenend] = React.useState(false);\n const [{ query }] = useQueryParams<{ _q?: string }>();\n const {\n isLoading: isLoadingForPermissions,\n allowedActions: { canCreate, canDelete, canRead, canUpdate },\n } = useRBAC(permissions.settings?.roles);\n\n const { roles, refetch: refetchRoles } = useAdminRoles(\n { filters: query?._q ? { name: { $containsi: query._q } } : undefined },\n {\n refetchOnMountOrArgChange: true,\n skip: isLoadingForPermissions || !canRead,\n }\n );\n\n const navigate = useNavigate();\n const [{ roleToDelete }, dispatch] = React.useReducer(reducer, initialState);\n const { post } = useFetchClient();\n\n const handleDeleteData = async () => {\n try {\n dispatch({\n type: 'ON_REMOVE_ROLES',\n });\n\n await post('/admin/roles/batch-delete', {\n ids: [roleToDelete],\n });\n\n await refetchRoles();\n\n dispatch({\n type: 'RESET_DATA_TO_DELETE',\n });\n } catch (error) {\n if (error instanceof AxiosError) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }\n handleToggleModal();\n };\n\n const handleNewRoleClick = () => navigate('new');\n\n const handleToggleModal = () => setIsWarningDeleteAllOpenend((prev) => !prev);\n\n const handleClickDelete = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n if (role.usersCount) {\n toggleNotification({\n type: 'info',\n message: formatMessage({ id: 'Roles.ListPage.notification.delete-not-allowed' }),\n });\n } else {\n dispatch({\n type: 'SET_ROLE_TO_DELETE',\n id: role.id,\n });\n\n handleToggleModal();\n }\n };\n\n const handleClickDuplicate = (role: AdminRole) => (e: React.MouseEvent<HTMLButtonElement>) => {\n e.preventDefault();\n e.stopPropagation();\n\n navigate(`duplicate/${role.id}`);\n };\n\n const rowCount = roles.length + 1;\n const colCount = 6;\n\n if (isLoadingForPermissions) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Roles',\n }\n )}\n </Page.Title>\n <HeaderLayout\n primaryAction={\n canCreate ? (\n <Button onClick={handleNewRoleClick} startIcon={<Plus />} size=\"S\">\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </Button>\n ) : null\n }\n title={formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n })}\n subtitle={formatMessage({\n id: 'Settings.roles.list.description',\n defaultMessage: 'List of roles',\n })}\n as=\"h2\"\n />\n {canRead && (\n <ActionLayout\n startActions={\n <SearchInput\n label={formatMessage(\n { id: 'app.component.search.label', defaultMessage: 'Search for {target}' },\n {\n target: formatMessage({\n id: 'global.roles',\n defaultMessage: 'roles',\n }),\n }\n )}\n />\n }\n />\n )}\n {canRead && (\n <ContentLayout>\n <Table\n colCount={colCount}\n rowCount={rowCount}\n footer={\n canCreate ? (\n <TFooter onClick={handleNewRoleClick} icon={<Plus />}>\n {formatMessage({\n id: 'Settings.roles.list.button.add',\n defaultMessage: 'Add new role',\n })}\n </TFooter>\n ) : null\n }\n >\n <Thead>\n <Tr aria-rowindex={1}>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.name',\n defaultMessage: 'Name',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.description',\n defaultMessage: 'Description',\n })}\n </Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\" textColor=\"neutral600\">\n {formatMessage({\n id: 'global.users',\n defaultMessage: 'Users',\n })}\n </Typography>\n </Th>\n <Th>\n <VisuallyHidden>\n {formatMessage({\n id: 'global.actions',\n defaultMessage: 'Actions',\n })}\n </VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {roles?.map((role, index) => (\n <RoleRow\n key={role.id}\n id={role.id}\n name={role.name}\n description={role.description}\n usersCount={role.usersCount}\n icons={\n [\n canCreate &&\n ({\n onClick: handleClickDuplicate(role),\n label: formatMessage({\n id: 'app.utils.duplicate',\n defaultMessage: 'Duplicate',\n }),\n icon: <Duplicate />,\n } satisfies RoleRowProps['icons'][number]),\n canUpdate &&\n ({\n onClick: () => navigate(role.id.toString()),\n label: formatMessage({ id: 'app.utils.edit', defaultMessage: 'Edit' }),\n icon: <Pencil />,\n } satisfies RoleRowProps['icons'][number]),\n canDelete &&\n ({\n onClick: handleClickDelete(role),\n label: formatMessage({ id: 'global.delete', defaultMessage: 'Delete' }),\n icon: <Trash />,\n } satisfies RoleRowProps['icons'][number]),\n ].filter(Boolean) as RoleRowProps['icons']\n }\n rowIndex={index + 2}\n canUpdate={canUpdate}\n />\n ))}\n </Tbody>\n </Table>\n </ContentLayout>\n )}\n <ConfirmDialog\n isOpen={isWarningDeleteAllOpened}\n onConfirm={handleDeleteData}\n onClose={handleToggleModal}\n />\n </Page.Main>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Reducer\n * -----------------------------------------------------------------------------------------------*/\n\n/**\n * TODO: do we actually need this reducer? It's not doing a lot...\n */\n\ninterface State {\n roleToDelete: null | AdminRole['id'];\n showModalConfirmButtonLoading: boolean;\n shouldRefetchData: boolean;\n}\n\nconst initialState = {\n roleToDelete: null,\n showModalConfirmButtonLoading: false,\n shouldRefetchData: false,\n} satisfies State;\n\ninterface SetRoleToDeleteAction extends Pick<AdminRole, 'id'> {\n type: 'SET_ROLE_TO_DELETE';\n}\n\ninterface ResetDataToDeleteAction {\n type: 'RESET_DATA_TO_DELETE';\n}\n\ninterface OnRemoveRolesAction {\n type: 'ON_REMOVE_ROLES';\n}\n\ninterface OnRemoveRolesSucceededAction {\n type: 'ON_REMOVE_ROLES_SUCCEEDED';\n}\n\ntype Action =\n | SetRoleToDeleteAction\n | ResetDataToDeleteAction\n | OnRemoveRolesAction\n | OnRemoveRolesSucceededAction;\n\nconst reducer = (state: State, action: Action) =>\n produce(state, (draftState) => {\n switch (action.type) {\n case 'ON_REMOVE_ROLES': {\n draftState.showModalConfirmButtonLoading = true;\n break;\n }\n case 'ON_REMOVE_ROLES_SUCCEEDED': {\n draftState.shouldRefetchData = true;\n draftState.roleToDelete = null;\n break;\n }\n case 'RESET_DATA_TO_DELETE': {\n draftState.shouldRefetchData = false;\n draftState.roleToDelete = null;\n draftState.showModalConfirmButtonLoading = false;\n break;\n }\n case 'SET_ROLE_TO_DELETE': {\n draftState.roleToDelete = action.id;\n\n break;\n }\n default:\n return draftState;\n }\n });\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListPage = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.roles.read);\n\n return (\n <Page.Protect permissions={permissions}>\n <ListPage />\n </Page.Protect>\n );\n};\n\nexport { ProtectedListPage, ListPage };\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListView-1VRmjfh8.js","sources":["../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { EmptyDocuments, Plus } from '@strapi/icons';\nimport { Data } from '@strapi/types';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <HeaderLayout\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <ContentLayout>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </ContentLayout>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":["useIntl","useNotification","useTypedSelector","useRBAC","useNavigate","useTracking","useAPIErrorHandler","React","qs","useOnce","TRANSFER_TOKEN_TYPE","transferTokens","useGetTransferTokensQuery","useDeleteTransferTokenMutation","jsxs","Fragment","jsx","Page","HeaderLayout","LinkButton","Plus","ContentLayout","Table","EmptyStateLayout","EmptyDocuments"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,MAAM,YAAe,GAAA;AAAA,EACnB;AAAA,IACE,IAAM,EAAA,MAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,uCAAA;AAAA,MACJ,cAAgB,EAAA,MAAA;AAAA,KAClB;AAAA,IACA,QAAU,EAAA,IAAA;AAAA,GACZ;AAAA,EACA;AAAA,IACE,IAAM,EAAA,aAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,8CAAA;AAAA,MACJ,cAAgB,EAAA,aAAA;AAAA,KAClB;AAAA,IACA,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA;AAAA,IACE,IAAM,EAAA,WAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,4CAAA;AAAA,MACJ,cAAgB,EAAA,YAAA;AAAA,KAClB;AAAA,IACA,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA;AAAA,IACE,IAAM,EAAA,YAAA;AAAA,IACN,KAAO,EAAA;AAAA,MACL,EAAI,EAAA,6CAAA;AAAA,MACJ,cAAgB,EAAA,WAAA;AAAA,KAClB;AAAA,IACA,QAAU,EAAA,KAAA;AAAA,GACZ;AACF,CAAA,CAAA;AAMA,MAAM,WAAW,MAAM;AACrB,EAAM,MAAA,EAAE,aAAc,EAAA,GAAIA,iBAAQ,EAAA,CAAA;AAClC,EAAM,MAAA,EAAE,kBAAmB,EAAA,GAAIC,oBAAgB,EAAA,CAAA;AAC/C,EAAA,MAAM,WAAc,GAAAC,qBAAA;AAAA,IAClB,CAAC,KAAU,KAAA,KAAA,CAAM,SAAU,CAAA,WAAA,CAAY,WAAW,iBAAiB,CAAA;AAAA,GACrE,CAAA;AACA,EAAM,MAAA;AAAA,IACJ,SAAW,EAAA,aAAA;AAAA,IACX,cAAgB,EAAA,EAAE,SAAW,EAAA,SAAA,EAAW,WAAW,OAAQ,EAAA;AAAA,GAC7D,GAAIC,aAAQ,WAAW,CAAA,CAAA;AACvB,EAAA,MAAM,WAAWC,0BAAY,EAAA,CAAA;AAC7B,EAAM,MAAA,EAAE,UAAW,EAAA,GAAIC,gBAAY,EAAA,CAAA;AACnC,EAAA,MAAM,EAAE,uBAAA,EAAyB,cAAe,EAAA,GAAIC,uBAAmB,EAAA,CAAA;AAEvE,EAAAC,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,QAAA,CAAS,EAAE,MAAA,EAAQC,aAAG,CAAA,SAAA,CAAU,EAAE,IAAA,EAAM,UAAW,EAAA,EAAG,EAAE,MAAA,EAAQ,KAAM,EAAC,GAAG,CAAA,CAAA;AAAA,GAC5E,EAAG,CAAC,QAAQ,CAAC,CAAA,CAAA;AAEb,EAAAC,eAAA,CAAQ,MAAM;AACZ,IAAA,UAAA,CAAW,qBAAuB,EAAA;AAAA,MAChC,SAAW,EAAAC,6BAAA;AAAA,KACZ,CAAA,CAAA;AAAA,GACF,CAAA,CAAA;AAED,EAAA,MAAM,OAAU,GAAA,YAAA,CAAa,GAAI,CAAA,CAAC,MAAY,MAAA;AAAA,IAC5C,GAAG,MAAA;AAAA,IACH,KAAA,EAAO,aAAc,CAAA,MAAA,CAAO,KAAK,CAAA;AAAA,GACjC,CAAA,CAAA,CAAA;AAEF,EAAM,MAAA;AAAA,IACJ,IAAA,EAAMC,mBAAiB,EAAC;AAAA,IACxB,SAAW,EAAA,eAAA;AAAA,IACX,KAAA;AAAA,GACF,GAAIC,yCAA0B,KAAW,CAAA,EAAA;AAAA,IACvC,MAAM,CAAC,OAAA;AAAA,GACR,CAAA,CAAA;AAED,EAAAL,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAII,gBAAgB,EAAA;AAClB,MAAA,UAAA,CAAW,oBAAsB,EAAA;AAAA,QAC/B,QAAQA,gBAAe,CAAA,MAAA;AAAA,QACvB,SAAW,EAAAD,6BAAA;AAAA,OACZ,CAAA,CAAA;AAAA,KACH;AAAA,GACC,EAAA,CAAC,UAAY,EAAAC,gBAAc,CAAC,CAAA,CAAA;AAE/B,EAAAJ,gBAAA,CAAM,UAAU,MAAM;AACpB,IAAA,IAAI,KAAO,EAAA;AACT,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,OAAA,EAAS,eAAe,KAAK,CAAA;AAAA,OAC9B,CAAA,CAAA;AAAA,KACH;AAAA,GACC,EAAA,CAAC,KAAO,EAAA,cAAA,EAAgB,kBAAkB,CAAC,CAAA,CAAA;AAE9C,EAAM,MAAA,CAAC,WAAW,CAAA,GAAIM,6CAA+B,EAAA,CAAA;AAErD,EAAM,MAAA,YAAA,GAAe,OAAO,EAAgB,KAAA;AAC1C,IAAI,IAAA;AACF,MAAM,MAAA,GAAA,GAAM,MAAM,WAAA,CAAY,EAAE,CAAA,CAAA;AAEhC,MAAA,IAAI,WAAW,GAAK,EAAA;AAClB,QAAmB,kBAAA,CAAA;AAAA,UACjB,IAAM,EAAA,QAAA;AAAA,UACN,OAAA,EAAS,cAAe,CAAA,GAAA,CAAI,KAAK,CAAA;AAAA,SAClC,CAAA,CAAA;AAAA,OACH;AAAA,KACM,CAAA,MAAA;AACN,MAAmB,kBAAA,CAAA;AAAA,QACjB,IAAM,EAAA,QAAA;AAAA,QACN,SAAS,aAAc,CAAA,EAAE,IAAI,oBAAsB,EAAA,cAAA,EAAgB,oBAAoB,CAAA;AAAA,OACxF,CAAA,CAAA;AAAA,KACH;AAAA,GACF,CAAA;AAEA,EAAA,MAAM,YAAY,eAAmB,IAAA,aAAA,CAAA;AAErC,EAAA,uBAEIC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA;AAAA,oBAACC,cAAA,CAAAC,SAAA,CAAK,OAAL,EACE,QAAA,EAAA,aAAA;AAAA,MACC,EAAE,EAAA,EAAI,oBAAsB,EAAA,cAAA,EAAgB,mBAAoB,EAAA;AAAA,MAChE;AAAA,QACE,IAAM,EAAA,iBAAA;AAAA,OACR;AAAA,KAEJ,EAAA,CAAA;AAAA,oBACAD,cAAA;AAAA,MAACE,yBAAA;AAAA,MAAA;AAAA,QACC,OAAO,aAAc,CAAA;AAAA,UACnB,EAAI,EAAA,+BAAA;AAAA,UACJ,cAAgB,EAAA,iBAAA;AAAA,SACjB,CAAA;AAAA,QACD,UAAU,aAAc,CAAA;AAAA,UACtB,EAAI,EAAA,qCAAA;AAAA,UACJ,cAAgB,EAAA,qCAAA;AAAA;AAAA,SACjB,CAAA;AAAA,QACD,eACE,SACE,mBAAAF,cAAA;AAAA,UAACG,uBAAA;AAAA,UAAA;AAAA,YACC,aAAY,EAAA,8BAAA;AAAA,YACZ,SAAA,iCAAYC,UAAK,EAAA,EAAA,CAAA;AAAA,YACjB,IAAK,EAAA,GAAA;AAAA,YACL,OAAA,EAAS,MACP,UAAA,CAAW,sBAAwB,EAAA;AAAA,cACjC,SAAW,EAAAV,6BAAA;AAAA,aACZ,CAAA;AAAA,YAEH,EAAG,EAAA,kCAAA;AAAA,YAEF,QAAc,EAAA,aAAA,CAAA;AAAA,cACb,EAAI,EAAA,gCAAA;AAAA,cACJ,cAAgB,EAAA,2BAAA;AAAA,aACjB,CAAA;AAAA,WAAA;AAAA,SAED,GAAA,KAAA,CAAA;AAAA,OAAA;AAAA,KAER;AAAA,IACC,CAAC,OAAA,mBACCM,cAAA,CAAAC,SAAA,CAAK,eAAL,EAAmB,CAAA,mBAEnBD,cAAA,CAAAC,SAAA,CAAK,IAAL,EAAA,EAAU,WAAW,EAAA,SAAA,EACpB,0CAACI,0BACE,EAAA,EAAA,QAAA,EAAA;AAAA,MAAAV,gBAAA,CAAe,SAAS,CACvB,oBAAAK,cAAA;AAAA,QAACM,WAAA;AAAA,QAAA;AAAA,UACC,WAAa,EAAA,EAAE,OAAS,EAAA,SAAA,EAAW,SAAU,EAAA;AAAA,UAC7C,OAAA;AAAA,UACA,SAAA;AAAA,UACA,eAAiB,EAAA,YAAA;AAAA,UACjB,MAAQ,EAAAX,gBAAA;AAAA,UACR,SAAW,EAAAD,6BAAA;AAAA,SAAA;AAAA,OACb;AAAA,MAED,SAAA,IAAaC,gBAAe,CAAA,MAAA,KAAW,CACtC,mBAAAK,cAAA;AAAA,QAACO,6BAAA;AAAA,QAAA;AAAA,UACC,MACE,kBAAAP,cAAA;AAAA,YAACG,uBAAA;AAAA,YAAA;AAAA,cACC,OAAQ,EAAA,WAAA;AAAA,cACR,SAAA,iCAAYC,UAAK,EAAA,EAAA,CAAA;AAAA,cACjB,EAAG,EAAA,kCAAA;AAAA,cAEF,QAAc,EAAA,aAAA,CAAA;AAAA,gBACb,EAAI,EAAA,qCAAA;AAAA,gBACJ,cAAgB,EAAA,wBAAA;AAAA,eACjB,CAAA;AAAA,aAAA;AAAA,WACH;AAAA,UAEF,IAAM,kBAAAJ,cAAA,CAACQ,oBAAe,EAAA,EAAA,KAAA,EAAM,OAAQ,EAAA,CAAA;AAAA,UACpC,SAAS,aAAc,CAAA;AAAA,YACrB,EAAI,EAAA,uCAAA;AAAA,YACJ,cAAgB,EAAA,+BAAA;AAAA,WACjB,CAAA;AAAA,SAAA;AAAA,OAED,GAAA,IAAA;AAAA,MACH,CAAC,SAAA,IAAab,gBAAe,CAAA,MAAA,KAAW,CACvC,mBAAAK,cAAA;AAAA,QAACO,6BAAA;AAAA,QAAA;AAAA,UACC,IAAM,kBAAAP,cAAA,CAACQ,oBAAe,EAAA,EAAA,KAAA,EAAM,OAAQ,EAAA,CAAA;AAAA,UACpC,SAAS,aAAc,CAAA;AAAA,YACrB,EAAI,EAAA,0CAAA;AAAA,YACJ,cAAgB,EAAA,mCAAA;AAAA,WACjB,CAAA;AAAA,SAAA;AAAA,OAED,GAAA,IAAA;AAAA,KAAA,EACN,CACF,EAAA,CAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ,EAAA;AAMA,MAAM,oBAAoB,MAAM;AAC9B,EAAA,MAAM,WAAc,GAAAtB,qBAAA;AAAA,IAClB,CAAC,KAAU,KAAA,KAAA,CAAM,UAAU,WAAY,CAAA,QAAA,GAAW,iBAAiB,CAAE,CAAA,IAAA;AAAA,GACvE,CAAA;AAEA,EAAA,sCACGe,SAAK,CAAA,OAAA,EAAL,EAAa,WACZ,EAAA,QAAA,kBAAAD,cAAA,CAAC,YAAS,CACZ,EAAA,CAAA,CAAA;AAEJ;;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListView-6hlTFx5H.mjs","sources":["../../admin/src/pages/Settings/pages/ApiTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { EmptyDocuments, Plus } from '@strapi/icons';\nimport { Data } from '@strapi/types';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useGuidedTour } from '../../../../components/GuidedTour/Provider';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useDeleteAPITokenMutation, useGetAPITokensQuery } from '../../../../services/apiTokens';\nimport { API_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nconst TABLE_HEADERS = [\n {\n name: 'name',\n label: {\n id: 'Settings.apiTokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.apiTokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.apiTokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.apiTokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n];\n\nexport const ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens']\n );\n const {\n allowedActions: { canRead, canCreate, canDelete, canUpdate },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const startSection = useGuidedTour('ListView', (state) => state.startSection);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n startSection('apiTokens');\n }, [startSection]);\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [navigate]);\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: API_TOKEN_TYPE,\n });\n });\n\n const { data: apiTokens = [], isLoading, error } = useGetAPITokensQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n trackUsage('didAccessTokenList', { number: apiTokens.length, tokenType: API_TOKEN_TYPE });\n }, [apiTokens, trackUsage]);\n\n const [deleteToken] = useDeleteAPITokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n trackUsage('didDeleteToken');\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'API Tokens' }\n )}\n </Page.Title>\n <HeaderLayout\n title={formatMessage({ id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' })}\n subtitle={formatMessage({\n id: 'Settings.apiTokens.description',\n defaultMessage: 'List of generated tokens to consume the API',\n })}\n primaryAction={\n canCreate && (\n <LinkButton\n data-testid=\"create-api-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n })\n }\n to=\"/settings/api-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.apiTokens.create',\n defaultMessage: 'Create new API Token',\n })}\n </LinkButton>\n )\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <ContentLayout>\n {apiTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={apiTokens}\n tokenType={API_TOKEN_TYPE}\n />\n )}\n {canCreate && apiTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.apiTokens.addFirstToken',\n defaultMessage: 'Add your first API Token',\n })}\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/api-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.apiTokens.addNewToken',\n defaultMessage: 'Add new API Token',\n })}\n </LinkButton>\n }\n />\n ) : null}\n {!canCreate && apiTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.apiTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </ContentLayout>\n </Page.Main>\n )}\n </>\n );\n};\n\nexport const ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListView-GYuN24HV.mjs","sources":["../../admin/src/pages/Settings/pages/TransferTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { EmptyDocuments, Plus } from '@strapi/icons';\nimport { Data } from '@strapi/types';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteTransferTokenMutation,\n useGetTransferTokensQuery,\n} from '../../../../services/transferTokens';\nimport { TRANSFER_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nconst tableHeaders = [\n {\n name: 'name',\n label: {\n id: 'Settings.tokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.tokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.tokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.tokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n] as const;\n\n/* -------------------------------------------------------------------------------------------------\n * ListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens']\n );\n const {\n isLoading: isLoadingRBAC,\n allowedActions: { canCreate, canDelete, canUpdate, canRead },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [navigate]);\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n });\n\n const headers = tableHeaders.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n const {\n data: transferTokens = [],\n isLoading: isLoadingTokens,\n error,\n } = useGetTransferTokensQuery(undefined, {\n skip: !canRead,\n });\n\n React.useEffect(() => {\n if (transferTokens) {\n trackUsage('didAccessTokenList', {\n number: transferTokens.length,\n tokenType: TRANSFER_TOKEN_TYPE,\n });\n }\n }, [trackUsage, transferTokens]);\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n const [deleteToken] = useDeleteTransferTokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({ id: 'notification.error', defaultMessage: 'An error occured' }),\n });\n }\n };\n\n const isLoading = isLoadingTokens || isLoadingRBAC;\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'Transfer Tokens',\n }\n )}\n </Page.Title>\n <HeaderLayout\n title={formatMessage({\n id: 'Settings.transferTokens.title',\n defaultMessage: 'Transfer Tokens',\n })}\n subtitle={formatMessage({\n id: 'Settings.transferTokens.description',\n defaultMessage: '\"List of generated transfer tokens\"', // TODO change this message\n })}\n primaryAction={\n canCreate ? (\n <LinkButton\n data-testid=\"create-transfer-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: TRANSFER_TOKEN_TYPE,\n })\n }\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.create',\n defaultMessage: 'Create new Transfer Token',\n })}\n </LinkButton>\n ) : undefined\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <ContentLayout>\n {transferTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={transferTokens}\n tokenType={TRANSFER_TOKEN_TYPE}\n />\n )}\n {canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/transfer-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.transferTokens.addNewToken',\n defaultMessage: 'Add new Transfer Token',\n })}\n </LinkButton>\n }\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.addFirstToken',\n defaultMessage: 'Add your first Transfer Token',\n })}\n />\n ) : null}\n {!canCreate && transferTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.transferTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </ContentLayout>\n </Page.Main>\n )}\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedListView\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['transfer-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n\nexport { ListView, ProtectedListView };\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ListView-ph55AtDF.js","sources":["../../admin/src/pages/Settings/pages/ApiTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { ContentLayout, EmptyStateLayout, HeaderLayout, LinkButton } from '@strapi/design-system';\nimport { EmptyDocuments, Plus } from '@strapi/icons';\nimport { Data } from '@strapi/types';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\n\nimport { useGuidedTour } from '../../../../components/GuidedTour/Provider';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport { useDeleteAPITokenMutation, useGetAPITokensQuery } from '../../../../services/apiTokens';\nimport { API_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nconst TABLE_HEADERS = [\n {\n name: 'name',\n label: {\n id: 'Settings.apiTokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.apiTokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.apiTokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.apiTokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n];\n\nexport const ListView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens']\n );\n const {\n allowedActions: { canRead, canCreate, canDelete, canUpdate },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n const startSection = useGuidedTour('ListView', (state) => state.startSection);\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n startSection('apiTokens');\n }, [startSection]);\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) });\n }, [navigate]);\n\n const headers = TABLE_HEADERS.map((header) => ({\n ...header,\n label: formatMessage(header.label),\n }));\n\n useOnce(() => {\n trackUsage('willAccessTokenList', {\n tokenType: API_TOKEN_TYPE,\n });\n });\n\n const { data: apiTokens = [], isLoading, error } = useGetAPITokensQuery();\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n trackUsage('didAccessTokenList', { number: apiTokens.length, tokenType: API_TOKEN_TYPE });\n }, [apiTokens, trackUsage]);\n\n const [deleteToken] = useDeleteAPITokenMutation();\n\n const handleDelete = async (id: Data.ID) => {\n try {\n const res = await deleteToken(id);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n trackUsage('didDeleteToken');\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'API Tokens' }\n )}\n </Page.Title>\n <HeaderLayout\n title={formatMessage({ id: 'Settings.apiTokens.title', defaultMessage: 'API Tokens' })}\n subtitle={formatMessage({\n id: 'Settings.apiTokens.description',\n defaultMessage: 'List of generated tokens to consume the API',\n })}\n primaryAction={\n canCreate && (\n <LinkButton\n data-testid=\"create-api-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() =>\n trackUsage('willAddTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n })\n }\n to=\"/settings/api-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.apiTokens.create',\n defaultMessage: 'Create new API Token',\n })}\n </LinkButton>\n )\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <ContentLayout>\n {apiTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={apiTokens}\n tokenType={API_TOKEN_TYPE}\n />\n )}\n {canCreate && apiTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.apiTokens.addFirstToken',\n defaultMessage: 'Add your first API Token',\n })}\n action={\n <LinkButton\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/api-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.apiTokens.addNewToken',\n defaultMessage: 'Add new API Token',\n })}\n </LinkButton>\n }\n />\n ) : null}\n {!canCreate && apiTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"10rem\" />}\n content={formatMessage({\n id: 'Settings.apiTokens.emptyStateLayout',\n defaultMessage: 'You don’t have any content yet...',\n })}\n />\n ) : null}\n </ContentLayout>\n </Page.Main>\n )}\n </>\n );\n};\n\nexport const ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['api-tokens'].main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n"],"names":["useIntl","useNotification","useTypedSelector","useRBAC","useNavigate","useTracking","useGuidedTour","useAPIErrorHandler","React","qs","useOnce","API_TOKEN_TYPE","apiTokens","useGetAPITokensQuery","useDeleteAPITokenMutation","jsxs","Fragment","jsx","Page","HeaderLayout","LinkButton","Plus","ContentLayout","Table","EmptyStateLayout","EmptyDocuments"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SingleSignOnPage-jtjy4_4U.js","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Page } from '../../../../../../admin/src/components/PageHelpers';\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useNotification } from '../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../../admin/src/hooks/useRBAC';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { translatedErrors } from '../../../../../../admin/src/utils/translatedErrors';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required.id),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required.id) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required.id) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n }),\n });\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'SSO',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <Page.Loading />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Page.Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <SingleSignOnPage />\n </Page.Protect>\n );\n};\n"],"names":["yup","translatedErrors","useIntl","useTypedSelector","useNotification","useAPIErrorHandler","useGetProviderOptionsQuery","useUpdateProviderOptionsMutation","useRBAC","useAdminRoles","isBaseQueryError","Layout","jsx","Page","Formik","jsxs","Form","HeaderLayout","Button","Check","ContentLayout","Flex","Typography","Grid","GridItem","ToggleInput","Select","Option","MultiSelect","MultiSelectOption"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SingleSignOnPage-kbLz1A_y.mjs","sources":["../../ee/admin/src/pages/SettingsPage/pages/SingleSignOnPage.tsx"],"sourcesContent":["import {\n Button,\n ContentLayout,\n Flex,\n Grid,\n GridItem,\n HeaderLayout,\n Layout,\n MultiSelect,\n MultiSelectOption,\n Option,\n Select,\n ToggleInput,\n Typography,\n} from '@strapi/design-system';\nimport { Check } from '@strapi/icons';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport * as yup from 'yup';\n\nimport { Page } from '../../../../../../admin/src/components/PageHelpers';\nimport { useTypedSelector } from '../../../../../../admin/src/core/store/hooks';\nimport { useNotification } from '../../../../../../admin/src/features/Notifications';\nimport { useAdminRoles } from '../../../../../../admin/src/hooks/useAdminRoles';\nimport { useAPIErrorHandler } from '../../../../../../admin/src/hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../../admin/src/hooks/useRBAC';\nimport {\n useGetProviderOptionsQuery,\n useUpdateProviderOptionsMutation,\n} from '../../../../../../admin/src/services/auth';\nimport { isBaseQueryError } from '../../../../../../admin/src/utils/baseQuery';\nimport { translatedErrors } from '../../../../../../admin/src/utils/translatedErrors';\nimport { ProvidersOptions } from '../../../../../../shared/contracts/admin';\n\nconst schema = yup.object().shape({\n autoRegister: yup.bool().required(translatedErrors.required.id),\n defaultRole: yup.mixed().when('autoRegister', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required.id) : initSchema.nullable();\n }),\n ssoLockedRoles: yup\n .array()\n .nullable()\n .of(\n yup.mixed().when('ssoLockedRoles', (value, initSchema) => {\n return value ? initSchema.required(translatedErrors.required.id) : initSchema.nullable();\n })\n ),\n});\n\nexport const SingleSignOnPage = () => {\n const { formatMessage } = useIntl();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const { toggleNotification } = useNotification();\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const { isLoading: isLoadingProviderOptions, data } = useGetProviderOptionsQuery();\n\n const [updateProviderOptions, { isLoading: isSubmittingForm }] =\n useUpdateProviderOptionsMutation();\n\n const {\n isLoading: isLoadingPermissions,\n allowedActions: { canUpdate, canReadRoles },\n } = useRBAC({\n ...permissions.settings?.sso,\n readRoles: permissions.settings?.roles.read ?? [],\n });\n\n const { roles, isLoading: isLoadingRoles } = useAdminRoles(undefined, {\n skip: !canReadRoles,\n });\n\n const handleSubmit = async (\n body: ProvidersOptions.Request['body'],\n formik: FormikHelpers<ProvidersOptions.Request['body']>\n ) => {\n try {\n const res = await updateProviderOptions(body);\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({ id: 'notification.success.saved' }),\n });\n } catch (err) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'An error occurred, please try again.',\n }),\n });\n }\n };\n\n const isLoadingData = isLoadingRoles || isLoadingPermissions || isLoadingProviderOptions;\n\n return (\n <Layout>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n {\n name: 'SSO',\n }\n )}\n </Page.Title>\n <Page.Main aria-busy={isSubmittingForm || isLoadingData} tabIndex={-1}>\n <Formik\n onSubmit={handleSubmit}\n initialValues={\n data || {\n autoRegister: false,\n defaultRole: null,\n ssoLockedRoles: null,\n }\n }\n validationSchema={schema}\n validateOnChange={false}\n enableReinitialize\n >\n {({ handleChange, isSubmitting, values, setFieldValue, dirty, errors }) => (\n <Form>\n <HeaderLayout\n primaryAction={\n <Button\n disabled={!dirty}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"L\"\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </Button>\n }\n title={formatMessage({\n id: 'Settings.sso.title',\n defaultMessage: 'Single Sign-On',\n })}\n subtitle={formatMessage({\n id: 'Settings.sso.description',\n defaultMessage: 'Configure the settings for the Single Sign-On feature.',\n })}\n />\n <ContentLayout>\n {isSubmitting || isLoadingData ? (\n <Page.Loading />\n ) : (\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n gap={4}\n background=\"neutral0\"\n padding={6}\n shadow=\"filterShadow\"\n hasRadius\n >\n <Typography variant=\"delta\" as=\"h2\">\n {formatMessage({\n id: 'global.settings',\n defaultMessage: 'Settings',\n })}\n </Typography>\n <Grid gap={4}>\n <GridItem col={6} s={12}>\n <ToggleInput\n disabled={!canUpdate}\n checked={values.autoRegister}\n hint={formatMessage({\n id: 'Settings.sso.form.registration.description',\n defaultMessage: 'Create new user on SSO login if no account exists',\n })}\n label={formatMessage({\n id: 'Settings.sso.form.registration.label',\n defaultMessage: 'Auto-registration',\n })}\n name=\"autoRegister\"\n offLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.off-label',\n defaultMessage: 'Off',\n })}\n onLabel={formatMessage({\n id: 'app.components.ToggleCheckbox.on-label',\n defaultMessage: 'On',\n })}\n onChange={handleChange}\n />\n </GridItem>\n <GridItem col={6} s={12}>\n <Select\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.defaultRole.description',\n defaultMessage:\n 'It will attach the new authenticated user to the selected role',\n })}\n error={\n errors.defaultRole\n ? formatMessage({\n id: errors.defaultRole,\n defaultMessage: errors.defaultRole,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.defaultRole.label',\n defaultMessage: 'Default role',\n })}\n name=\"defaultRole\"\n onChange={(value) =>\n handleChange({ target: { name: 'defaultRole', value } })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n value={values.defaultRole}\n >\n {roles.map(({ id, name }) => (\n <Option key={id} value={id.toString()}>\n {name}\n </Option>\n ))}\n </Select>\n </GridItem>\n <GridItem col={6} s={12}>\n <MultiSelect\n disabled={!canUpdate}\n hint={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.description',\n defaultMessage:\n 'Select the roles for which you want to disable the local authentication',\n })}\n error={\n errors.ssoLockedRoles\n ? formatMessage({\n id: errors.ssoLockedRoles,\n defaultMessage: errors.ssoLockedRoles,\n })\n : ''\n }\n label={formatMessage({\n id: 'Settings.sso.form.localAuthenticationLock.label',\n defaultMessage: 'Local authentication lock-out',\n })}\n name=\"ssoLockedRoles\"\n onChange={(value) =>\n handleChange({\n target: {\n value,\n name: 'ssoLockedRoles',\n },\n })\n }\n placeholder={formatMessage({\n id: 'components.InputSelect.option.placeholder',\n defaultMessage: 'Choose here',\n })}\n onClear={() => setFieldValue('ssoLockedRoles', [])}\n value={values.ssoLockedRoles || []}\n withTags\n >\n {roles.map(({ id, name }) => (\n <MultiSelectOption key={id} value={id.toString()}>\n {name}\n </MultiSelectOption>\n ))}\n </MultiSelect>\n </GridItem>\n </Grid>\n </Flex>\n )}\n </ContentLayout>\n </Form>\n )}\n </Formik>\n </Page.Main>\n </Layout>\n );\n};\n\nexport const ProtectedSSO = () => {\n const permissions = useTypedSelector((state) => state.admin_app.permissions.settings?.sso?.main);\n\n return (\n <Page.Protect permissions={permissions}>\n <SingleSignOnPage />\n </Page.Protect>\n );\n};\n"],"names":["translatedErrors"],"mappings":"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"}