@strapi/admin 5.44.0 → 5.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/dist/admin/admin/src/components/Table.js.map +1 -1
  2. package/dist/admin/admin/src/components/Table.mjs.map +1 -1
  3. package/dist/admin/admin/src/constants.js +49 -0
  4. package/dist/admin/admin/src/constants.js.map +1 -1
  5. package/dist/admin/admin/src/constants.mjs +49 -0
  6. package/dist/admin/admin/src/constants.mjs.map +1 -1
  7. package/dist/admin/admin/src/core/apis/router.js +4 -4
  8. package/dist/admin/admin/src/core/apis/router.js.map +1 -1
  9. package/dist/admin/admin/src/core/apis/router.mjs +4 -4
  10. package/dist/admin/admin/src/core/apis/router.mjs.map +1 -1
  11. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  12. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  13. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView/components → components/Tokens}/FormApiTokenContainer.js +48 -11
  14. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.js.map +1 -0
  15. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView/components → components/Tokens}/FormApiTokenContainer.mjs +49 -12
  16. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.mjs.map +1 -0
  17. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js +1 -1
  18. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.js.map +1 -1
  19. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs +1 -1
  20. package/dist/admin/admin/src/pages/Settings/components/Tokens/FormHead.mjs.map +1 -1
  21. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js +1 -1
  22. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.js.map +1 -1
  23. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs +1 -1
  24. package/dist/admin/admin/src/pages/Settings/components/Tokens/LifeSpanInput.mjs.map +1 -1
  25. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js +21 -1
  26. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.js.map +1 -1
  27. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs +21 -1
  28. package/dist/admin/admin/src/pages/Settings/components/Tokens/Table.mjs.map +1 -1
  29. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js +1 -1
  30. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.js.map +1 -1
  31. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs +1 -1
  32. package/dist/admin/admin/src/pages/Settings/components/Tokens/TokenBox.mjs.map +1 -1
  33. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js +33 -0
  34. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.js.map +1 -1
  35. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.mjs +14 -1
  36. package/dist/admin/admin/src/pages/Settings/components/Tokens/constants.mjs.map +1 -1
  37. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.js +1 -1
  38. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.js.map +1 -0
  39. package/dist/admin/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.mjs +1 -1
  40. package/dist/admin/admin/src/pages/Settings/components/Tokens/utils/getDateOfExpiration.mjs.map +1 -0
  41. package/dist/admin/admin/src/pages/Settings/constants.js +182 -151
  42. package/dist/admin/admin/src/pages/Settings/constants.js.map +1 -1
  43. package/dist/admin/admin/src/pages/Settings/constants.mjs +182 -151
  44. package/dist/admin/admin/src/pages/Settings/constants.mjs.map +1 -1
  45. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.js +17 -0
  46. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.js.map +1 -0
  47. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.mjs +15 -0
  48. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/CreateView.mjs.map +1 -0
  49. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js +314 -0
  50. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.js.map +1 -0
  51. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.mjs +292 -0
  52. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.mjs.map +1 -0
  53. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js +70 -0
  54. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.js.map +1 -0
  55. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.mjs +49 -0
  56. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.mjs.map +1 -0
  57. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js +254 -0
  58. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.js.map +1 -0
  59. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.mjs +231 -0
  60. package/dist/admin/admin/src/pages/Settings/pages/AdminTokens/ListView.mjs.map +1 -0
  61. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js +42 -33
  62. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.js.map +1 -1
  63. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs +43 -34
  64. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/EditViewPage.mjs.map +1 -1
  65. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js +3 -2
  66. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.js.map +1 -1
  67. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs +3 -2
  68. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/ListView.mjs.map +1 -1
  69. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js +23 -12
  70. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.js.map +1 -1
  71. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs +23 -12
  72. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.mjs.map +1 -1
  73. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js +124 -35
  74. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.js.map +1 -1
  75. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs +126 -37
  76. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.mjs.map +1 -1
  77. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js +24 -9
  78. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.js.map +1 -1
  79. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs +24 -9
  80. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.mjs.map +1 -1
  81. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js +5 -3
  82. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.js.map +1 -1
  83. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs +5 -3
  84. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/GlobalActions.mjs.map +1 -1
  85. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js +171 -36
  86. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.js.map +1 -1
  87. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs +172 -37
  88. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/Permissions.mjs.map +1 -1
  89. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js +5 -3
  90. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.js.map +1 -1
  91. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs +5 -3
  92. package/dist/admin/admin/src/pages/Settings/pages/Roles/components/PluginsAndSettings.mjs.map +1 -1
  93. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js +59 -1
  94. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.js.map +1 -1
  95. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs +40 -1
  96. package/dist/admin/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.mjs.map +1 -1
  97. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.js +89 -0
  98. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.js.map +1 -0
  99. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.mjs +86 -0
  100. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.mjs.map +1 -0
  101. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js +35 -9
  102. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.js.map +1 -1
  103. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs +35 -10
  104. package/dist/admin/admin/src/pages/Settings/pages/Roles/utils/updateValues.mjs.map +1 -1
  105. package/dist/admin/admin/src/render.js +6 -3
  106. package/dist/admin/admin/src/render.js.map +1 -1
  107. package/dist/admin/admin/src/render.mjs +6 -3
  108. package/dist/admin/admin/src/render.mjs.map +1 -1
  109. package/dist/admin/admin/src/router.js +4 -4
  110. package/dist/admin/admin/src/router.js.map +1 -1
  111. package/dist/admin/admin/src/router.mjs +1 -1
  112. package/dist/admin/admin/src/router.mjs.map +1 -1
  113. package/dist/admin/admin/src/services/apiTokens.js +85 -2
  114. package/dist/admin/admin/src/services/apiTokens.js.map +1 -1
  115. package/dist/admin/admin/src/services/apiTokens.mjs +80 -3
  116. package/dist/admin/admin/src/services/apiTokens.mjs.map +1 -1
  117. package/dist/admin/admin/src/translations/en.json.js +16 -1
  118. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  119. package/dist/admin/admin/src/translations/en.json.mjs +16 -1
  120. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  121. package/dist/admin/admin/src/utils/getFetchClient.js +4 -1
  122. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  123. package/dist/admin/admin/src/utils/getFetchClient.mjs +4 -1
  124. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  125. package/dist/admin/admin/tests/server.js +99 -21
  126. package/dist/admin/admin/tests/server.js.map +1 -1
  127. package/dist/admin/admin/tests/server.mjs +99 -21
  128. package/dist/admin/admin/tests/server.mjs.map +1 -1
  129. package/dist/admin/src/constants.d.ts +26 -0
  130. package/dist/admin/src/core/apis/router.d.ts +1 -1
  131. package/dist/admin/src/features/Tracking.d.ts +2 -1
  132. package/dist/admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.d.ts +24 -0
  133. package/dist/admin/src/pages/Settings/components/Tokens/Table.d.ts +2 -1
  134. package/dist/admin/src/pages/Settings/components/Tokens/constants.d.ts +17 -0
  135. package/dist/admin/src/pages/Settings/constants.d.ts +1 -1
  136. package/dist/admin/src/pages/Settings/pages/AdminTokens/CreateView.d.ts +1 -0
  137. package/dist/admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.d.ts +2 -0
  138. package/dist/admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.d.ts +13 -0
  139. package/dist/admin/src/pages/Settings/pages/AdminTokens/ListView.d.ts +2 -0
  140. package/dist/admin/src/pages/Settings/pages/Roles/components/CollapsePropertyMatrix.d.ts +4 -3
  141. package/dist/admin/src/pages/Settings/pages/Roles/components/ConditionsModal.d.ts +3 -1
  142. package/dist/admin/src/pages/Settings/pages/Roles/components/ContentTypeCollapses.d.ts +1 -0
  143. package/dist/admin/src/pages/Settings/pages/Roles/components/Permissions.d.ts +5 -0
  144. package/dist/admin/src/pages/Settings/pages/Roles/hooks/usePermissionsDataManager.d.ts +8 -7
  145. package/dist/admin/src/pages/Settings/pages/Roles/utils/createPermissionChecker.d.ts +27 -0
  146. package/dist/admin/src/pages/Settings/pages/Roles/utils/updateValues.d.ts +8 -2
  147. package/dist/admin/src/services/apiTokens.d.ts +5 -2
  148. package/dist/admin/src/types/permissions.d.ts +1 -1
  149. package/dist/server/server/src/bootstrap.js +37 -5
  150. package/dist/server/server/src/bootstrap.js.map +1 -1
  151. package/dist/server/server/src/bootstrap.mjs +37 -5
  152. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  153. package/dist/server/server/src/config/admin-actions.js +48 -0
  154. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  155. package/dist/server/server/src/config/admin-actions.mjs +48 -0
  156. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  157. package/dist/server/server/src/content-types/Permission.js +10 -1
  158. package/dist/server/server/src/content-types/Permission.js.map +1 -1
  159. package/dist/server/server/src/content-types/Permission.mjs +10 -1
  160. package/dist/server/server/src/content-types/Permission.mjs.map +1 -1
  161. package/dist/server/server/src/content-types/User.js +8 -0
  162. package/dist/server/server/src/content-types/User.js.map +1 -1
  163. package/dist/server/server/src/content-types/User.mjs +8 -0
  164. package/dist/server/server/src/content-types/User.mjs.map +1 -1
  165. package/dist/server/server/src/content-types/api-token.js +27 -1
  166. package/dist/server/server/src/content-types/api-token.js.map +1 -1
  167. package/dist/server/server/src/content-types/api-token.mjs +27 -1
  168. package/dist/server/server/src/content-types/api-token.mjs.map +1 -1
  169. package/dist/server/server/src/controllers/admin-token.js +194 -0
  170. package/dist/server/server/src/controllers/admin-token.js.map +1 -0
  171. package/dist/server/server/src/controllers/admin-token.mjs +192 -0
  172. package/dist/server/server/src/controllers/admin-token.mjs.map +1 -0
  173. package/dist/server/server/src/controllers/api-token.js +48 -47
  174. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  175. package/dist/server/server/src/controllers/api-token.mjs +48 -47
  176. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  177. package/dist/server/server/src/controllers/index.js +2 -0
  178. package/dist/server/server/src/controllers/index.js.map +1 -1
  179. package/dist/server/server/src/controllers/index.mjs +2 -0
  180. package/dist/server/server/src/controllers/index.mjs.map +1 -1
  181. package/dist/server/server/src/domain/permission/index.js +2 -1
  182. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  183. package/dist/server/server/src/domain/permission/index.mjs +2 -1
  184. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  185. package/dist/server/server/src/policies/index.js +2 -0
  186. package/dist/server/server/src/policies/index.js.map +1 -1
  187. package/dist/server/server/src/policies/index.mjs +2 -0
  188. package/dist/server/server/src/policies/index.mjs.map +1 -1
  189. package/dist/server/server/src/policies/isAdminTokensEnabled.js +16 -0
  190. package/dist/server/server/src/policies/isAdminTokensEnabled.js.map +1 -0
  191. package/dist/server/server/src/policies/isAdminTokensEnabled.mjs +14 -0
  192. package/dist/server/server/src/policies/isAdminTokensEnabled.mjs.map +1 -0
  193. package/dist/server/server/src/register.js +4 -2
  194. package/dist/server/server/src/register.js.map +1 -1
  195. package/dist/server/server/src/register.mjs +4 -2
  196. package/dist/server/server/src/register.mjs.map +1 -1
  197. package/dist/server/server/src/routes/admin-tokens.js +140 -0
  198. package/dist/server/server/src/routes/admin-tokens.js.map +1 -0
  199. package/dist/server/server/src/routes/admin-tokens.mjs +138 -0
  200. package/dist/server/server/src/routes/admin-tokens.mjs.map +1 -0
  201. package/dist/server/server/src/routes/index.js +2 -0
  202. package/dist/server/server/src/routes/index.js.map +1 -1
  203. package/dist/server/server/src/routes/index.mjs +2 -0
  204. package/dist/server/server/src/routes/index.mjs.map +1 -1
  205. package/dist/server/server/src/services/api-token.js +805 -101
  206. package/dist/server/server/src/services/api-token.js.map +1 -1
  207. package/dist/server/server/src/services/api-token.mjs +800 -101
  208. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  209. package/dist/server/server/src/services/constants.js +2 -0
  210. package/dist/server/server/src/services/constants.js.map +1 -1
  211. package/dist/server/server/src/services/constants.mjs +2 -0
  212. package/dist/server/server/src/services/constants.mjs.map +1 -1
  213. package/dist/server/server/src/services/homepage.js +1 -1
  214. package/dist/server/server/src/services/homepage.js.map +1 -1
  215. package/dist/server/server/src/services/homepage.mjs +1 -1
  216. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  217. package/dist/server/server/src/services/index.js +2 -1
  218. package/dist/server/server/src/services/index.js.map +1 -1
  219. package/dist/server/server/src/services/index.mjs +3 -2
  220. package/dist/server/server/src/services/index.mjs.map +1 -1
  221. package/dist/server/server/src/services/permission/engine.js +6 -0
  222. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  223. package/dist/server/server/src/services/permission/engine.mjs +6 -0
  224. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  225. package/dist/server/server/src/services/permission/queries.js +11 -2
  226. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  227. package/dist/server/server/src/services/permission/queries.mjs +12 -3
  228. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  229. package/dist/server/server/src/services/role.js +3 -0
  230. package/dist/server/server/src/services/role.js.map +1 -1
  231. package/dist/server/server/src/services/role.mjs +3 -0
  232. package/dist/server/server/src/services/role.mjs.map +1 -1
  233. package/dist/server/server/src/strategies/admin-token.js +110 -0
  234. package/dist/server/server/src/strategies/admin-token.js.map +1 -0
  235. package/dist/server/server/src/strategies/admin-token.mjs +104 -0
  236. package/dist/server/server/src/strategies/admin-token.mjs.map +1 -0
  237. package/dist/server/server/src/strategies/api-token-utils.js +56 -0
  238. package/dist/server/server/src/strategies/api-token-utils.js.map +1 -0
  239. package/dist/server/server/src/strategies/api-token-utils.mjs +52 -0
  240. package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -0
  241. package/dist/server/server/src/strategies/content-api-token.js +104 -0
  242. package/dist/server/server/src/strategies/content-api-token.js.map +1 -0
  243. package/dist/server/server/src/strategies/content-api-token.mjs +98 -0
  244. package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -0
  245. package/dist/server/server/src/validation/admin-tokens.js +28 -0
  246. package/dist/server/server/src/validation/admin-tokens.js.map +1 -0
  247. package/dist/server/server/src/validation/admin-tokens.mjs +25 -0
  248. package/dist/server/server/src/validation/admin-tokens.mjs.map +1 -0
  249. package/dist/server/server/src/validation/api-tokens.js +5 -2
  250. package/dist/server/server/src/validation/api-tokens.js.map +1 -1
  251. package/dist/server/server/src/validation/api-tokens.mjs +5 -2
  252. package/dist/server/server/src/validation/api-tokens.mjs.map +1 -1
  253. package/dist/server/server/src/validation/project-settings.js +15 -16
  254. package/dist/server/server/src/validation/project-settings.js.map +1 -1
  255. package/dist/server/server/src/validation/project-settings.mjs +4 -5
  256. package/dist/server/server/src/validation/project-settings.mjs.map +1 -1
  257. package/dist/server/src/bootstrap.d.ts.map +1 -1
  258. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  259. package/dist/server/src/content-types/Permission.d.ts +9 -0
  260. package/dist/server/src/content-types/Permission.d.ts.map +1 -1
  261. package/dist/server/src/content-types/User.d.ts +8 -0
  262. package/dist/server/src/content-types/User.d.ts.map +1 -1
  263. package/dist/server/src/content-types/api-token.d.ts +23 -0
  264. package/dist/server/src/content-types/api-token.d.ts.map +1 -1
  265. package/dist/server/src/content-types/index.d.ts +40 -0
  266. package/dist/server/src/content-types/index.d.ts.map +1 -1
  267. package/dist/server/src/controllers/admin-token.d.ts +12 -0
  268. package/dist/server/src/controllers/admin-token.d.ts.map +1 -0
  269. package/dist/server/src/controllers/api-token.d.ts +0 -1
  270. package/dist/server/src/controllers/api-token.d.ts.map +1 -1
  271. package/dist/server/src/controllers/index.d.ts +9 -1
  272. package/dist/server/src/controllers/index.d.ts.map +1 -1
  273. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  274. package/dist/server/src/index.d.ts +56 -2
  275. package/dist/server/src/index.d.ts.map +1 -1
  276. package/dist/server/src/policies/index.d.ts +5 -0
  277. package/dist/server/src/policies/index.d.ts.map +1 -1
  278. package/dist/server/src/policies/isAdminTokensEnabled.d.ts +7 -0
  279. package/dist/server/src/policies/isAdminTokensEnabled.d.ts.map +1 -0
  280. package/dist/server/src/register.d.ts.map +1 -1
  281. package/dist/server/src/routes/admin-tokens.d.ts +15 -0
  282. package/dist/server/src/routes/admin-tokens.d.ts.map +1 -0
  283. package/dist/server/src/routes/index.d.ts.map +1 -1
  284. package/dist/server/src/services/api-token.d.ts +136 -12
  285. package/dist/server/src/services/api-token.d.ts.map +1 -1
  286. package/dist/server/src/services/constants.d.ts +13 -11
  287. package/dist/server/src/services/constants.d.ts.map +1 -1
  288. package/dist/server/src/services/index.d.ts +2 -2
  289. package/dist/server/src/services/index.d.ts.map +1 -1
  290. package/dist/server/src/services/permission/engine.d.ts +5 -0
  291. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  292. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  293. package/dist/server/src/services/permission.d.ts +1 -0
  294. package/dist/server/src/services/permission.d.ts.map +1 -1
  295. package/dist/server/src/services/role.d.ts.map +1 -1
  296. package/dist/server/src/strategies/admin-token.d.ts +51 -0
  297. package/dist/server/src/strategies/admin-token.d.ts.map +1 -0
  298. package/dist/server/src/strategies/api-token-utils.d.ts +13 -0
  299. package/dist/server/src/strategies/api-token-utils.d.ts.map +1 -0
  300. package/dist/server/src/strategies/{api-token.d.ts → content-api-token.d.ts} +10 -11
  301. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -0
  302. package/dist/server/src/strategies/index.d.ts +2 -1
  303. package/dist/server/src/strategies/index.d.ts.map +1 -1
  304. package/dist/server/src/validation/admin-tokens.d.ts +75 -0
  305. package/dist/server/src/validation/admin-tokens.d.ts.map +1 -0
  306. package/dist/server/src/validation/api-tokens.d.ts +4 -2
  307. package/dist/server/src/validation/api-tokens.d.ts.map +1 -1
  308. package/dist/server/src/validation/project-settings.d.ts +10 -10
  309. package/dist/server/src/validation/project-settings.d.ts.map +1 -1
  310. package/dist/shared/contracts/admin-token.d.ts +122 -0
  311. package/dist/shared/contracts/admin-token.d.ts.map +1 -0
  312. package/dist/shared/contracts/api-token.d.ts +6 -95
  313. package/dist/shared/contracts/api-token.d.ts.map +1 -1
  314. package/dist/shared/contracts/content-api-token.d.ts +97 -0
  315. package/dist/shared/contracts/content-api-token.d.ts.map +1 -0
  316. package/dist/shared/contracts/shared.d.ts +1 -0
  317. package/dist/shared/contracts/shared.d.ts.map +1 -1
  318. package/package.json +7 -7
  319. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.js.map +0 -1
  320. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.mjs.map +0 -1
  321. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js +0 -37
  322. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.js.map +0 -1
  323. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs +0 -16
  324. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.mjs.map +0 -1
  325. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.js.map +0 -1
  326. package/dist/admin/admin/src/pages/Settings/pages/ApiTokens/EditView/utils/getDateOfExpiration.mjs.map +0 -1
  327. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/components/FormApiTokenContainer.d.ts +0 -20
  328. package/dist/admin/src/pages/Settings/pages/ApiTokens/EditView/constants.d.ts +0 -17
  329. package/dist/server/server/src/strategies/api-token.js +0 -144
  330. package/dist/server/server/src/strategies/api-token.js.map +0 -1
  331. package/dist/server/server/src/strategies/api-token.mjs +0 -138
  332. package/dist/server/server/src/strategies/api-token.mjs.map +0 -1
  333. package/dist/server/src/strategies/api-token.d.ts.map +0 -1
  334. /package/dist/admin/src/pages/Settings/{pages/ApiTokens/EditView → components/Tokens}/utils/getDateOfExpiration.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditViewPage.mjs","sources":["../../../../../../../../../admin/src/pages/Settings/pages/AdminTokens/EditView/EditViewPage.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Flex, Box } from '@strapi/design-system';\nimport { Formik, Form, FormikHelpers } from 'formik';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useMatch, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../../components/Layouts/Layout';\nimport { Page } from '../../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../../core/store/hooks';\nimport { useAuth } from '../../../../../features/Auth';\nimport { useNotification } from '../../../../../features/Notifications';\nimport { useTracking } from '../../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../../hooks/useAPIErrorHandler';\nimport { useRBAC } from '../../../../../hooks/useRBAC';\nimport {\n useCreateAdminTokenMutation,\n useGetAdminTokenQuery,\n useUpdateAdminTokenMutation,\n} from '../../../../../services/apiTokens';\nimport { isBaseQueryError } from '../../../../../utils/baseQuery';\nimport { API_TOKEN_TYPE, apiTokenInformationSchema } from '../../../components/Tokens/constants';\nimport { FormApiTokenContainer } from '../../../components/Tokens/FormApiTokenContainer';\nimport { FormHead } from '../../../components/Tokens/FormHead';\nimport { ApiTokenBox } from '../../../components/Tokens/TokenBox';\n\nimport { AdminPermissions } from './components/AdminPermissions';\n\nimport type { AdminApiToken, Get } from '../../../../../../../shared/contracts/admin-token';\nimport type { ApiToken } from '../../../../../../../shared/contracts/api-token';\nimport type { AuthContextValue } from '../../../../../features/Auth';\nimport type { PermissionsAPI } from '../../Roles/components/Permissions';\nimport type { Data } from '@strapi/types';\n\nconst getOwnerId = (owner: AdminApiToken['adminUserOwner']): Data.ID | null => {\n if (owner === undefined || owner === null) return null;\n return typeof owner === 'object' ? owner.id : owner;\n};\n\nconst isCurrentUserTokenOwner = (\n apiToken: ApiToken | null,\n currentUserId: Data.ID | undefined\n): boolean => {\n if (apiToken === null || apiToken.kind !== 'admin') return true;\n const ownerId = getOwnerId(apiToken.adminUserOwner);\n if (ownerId === null) return true;\n return currentUserId !== undefined && ownerId === currentUserId;\n};\n\nexport const EditView = () => {\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { state: locationState } = useLocation();\n const permissions = useTypedSelector((state) => state.admin_app.permissions);\n const [apiToken, setApiToken] = React.useState<ApiToken | null>(\n locationState?.apiToken?.accessKey !== undefined && locationState?.apiToken?.accessKey !== ''\n ? { ...locationState.apiToken }\n : null\n );\n\n const [showToken, setShowToken] = React.useState(\n locationState?.apiToken?.accessKey !== undefined && locationState?.apiToken?.accessKey !== ''\n );\n const hideTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const adminPermissionsRef = React.useRef<PermissionsAPI>(null);\n const { trackUsage } = useTracking();\n const currentUser = useAuth('EditView', (state: AuthContextValue) => state.user);\n const {\n allowedActions: { canCreate, canUpdate, canRegenerate },\n } = useRBAC(permissions.settings?.['admin-tokens']);\n const match = useMatch('/settings/admin-tokens/:id');\n const id = match?.params?.id;\n const isCreating = id === 'create';\n const {\n _unstableFormatAPIError: formatAPIError,\n _unstableFormatValidationErrors: formatValidationErrors,\n } = useAPIErrorHandler();\n\n const navigate = useNavigate();\n\n React.useEffect(() => {\n trackUsage(isCreating ? 'didAddTokenFromList' : 'didEditTokenFromList', {\n tokenType: API_TOKEN_TYPE,\n });\n }, [isCreating, trackUsage]);\n\n const { data, error, isLoading } = useGetAdminTokenQuery(id!, {\n skip: !id || isCreating,\n refetchOnMountOrArgChange: true,\n });\n\n React.useEffect(() => {\n if (error) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(error),\n });\n }\n }, [error, formatAPIError, toggleNotification]);\n\n React.useEffect(() => {\n if (data) {\n setApiToken(data);\n }\n }, [data]);\n\n React.useEffect(() => {\n if (showToken) {\n hideTimerRef.current = setTimeout(() => {\n setShowToken(false);\n }, 30000); // 30 seconds\n\n return () => {\n if (hideTimerRef.current) {\n clearTimeout(hideTimerRef.current);\n hideTimerRef.current = null;\n }\n };\n }\n }, [showToken]);\n\n const [createToken] = useCreateAdminTokenMutation();\n const [updateToken] = useUpdateAdminTokenMutation();\n\n interface FormValues extends Pick<Get.Response['data'], 'name' | 'description'> {\n lifespan: Get.Response['data']['lifespan'] | undefined;\n type: undefined;\n }\n\n const buildLifespan = (raw: FormValues['lifespan']): number | null =>\n raw && raw !== '0' ? parseInt(raw.toString(), 10) : null;\n\n const handleSubmit = async (body: FormValues, formik: FormikHelpers<FormValues>) => {\n trackUsage(isCreating ? 'willCreateToken' : 'willEditToken', {\n tokenType: API_TOKEN_TYPE,\n });\n\n const adminPermissionsToSend =\n adminPermissionsRef.current?.getPermissions().permissionsToSend ?? [];\n\n try {\n if (isCreating) {\n const res = await createToken({\n name: body.name,\n description: body.description,\n lifespan: buildLifespan(body.lifespan),\n adminPermissions: adminPermissionsToSend,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.adminTokenCreated',\n defaultMessage: 'Admin Token successfully created',\n }),\n });\n\n trackUsage('didCreateToken', {\n kind: 'admin',\n tokenType: API_TOKEN_TYPE,\n });\n\n adminPermissionsRef.current?.setFormAfterSubmit();\n\n navigate(`../admin-tokens/${res.data.id.toString()}`, {\n state: { apiToken: res.data },\n replace: true,\n });\n } else {\n const res = await updateToken({\n id: id!,\n name: body.name,\n description: body.description,\n adminPermissions: adminPermissionsToSend,\n });\n\n if ('error' in res) {\n if (isBaseQueryError(res.error) && res.error.name === 'ValidationError') {\n formik.setErrors(formatValidationErrors(res.error));\n } else {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n }\n\n return;\n }\n\n toggleNotification({\n type: 'success',\n message: formatMessage({\n id: 'notification.success.adminTokenEdited',\n defaultMessage: 'Admin Token successfully edited',\n }),\n });\n\n trackUsage('didEditToken', {\n kind: 'admin',\n tokenType: API_TOKEN_TYPE,\n });\n\n adminPermissionsRef.current?.setFormAfterSubmit();\n }\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n }\n };\n\n const toggleToken = () => {\n setShowToken((prev) => !prev);\n if (hideTimerRef.current) {\n clearTimeout(hideTimerRef.current);\n hideTimerRef.current = null;\n }\n };\n\n const canEditInputs = (canUpdate && !isCreating) || (canCreate && isCreating);\n const canShowToken = apiToken?.accessKey !== undefined && apiToken.accessKey !== '';\n const canRegenerateToken = canRegenerate && isCurrentUserTokenOwner(apiToken, currentUser?.id);\n\n const initialAdminPermissions =\n apiToken !== null && apiToken.kind === 'admin' ? (apiToken.adminPermissions ?? []) : [];\n\n const ownerUserId =\n apiToken !== null && apiToken.kind === 'admin' ? getOwnerId(apiToken.adminUserOwner) : null;\n\n if (isLoading || (!isCreating && apiToken === null)) {\n return <Page.Loading />;\n }\n\n return (\n <Page.Main>\n <Page.Title>\n {formatMessage(\n { id: 'Settings.PageTitle', defaultMessage: 'Settings - {name}' },\n { name: 'Admin Tokens' }\n )}\n </Page.Title>\n <Formik\n validationSchema={apiTokenInformationSchema}\n validateOnChange={false}\n initialValues={{\n name: apiToken?.name || '',\n description: apiToken?.description || '',\n type: undefined,\n lifespan: apiToken?.lifespan,\n }}\n enableReinitialize\n onSubmit={(body, actions) => handleSubmit(body as FormValues, actions)}\n >\n {({ errors, handleChange, isSubmitting, values }) => (\n <Form>\n <FormHead\n title={\n isCreating\n ? {\n id: 'Settings.adminTokens.createPage.title',\n defaultMessage: 'Create Admin Token',\n }\n : {\n id: 'Settings.adminTokens.editPage.title',\n defaultMessage: 'Edit Admin Token',\n }\n }\n token={apiToken}\n setToken={setApiToken}\n toggleToken={toggleToken}\n showToken={showToken}\n canEditInputs={canEditInputs}\n canRegenerate={canRegenerateToken}\n canShowToken={canShowToken}\n isSubmitting={isSubmitting}\n regenerateUrl=\"/admin/admin-tokens/\"\n />\n\n <Layouts.Content>\n <Flex direction=\"column\" alignItems=\"stretch\" gap={6}>\n {apiToken?.accessKey !== undefined &&\n apiToken.accessKey !== '' &&\n showToken === true && (\n <>\n <ApiTokenBox token={apiToken.accessKey} tokenType={API_TOKEN_TYPE} />\n </>\n )}\n\n <FormApiTokenContainer\n errors={errors}\n onChange={handleChange}\n canEditInputs={canEditInputs}\n isCreating={isCreating}\n values={values}\n apiToken={apiToken}\n kind=\"admin\"\n onDispatch={() => {}}\n setHasChangedPermissions={() => {}}\n />\n\n <Box shadow=\"filterShadow\" hasRadius>\n <AdminPermissions\n ref={adminPermissionsRef}\n disabled={!canEditInputs}\n initialAdminPermissions={initialAdminPermissions}\n tokenId={!isCreating && id ? id : undefined}\n ownerUserId={ownerUserId}\n />\n </Box>\n </Flex>\n </Layouts.Content>\n </Form>\n )}\n </Formik>\n </Page.Main>\n );\n};\n\nexport const ProtectedEditView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['admin-tokens']?.read\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <EditView />\n </Page.Protect>\n );\n};\n"],"names":["getOwnerId","owner","undefined","id","isCurrentUserTokenOwner","apiToken","currentUserId","kind","ownerId","adminUserOwner","EditView","formatMessage","useIntl","toggleNotification","useNotification","state","locationState","useLocation","permissions","useTypedSelector","admin_app","setApiToken","React","useState","accessKey","showToken","setShowToken","hideTimerRef","useRef","adminPermissionsRef","trackUsage","useTracking","currentUser","useAuth","user","allowedActions","canCreate","canUpdate","canRegenerate","useRBAC","settings","match","useMatch","params","isCreating","_unstableFormatAPIError","formatAPIError","_unstableFormatValidationErrors","formatValidationErrors","useAPIErrorHandler","navigate","useNavigate","useEffect","tokenType","API_TOKEN_TYPE","data","error","isLoading","useGetAdminTokenQuery","skip","refetchOnMountOrArgChange","type","message","current","setTimeout","clearTimeout","createToken","useCreateAdminTokenMutation","updateToken","useUpdateAdminTokenMutation","buildLifespan","raw","parseInt","toString","handleSubmit","body","formik","adminPermissionsToSend","getPermissions","permissionsToSend","res","name","description","lifespan","adminPermissions","isBaseQueryError","setErrors","defaultMessage","setFormAfterSubmit","replace","toggleToken","prev","canEditInputs","canShowToken","canRegenerateToken","initialAdminPermissions","ownerUserId","_jsx","Page","Loading","_jsxs","Main","Title","Formik","validationSchema","apiTokenInformationSchema","validateOnChange","initialValues","enableReinitialize","onSubmit","actions","errors","handleChange","isSubmitting","values","Form","FormHead","title","token","setToken","regenerateUrl","Layouts","Content","Flex","direction","alignItems","gap","_Fragment","ApiTokenBox","FormApiTokenContainer","onChange","onDispatch","setHasChangedPermissions","Box","shadow","hasRadius","AdminPermissions","ref","disabled","tokenId","ProtectedEditView","read","Protect"],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var PageHelpers = require('../../../../../../components/PageHelpers.js');
6
+ var Auth = require('../../../../../../features/Auth.js');
7
+ var apiTokens = require('../../../../../../services/apiTokens.js');
8
+ var users = require('../../../../../../services/users.js');
9
+ var Permissions = require('../../../Roles/components/Permissions.js');
10
+
11
+ function _interopNamespaceDefault(e) {
12
+ var n = Object.create(null);
13
+ if (e) {
14
+ Object.keys(e).forEach(function (k) {
15
+ if (k !== 'default') {
16
+ var d = Object.getOwnPropertyDescriptor(e, k);
17
+ Object.defineProperty(n, k, d.get ? d : {
18
+ enumerable: true,
19
+ get: function () { return e[k]; }
20
+ });
21
+ }
22
+ });
23
+ }
24
+ n.default = e;
25
+ return Object.freeze(n);
26
+ }
27
+
28
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
29
+
30
+ const AdminPermissions = /*#__PURE__*/ React__namespace.forwardRef(({ disabled, initialAdminPermissions, tokenId, ownerUserId }, ref)=>{
31
+ const { permissions: currentUserPermissions, user: currentUser } = Auth.useAuth('AdminPermissions', (auth)=>auth);
32
+ const isCurrentUserOwner = ownerUserId === undefined || ownerUserId === null || ownerUserId === currentUser?.id;
33
+ const { data: ownerPermissions } = apiTokens.useGetAPITokenOwnerPermissionsQuery(tokenId, {
34
+ skip: isCurrentUserOwner || tokenId === undefined,
35
+ refetchOnMountOrArgChange: true
36
+ });
37
+ const { data: layout, isLoading, error } = users.useGetRolePermissionLayoutQuery({
38
+ role: ''
39
+ });
40
+ const permissionsFormKey = React__namespace.useMemo(()=>JSON.stringify({
41
+ tokenId: tokenId ?? 'create',
42
+ ownerUserId: ownerUserId ?? 'current-user',
43
+ initialAdminPermissions
44
+ }), [
45
+ initialAdminPermissions,
46
+ ownerUserId,
47
+ tokenId
48
+ ]);
49
+ if (isLoading) {
50
+ return /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Loading, {});
51
+ }
52
+ if (error !== undefined || layout === undefined) {
53
+ return null;
54
+ }
55
+ // If the current user is not the owner, but we failed to fetch the owner's permissions, we can't display the permissions form.
56
+ if (isCurrentUserOwner === false && ownerPermissions === undefined) {
57
+ return null;
58
+ }
59
+ const effectivePermissions = isCurrentUserOwner ? currentUserPermissions : ownerPermissions;
60
+ return /*#__PURE__*/ jsxRuntime.jsx(Permissions.Permissions, {
61
+ ref: ref,
62
+ layout: layout,
63
+ permissions: initialAdminPermissions,
64
+ userPermissions: effectivePermissions,
65
+ isFormDisabled: disabled
66
+ }, permissionsFormKey);
67
+ });
68
+
69
+ exports.AdminPermissions = AdminPermissions;
70
+ //# sourceMappingURL=AdminPermissions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminPermissions.js","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page } from '../../../../../../components/PageHelpers';\nimport { useAuth } from '../../../../../../features/Auth';\nimport { useGetAPITokenOwnerPermissionsQuery } from '../../../../../../services/apiTokens';\nimport { useGetRolePermissionLayoutQuery } from '../../../../../../services/users';\nimport { Permissions, PermissionsAPI } from '../../../Roles/components/Permissions';\n\nimport type { Permission } from '../../../../../../../../shared/contracts/shared';\nimport type { Data } from '@strapi/types';\n\nexport interface AdminPermissionsProps {\n disabled?: boolean;\n initialAdminPermissions: Permission[];\n /** Undefined in create mode. */\n tokenId?: string;\n /** The owner's user id. Undefined in create mode, user can only create a token for themselves. */\n ownerUserId?: Data.ID | null;\n}\n\nexport const AdminPermissions = React.forwardRef<PermissionsAPI, AdminPermissionsProps>(\n ({ disabled, initialAdminPermissions, tokenId, ownerUserId }, ref) => {\n const { permissions: currentUserPermissions, user: currentUser } = useAuth(\n 'AdminPermissions',\n (auth) => auth\n );\n\n const isCurrentUserOwner =\n ownerUserId === undefined || ownerUserId === null || ownerUserId === currentUser?.id;\n\n const { data: ownerPermissions } = useGetAPITokenOwnerPermissionsQuery(tokenId!, {\n skip: isCurrentUserOwner || tokenId === undefined,\n refetchOnMountOrArgChange: true,\n });\n\n const { data: layout, isLoading, error } = useGetRolePermissionLayoutQuery({ role: '' });\n\n const permissionsFormKey = React.useMemo(\n () =>\n JSON.stringify({\n tokenId: tokenId ?? 'create',\n ownerUserId: ownerUserId ?? 'current-user',\n initialAdminPermissions,\n }),\n [initialAdminPermissions, ownerUserId, tokenId]\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error !== undefined || layout === undefined) {\n return null;\n }\n\n // If the current user is not the owner, but we failed to fetch the owner's permissions, we can't display the permissions form.\n if (isCurrentUserOwner === false && ownerPermissions === undefined) {\n return null;\n }\n\n const effectivePermissions = isCurrentUserOwner ? currentUserPermissions : ownerPermissions;\n\n return (\n <Permissions\n key={permissionsFormKey}\n ref={ref}\n layout={layout}\n permissions={initialAdminPermissions}\n userPermissions={effectivePermissions}\n isFormDisabled={disabled}\n />\n );\n }\n);\n"],"names":["AdminPermissions","React","forwardRef","disabled","initialAdminPermissions","tokenId","ownerUserId","ref","permissions","currentUserPermissions","user","currentUser","useAuth","auth","isCurrentUserOwner","undefined","id","data","ownerPermissions","useGetAPITokenOwnerPermissionsQuery","skip","refetchOnMountOrArgChange","layout","isLoading","error","useGetRolePermissionLayoutQuery","role","permissionsFormKey","useMemo","JSON","stringify","_jsx","Page","Loading","effectivePermissions","Permissions","userPermissions","isFormDisabled"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBO,MAAMA,gBAAAA,iBAAmBC,gBAAAA,CAAMC,UAAU,CAC9C,CAAC,EAAEC,QAAQ,EAAEC,uBAAuB,EAAEC,OAAO,EAAEC,WAAW,EAAE,EAAEC,GAAAA,GAAAA;IAC5D,MAAM,EAAEC,WAAAA,EAAaC,sBAAsB,EAAEC,IAAAA,EAAMC,WAAW,EAAE,GAAGC,YAAAA,CACjE,kBAAA,EACA,CAACC,IAAAA,GAASA,IAAAA,CAAAA;AAGZ,IAAA,MAAMC,qBACJR,WAAAA,KAAgBS,SAAAA,IAAaT,WAAAA,KAAgB,IAAA,IAAQA,gBAAgBK,WAAAA,EAAaK,EAAAA;AAEpF,IAAA,MAAM,EAAEC,IAAAA,EAAMC,gBAAgB,EAAE,GAAGC,8CAAoCd,OAAAA,EAAU;AAC/Ee,QAAAA,IAAAA,EAAMN,sBAAsBT,OAAAA,KAAYU,SAAAA;QACxCM,yBAAAA,EAA2B;AAC7B,KAAA,CAAA;IAEA,MAAM,EAAEJ,MAAMK,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGC,qCAAAA,CAAgC;QAAEC,IAAAA,EAAM;AAAG,KAAA,CAAA;AAEtF,IAAA,MAAMC,qBAAqB1B,gBAAAA,CAAM2B,OAAO,CACtC,IACEC,IAAAA,CAAKC,SAAS,CAAC;AACbzB,YAAAA,OAAAA,EAASA,OAAAA,IAAW,QAAA;AACpBC,YAAAA,WAAAA,EAAaA,WAAAA,IAAe,cAAA;AAC5BF,YAAAA;SACF,CAAA,EACF;AAACA,QAAAA,uBAAAA;AAAyBE,QAAAA,WAAAA;AAAaD,QAAAA;AAAQ,KAAA,CAAA;AAGjD,IAAA,IAAIkB,SAAAA,EAAW;QACb,qBAAOQ,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,IAAIT,KAAAA,KAAUT,SAAAA,IAAaO,MAAAA,KAAWP,SAAAA,EAAW;QAC/C,OAAO,IAAA;AACT,IAAA;;IAGA,IAAID,kBAAAA,KAAuB,KAAA,IAASI,gBAAAA,KAAqBH,SAAAA,EAAW;QAClE,OAAO,IAAA;AACT,IAAA;IAEA,MAAMmB,oBAAAA,GAAuBpB,qBAAqBL,sBAAAA,GAAyBS,gBAAAA;AAE3E,IAAA,qBACEa,cAAA,CAACI,uBAAAA,EAAAA;QAEC5B,GAAAA,EAAKA,GAAAA;QACLe,MAAAA,EAAQA,MAAAA;QACRd,WAAAA,EAAaJ,uBAAAA;QACbgC,eAAAA,EAAiBF,oBAAAA;QACjBG,cAAAA,EAAgBlC;AALXwB,KAAAA,EAAAA,kBAAAA,CAAAA;AAQX,CAAA;;;;"}
@@ -0,0 +1,49 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import { Page } from '../../../../../../components/PageHelpers.mjs';
4
+ import { useAuth } from '../../../../../../features/Auth.mjs';
5
+ import { useGetAPITokenOwnerPermissionsQuery } from '../../../../../../services/apiTokens.mjs';
6
+ import { useGetRolePermissionLayoutQuery } from '../../../../../../services/users.mjs';
7
+ import { Permissions } from '../../../Roles/components/Permissions.mjs';
8
+
9
+ const AdminPermissions = /*#__PURE__*/ React.forwardRef(({ disabled, initialAdminPermissions, tokenId, ownerUserId }, ref)=>{
10
+ const { permissions: currentUserPermissions, user: currentUser } = useAuth('AdminPermissions', (auth)=>auth);
11
+ const isCurrentUserOwner = ownerUserId === undefined || ownerUserId === null || ownerUserId === currentUser?.id;
12
+ const { data: ownerPermissions } = useGetAPITokenOwnerPermissionsQuery(tokenId, {
13
+ skip: isCurrentUserOwner || tokenId === undefined,
14
+ refetchOnMountOrArgChange: true
15
+ });
16
+ const { data: layout, isLoading, error } = useGetRolePermissionLayoutQuery({
17
+ role: ''
18
+ });
19
+ const permissionsFormKey = React.useMemo(()=>JSON.stringify({
20
+ tokenId: tokenId ?? 'create',
21
+ ownerUserId: ownerUserId ?? 'current-user',
22
+ initialAdminPermissions
23
+ }), [
24
+ initialAdminPermissions,
25
+ ownerUserId,
26
+ tokenId
27
+ ]);
28
+ if (isLoading) {
29
+ return /*#__PURE__*/ jsx(Page.Loading, {});
30
+ }
31
+ if (error !== undefined || layout === undefined) {
32
+ return null;
33
+ }
34
+ // If the current user is not the owner, but we failed to fetch the owner's permissions, we can't display the permissions form.
35
+ if (isCurrentUserOwner === false && ownerPermissions === undefined) {
36
+ return null;
37
+ }
38
+ const effectivePermissions = isCurrentUserOwner ? currentUserPermissions : ownerPermissions;
39
+ return /*#__PURE__*/ jsx(Permissions, {
40
+ ref: ref,
41
+ layout: layout,
42
+ permissions: initialAdminPermissions,
43
+ userPermissions: effectivePermissions,
44
+ isFormDisabled: disabled
45
+ }, permissionsFormKey);
46
+ });
47
+
48
+ export { AdminPermissions };
49
+ //# sourceMappingURL=AdminPermissions.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminPermissions.mjs","sources":["../../../../../../../../../../admin/src/pages/Settings/pages/AdminTokens/EditView/components/AdminPermissions.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Page } from '../../../../../../components/PageHelpers';\nimport { useAuth } from '../../../../../../features/Auth';\nimport { useGetAPITokenOwnerPermissionsQuery } from '../../../../../../services/apiTokens';\nimport { useGetRolePermissionLayoutQuery } from '../../../../../../services/users';\nimport { Permissions, PermissionsAPI } from '../../../Roles/components/Permissions';\n\nimport type { Permission } from '../../../../../../../../shared/contracts/shared';\nimport type { Data } from '@strapi/types';\n\nexport interface AdminPermissionsProps {\n disabled?: boolean;\n initialAdminPermissions: Permission[];\n /** Undefined in create mode. */\n tokenId?: string;\n /** The owner's user id. Undefined in create mode, user can only create a token for themselves. */\n ownerUserId?: Data.ID | null;\n}\n\nexport const AdminPermissions = React.forwardRef<PermissionsAPI, AdminPermissionsProps>(\n ({ disabled, initialAdminPermissions, tokenId, ownerUserId }, ref) => {\n const { permissions: currentUserPermissions, user: currentUser } = useAuth(\n 'AdminPermissions',\n (auth) => auth\n );\n\n const isCurrentUserOwner =\n ownerUserId === undefined || ownerUserId === null || ownerUserId === currentUser?.id;\n\n const { data: ownerPermissions } = useGetAPITokenOwnerPermissionsQuery(tokenId!, {\n skip: isCurrentUserOwner || tokenId === undefined,\n refetchOnMountOrArgChange: true,\n });\n\n const { data: layout, isLoading, error } = useGetRolePermissionLayoutQuery({ role: '' });\n\n const permissionsFormKey = React.useMemo(\n () =>\n JSON.stringify({\n tokenId: tokenId ?? 'create',\n ownerUserId: ownerUserId ?? 'current-user',\n initialAdminPermissions,\n }),\n [initialAdminPermissions, ownerUserId, tokenId]\n );\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error !== undefined || layout === undefined) {\n return null;\n }\n\n // If the current user is not the owner, but we failed to fetch the owner's permissions, we can't display the permissions form.\n if (isCurrentUserOwner === false && ownerPermissions === undefined) {\n return null;\n }\n\n const effectivePermissions = isCurrentUserOwner ? currentUserPermissions : ownerPermissions;\n\n return (\n <Permissions\n key={permissionsFormKey}\n ref={ref}\n layout={layout}\n permissions={initialAdminPermissions}\n userPermissions={effectivePermissions}\n isFormDisabled={disabled}\n />\n );\n }\n);\n"],"names":["AdminPermissions","React","forwardRef","disabled","initialAdminPermissions","tokenId","ownerUserId","ref","permissions","currentUserPermissions","user","currentUser","useAuth","auth","isCurrentUserOwner","undefined","id","data","ownerPermissions","useGetAPITokenOwnerPermissionsQuery","skip","refetchOnMountOrArgChange","layout","isLoading","error","useGetRolePermissionLayoutQuery","role","permissionsFormKey","useMemo","JSON","stringify","_jsx","Page","Loading","effectivePermissions","Permissions","userPermissions","isFormDisabled"],"mappings":";;;;;;;;AAoBO,MAAMA,gBAAAA,iBAAmBC,KAAAA,CAAMC,UAAU,CAC9C,CAAC,EAAEC,QAAQ,EAAEC,uBAAuB,EAAEC,OAAO,EAAEC,WAAW,EAAE,EAAEC,GAAAA,GAAAA;IAC5D,MAAM,EAAEC,WAAAA,EAAaC,sBAAsB,EAAEC,IAAAA,EAAMC,WAAW,EAAE,GAAGC,OAAAA,CACjE,kBAAA,EACA,CAACC,IAAAA,GAASA,IAAAA,CAAAA;AAGZ,IAAA,MAAMC,qBACJR,WAAAA,KAAgBS,SAAAA,IAAaT,WAAAA,KAAgB,IAAA,IAAQA,gBAAgBK,WAAAA,EAAaK,EAAAA;AAEpF,IAAA,MAAM,EAAEC,IAAAA,EAAMC,gBAAgB,EAAE,GAAGC,oCAAoCd,OAAAA,EAAU;AAC/Ee,QAAAA,IAAAA,EAAMN,sBAAsBT,OAAAA,KAAYU,SAAAA;QACxCM,yBAAAA,EAA2B;AAC7B,KAAA,CAAA;IAEA,MAAM,EAAEJ,MAAMK,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGC,+BAAAA,CAAgC;QAAEC,IAAAA,EAAM;AAAG,KAAA,CAAA;AAEtF,IAAA,MAAMC,qBAAqB1B,KAAAA,CAAM2B,OAAO,CACtC,IACEC,IAAAA,CAAKC,SAAS,CAAC;AACbzB,YAAAA,OAAAA,EAASA,OAAAA,IAAW,QAAA;AACpBC,YAAAA,WAAAA,EAAaA,WAAAA,IAAe,cAAA;AAC5BF,YAAAA;SACF,CAAA,EACF;AAACA,QAAAA,uBAAAA;AAAyBE,QAAAA,WAAAA;AAAaD,QAAAA;AAAQ,KAAA,CAAA;AAGjD,IAAA,IAAIkB,SAAAA,EAAW;QACb,qBAAOQ,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,IAAIT,KAAAA,KAAUT,SAAAA,IAAaO,MAAAA,KAAWP,SAAAA,EAAW;QAC/C,OAAO,IAAA;AACT,IAAA;;IAGA,IAAID,kBAAAA,KAAuB,KAAA,IAASI,gBAAAA,KAAqBH,SAAAA,EAAW;QAClE,OAAO,IAAA;AACT,IAAA;IAEA,MAAMmB,oBAAAA,GAAuBpB,qBAAqBL,sBAAAA,GAAyBS,gBAAAA;AAE3E,IAAA,qBACEa,GAAA,CAACI,WAAAA,EAAAA;QAEC5B,GAAAA,EAAKA,GAAAA;QACLe,MAAAA,EAAQA,MAAAA;QACRd,WAAAA,EAAaJ,uBAAAA;QACbgC,eAAAA,EAAiBF,oBAAAA;QACjBG,cAAAA,EAAgBlC;AALXwB,KAAAA,EAAAA,kBAAAA,CAAAA;AAQX,CAAA;;;;"}
@@ -0,0 +1,254 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var designSystem = require('@strapi/design-system');
6
+ var icons = require('@strapi/icons');
7
+ var symbols = require('@strapi/icons/symbols');
8
+ var qs = require('qs');
9
+ var reactIntl = require('react-intl');
10
+ var reactRouterDom = require('react-router-dom');
11
+ var Layout = require('../../../../components/Layouts/Layout.js');
12
+ var PageHelpers = require('../../../../components/PageHelpers.js');
13
+ var hooks = require('../../../../core/store/hooks.js');
14
+ var Notifications = require('../../../../features/Notifications.js');
15
+ var Tracking = require('../../../../features/Tracking.js');
16
+ var useAPIErrorHandler = require('../../../../hooks/useAPIErrorHandler.js');
17
+ var useOnce = require('../../../../hooks/useOnce.js');
18
+ var useRBAC = require('../../../../hooks/useRBAC.js');
19
+ var apiTokens = require('../../../../services/apiTokens.js');
20
+ var constants = require('../../components/Tokens/constants.js');
21
+ var Table = require('../../components/Tokens/Table.js');
22
+
23
+ function _interopNamespaceDefault(e) {
24
+ var n = Object.create(null);
25
+ if (e) {
26
+ Object.keys(e).forEach(function (k) {
27
+ if (k !== 'default') {
28
+ var d = Object.getOwnPropertyDescriptor(e, k);
29
+ Object.defineProperty(n, k, d.get ? d : {
30
+ enumerable: true,
31
+ get: function () { return e[k]; }
32
+ });
33
+ }
34
+ });
35
+ }
36
+ n.default = e;
37
+ return Object.freeze(n);
38
+ }
39
+
40
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
41
+ var qs__namespace = /*#__PURE__*/_interopNamespaceDefault(qs);
42
+
43
+ const TABLE_HEADERS = [
44
+ {
45
+ name: 'name',
46
+ label: {
47
+ id: 'Settings.adminTokens.ListView.headers.name',
48
+ defaultMessage: 'Name'
49
+ },
50
+ sortable: true
51
+ },
52
+ {
53
+ name: 'description',
54
+ label: {
55
+ id: 'Settings.adminTokens.ListView.headers.description',
56
+ defaultMessage: 'Description'
57
+ },
58
+ sortable: false
59
+ },
60
+ {
61
+ name: 'createdAt',
62
+ label: {
63
+ id: 'Settings.adminTokens.ListView.headers.createdAt',
64
+ defaultMessage: 'Created at'
65
+ },
66
+ sortable: false
67
+ },
68
+ {
69
+ name: 'lastUsedAt',
70
+ label: {
71
+ id: 'Settings.adminTokens.ListView.headers.lastUsedAt',
72
+ defaultMessage: 'Last used'
73
+ },
74
+ sortable: false
75
+ },
76
+ {
77
+ name: 'adminUserOwner',
78
+ label: {
79
+ id: 'Settings.adminTokens.ListView.headers.owner',
80
+ defaultMessage: 'Owner'
81
+ },
82
+ sortable: false
83
+ }
84
+ ];
85
+ const ListView = ()=>{
86
+ const { formatMessage } = reactIntl.useIntl();
87
+ const { toggleNotification } = Notifications.useNotification();
88
+ const permissions = hooks.useTypedSelector((state)=>state.admin_app.permissions.settings?.['admin-tokens']);
89
+ const { allowedActions: { canRead, canCreate, canDelete, canUpdate } } = useRBAC.useRBAC(permissions);
90
+ const navigate = reactRouterDom.useNavigate();
91
+ const { trackUsage } = Tracking.useTracking();
92
+ const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler.useAPIErrorHandler();
93
+ React__namespace.useEffect(()=>{
94
+ navigate({
95
+ search: qs__namespace.stringify({
96
+ sort: 'name:ASC'
97
+ }, {
98
+ encode: false
99
+ })
100
+ }, {
101
+ replace: true
102
+ });
103
+ }, [
104
+ navigate
105
+ ]);
106
+ const headers = TABLE_HEADERS.map((header)=>({
107
+ ...header,
108
+ label: formatMessage(header.label)
109
+ }));
110
+ useOnce.useOnce(()=>{
111
+ trackUsage('willAccessTokenList', {
112
+ tokenType: constants.API_TOKEN_TYPE
113
+ });
114
+ });
115
+ const { data: adminTokens = [], isLoading, error } = apiTokens.useGetAdminTokensQuery();
116
+ React__namespace.useEffect(()=>{
117
+ if (error) {
118
+ toggleNotification({
119
+ type: 'danger',
120
+ message: formatAPIError(error)
121
+ });
122
+ }
123
+ }, [
124
+ error,
125
+ formatAPIError,
126
+ toggleNotification
127
+ ]);
128
+ React__namespace.useEffect(()=>{
129
+ trackUsage('didAccessTokenList', {
130
+ number: adminTokens.length,
131
+ tokenType: constants.API_TOKEN_TYPE
132
+ });
133
+ }, [
134
+ adminTokens,
135
+ trackUsage
136
+ ]);
137
+ const [deleteToken] = apiTokens.useDeleteAdminTokenMutation();
138
+ const handleDelete = async (id)=>{
139
+ try {
140
+ const res = await deleteToken(id);
141
+ if ('error' in res) {
142
+ toggleNotification({
143
+ type: 'danger',
144
+ message: formatAPIError(res.error)
145
+ });
146
+ return;
147
+ }
148
+ trackUsage('didDeleteToken');
149
+ } catch {
150
+ toggleNotification({
151
+ type: 'danger',
152
+ message: formatMessage({
153
+ id: 'notification.error',
154
+ defaultMessage: 'Something went wrong'
155
+ })
156
+ });
157
+ }
158
+ };
159
+ return /*#__PURE__*/ jsxRuntime.jsxs(jsxRuntime.Fragment, {
160
+ children: [
161
+ /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Title, {
162
+ children: formatMessage({
163
+ id: 'Settings.PageTitle',
164
+ defaultMessage: 'Settings - {name}'
165
+ }, {
166
+ name: 'Admin Tokens'
167
+ })
168
+ }),
169
+ /*#__PURE__*/ jsxRuntime.jsx(Layout.Layouts.Header, {
170
+ title: formatMessage({
171
+ id: 'Settings.adminTokens.title',
172
+ defaultMessage: 'Admin Tokens'
173
+ }),
174
+ subtitle: formatMessage({
175
+ id: 'Settings.adminTokens.description',
176
+ defaultMessage: 'List of generated tokens to programmatically access the admin features'
177
+ }),
178
+ primaryAction: canCreate && /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
179
+ tag: reactRouterDom.Link,
180
+ "data-testid": "create-admin-token-button",
181
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
182
+ size: "S",
183
+ onClick: ()=>trackUsage('willAddTokenFromList', {
184
+ tokenType: constants.API_TOKEN_TYPE
185
+ }),
186
+ to: "/settings/admin-tokens/create",
187
+ children: formatMessage({
188
+ id: 'Settings.adminTokens.create',
189
+ defaultMessage: 'Create new Admin Token'
190
+ })
191
+ })
192
+ }),
193
+ !canRead ? /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.NoPermissions, {}) : /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Main, {
194
+ "aria-busy": isLoading,
195
+ children: /*#__PURE__*/ jsxRuntime.jsxs(Layout.Layouts.Content, {
196
+ children: [
197
+ adminTokens.length > 0 && /*#__PURE__*/ jsxRuntime.jsx(Table.Table, {
198
+ permissions: {
199
+ canRead,
200
+ canDelete,
201
+ canUpdate
202
+ },
203
+ headers: headers,
204
+ isLoading: isLoading,
205
+ onConfirmDelete: handleDelete,
206
+ tokens: adminTokens,
207
+ tokenType: constants.API_TOKEN_TYPE,
208
+ showOwner: true
209
+ }),
210
+ canCreate && adminTokens.length === 0 ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
211
+ icon: /*#__PURE__*/ jsxRuntime.jsx(symbols.EmptyDocuments, {
212
+ width: "16rem"
213
+ }),
214
+ content: formatMessage({
215
+ id: 'Settings.adminTokens.addFirstToken',
216
+ defaultMessage: 'Create your first Admin Token'
217
+ }),
218
+ action: /*#__PURE__*/ jsxRuntime.jsx(designSystem.LinkButton, {
219
+ tag: reactRouterDom.Link,
220
+ variant: "secondary",
221
+ startIcon: /*#__PURE__*/ jsxRuntime.jsx(icons.Plus, {}),
222
+ to: "/settings/admin-tokens/create",
223
+ children: formatMessage({
224
+ id: 'Settings.adminTokens.create',
225
+ defaultMessage: 'Create new Admin Token'
226
+ })
227
+ })
228
+ }) : null,
229
+ !canCreate && adminTokens.length === 0 ? /*#__PURE__*/ jsxRuntime.jsx(designSystem.EmptyStateLayout, {
230
+ icon: /*#__PURE__*/ jsxRuntime.jsx(symbols.EmptyDocuments, {
231
+ width: "16rem"
232
+ }),
233
+ content: formatMessage({
234
+ id: 'Settings.adminTokens.emptyStateLayout',
235
+ defaultMessage: "You don't have any content yet..."
236
+ })
237
+ }) : null
238
+ ]
239
+ })
240
+ })
241
+ ]
242
+ });
243
+ };
244
+ const ProtectedListView = ()=>{
245
+ const permissions = hooks.useTypedSelector((state)=>state.admin_app.permissions.settings?.['admin-tokens']?.main);
246
+ return /*#__PURE__*/ jsxRuntime.jsx(PageHelpers.Page.Protect, {
247
+ permissions: permissions,
248
+ children: /*#__PURE__*/ jsxRuntime.jsx(ListView, {})
249
+ });
250
+ };
251
+
252
+ exports.ListView = ListView;
253
+ exports.ProtectedListView = ProtectedListView;
254
+ //# sourceMappingURL=ListView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListView.js","sources":["../../../../../../../../admin/src/pages/Settings/pages/AdminTokens/ListView.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { EmptyStateLayout, LinkButton } from '@strapi/design-system';\nimport { Plus } from '@strapi/icons';\nimport { EmptyDocuments } from '@strapi/icons/symbols';\nimport * as qs from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, useNavigate } from 'react-router-dom';\n\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { Page } from '../../../../components/PageHelpers';\nimport { useTypedSelector } from '../../../../core/store/hooks';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useTracking } from '../../../../features/Tracking';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useOnce } from '../../../../hooks/useOnce';\nimport { useRBAC } from '../../../../hooks/useRBAC';\nimport {\n useDeleteAdminTokenMutation,\n useGetAdminTokensQuery,\n} from '../../../../services/apiTokens';\nimport { API_TOKEN_TYPE } from '../../components/Tokens/constants';\nimport { Table } from '../../components/Tokens/Table';\n\nimport type { Data } from '@strapi/types';\n\nconst TABLE_HEADERS = [\n {\n name: 'name',\n label: {\n id: 'Settings.adminTokens.ListView.headers.name',\n defaultMessage: 'Name',\n },\n sortable: true,\n },\n {\n name: 'description',\n label: {\n id: 'Settings.adminTokens.ListView.headers.description',\n defaultMessage: 'Description',\n },\n sortable: false,\n },\n {\n name: 'createdAt',\n label: {\n id: 'Settings.adminTokens.ListView.headers.createdAt',\n defaultMessage: 'Created at',\n },\n sortable: false,\n },\n {\n name: 'lastUsedAt',\n label: {\n id: 'Settings.adminTokens.ListView.headers.lastUsedAt',\n defaultMessage: 'Last used',\n },\n sortable: false,\n },\n {\n name: 'adminUserOwner',\n label: {\n id: 'Settings.adminTokens.ListView.headers.owner',\n defaultMessage: 'Owner',\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?.['admin-tokens']\n );\n const {\n allowedActions: { canRead, canCreate, canDelete, canUpdate },\n } = useRBAC(permissions);\n const navigate = useNavigate();\n const { trackUsage } = useTracking();\n\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n React.useEffect(() => {\n navigate({ search: qs.stringify({ sort: 'name:ASC' }, { encode: false }) }, { replace: true });\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: adminTokens = [], isLoading, error } = useGetAdminTokensQuery();\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: adminTokens.length, tokenType: API_TOKEN_TYPE });\n }, [adminTokens, trackUsage]);\n\n const [deleteToken] = useDeleteAdminTokenMutation();\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: 'Admin Tokens' }\n )}\n </Page.Title>\n <Layouts.Header\n title={formatMessage({ id: 'Settings.adminTokens.title', defaultMessage: 'Admin Tokens' })}\n subtitle={formatMessage({\n id: 'Settings.adminTokens.description',\n defaultMessage: 'List of generated tokens to programmatically access the admin features',\n })}\n primaryAction={\n canCreate && (\n <LinkButton\n tag={Link}\n data-testid=\"create-admin-token-button\"\n startIcon={<Plus />}\n size=\"S\"\n onClick={() => trackUsage('willAddTokenFromList', { tokenType: API_TOKEN_TYPE })}\n to=\"/settings/admin-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.adminTokens.create',\n defaultMessage: 'Create new Admin Token',\n })}\n </LinkButton>\n )\n }\n />\n {!canRead ? (\n <Page.NoPermissions />\n ) : (\n <Page.Main aria-busy={isLoading}>\n <Layouts.Content>\n {adminTokens.length > 0 && (\n <Table\n permissions={{ canRead, canDelete, canUpdate }}\n headers={headers}\n isLoading={isLoading}\n onConfirmDelete={handleDelete}\n tokens={adminTokens}\n tokenType={API_TOKEN_TYPE}\n showOwner\n />\n )}\n {canCreate && adminTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.adminTokens.addFirstToken',\n defaultMessage: 'Create your first Admin Token',\n })}\n action={\n <LinkButton\n tag={Link}\n variant=\"secondary\"\n startIcon={<Plus />}\n to=\"/settings/admin-tokens/create\"\n >\n {formatMessage({\n id: 'Settings.adminTokens.create',\n defaultMessage: 'Create new Admin Token',\n })}\n </LinkButton>\n }\n />\n ) : null}\n {!canCreate && adminTokens.length === 0 ? (\n <EmptyStateLayout\n icon={<EmptyDocuments width=\"16rem\" />}\n content={formatMessage({\n id: 'Settings.adminTokens.emptyStateLayout',\n defaultMessage: \"You don't have any content yet...\",\n })}\n />\n ) : null}\n </Layouts.Content>\n </Page.Main>\n )}\n </>\n );\n};\n\nexport const ProtectedListView = () => {\n const permissions = useTypedSelector(\n (state) => state.admin_app.permissions.settings?.['admin-tokens']?.main\n );\n\n return (\n <Page.Protect permissions={permissions}>\n <ListView />\n </Page.Protect>\n );\n};\n"],"names":["TABLE_HEADERS","name","label","id","defaultMessage","sortable","ListView","formatMessage","useIntl","toggleNotification","useNotification","permissions","useTypedSelector","state","admin_app","settings","allowedActions","canRead","canCreate","canDelete","canUpdate","useRBAC","navigate","useNavigate","trackUsage","useTracking","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","React","useEffect","search","qs","stringify","sort","encode","replace","headers","map","header","useOnce","tokenType","API_TOKEN_TYPE","data","adminTokens","isLoading","error","useGetAdminTokensQuery","type","message","number","length","deleteToken","useDeleteAdminTokenMutation","handleDelete","res","_jsxs","_Fragment","_jsx","Page","Title","Layouts","Header","title","subtitle","primaryAction","LinkButton","tag","Link","data-testid","startIcon","Plus","size","onClick","to","NoPermissions","Main","aria-busy","Content","Table","onConfirmDelete","tokens","showOwner","EmptyStateLayout","icon","EmptyDocuments","width","content","action","variant","ProtectedListView","main","Protect"],"mappings":"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"}