@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
@@ -4,13 +4,29 @@ var jsxRuntime = require('react/jsx-runtime');
4
4
  require('react');
5
5
  var designSystem = require('@strapi/design-system');
6
6
  var reactIntl = require('react-intl');
7
- var LifeSpanInput = require('../../../../components/Tokens/LifeSpanInput.js');
8
- var TokenDescription = require('../../../../components/Tokens/TokenDescription.js');
9
- var TokenName = require('../../../../components/Tokens/TokenName.js');
10
- var TokenTypeSelect = require('../../../../components/Tokens/TokenTypeSelect.js');
7
+ var Auth = require('../../../../features/Auth.js');
8
+ var LifeSpanInput = require('./LifeSpanInput.js');
9
+ var TokenDescription = require('./TokenDescription.js');
10
+ var TokenName = require('./TokenName.js');
11
+ var TokenTypeSelect = require('./TokenTypeSelect.js');
11
12
 
12
- const FormApiTokenContainer = ({ errors = {}, onChange, canEditInputs, isCreating, values = {}, apiToken = {}, onDispatch, setHasChangedPermissions })=>{
13
+ const formatAdminUserName = (owner)=>{
14
+ const full = [
15
+ owner.firstname,
16
+ owner.lastname
17
+ ].filter(Boolean).join(' ');
18
+ return full || owner.username || owner.email || '';
19
+ };
20
+ const FormApiTokenContainer = ({ errors = {}, onChange, canEditInputs, isCreating, values = {}, apiToken = {}, kind, onDispatch, setHasChangedPermissions })=>{
13
21
  const { formatMessage } = reactIntl.useIntl();
22
+ const currentUser = Auth.useAuth('FormApiTokenContainer', (state)=>state.user);
23
+ const ownerToDisplay = (()=>{
24
+ const owner = kind === 'admin' ? apiToken?.adminUserOwner : undefined;
25
+ if (owner === undefined || owner === null) return null;
26
+ if (typeof owner !== 'object') return null;
27
+ if (currentUser?.id !== undefined && owner.id === currentUser.id) return null;
28
+ return owner;
29
+ })();
14
30
  const handleChangeSelectApiTokenType = ({ target: { value } })=>{
15
31
  setHasChangedPermissions(false);
16
32
  if (value === 'full-access') {
@@ -108,7 +124,7 @@ const FormApiTokenContainer = ({ errors = {}, onChange, canEditInputs, isCreatin
108
124
  token: apiToken
109
125
  })
110
126
  }, "lifespan"),
111
- /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
127
+ kind === 'content-api' && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
112
128
  m: 6,
113
129
  xs: 12,
114
130
  direction: "column",
@@ -121,24 +137,45 @@ const FormApiTokenContainer = ({ errors = {}, onChange, canEditInputs, isCreatin
121
137
  defaultMessage: 'Token type'
122
138
  },
123
139
  onChange: (value)=>{
124
- // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2
125
140
  handleChangeSelectApiTokenType({
126
141
  target: {
127
- value
142
+ value: String(value)
128
143
  }
129
144
  });
130
- // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2
131
145
  onChange({
132
146
  target: {
133
147
  name: 'type',
134
- value
148
+ value: String(value)
135
149
  }
136
150
  });
137
151
  },
138
152
  options: typeOptions,
139
153
  canEditInputs: canEditInputs
140
154
  })
141
- }, "type")
155
+ }, "type"),
156
+ ownerToDisplay !== null && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Grid.Item, {
157
+ m: 6,
158
+ xs: 12,
159
+ direction: "column",
160
+ alignItems: "stretch",
161
+ children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Field.Root, {
162
+ name: "adminUserOwner",
163
+ children: [
164
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.Field.Label, {
165
+ children: formatMessage({
166
+ id: 'Settings.tokens.form.owner',
167
+ defaultMessage: 'Owner'
168
+ })
169
+ }),
170
+ /*#__PURE__*/ jsxRuntime.jsx(designSystem.TextInput, {
171
+ type: "text",
172
+ value: formatAdminUserName(ownerToDisplay),
173
+ disabled: true,
174
+ onChange: ()=>{}
175
+ })
176
+ ]
177
+ })
178
+ }, "owner")
142
179
  ]
143
180
  })
144
181
  ]
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormApiTokenContainer.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Field, Flex, Grid, TextInput, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useAuth } from '../../../../features/Auth';\n\nimport { LifeSpanInput } from './LifeSpanInput';\nimport { TokenDescription } from './TokenDescription';\nimport { TokenName } from './TokenName';\nimport { TokenTypeSelect } from './TokenTypeSelect';\n\nimport type { AdminApiToken } from '../../../../../../shared/contracts/admin-token';\nimport type { ApiToken, ContentApiApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { AdminTokenOwner } from '../../../../../../shared/contracts/shared';\nimport type { AuthContextValue } from '../../../../features/Auth';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n kind: 'admin' | 'content-api';\n onDispatch: React.Dispatch<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: unknown;\n }>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nconst formatAdminUserName = (\n owner: Pick<AdminTokenOwner, 'firstname' | 'lastname' | 'email' | 'username'>\n): string => {\n const full = [owner.firstname, owner.lastname].filter(Boolean).join(' ');\n return full || owner.username || owner.email || '';\n};\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n kind,\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n const currentUser = useAuth('FormApiTokenContainer', (state: AuthContextValue) => state.user);\n\n const ownerToDisplay = (() => {\n const owner =\n kind === 'admin'\n ? (apiToken as Partial<AdminApiToken> | null | undefined)?.adminUserOwner\n : undefined;\n if (owner === undefined || owner === null) return null;\n if (typeof owner !== 'object') return null;\n if (currentUser?.id !== undefined && owner.id === currentUser.id) return null;\n return owner;\n })();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </Grid.Item>\n\n {kind === 'content-api' && (\n <Grid.Item key=\"type\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n handleChangeSelectApiTokenType({ target: { value: String(value) } });\n\n onChange({ target: { name: 'type', value: String(value) } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n )}\n {ownerToDisplay !== null && (\n <Grid.Item key=\"owner\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"adminUserOwner\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.owner',\n defaultMessage: 'Owner',\n })}\n </Field.Label>\n <TextInput\n type=\"text\"\n value={formatAdminUserName(ownerToDisplay)}\n disabled\n onChange={() => {}}\n />\n </Field.Root>\n </Grid.Item>\n )}\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n"],"names":["formatAdminUserName","owner","full","firstname","lastname","filter","Boolean","join","username","email","FormApiTokenContainer","errors","onChange","canEditInputs","isCreating","values","apiToken","kind","onDispatch","setHasChangedPermissions","formatMessage","useIntl","currentUser","useAuth","state","user","ownerToDisplay","adminUserOwner","undefined","id","handleChangeSelectApiTokenType","target","value","type","typeOptions","label","defaultMessage","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","Grid","Root","Item","m","xs","TokenName","error","TokenDescription","LifeSpanInput","token","TokenTypeSelect","String","name","options","Field","Label","TextInput","disabled"],"mappings":";;;;;;;;;;;;AAkCA,MAAMA,sBAAsB,CAC1BC,KAAAA,GAAAA;AAEA,IAAA,MAAMC,IAAAA,GAAO;AAACD,QAAAA,KAAAA,CAAME,SAAS;AAAEF,QAAAA,KAAAA,CAAMG;AAAS,KAAA,CAACC,MAAM,CAACC,OAAAA,CAAAA,CAASC,IAAI,CAAC,GAAA,CAAA;AACpE,IAAA,OAAOL,QAAQD,KAAAA,CAAMO,QAAQ,IAAIP,KAAAA,CAAMQ,KAAK,IAAI,EAAA;AAClD,CAAA;AAEO,MAAMC,qBAAAA,GAAwB,CAAC,EACpCC,MAAAA,GAAS,EAAE,EACXC,QAAQ,EACRC,aAAa,EACbC,UAAU,EACVC,MAAAA,GAAS,EAAE,EACXC,QAAAA,GAAW,EAAE,EACbC,IAAI,EACJC,UAAU,EACVC,wBAAwB,EACG,GAAA;IAC3B,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,cAAcC,YAAAA,CAAQ,uBAAA,EAAyB,CAACC,KAAAA,GAA4BA,MAAMC,IAAI,CAAA;IAE5F,MAAMC,cAAAA,GAAiB,CAAC,IAAA;AACtB,QAAA,MAAMzB,KAAAA,GACJgB,IAAAA,KAAS,OAAA,GACJD,QAAAA,EAAwDW,cAAAA,GACzDC,SAAAA;AACN,QAAA,IAAI3B,KAAAA,KAAU2B,SAAAA,IAAa3B,KAAAA,KAAU,IAAA,EAAM,OAAO,IAAA;QAClD,IAAI,OAAOA,KAAAA,KAAU,QAAA,EAAU,OAAO,IAAA;QACtC,IAAIqB,WAAAA,EAAaO,OAAOD,SAAAA,IAAa3B,KAAAA,CAAM4B,EAAE,KAAKP,WAAAA,CAAYO,EAAE,EAAE,OAAO,IAAA;QACzE,OAAO5B,KAAAA;IACT,CAAA,GAAA;AAEA,IAAA,MAAM6B,iCAAiC,CAAC,EAAEC,QAAQ,EAAEC,KAAK,EAAE,EAAiC,GAAA;QAC1Fb,wBAAAA,CAAyB,KAAA,CAAA;AAEzB,QAAA,IAAIa,UAAU,aAAA,EAAe;YAC3Bd,UAAAA,CAAW;gBACTe,IAAAA,EAAM;AACR,aAAA,CAAA;AACF,QAAA;AACA,QAAA,IAAID,UAAU,WAAA,EAAa;YACzBd,UAAAA,CAAW;gBACTe,IAAAA,EAAM;AACR,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMC,WAAAA,GAAc;AAClB,QAAA;YACEF,KAAAA,EAAO,WAAA;YACPG,KAAAA,EAAO;gBACLN,EAAAA,EAAI,iCAAA;gBACJO,cAAAA,EAAgB;AAClB;AACF,SAAA;AACA,QAAA;YACEJ,KAAAA,EAAO,aAAA;YACPG,KAAAA,EAAO;gBACLN,EAAAA,EAAI,mCAAA;gBACJO,cAAAA,EAAgB;AAClB;AACF,SAAA;AACA,QAAA;YACEJ,KAAAA,EAAO,QAAA;YACPG,KAAAA,EAAO;gBACLN,EAAAA,EAAI,8BAAA;gBACJO,cAAAA,EAAgB;AAClB;AACF;AACD,KAAA;AAED,IAAA,qBACEC,cAAA,CAACC,gBAAAA,EAAAA;QACCC,UAAAA,EAAW,UAAA;QACXC,SAAS,EAAA,IAAA;QACTC,MAAAA,EAAO,cAAA;QACPC,UAAAA,EAAY,CAAA;QACZC,aAAAA,EAAe,CAAA;QACfC,WAAAA,EAAa,CAAA;QACbC,YAAAA,EAAc,CAAA;AAEd,QAAA,QAAA,gBAAAC,eAAA,CAACC,iBAAAA,EAAAA;YAAKC,SAAAA,EAAU,QAAA;YAASC,UAAAA,EAAW,SAAA;YAAUC,GAAAA,EAAK,CAAA;;8BACjDb,cAAA,CAACc,uBAAAA,EAAAA;oBAAWC,OAAAA,EAAQ,OAAA;oBAAQC,GAAAA,EAAI,IAAA;8BAC7BjC,aAAAA,CAAc;wBACbS,EAAAA,EAAI,gBAAA;wBACJO,cAAAA,EAAgB;AAClB,qBAAA;;AAEF,8BAAAU,eAAA,CAACQ,kBAAKC,IAAI,EAAA;oBAACL,GAAAA,EAAK,CAAA;;AACd,sCAAAb,cAAA,CAACiB,kBAAKE,IAAI,EAAA;4BAAYC,CAAAA,EAAG,CAAA;4BAAGC,EAAAA,EAAI,EAAA;4BAAIV,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;AAChE,4BAAA,QAAA,gBAAAZ,cAAA,CAACsB,mBAAAA,EAAAA;gCACCC,KAAAA,EAAOjD,MAAM,CAAC,MAAA,CAAO;gCACrBqB,KAAAA,EAAOjB,MAAM,CAAC,MAAA,CAAO;gCACrBF,aAAAA,EAAeA,aAAAA;gCACfD,QAAAA,EAAUA;;AALC,yBAAA,EAAA,MAAA,CAAA;AAQf,sCAAAyB,cAAA,CAACiB,kBAAKE,IAAI,EAAA;4BAAmBC,CAAAA,EAAG,CAAA;4BAAGC,EAAAA,EAAI,EAAA;4BAAIV,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;AACvE,4BAAA,QAAA,gBAAAZ,cAAA,CAACwB,iCAAAA,EAAAA;gCACCD,KAAAA,EAAOjD,MAAM,CAAC,aAAA,CAAc;gCAC5BqB,KAAAA,EAAOjB,MAAM,CAAC,aAAA,CAAc;gCAC5BF,aAAAA,EAAeA,aAAAA;gCACfD,QAAAA,EAAUA;;AALC,yBAAA,EAAA,aAAA,CAAA;AAQf,sCAAAyB,cAAA,CAACiB,kBAAKE,IAAI,EAAA;4BAAgBC,CAAAA,EAAG,CAAA;4BAAGC,EAAAA,EAAI,EAAA;4BAAIV,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;AACpE,4BAAA,QAAA,gBAAAZ,cAAA,CAACyB,2BAAAA,EAAAA;gCACChD,UAAAA,EAAYA,UAAAA;gCACZ8C,KAAAA,EAAOjD,MAAM,CAAC,UAAA,CAAW;gCACzBqB,KAAAA,EAAOjB,MAAM,CAAC,UAAA,CAAW;gCACzBH,QAAAA,EAAUA,QAAAA;gCACVmD,KAAAA,EAAO/C;;AANI,yBAAA,EAAA,UAAA,CAAA;wBAUdC,IAAAA,KAAS,aAAA,kBACRoB,cAAA,CAACiB,iBAAAA,CAAKE,IAAI,EAAA;4BAAYC,CAAAA,EAAG,CAAA;4BAAGC,EAAAA,EAAI,EAAA;4BAAIV,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;AAChE,4BAAA,QAAA,gBAAAZ,cAAA,CAAC2B,+BAAAA,EAAAA;gCACChC,KAAAA,EAAOjB,MAAM,CAAC,MAAA,CAAO;gCACrB6C,KAAAA,EAAOjD,MAAM,CAAC,MAAA,CAAO;gCACrBwB,KAAAA,EAAO;oCACLN,EAAAA,EAAI,2BAAA;oCACJO,cAAAA,EAAgB;AAClB,iCAAA;AACAxB,gCAAAA,QAAAA,EAAU,CAACoB,KAAAA,GAAAA;oCACTF,8BAAAA,CAA+B;wCAAEC,MAAAA,EAAQ;AAAEC,4CAAAA,KAAAA,EAAOiC,MAAAA,CAAOjC,KAAAA;AAAO;AAAE,qCAAA,CAAA;oCAElEpB,QAAAA,CAAS;wCAAEmB,MAAAA,EAAQ;4CAAEmC,IAAAA,EAAM,MAAA;AAAQlC,4CAAAA,KAAAA,EAAOiC,MAAAA,CAAOjC,KAAAA;AAAO;AAAE,qCAAA,CAAA;AAC5D,gCAAA,CAAA;gCACAmC,OAAAA,EAASjC,WAAAA;gCACTrB,aAAAA,EAAeA;;AAdJ,yBAAA,EAAA,MAAA,CAAA;wBAkBhBa,cAAAA,KAAmB,IAAA,kBAClBW,cAAA,CAACiB,iBAAAA,CAAKE,IAAI,EAAA;4BAAaC,CAAAA,EAAG,CAAA;4BAAGC,EAAAA,EAAI,EAAA;4BAAIV,SAAAA,EAAU,QAAA;4BAASC,UAAAA,EAAW,SAAA;oDACjEH,eAAA,CAACsB,mBAAMb,IAAI,EAAA;gCAACW,IAAAA,EAAK,gBAAA;;AACf,kDAAA7B,cAAA,CAAC+B,mBAAMC,KAAK,EAAA;kDACTjD,aAAAA,CAAc;4CACbS,EAAAA,EAAI,4BAAA;4CACJO,cAAAA,EAAgB;AAClB,yCAAA;;kDAEFC,cAAA,CAACiC,sBAAAA,EAAAA;wCACCrC,IAAAA,EAAK,MAAA;AACLD,wCAAAA,KAAAA,EAAOhC,mBAAAA,CAAoB0B,cAAAA,CAAAA;wCAC3B6C,QAAQ,EAAA,IAAA;AACR3D,wCAAAA,QAAAA,EAAU,IAAA,CAAO;;;;AAZR,yBAAA,EAAA,OAAA;;;;;;AAqB3B;;;;"}
@@ -1,14 +1,30 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import 'react';
3
- import { Box, Flex, Typography, Grid } from '@strapi/design-system';
3
+ import { Box, Flex, Typography, Grid, Field, TextInput } from '@strapi/design-system';
4
4
  import { useIntl } from 'react-intl';
5
- import { LifeSpanInput } from '../../../../components/Tokens/LifeSpanInput.mjs';
6
- import { TokenDescription } from '../../../../components/Tokens/TokenDescription.mjs';
7
- import { TokenName } from '../../../../components/Tokens/TokenName.mjs';
8
- import { TokenTypeSelect } from '../../../../components/Tokens/TokenTypeSelect.mjs';
5
+ import { useAuth } from '../../../../features/Auth.mjs';
6
+ import { LifeSpanInput } from './LifeSpanInput.mjs';
7
+ import { TokenDescription } from './TokenDescription.mjs';
8
+ import { TokenName } from './TokenName.mjs';
9
+ import { TokenTypeSelect } from './TokenTypeSelect.mjs';
9
10
 
10
- const FormApiTokenContainer = ({ errors = {}, onChange, canEditInputs, isCreating, values = {}, apiToken = {}, onDispatch, setHasChangedPermissions })=>{
11
+ const formatAdminUserName = (owner)=>{
12
+ const full = [
13
+ owner.firstname,
14
+ owner.lastname
15
+ ].filter(Boolean).join(' ');
16
+ return full || owner.username || owner.email || '';
17
+ };
18
+ const FormApiTokenContainer = ({ errors = {}, onChange, canEditInputs, isCreating, values = {}, apiToken = {}, kind, onDispatch, setHasChangedPermissions })=>{
11
19
  const { formatMessage } = useIntl();
20
+ const currentUser = useAuth('FormApiTokenContainer', (state)=>state.user);
21
+ const ownerToDisplay = (()=>{
22
+ const owner = kind === 'admin' ? apiToken?.adminUserOwner : undefined;
23
+ if (owner === undefined || owner === null) return null;
24
+ if (typeof owner !== 'object') return null;
25
+ if (currentUser?.id !== undefined && owner.id === currentUser.id) return null;
26
+ return owner;
27
+ })();
12
28
  const handleChangeSelectApiTokenType = ({ target: { value } })=>{
13
29
  setHasChangedPermissions(false);
14
30
  if (value === 'full-access') {
@@ -106,7 +122,7 @@ const FormApiTokenContainer = ({ errors = {}, onChange, canEditInputs, isCreatin
106
122
  token: apiToken
107
123
  })
108
124
  }, "lifespan"),
109
- /*#__PURE__*/ jsx(Grid.Item, {
125
+ kind === 'content-api' && /*#__PURE__*/ jsx(Grid.Item, {
110
126
  m: 6,
111
127
  xs: 12,
112
128
  direction: "column",
@@ -119,24 +135,45 @@ const FormApiTokenContainer = ({ errors = {}, onChange, canEditInputs, isCreatin
119
135
  defaultMessage: 'Token type'
120
136
  },
121
137
  onChange: (value)=>{
122
- // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2
123
138
  handleChangeSelectApiTokenType({
124
139
  target: {
125
- value
140
+ value: String(value)
126
141
  }
127
142
  });
128
- // @ts-expect-error – DS Select supports numbers & strings, will be removed in V2
129
143
  onChange({
130
144
  target: {
131
145
  name: 'type',
132
- value
146
+ value: String(value)
133
147
  }
134
148
  });
135
149
  },
136
150
  options: typeOptions,
137
151
  canEditInputs: canEditInputs
138
152
  })
139
- }, "type")
153
+ }, "type"),
154
+ ownerToDisplay !== null && /*#__PURE__*/ jsx(Grid.Item, {
155
+ m: 6,
156
+ xs: 12,
157
+ direction: "column",
158
+ alignItems: "stretch",
159
+ children: /*#__PURE__*/ jsxs(Field.Root, {
160
+ name: "adminUserOwner",
161
+ children: [
162
+ /*#__PURE__*/ jsx(Field.Label, {
163
+ children: formatMessage({
164
+ id: 'Settings.tokens.form.owner',
165
+ defaultMessage: 'Owner'
166
+ })
167
+ }),
168
+ /*#__PURE__*/ jsx(TextInput, {
169
+ type: "text",
170
+ value: formatAdminUserName(ownerToDisplay),
171
+ disabled: true,
172
+ onChange: ()=>{}
173
+ })
174
+ ]
175
+ })
176
+ }, "owner")
140
177
  ]
141
178
  })
142
179
  ]
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormApiTokenContainer.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormApiTokenContainer.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Field, Flex, Grid, TextInput, Typography } from '@strapi/design-system';\nimport { FormikErrors } from 'formik';\nimport { useIntl } from 'react-intl';\n\nimport { useAuth } from '../../../../features/Auth';\n\nimport { LifeSpanInput } from './LifeSpanInput';\nimport { TokenDescription } from './TokenDescription';\nimport { TokenName } from './TokenName';\nimport { TokenTypeSelect } from './TokenTypeSelect';\n\nimport type { AdminApiToken } from '../../../../../../shared/contracts/admin-token';\nimport type { ApiToken, ContentApiApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { AdminTokenOwner } from '../../../../../../shared/contracts/shared';\nimport type { AuthContextValue } from '../../../../features/Auth';\n\ninterface FormApiTokenContainerProps {\n errors?: FormikErrors<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n onChange: ({ target: { name, value } }: { target: { name: string; value: string } }) => void;\n canEditInputs: boolean;\n values?: Partial<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;\n isCreating: boolean;\n apiToken?: null | Partial<ApiToken>;\n kind: 'admin' | 'content-api';\n onDispatch: React.Dispatch<{\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n type: any;\n value?: unknown;\n }>;\n setHasChangedPermissions: (hasChanged: boolean) => void;\n}\n\nconst formatAdminUserName = (\n owner: Pick<AdminTokenOwner, 'firstname' | 'lastname' | 'email' | 'username'>\n): string => {\n const full = [owner.firstname, owner.lastname].filter(Boolean).join(' ');\n return full || owner.username || owner.email || '';\n};\n\nexport const FormApiTokenContainer = ({\n errors = {},\n onChange,\n canEditInputs,\n isCreating,\n values = {},\n apiToken = {},\n kind,\n onDispatch,\n setHasChangedPermissions,\n}: FormApiTokenContainerProps) => {\n const { formatMessage } = useIntl();\n const currentUser = useAuth('FormApiTokenContainer', (state: AuthContextValue) => state.user);\n\n const ownerToDisplay = (() => {\n const owner =\n kind === 'admin'\n ? (apiToken as Partial<AdminApiToken> | null | undefined)?.adminUserOwner\n : undefined;\n if (owner === undefined || owner === null) return null;\n if (typeof owner !== 'object') return null;\n if (currentUser?.id !== undefined && owner.id === currentUser.id) return null;\n return owner;\n })();\n\n const handleChangeSelectApiTokenType = ({ target: { value } }: { target: { value: string } }) => {\n setHasChangedPermissions(false);\n\n if (value === 'full-access') {\n onDispatch({\n type: 'SELECT_ALL_ACTIONS',\n });\n }\n if (value === 'read-only') {\n onDispatch({\n type: 'ON_CHANGE_READ_ONLY',\n });\n }\n };\n\n const typeOptions = [\n {\n value: 'read-only',\n label: {\n id: 'Settings.tokens.types.read-only',\n defaultMessage: 'Read-only',\n },\n },\n {\n value: 'full-access',\n label: {\n id: 'Settings.tokens.types.full-access',\n defaultMessage: 'Full access',\n },\n },\n {\n value: 'custom',\n label: {\n id: 'Settings.tokens.types.custom',\n defaultMessage: 'Custom',\n },\n },\n ];\n\n return (\n <Box\n background=\"neutral0\"\n hasRadius\n shadow=\"filterShadow\"\n paddingTop={6}\n paddingBottom={6}\n paddingLeft={7}\n paddingRight={7}\n >\n <Flex direction=\"column\" alignItems=\"stretch\" gap={4}>\n <Typography variant=\"delta\" tag=\"h2\">\n {formatMessage({\n id: 'global.details',\n defaultMessage: 'Details',\n })}\n </Typography>\n <Grid.Root gap={5}>\n <Grid.Item key=\"name\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenName\n error={errors['name']}\n value={values['name']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"description\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenDescription\n error={errors['description']}\n value={values['description']}\n canEditInputs={canEditInputs}\n onChange={onChange}\n />\n </Grid.Item>\n <Grid.Item key=\"lifespan\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <LifeSpanInput\n isCreating={isCreating}\n error={errors['lifespan']}\n value={values['lifespan']}\n onChange={onChange}\n token={apiToken}\n />\n </Grid.Item>\n\n {kind === 'content-api' && (\n <Grid.Item key=\"type\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <TokenTypeSelect\n value={values['type']}\n error={errors['type']}\n label={{\n id: 'Settings.tokens.form.type',\n defaultMessage: 'Token type',\n }}\n onChange={(value) => {\n handleChangeSelectApiTokenType({ target: { value: String(value) } });\n\n onChange({ target: { name: 'type', value: String(value) } });\n }}\n options={typeOptions}\n canEditInputs={canEditInputs}\n />\n </Grid.Item>\n )}\n {ownerToDisplay !== null && (\n <Grid.Item key=\"owner\" m={6} xs={12} direction=\"column\" alignItems=\"stretch\">\n <Field.Root name=\"adminUserOwner\">\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.owner',\n defaultMessage: 'Owner',\n })}\n </Field.Label>\n <TextInput\n type=\"text\"\n value={formatAdminUserName(ownerToDisplay)}\n disabled\n onChange={() => {}}\n />\n </Field.Root>\n </Grid.Item>\n )}\n </Grid.Root>\n </Flex>\n </Box>\n );\n};\n"],"names":["formatAdminUserName","owner","full","firstname","lastname","filter","Boolean","join","username","email","FormApiTokenContainer","errors","onChange","canEditInputs","isCreating","values","apiToken","kind","onDispatch","setHasChangedPermissions","formatMessage","useIntl","currentUser","useAuth","state","user","ownerToDisplay","adminUserOwner","undefined","id","handleChangeSelectApiTokenType","target","value","type","typeOptions","label","defaultMessage","_jsx","Box","background","hasRadius","shadow","paddingTop","paddingBottom","paddingLeft","paddingRight","_jsxs","Flex","direction","alignItems","gap","Typography","variant","tag","Grid","Root","Item","m","xs","TokenName","error","TokenDescription","LifeSpanInput","token","TokenTypeSelect","String","name","options","Field","Label","TextInput","disabled"],"mappings":"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"}
@@ -140,7 +140,7 @@ const FormHead = ({ title, token, setToken, toggleToken, showToken, canShowToken
140
140
  width: "100%",
141
141
  gap: 2,
142
142
  children: [
143
- token?.id && toggleToken && /*#__PURE__*/ jsxRuntime.jsx(Tours.tours.apiTokens.ViewAPIToken, {
143
+ token?.id && toggleToken && canShowToken === true && /*#__PURE__*/ jsxRuntime.jsx(Tours.tours.apiTokens.ViewAPIToken, {
144
144
  children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Tooltip, {
145
145
  label: !canShowToken && formatMessage({
146
146
  id: 'Settings.tokens.encryptionKeyMissing',
@@ -1 +1 @@
1
- {"version":3,"file":"FormHead.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Tooltip } from '@strapi/design-system';\nimport { Check, ArrowClockwise, Eye, EyeStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst ActionButton = styled(Button)`\n white-space: nowrap;\n`;\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <ActionButton\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </ActionButton>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n canShowToken?: boolean;\n setToken: (token: TToken) => void;\n toggleToken?: () => void;\n showToken?: boolean;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n toggleToken,\n showToken,\n canShowToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n toggleToken?.();\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex width=\"100%\" gap={2} wrap={{ initial: 'wrap', medium: 'nowrap' }}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Flex width=\"100%\" gap={2}>\n {token?.id && toggleToken && (\n <tours.apiTokens.ViewAPIToken>\n <Tooltip\n label={\n !canShowToken &&\n formatMessage({\n id: 'Settings.tokens.encryptionKeyMissing',\n defaultMessage:\n 'In order to view the token, you need a valid encryption key in the admin configuration',\n })\n }\n >\n <ActionButton\n type=\"button\"\n startIcon={showToken ? <EyeStriked /> : <Eye />}\n variant=\"secondary\"\n onClick={() => toggleToken?.()}\n disabled={!canShowToken}\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.viewToken',\n defaultMessage: 'View token',\n })}\n </ActionButton>\n </Tooltip>\n </tours.apiTokens.ViewAPIToken>\n )}\n <ActionButton\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </ActionButton>\n </Flex>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton />\n </Box>\n }\n ellipsis\n />\n );\n};\n"],"names":["ActionButton","styled","Button","Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","startIcon","ArrowClockwise","size","variant","onClick","name","fullWidth","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","toggleToken","showToken","canShowToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","width","gap","wrap","initial","medium","tours","apiTokens","ViewAPIToken","Tooltip","label","EyeStriked","Eye","disabled","Check","navigationAction","Box","display","BackButton","ellipsis"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAMA,YAAAA,GAAeC,aAAAA,CAAOC,mBAAAA,CAAO;;AAEnC,CAAC;AAED,MAAMC,aAAa,CAAC,EAAEC,YAAY,EAAEC,GAAG,EAAmB,GAAA;IACxD,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,iBAAAA,EAAmBC,oBAAAA,CAAqB,GAAGC,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAEjE,IAAA,MAAM,CAACC,qBAAAA,EAAuBC,wBAAAA,CAAyB,GAAGH,gBAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACzE,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,6BAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,qCAAAA,EAAAA;IAEpD,MAAM,CAACC,gBAAgB,GAAGC,yCAAAA,EAAAA;AAE1B,IAAA,MAAMC,cAAAA,GAAiB,UAAA;QACrB,IAAI;YACF,MAAMC,GAAAA,GAAM,MAAMH,eAAAA,CAAgBd,GAAAA,CAAAA;AAElC,YAAA,IAAI,WAAWiB,GAAAA,EAAK;gBAClBR,kBAAAA,CAAmB;oBACjBS,IAAAA,EAAM,QAAA;oBACNC,OAAAA,EAASP,cAAAA,CAAeK,IAAIG,KAAK;AACnC,iBAAA,CAAA;AAEA,gBAAA;AACF,YAAA;AAEA,YAAA,IAAIrB,YAAAA,EAAc;gBAChBA,YAAAA,CAAakB,GAAAA,CAAII,IAAI,CAACC,SAAS,CAAA;AACjC,YAAA;AACF,QAAA,CAAA,CAAE,OAAOF,KAAAA,EAAO;YACdX,kBAAAA,CAAmB;gBACjBS,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASlB,aAAAA,CAAc;oBACrBsB,EAAAA,EAAI,oBAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;QACF,CAAA,QAAU;YACRhB,wBAAAA,CAAyB,KAAA,CAAA;AAC3B,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMiB,yBAAAA,GAA4B,UAAA;AAChCT,QAAAA,cAAAA,EAAAA;QACAZ,oBAAAA,CAAqB,KAAA,CAAA;AACvB,IAAA,CAAA;IAEA,qBACEsB,eAAA,CAACC,oBAAOC,IAAI,EAAA;QAACC,IAAAA,EAAM1B,iBAAAA;QAAmB2B,YAAAA,EAAc1B,oBAAAA;;AAClD,0BAAA2B,cAAA,CAACJ,oBAAOK,OAAO,EAAA;AACb,gBAAA,QAAA,gBAAAD,cAAA,CAACpC,YAAAA,EAAAA;AACCsC,oBAAAA,SAAAA,gBAAWF,cAAA,CAACG,oBAAAA,EAAAA,EAAAA,CAAAA;oBACZhB,IAAAA,EAAK,QAAA;oBACLiB,IAAAA,EAAK,GAAA;oBACLC,OAAAA,EAAQ,UAAA;AACRC,oBAAAA,OAAAA,EAAS,IAAMjC,oBAAAA,CAAqB,IAAA,CAAA;oBACpCkC,IAAAA,EAAK,YAAA;oBACLC,SAAS,EAAA,IAAA;8BAERtC,aAAAA,CAAc;wBACbsB,EAAAA,EAAI,4BAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA;;;0BAIJO,cAAA,CAACS,2BAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOxC,aAAAA,CAAc;oBACnBsB,EAAAA,EAAI,wCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAkB,gBAAAA,SAAAA,gBACEX,cAAA,CAAClC,mBAAAA,EAAAA;AACCoC,oBAAAA,SAAAA,gBAAWF,cAAA,CAACG,oBAAAA,EAAAA,EAAAA,CAAAA;oBACZS,OAAAA,EAASpC,qBAAAA;oBACT8B,OAAAA,EAASZ,yBAAAA;8BAERxB,aAAAA,CAAc;wBACbsB,EAAAA,EAAI,mCAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA;;0BAIHvB,aAAAA,CAAc;oBACbsB,EAAAA,EAAI,sCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;;;AAIR,CAAA;AAoBO,MAAMoB,WAAW,CAA8B,EACpDH,KAAK,EACLI,KAAK,EACLC,QAAQ,EACRC,WAAW,EACXC,SAAS,EACTC,YAAY,EACZC,aAAa,EACbC,aAAa,EACbC,YAAY,EACZC,aAAa,EACS,GAAA;IACtB,MAAM,EAAEpD,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMoD,mBAAmB,CAACC,MAAAA,GAAAA;QACxBT,QAAAA,CAAS;AACP,YAAA,GAAGD,KAAK;YACRvB,SAAAA,EAAWiC;AACb,SAAA,CAAA;AACAR,QAAAA,WAAAA,IAAAA;AACF,IAAA,CAAA;IAEA,qBACEhB,cAAA,CAACyB,eAAQC,MAAM,EAAA;QACbhB,KAAAA,EAAOI,KAAAA,EAAOP,QAAQrC,aAAAA,CAAcwC,KAAAA,CAAAA;AACpCiB,QAAAA,aAAAA,EACER,8BACExB,eAAA,CAACiC,iBAAAA,EAAAA;YAAKC,KAAAA,EAAM,MAAA;YAAOC,GAAAA,EAAK,CAAA;YAAGC,IAAAA,EAAM;gBAAEC,OAAAA,EAAS,MAAA;gBAAQC,MAAAA,EAAQ;AAAS,aAAA;;gBAClEb,aAAAA,IAAiBN,KAAAA,EAAOtB,oBACvBQ,cAAA,CAACjC,UAAAA,EAAAA;oBACCC,YAAAA,EAAcuD,gBAAAA;AACdtD,oBAAAA,GAAAA,EAAK,CAAA,EAAGqD,aAAAA,CAAAA,EAAgBR,KAAAA,EAAOtB,EAAAA,IAAM,EAAA,CAAA;;8BAGzCG,eAAA,CAACiC,iBAAAA,EAAAA;oBAAKC,KAAAA,EAAM,MAAA;oBAAOC,GAAAA,EAAK,CAAA;;AACrBhB,wBAAAA,KAAAA,EAAOtB,MAAMwB,WAAAA,kBACZhB,cAAA,CAACkC,WAAAA,CAAMC,SAAS,CAACC,YAAY,EAAA;AAC3B,4BAAA,QAAA,gBAAApC,cAAA,CAACqC,oBAAAA,EAAAA;gCACCC,KAAAA,EACE,CAACpB,gBACDhD,aAAAA,CAAc;oCACZsB,EAAAA,EAAI,sCAAA;oCACJC,cAAAA,EACE;AACJ,iCAAA,CAAA;AAGF,gCAAA,QAAA,gBAAAO,cAAA,CAACpC,YAAAA,EAAAA;oCACCuB,IAAAA,EAAK,QAAA;oCACLe,SAAAA,EAAWe,SAAAA,iBAAYjB,cAAA,CAACuC,gBAAAA,EAAAA,EAAAA,CAAAA,iBAAgBvC,cAAA,CAACwC,SAAAA,EAAAA,EAAAA,CAAAA;oCACzCnC,OAAAA,EAAQ,WAAA;AACRC,oCAAAA,OAAAA,EAAS,IAAMU,WAAAA,IAAAA;AACfyB,oCAAAA,QAAAA,EAAU,CAACvB,YAAAA;oCACXV,SAAS,EAAA,IAAA;8CAERtC,aAAAA,CAAc;wCACbsB,EAAAA,EAAI,2BAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;;;sCAKRO,cAAA,CAACpC,YAAAA,EAAAA;4BACC6E,QAAAA,EAAUpB,YAAAA;4BACVT,OAAAA,EAASS,YAAAA;AACTnB,4BAAAA,SAAAA,gBAAWF,cAAA,CAAC0C,WAAAA,EAAAA,EAAAA,CAAAA;4BACZvD,IAAAA,EAAK,QAAA;4BACLiB,IAAAA,EAAK,GAAA;4BACLI,SAAS,EAAA,IAAA;sCAERtC,aAAAA,CAAc;gCACbsB,EAAAA,EAAI,aAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;;;aAKN2B,aAAAA,IACAN,KAAAA,EAAOtB,oBACLQ,cAAA,CAACjC,UAAAA,EAAAA;YACCC,YAAAA,EAAcuD,gBAAAA;AACdtD,YAAAA,GAAAA,EAAK,CAAA,EAAGqD,aAAAA,CAAAA,EAAgBR,KAAAA,EAAOtB,EAAAA,IAAM,EAAA,CAAA;;AAK7CmD,QAAAA,gBAAAA;sBAEE3C,cAAA,CAAC4C,gBAAAA,EAAAA;YAAIC,OAAAA,EAAS;gBAAEb,OAAAA,EAAS,MAAA;gBAAQC,MAAAA,EAAQ;AAAQ,aAAA;AAC/C,YAAA,QAAA,gBAAAjC,cAAA,CAAC8C,qBAAAA,EAAAA,EAAAA;;QAGLC,QAAQ,EAAA;;AAGd;;;;"}
1
+ {"version":3,"file":"FormHead.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Tooltip } from '@strapi/design-system';\nimport { Check, ArrowClockwise, Eye, EyeStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst ActionButton = styled(Button)`\n white-space: nowrap;\n`;\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <ActionButton\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </ActionButton>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n canShowToken?: boolean;\n setToken: (token: TToken) => void;\n toggleToken?: () => void;\n showToken?: boolean;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n toggleToken,\n showToken,\n canShowToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n toggleToken?.();\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex width=\"100%\" gap={2} wrap={{ initial: 'wrap', medium: 'nowrap' }}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Flex width=\"100%\" gap={2}>\n {token?.id && toggleToken && canShowToken === true && (\n <tours.apiTokens.ViewAPIToken>\n <Tooltip\n label={\n !canShowToken &&\n formatMessage({\n id: 'Settings.tokens.encryptionKeyMissing',\n defaultMessage:\n 'In order to view the token, you need a valid encryption key in the admin configuration',\n })\n }\n >\n <ActionButton\n type=\"button\"\n startIcon={showToken ? <EyeStriked /> : <Eye />}\n variant=\"secondary\"\n onClick={() => toggleToken?.()}\n disabled={!canShowToken}\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.viewToken',\n defaultMessage: 'View token',\n })}\n </ActionButton>\n </Tooltip>\n </tours.apiTokens.ViewAPIToken>\n )}\n <ActionButton\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </ActionButton>\n </Flex>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton />\n </Box>\n }\n ellipsis\n />\n );\n};\n"],"names":["ActionButton","styled","Button","Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","startIcon","ArrowClockwise","size","variant","onClick","name","fullWidth","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","toggleToken","showToken","canShowToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","width","gap","wrap","initial","medium","tours","apiTokens","ViewAPIToken","Tooltip","label","EyeStriked","Eye","disabled","Check","navigationAction","Box","display","BackButton","ellipsis"],"mappings":"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"}
@@ -119,7 +119,7 @@ const FormHead = ({ title, token, setToken, toggleToken, showToken, canShowToken
119
119
  width: "100%",
120
120
  gap: 2,
121
121
  children: [
122
- token?.id && toggleToken && /*#__PURE__*/ jsx(tours.apiTokens.ViewAPIToken, {
122
+ token?.id && toggleToken && canShowToken === true && /*#__PURE__*/ jsx(tours.apiTokens.ViewAPIToken, {
123
123
  children: /*#__PURE__*/ jsx(Tooltip, {
124
124
  label: !canShowToken && formatMessage({
125
125
  id: 'Settings.tokens.encryptionKeyMissing',
@@ -1 +1 @@
1
- {"version":3,"file":"FormHead.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Tooltip } from '@strapi/design-system';\nimport { Check, ArrowClockwise, Eye, EyeStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst ActionButton = styled(Button)`\n white-space: nowrap;\n`;\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <ActionButton\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </ActionButton>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n canShowToken?: boolean;\n setToken: (token: TToken) => void;\n toggleToken?: () => void;\n showToken?: boolean;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n toggleToken,\n showToken,\n canShowToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n toggleToken?.();\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex width=\"100%\" gap={2} wrap={{ initial: 'wrap', medium: 'nowrap' }}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Flex width=\"100%\" gap={2}>\n {token?.id && toggleToken && (\n <tours.apiTokens.ViewAPIToken>\n <Tooltip\n label={\n !canShowToken &&\n formatMessage({\n id: 'Settings.tokens.encryptionKeyMissing',\n defaultMessage:\n 'In order to view the token, you need a valid encryption key in the admin configuration',\n })\n }\n >\n <ActionButton\n type=\"button\"\n startIcon={showToken ? <EyeStriked /> : <Eye />}\n variant=\"secondary\"\n onClick={() => toggleToken?.()}\n disabled={!canShowToken}\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.viewToken',\n defaultMessage: 'View token',\n })}\n </ActionButton>\n </Tooltip>\n </tours.apiTokens.ViewAPIToken>\n )}\n <ActionButton\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </ActionButton>\n </Flex>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton />\n </Box>\n }\n ellipsis\n />\n );\n};\n"],"names":["ActionButton","styled","Button","Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","startIcon","ArrowClockwise","size","variant","onClick","name","fullWidth","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","toggleToken","showToken","canShowToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","width","gap","wrap","initial","medium","tours","apiTokens","ViewAPIToken","Tooltip","label","EyeStriked","Eye","disabled","Check","navigationAction","Box","display","BackButton","ellipsis"],"mappings":"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"}
1
+ {"version":3,"file":"FormHead.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/FormHead.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport { Box, Button, Dialog, Flex, Tooltip } from '@strapi/design-system';\nimport { Check, ArrowClockwise, Eye, EyeStriked } from '@strapi/icons';\nimport { MessageDescriptor, useIntl } from 'react-intl';\nimport { styled } from 'styled-components';\n\nimport { ConfirmDialog } from '../../../../components/ConfirmDialog';\nimport { tours } from '../../../../components/GuidedTour/Tours';\nimport { Layouts } from '../../../../components/Layouts/Layout';\nimport { BackButton } from '../../../../features/BackButton';\nimport { useNotification } from '../../../../features/Notifications';\nimport { useAPIErrorHandler } from '../../../../hooks/useAPIErrorHandler';\nimport { useRegenerateTokenMutation } from '../../../../services/transferTokens';\n\nimport type { Data } from '@strapi/types';\n\ninterface RegenerateProps {\n onRegenerate?: (newKey: string) => void;\n url: string;\n}\n\nconst ActionButton = styled(Button)`\n white-space: nowrap;\n`;\n\nconst Regenerate = ({ onRegenerate, url }: RegenerateProps) => {\n const { formatMessage } = useIntl();\n const [showConfirmDialog, setShowConfirmDialog] = React.useState(false);\n\n const [isLoadingConfirmation, setIsLoadingConfirmation] = React.useState(false);\n const { toggleNotification } = useNotification();\n const { _unstableFormatAPIError: formatAPIError } = useAPIErrorHandler();\n\n const [regenerateToken] = useRegenerateTokenMutation();\n\n const regenerateData = async () => {\n try {\n const res = await regenerateToken(url);\n\n if ('error' in res) {\n toggleNotification({\n type: 'danger',\n message: formatAPIError(res.error),\n });\n\n return;\n }\n\n if (onRegenerate) {\n onRegenerate(res.data.accessKey);\n }\n } catch (error) {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'notification.error',\n defaultMessage: 'Something went wrong',\n }),\n });\n } finally {\n setIsLoadingConfirmation(false);\n }\n };\n\n const handleConfirmRegeneration = async () => {\n regenerateData();\n setShowConfirmDialog(false);\n };\n\n return (\n <Dialog.Root open={showConfirmDialog} onOpenChange={setShowConfirmDialog}>\n <Dialog.Trigger>\n <ActionButton\n startIcon={<ArrowClockwise />}\n type=\"button\"\n size=\"S\"\n variant=\"tertiary\"\n onClick={() => setShowConfirmDialog(true)}\n name=\"regenerate\"\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </ActionButton>\n </Dialog.Trigger>\n\n <ConfirmDialog\n title={formatMessage({\n id: 'Settings.tokens.RegenerateDialog.title',\n defaultMessage: 'Regenerate token',\n })}\n endAction={\n <Button\n startIcon={<ArrowClockwise />}\n loading={isLoadingConfirmation}\n onClick={handleConfirmRegeneration}\n >\n {formatMessage({\n id: 'Settings.tokens.Button.regenerate',\n defaultMessage: 'Regenerate',\n })}\n </Button>\n }\n >\n {formatMessage({\n id: 'Settings.tokens.popUpWarning.message',\n defaultMessage: 'Are you sure you want to regenerate this token?',\n })}\n </ConfirmDialog>\n </Dialog.Root>\n );\n};\n\ninterface Token {\n id: Data.ID;\n name: string;\n}\n\ninterface FormHeadProps<TToken extends Token | null> {\n title: MessageDescriptor;\n token: TToken;\n canEditInputs: boolean;\n canRegenerate: boolean;\n canShowToken?: boolean;\n setToken: (token: TToken) => void;\n toggleToken?: () => void;\n showToken?: boolean;\n isSubmitting: boolean;\n regenerateUrl: string;\n}\n\nexport const FormHead = <TToken extends Token | null>({\n title,\n token,\n setToken,\n toggleToken,\n showToken,\n canShowToken,\n canEditInputs,\n canRegenerate,\n isSubmitting,\n regenerateUrl,\n}: FormHeadProps<TToken>) => {\n const { formatMessage } = useIntl();\n const handleRegenerate = (newKey: string) => {\n setToken({\n ...token,\n accessKey: newKey,\n });\n toggleToken?.();\n };\n\n return (\n <Layouts.Header\n title={token?.name || formatMessage(title)}\n primaryAction={\n canEditInputs ? (\n <Flex width=\"100%\" gap={2} wrap={{ initial: 'wrap', medium: 'nowrap' }}>\n {canRegenerate && token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )}\n <Flex width=\"100%\" gap={2}>\n {token?.id && toggleToken && canShowToken === true && (\n <tours.apiTokens.ViewAPIToken>\n <Tooltip\n label={\n !canShowToken &&\n formatMessage({\n id: 'Settings.tokens.encryptionKeyMissing',\n defaultMessage:\n 'In order to view the token, you need a valid encryption key in the admin configuration',\n })\n }\n >\n <ActionButton\n type=\"button\"\n startIcon={showToken ? <EyeStriked /> : <Eye />}\n variant=\"secondary\"\n onClick={() => toggleToken?.()}\n disabled={!canShowToken}\n fullWidth\n >\n {formatMessage({\n id: 'Settings.tokens.viewToken',\n defaultMessage: 'View token',\n })}\n </ActionButton>\n </Tooltip>\n </tours.apiTokens.ViewAPIToken>\n )}\n <ActionButton\n disabled={isSubmitting}\n loading={isSubmitting}\n startIcon={<Check />}\n type=\"submit\"\n size=\"S\"\n fullWidth\n >\n {formatMessage({\n id: 'global.save',\n defaultMessage: 'Save',\n })}\n </ActionButton>\n </Flex>\n </Flex>\n ) : (\n canRegenerate &&\n token?.id && (\n <Regenerate\n onRegenerate={handleRegenerate}\n url={`${regenerateUrl}${token?.id ?? ''}`}\n />\n )\n )\n }\n navigationAction={\n // The back link for mobile works differently; it is placed higher up in the DOM.\n <Box display={{ initial: 'none', medium: 'block' }}>\n <BackButton />\n </Box>\n }\n ellipsis\n />\n );\n};\n"],"names":["ActionButton","styled","Button","Regenerate","onRegenerate","url","formatMessage","useIntl","showConfirmDialog","setShowConfirmDialog","React","useState","isLoadingConfirmation","setIsLoadingConfirmation","toggleNotification","useNotification","_unstableFormatAPIError","formatAPIError","useAPIErrorHandler","regenerateToken","useRegenerateTokenMutation","regenerateData","res","type","message","error","data","accessKey","id","defaultMessage","handleConfirmRegeneration","_jsxs","Dialog","Root","open","onOpenChange","_jsx","Trigger","startIcon","ArrowClockwise","size","variant","onClick","name","fullWidth","ConfirmDialog","title","endAction","loading","FormHead","token","setToken","toggleToken","showToken","canShowToken","canEditInputs","canRegenerate","isSubmitting","regenerateUrl","handleRegenerate","newKey","Layouts","Header","primaryAction","Flex","width","gap","wrap","initial","medium","tours","apiTokens","ViewAPIToken","Tooltip","label","EyeStriked","Eye","disabled","Check","navigationAction","Box","display","BackButton","ellipsis"],"mappings":";;;;;;;;;;;;;;AAsBA,MAAMA,YAAAA,GAAeC,MAAAA,CAAOC,MAAAA,CAAO;;AAEnC,CAAC;AAED,MAAMC,aAAa,CAAC,EAAEC,YAAY,EAAEC,GAAG,EAAmB,GAAA;IACxD,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAM,CAACC,iBAAAA,EAAmBC,oBAAAA,CAAqB,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AAEjE,IAAA,MAAM,CAACC,qBAAAA,EAAuBC,wBAAAA,CAAyB,GAAGH,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;IACzE,MAAM,EAAEG,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;AAC/B,IAAA,MAAM,EAAEC,uBAAAA,EAAyBC,cAAc,EAAE,GAAGC,kBAAAA,EAAAA;IAEpD,MAAM,CAACC,gBAAgB,GAAGC,0BAAAA,EAAAA;AAE1B,IAAA,MAAMC,cAAAA,GAAiB,UAAA;QACrB,IAAI;YACF,MAAMC,GAAAA,GAAM,MAAMH,eAAAA,CAAgBd,GAAAA,CAAAA;AAElC,YAAA,IAAI,WAAWiB,GAAAA,EAAK;gBAClBR,kBAAAA,CAAmB;oBACjBS,IAAAA,EAAM,QAAA;oBACNC,OAAAA,EAASP,cAAAA,CAAeK,IAAIG,KAAK;AACnC,iBAAA,CAAA;AAEA,gBAAA;AACF,YAAA;AAEA,YAAA,IAAIrB,YAAAA,EAAc;gBAChBA,YAAAA,CAAakB,GAAAA,CAAII,IAAI,CAACC,SAAS,CAAA;AACjC,YAAA;AACF,QAAA,CAAA,CAAE,OAAOF,KAAAA,EAAO;YACdX,kBAAAA,CAAmB;gBACjBS,IAAAA,EAAM,QAAA;AACNC,gBAAAA,OAAAA,EAASlB,aAAAA,CAAc;oBACrBsB,EAAAA,EAAI,oBAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;AACF,aAAA,CAAA;QACF,CAAA,QAAU;YACRhB,wBAAAA,CAAyB,KAAA,CAAA;AAC3B,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMiB,yBAAAA,GAA4B,UAAA;AAChCT,QAAAA,cAAAA,EAAAA;QACAZ,oBAAAA,CAAqB,KAAA,CAAA;AACvB,IAAA,CAAA;IAEA,qBACEsB,IAAA,CAACC,OAAOC,IAAI,EAAA;QAACC,IAAAA,EAAM1B,iBAAAA;QAAmB2B,YAAAA,EAAc1B,oBAAAA;;AAClD,0BAAA2B,GAAA,CAACJ,OAAOK,OAAO,EAAA;AACb,gBAAA,QAAA,gBAAAD,GAAA,CAACpC,YAAAA,EAAAA;AACCsC,oBAAAA,SAAAA,gBAAWF,GAAA,CAACG,cAAAA,EAAAA,EAAAA,CAAAA;oBACZhB,IAAAA,EAAK,QAAA;oBACLiB,IAAAA,EAAK,GAAA;oBACLC,OAAAA,EAAQ,UAAA;AACRC,oBAAAA,OAAAA,EAAS,IAAMjC,oBAAAA,CAAqB,IAAA,CAAA;oBACpCkC,IAAAA,EAAK,YAAA;oBACLC,SAAS,EAAA,IAAA;8BAERtC,aAAAA,CAAc;wBACbsB,EAAAA,EAAI,4BAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA;;;0BAIJO,GAAA,CAACS,aAAAA,EAAAA;AACCC,gBAAAA,KAAAA,EAAOxC,aAAAA,CAAc;oBACnBsB,EAAAA,EAAI,wCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACAkB,gBAAAA,SAAAA,gBACEX,GAAA,CAAClC,MAAAA,EAAAA;AACCoC,oBAAAA,SAAAA,gBAAWF,GAAA,CAACG,cAAAA,EAAAA,EAAAA,CAAAA;oBACZS,OAAAA,EAASpC,qBAAAA;oBACT8B,OAAAA,EAASZ,yBAAAA;8BAERxB,aAAAA,CAAc;wBACbsB,EAAAA,EAAI,mCAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA;;0BAIHvB,aAAAA,CAAc;oBACbsB,EAAAA,EAAI,sCAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA;;;;AAIR,CAAA;AAoBO,MAAMoB,WAAW,CAA8B,EACpDH,KAAK,EACLI,KAAK,EACLC,QAAQ,EACRC,WAAW,EACXC,SAAS,EACTC,YAAY,EACZC,aAAa,EACbC,aAAa,EACbC,YAAY,EACZC,aAAa,EACS,GAAA;IACtB,MAAM,EAAEpD,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMoD,mBAAmB,CAACC,MAAAA,GAAAA;QACxBT,QAAAA,CAAS;AACP,YAAA,GAAGD,KAAK;YACRvB,SAAAA,EAAWiC;AACb,SAAA,CAAA;AACAR,QAAAA,WAAAA,IAAAA;AACF,IAAA,CAAA;IAEA,qBACEhB,GAAA,CAACyB,QAAQC,MAAM,EAAA;QACbhB,KAAAA,EAAOI,KAAAA,EAAOP,QAAQrC,aAAAA,CAAcwC,KAAAA,CAAAA;AACpCiB,QAAAA,aAAAA,EACER,8BACExB,IAAA,CAACiC,IAAAA,EAAAA;YAAKC,KAAAA,EAAM,MAAA;YAAOC,GAAAA,EAAK,CAAA;YAAGC,IAAAA,EAAM;gBAAEC,OAAAA,EAAS,MAAA;gBAAQC,MAAAA,EAAQ;AAAS,aAAA;;gBAClEb,aAAAA,IAAiBN,KAAAA,EAAOtB,oBACvBQ,GAAA,CAACjC,UAAAA,EAAAA;oBACCC,YAAAA,EAAcuD,gBAAAA;AACdtD,oBAAAA,GAAAA,EAAK,CAAA,EAAGqD,aAAAA,CAAAA,EAAgBR,KAAAA,EAAOtB,EAAAA,IAAM,EAAA,CAAA;;8BAGzCG,IAAA,CAACiC,IAAAA,EAAAA;oBAAKC,KAAAA,EAAM,MAAA;oBAAOC,GAAAA,EAAK,CAAA;;wBACrBhB,KAAAA,EAAOtB,EAAAA,IAAMwB,eAAeE,YAAAA,KAAiB,IAAA,kBAC5ClB,IAACkC,KAAAA,CAAMC,SAAS,CAACC,YAAY,EAAA;AAC3B,4BAAA,QAAA,gBAAApC,GAAA,CAACqC,OAAAA,EAAAA;gCACCC,KAAAA,EACE,CAACpB,gBACDhD,aAAAA,CAAc;oCACZsB,EAAAA,EAAI,sCAAA;oCACJC,cAAAA,EACE;AACJ,iCAAA,CAAA;AAGF,gCAAA,QAAA,gBAAAO,GAAA,CAACpC,YAAAA,EAAAA;oCACCuB,IAAAA,EAAK,QAAA;oCACLe,SAAAA,EAAWe,SAAAA,iBAAYjB,GAAA,CAACuC,UAAAA,EAAAA,EAAAA,CAAAA,iBAAgBvC,GAAA,CAACwC,GAAAA,EAAAA,EAAAA,CAAAA;oCACzCnC,OAAAA,EAAQ,WAAA;AACRC,oCAAAA,OAAAA,EAAS,IAAMU,WAAAA,IAAAA;AACfyB,oCAAAA,QAAAA,EAAU,CAACvB,YAAAA;oCACXV,SAAS,EAAA,IAAA;8CAERtC,aAAAA,CAAc;wCACbsB,EAAAA,EAAI,2BAAA;wCACJC,cAAAA,EAAgB;AAClB,qCAAA;;;;sCAKRO,GAAA,CAACpC,YAAAA,EAAAA;4BACC6E,QAAAA,EAAUpB,YAAAA;4BACVT,OAAAA,EAASS,YAAAA;AACTnB,4BAAAA,SAAAA,gBAAWF,GAAA,CAAC0C,KAAAA,EAAAA,EAAAA,CAAAA;4BACZvD,IAAAA,EAAK,QAAA;4BACLiB,IAAAA,EAAK,GAAA;4BACLI,SAAS,EAAA,IAAA;sCAERtC,aAAAA,CAAc;gCACbsB,EAAAA,EAAI,aAAA;gCACJC,cAAAA,EAAgB;AAClB,6BAAA;;;;;aAKN2B,aAAAA,IACAN,KAAAA,EAAOtB,oBACLQ,GAAA,CAACjC,UAAAA,EAAAA;YACCC,YAAAA,EAAcuD,gBAAAA;AACdtD,YAAAA,GAAAA,EAAK,CAAA,EAAGqD,aAAAA,CAAAA,EAAgBR,KAAAA,EAAOtB,EAAAA,IAAM,EAAA,CAAA;;AAK7CmD,QAAAA,gBAAAA;sBAEE3C,GAAA,CAAC4C,GAAAA,EAAAA;YAAIC,OAAAA,EAAS;gBAAEb,OAAAA,EAAS,MAAA;gBAAQC,MAAAA,EAAQ;AAAQ,aAAA;AAC/C,YAAA,QAAA,gBAAAjC,GAAA,CAAC8C,UAAAA,EAAAA,EAAAA;;QAGLC,QAAQ,EAAA;;AAGd;;;;"}
@@ -3,8 +3,8 @@
3
3
  var jsxRuntime = require('react/jsx-runtime');
4
4
  var designSystem = require('@strapi/design-system');
5
5
  var reactIntl = require('react-intl');
6
- var getDateOfExpiration = require('../../pages/ApiTokens/EditView/utils/getDateOfExpiration.js');
7
6
  var forms = require('../../utils/forms.js');
7
+ var getDateOfExpiration = require('./utils/getDateOfExpiration.js');
8
8
 
9
9
  const LifeSpanInput = ({ token, error, value, onChange, isCreating })=>{
10
10
  const { formatMessage } = reactIntl.useIntl();
@@ -1 +1 @@
1
- {"version":3,"file":"LifeSpanInput.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, Typography, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name=\"lifespan\"\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n"],"names":["LifeSpanInput","token","error","value","onChange","isCreating","formatMessage","useIntl","_jsxs","_Fragment","Field","Root","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","name","required","_jsx","Label","SingleSelect","target","disabled","placeholder","SingleSelectOption","Error","Typography","variant","textColor","getDateOfExpiration","createdAt","parseInt"],"mappings":";;;;;;;;AAiBO,MAAMA,aAAAA,GAAgB,CAAC,EAC5BC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,QAAQ,EACRC,UAAU,EACS,GAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;AACE,0BAAAD,eAAA,CAACE,mBAAMC,IAAI,EAAA;AACTT,gBAAAA,KAAAA,EACEA,KAAAA,GACII,aAAAA,CACEM,qCAAAA,CAAgCV,KAAAA,CAAAA,GAC5BA,KAAAA,GACA;oBAAEW,EAAAA,EAAIX,KAAAA;oBAAOY,cAAAA,EAAgBZ;iBAAM,CAAA,GAEzCa,SAAAA;gBAENC,IAAAA,EAAK,UAAA;gBACLC,QAAQ,EAAA,IAAA;;AAER,kCAAAC,cAAA,CAACR,mBAAMS,KAAK,EAAA;kCACTb,aAAAA,CAAc;4BACbO,EAAAA,EAAI,+BAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFN,eAAA,CAACY,yBAAAA,EAAAA;wBACCjB,KAAAA,EAAOA,KAAAA;AACPC,wBAAAA,QAAAA,EAAU,CAACD,KAAAA,GAAAA;;4BAETC,QAAAA,CAAS;gCAAEiB,MAAAA,EAAQ;oCAAEL,IAAAA,EAAM,UAAA;AAAYb,oCAAAA;AAAM;AAAE,6BAAA,CAAA;AACjD,wBAAA,CAAA;AACAmB,wBAAAA,QAAAA,EAAU,CAACjB,UAAAA;wBACXkB,WAAAA,EAAY,QAAA;;0CAEZL,cAAA,CAACM,+BAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,WAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,iCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,cAAA,CAACM,+BAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,YAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,kCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,cAAA,CAACM,+BAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,YAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,kCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,cAAA,CAACM,+BAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,GAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,oCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;;;AAGJ,kCAAAI,cAAA,CAACR,mBAAMe,KAAK,EAAA,EAAA;;;0BAEdP,cAAA,CAACQ,uBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,IAAA;gBAAKC,SAAAA,EAAU,YAAA;0BAChC,CAACvB,UAAAA,IACA,GAAGC,aAAAA,CAAc;oBACfO,EAAAA,EAAI,0CAAA;oBACJC,cAAAA,EAAgB;iBAElB,CAAA,CAAG,EAAE,EAAEe,uCAAAA,CAAoB5B,KAAAA,EAAO6B,WAAWC,QAAAA,CAAS5B,KAAAA,IAAS,IAAI,EAAA,CAAA,CAAA,CAAA;;;;AAI7E;;;;"}
1
+ {"version":3,"file":"LifeSpanInput.js","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, Typography, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport { getDateOfExpiration } from './utils/getDateOfExpiration';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name=\"lifespan\"\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n"],"names":["LifeSpanInput","token","error","value","onChange","isCreating","formatMessage","useIntl","_jsxs","_Fragment","Field","Root","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","name","required","_jsx","Label","SingleSelect","target","disabled","placeholder","SingleSelectOption","Error","Typography","variant","textColor","getDateOfExpiration","createdAt","parseInt"],"mappings":";;;;;;;;AAkBO,MAAMA,aAAAA,GAAgB,CAAC,EAC5BC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,QAAQ,EACRC,UAAU,EACS,GAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;IAE1B,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;AACE,0BAAAD,eAAA,CAACE,mBAAMC,IAAI,EAAA;AACTT,gBAAAA,KAAAA,EACEA,KAAAA,GACII,aAAAA,CACEM,qCAAAA,CAAgCV,KAAAA,CAAAA,GAC5BA,KAAAA,GACA;oBAAEW,EAAAA,EAAIX,KAAAA;oBAAOY,cAAAA,EAAgBZ;iBAAM,CAAA,GAEzCa,SAAAA;gBAENC,IAAAA,EAAK,UAAA;gBACLC,QAAQ,EAAA,IAAA;;AAER,kCAAAC,cAAA,CAACR,mBAAMS,KAAK,EAAA;kCACTb,aAAAA,CAAc;4BACbO,EAAAA,EAAI,+BAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFN,eAAA,CAACY,yBAAAA,EAAAA;wBACCjB,KAAAA,EAAOA,KAAAA;AACPC,wBAAAA,QAAAA,EAAU,CAACD,KAAAA,GAAAA;;4BAETC,QAAAA,CAAS;gCAAEiB,MAAAA,EAAQ;oCAAEL,IAAAA,EAAM,UAAA;AAAYb,oCAAAA;AAAM;AAAE,6BAAA,CAAA;AACjD,wBAAA,CAAA;AACAmB,wBAAAA,QAAAA,EAAU,CAACjB,UAAAA;wBACXkB,WAAAA,EAAY,QAAA;;0CAEZL,cAAA,CAACM,+BAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,WAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,iCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,cAAA,CAACM,+BAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,YAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,kCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,cAAA,CAACM,+BAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,YAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,kCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,cAAA,CAACM,+BAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,GAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,oCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;;;AAGJ,kCAAAI,cAAA,CAACR,mBAAMe,KAAK,EAAA,EAAA;;;0BAEdP,cAAA,CAACQ,uBAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,IAAA;gBAAKC,SAAAA,EAAU,YAAA;0BAChC,CAACvB,UAAAA,IACA,GAAGC,aAAAA,CAAc;oBACfO,EAAAA,EAAI,0CAAA;oBACJC,cAAAA,EAAgB;iBAElB,CAAA,CAAG,EAAE,EAAEe,uCAAAA,CAAoB5B,KAAAA,EAAO6B,WAAWC,QAAAA,CAAS5B,KAAAA,IAAS,IAAI,EAAA,CAAA,CAAA,CAAA;;;;AAI7E;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
2
  import { Field, SingleSelect, SingleSelectOption, Typography } from '@strapi/design-system';
3
3
  import { useIntl } from 'react-intl';
4
- import { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration.mjs';
5
4
  import { isErrorMessageMessageDescriptor } from '../../utils/forms.mjs';
5
+ import { getDateOfExpiration } from './utils/getDateOfExpiration.mjs';
6
6
 
7
7
  const LifeSpanInput = ({ token, error, value, onChange, isCreating })=>{
8
8
  const { formatMessage } = useIntl();
@@ -1 +1 @@
1
- {"version":3,"file":"LifeSpanInput.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, Typography, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { getDateOfExpiration } from '../../pages/ApiTokens/EditView/utils/getDateOfExpiration';\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name=\"lifespan\"\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n"],"names":["LifeSpanInput","token","error","value","onChange","isCreating","formatMessage","useIntl","_jsxs","_Fragment","Field","Root","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","name","required","_jsx","Label","SingleSelect","target","disabled","placeholder","SingleSelectOption","Error","Typography","variant","textColor","getDateOfExpiration","createdAt","parseInt"],"mappings":";;;;;;AAiBO,MAAMA,aAAAA,GAAgB,CAAC,EAC5BC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,QAAQ,EACRC,UAAU,EACS,GAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,IAAA,CAAAC,QAAA,EAAA;;AACE,0BAAAD,IAAA,CAACE,MAAMC,IAAI,EAAA;AACTT,gBAAAA,KAAAA,EACEA,KAAAA,GACII,aAAAA,CACEM,+BAAAA,CAAgCV,KAAAA,CAAAA,GAC5BA,KAAAA,GACA;oBAAEW,EAAAA,EAAIX,KAAAA;oBAAOY,cAAAA,EAAgBZ;iBAAM,CAAA,GAEzCa,SAAAA;gBAENC,IAAAA,EAAK,UAAA;gBACLC,QAAQ,EAAA,IAAA;;AAER,kCAAAC,GAAA,CAACR,MAAMS,KAAK,EAAA;kCACTb,aAAAA,CAAc;4BACbO,EAAAA,EAAI,+BAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFN,IAAA,CAACY,YAAAA,EAAAA;wBACCjB,KAAAA,EAAOA,KAAAA;AACPC,wBAAAA,QAAAA,EAAU,CAACD,KAAAA,GAAAA;;4BAETC,QAAAA,CAAS;gCAAEiB,MAAAA,EAAQ;oCAAEL,IAAAA,EAAM,UAAA;AAAYb,oCAAAA;AAAM;AAAE,6BAAA,CAAA;AACjD,wBAAA,CAAA;AACAmB,wBAAAA,QAAAA,EAAU,CAACjB,UAAAA;wBACXkB,WAAAA,EAAY,QAAA;;0CAEZL,GAAA,CAACM,kBAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,WAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,iCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,GAAA,CAACM,kBAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,YAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,kCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,GAAA,CAACM,kBAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,YAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,kCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,GAAA,CAACM,kBAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,GAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,oCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;;;AAGJ,kCAAAI,GAAA,CAACR,MAAMe,KAAK,EAAA,EAAA;;;0BAEdP,GAAA,CAACQ,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,IAAA;gBAAKC,SAAAA,EAAU,YAAA;0BAChC,CAACvB,UAAAA,IACA,GAAGC,aAAAA,CAAc;oBACfO,EAAAA,EAAI,0CAAA;oBACJC,cAAAA,EAAgB;iBAElB,CAAA,CAAG,EAAE,EAAEe,mBAAAA,CAAoB5B,KAAAA,EAAO6B,WAAWC,QAAAA,CAAS5B,KAAAA,IAAS,IAAI,EAAA,CAAA,CAAA,CAAA;;;;AAI7E;;;;"}
1
+ {"version":3,"file":"LifeSpanInput.mjs","sources":["../../../../../../../../admin/src/pages/Settings/components/Tokens/LifeSpanInput.tsx"],"sourcesContent":["import { SingleSelectOption, SingleSelect, Typography, Field } from '@strapi/design-system';\nimport { MessageDescriptor, useIntl } from 'react-intl';\n\nimport { isErrorMessageMessageDescriptor } from '../../utils/forms';\n\nimport { getDateOfExpiration } from './utils/getDateOfExpiration';\n\nimport type { ApiToken } from '../../../../../../shared/contracts/api-token';\nimport type { TransferToken } from '../../../../../../shared/contracts/transfer';\n\ninterface LifeSpanInputProps {\n error?: string | MessageDescriptor;\n value?: string | number | null;\n onChange: (event: { target: { name: string; value: string } }) => void;\n isCreating: boolean;\n token: Partial<TransferToken> | Partial<ApiToken> | null;\n}\n\nexport const LifeSpanInput = ({\n token,\n error,\n value,\n onChange,\n isCreating,\n}: LifeSpanInputProps) => {\n const { formatMessage } = useIntl();\n\n return (\n <>\n <Field.Root\n error={\n error\n ? formatMessage(\n isErrorMessageMessageDescriptor(error)\n ? error\n : { id: error, defaultMessage: error }\n )\n : undefined\n }\n name=\"lifespan\"\n required\n >\n <Field.Label>\n {formatMessage({\n id: 'Settings.tokens.form.duration',\n defaultMessage: 'Token duration',\n })}\n </Field.Label>\n <SingleSelect\n value={value}\n onChange={(value) => {\n // @ts-expect-error – DS v2 won't support number types for select\n onChange({ target: { name: 'lifespan', value } });\n }}\n disabled={!isCreating}\n placeholder=\"Select\"\n >\n <SingleSelectOption value=\"604800000\">\n {formatMessage({\n id: 'Settings.tokens.duration.7-days',\n defaultMessage: '7 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"2592000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.30-days',\n defaultMessage: '30 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"7776000000\">\n {formatMessage({\n id: 'Settings.tokens.duration.90-days',\n defaultMessage: '90 days',\n })}\n </SingleSelectOption>\n <SingleSelectOption value=\"0\">\n {formatMessage({\n id: 'Settings.tokens.duration.unlimited',\n defaultMessage: 'Unlimited',\n })}\n </SingleSelectOption>\n </SingleSelect>\n <Field.Error />\n </Field.Root>\n <Typography variant=\"pi\" textColor=\"neutral600\">\n {!isCreating &&\n `${formatMessage({\n id: 'Settings.tokens.duration.expiration-date',\n defaultMessage: 'Expiration date',\n // @ts-expect-error – TODO: fix this.\n })}: ${getDateOfExpiration(token?.createdAt, parseInt(value ?? '', 10))}`}\n </Typography>\n </>\n );\n};\n"],"names":["LifeSpanInput","token","error","value","onChange","isCreating","formatMessage","useIntl","_jsxs","_Fragment","Field","Root","isErrorMessageMessageDescriptor","id","defaultMessage","undefined","name","required","_jsx","Label","SingleSelect","target","disabled","placeholder","SingleSelectOption","Error","Typography","variant","textColor","getDateOfExpiration","createdAt","parseInt"],"mappings":";;;;;;AAkBO,MAAMA,aAAAA,GAAgB,CAAC,EAC5BC,KAAK,EACLC,KAAK,EACLC,KAAK,EACLC,QAAQ,EACRC,UAAU,EACS,GAAA;IACnB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,qBACEC,IAAA,CAAAC,QAAA,EAAA;;AACE,0BAAAD,IAAA,CAACE,MAAMC,IAAI,EAAA;AACTT,gBAAAA,KAAAA,EACEA,KAAAA,GACII,aAAAA,CACEM,+BAAAA,CAAgCV,KAAAA,CAAAA,GAC5BA,KAAAA,GACA;oBAAEW,EAAAA,EAAIX,KAAAA;oBAAOY,cAAAA,EAAgBZ;iBAAM,CAAA,GAEzCa,SAAAA;gBAENC,IAAAA,EAAK,UAAA;gBACLC,QAAQ,EAAA,IAAA;;AAER,kCAAAC,GAAA,CAACR,MAAMS,KAAK,EAAA;kCACTb,aAAAA,CAAc;4BACbO,EAAAA,EAAI,+BAAA;4BACJC,cAAAA,EAAgB;AAClB,yBAAA;;kCAEFN,IAAA,CAACY,YAAAA,EAAAA;wBACCjB,KAAAA,EAAOA,KAAAA;AACPC,wBAAAA,QAAAA,EAAU,CAACD,KAAAA,GAAAA;;4BAETC,QAAAA,CAAS;gCAAEiB,MAAAA,EAAQ;oCAAEL,IAAAA,EAAM,UAAA;AAAYb,oCAAAA;AAAM;AAAE,6BAAA,CAAA;AACjD,wBAAA,CAAA;AACAmB,wBAAAA,QAAAA,EAAU,CAACjB,UAAAA;wBACXkB,WAAAA,EAAY,QAAA;;0CAEZL,GAAA,CAACM,kBAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,WAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,iCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,GAAA,CAACM,kBAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,YAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,kCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,GAAA,CAACM,kBAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,YAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,kCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;0CAEFI,GAAA,CAACM,kBAAAA,EAAAA;gCAAmBrB,KAAAA,EAAM,GAAA;0CACvBG,aAAAA,CAAc;oCACbO,EAAAA,EAAI,oCAAA;oCACJC,cAAAA,EAAgB;AAClB,iCAAA;;;;AAGJ,kCAAAI,GAAA,CAACR,MAAMe,KAAK,EAAA,EAAA;;;0BAEdP,GAAA,CAACQ,UAAAA,EAAAA;gBAAWC,OAAAA,EAAQ,IAAA;gBAAKC,SAAAA,EAAU,YAAA;0BAChC,CAACvB,UAAAA,IACA,GAAGC,aAAAA,CAAc;oBACfO,EAAAA,EAAI,0CAAA;oBACJC,cAAAA,EAAgB;iBAElB,CAAA,CAAG,EAAE,EAAEe,mBAAAA,CAAoB5B,KAAAA,EAAO6B,WAAWC,QAAAA,CAAS5B,KAAAA,IAAS,IAAI,EAAA,CAAA,CAAA,CAAA;;;;AAI7E;;;;"}
@@ -33,7 +33,14 @@ function _interopNamespaceDefault(e) {
33
33
 
34
34
  var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
35
35
 
36
- const Table = ({ permissions, headers = [], isLoading = false, tokens = [], onConfirmDelete, tokenType })=>{
36
+ const formatAdminUserName = (owner)=>{
37
+ const full = [
38
+ owner.firstname,
39
+ owner.lastname
40
+ ].filter(Boolean).join(' ');
41
+ return full || owner.username || owner.email || '';
42
+ };
43
+ const Table = ({ permissions, headers = [], isLoading = false, tokens = [], onConfirmDelete, tokenType, showOwner = false })=>{
37
44
  const [{ query }] = useQueryParams.useQueryParams();
38
45
  const { formatMessage, locale } = reactIntl.useIntl();
39
46
  const [, sortOrder] = query && query.sort ? query.sort.split(':') : [
@@ -119,6 +126,19 @@ const Table = ({ permissions, headers = [], isLoading = false, tokens = [], onCo
119
126
  })
120
127
  })
121
128
  }),
129
+ showOwner === true && (()=>{
130
+ const apiToken = token;
131
+ const owner = apiToken.kind === 'admin' ? apiToken.adminUserOwner : undefined;
132
+ const ownerName = owner !== undefined && owner !== null && typeof owner === 'object' ? formatAdminUserName(owner) : '';
133
+ return /*#__PURE__*/ jsxRuntime.jsx(Table$1.Table.Cell, {
134
+ maxWidth: "20rem",
135
+ children: /*#__PURE__*/ jsxRuntime.jsx(designSystem.Typography, {
136
+ textColor: "neutral800",
137
+ ellipsis: true,
138
+ children: ownerName
139
+ })
140
+ });
141
+ })(),
122
142
  canUpdate || canRead || canDelete ? /*#__PURE__*/ jsxRuntime.jsx(Table$1.Table.Cell, {
123
143
  children: /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
124
144
  justifyContent: "end",