@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
@@ -1 +1 @@
1
- {"version":3,"file":"server.mjs","sources":["../../../../admin/tests/server.ts"],"sourcesContent":["import { rest } from 'msw';\nimport { type SetupServer, setupServer } from 'msw/node';\n\nimport { mockData } from './mockData';\n\nexport const server: SetupServer = setupServer(\n ...[\n /**\n * TRACKING\n */\n rest.post('https://analytics.strapi.io/api/v2/track', (req, res, ctx) => {\n return res(ctx.status(200));\n }),\n /**\n *\n * ADMIN ROLES\n *\n */\n rest.get('/admin/roles', (req, res, ctx) =>\n res(\n ctx.json({\n data: [\n {\n id: 1,\n code: 'strapi-editor',\n name: 'Editor',\n },\n {\n id: 2,\n code: 'strapi-author',\n name: 'Author',\n },\n ],\n })\n )\n ),\n\n rest.get('/admin/roles/1', (req, res, ctx) =>\n res(\n ctx.json({\n data: {\n id: 1,\n code: 'strapi-editor',\n params: {\n filters: req.url.searchParams.get('filters'),\n },\n },\n })\n )\n ),\n rest.get('/admin/roles/:id/permissions', (req, res, ctx) => {\n return res(\n ctx.json({\n data: [\n {\n id: 1,\n action: 'plugin::content-manager.explorer.create',\n subject: 'api::address.address',\n properties: {\n fields: ['postal_code', 'categories'],\n },\n conditions: [],\n\n params: {\n filters: req.url.searchParams.get('filters'),\n },\n },\n ],\n })\n );\n }),\n /**\n *\n * ADMIN USERS\n *\n */\n rest.get('/admin/users', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n results: [\n { id: 1, firstname: 'John', lastname: 'Doe', roles: [] },\n { id: 2, firstname: 'Kai', lastname: 'Doe', roles: [] },\n ],\n pagination: {\n page: 1,\n },\n },\n })\n );\n }),\n rest.get('/admin/users/1', (req, res, ctx) =>\n res(\n ctx.json({\n data: {\n id: 1,\n firstname: 'John',\n lastname: 'Doe',\n emai: 'test@testing.com',\n roles: [\n { id: 1, code: 'strapi-editor', name: 'Editor' },\n { id: 2, code: 'strapi-super-admin', name: 'Super Admin' },\n ],\n params: {\n some: req.url.searchParams.get('some'),\n },\n },\n })\n )\n ),\n rest.get('/admin/users/me', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n email: 'michka@michka.fr',\n firstname: 'michoko',\n lastname: 'ronronscelestes',\n username: 'yolo',\n preferedLanguage: 'en',\n roles: [\n {\n id: 2,\n },\n ],\n },\n })\n );\n }),\n rest.get('/admin/users/me/permissions', (req, res, ctx) => res(ctx.json({ data: [] }))),\n /**\n *\n * ADMIN PROVIDERS\n *\n */\n rest.get('/admin/providers/isSSOLocked', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n isSSOLocked: false,\n },\n })\n );\n }),\n rest.put('/admin/providers/options', (req, res, ctx) =>\n res(\n ctx.json({\n data: {\n autoRegister: false,\n defaultRole: '1',\n ssoLockedRoles: ['1', '2', '3'],\n },\n })\n )\n ),\n rest.get('/admin/providers/options', (req, res, ctx) =>\n res(\n ctx.json({\n data: {\n autoRegister: false,\n defaultRole: '1',\n ssoLockedRoles: ['1', '2'],\n },\n })\n )\n ),\n /**\n *\n * ADMIN PERMISSIONS\n *\n */\n rest.get('/admin/permissions', (req, res, ctx) => {\n const role = req.url.searchParams.get('role');\n\n if (role !== '1') {\n return res(ctx.status(404));\n }\n\n return res(\n ctx.json({\n data: {\n conditions: [\n {\n id: 'admin::is-creator',\n displayName: 'Is creator',\n category: 'default',\n },\n ],\n sections: {\n settings: [\n {\n displayName: 'Access the Email Settings page',\n category: 'email',\n subCategory: 'general',\n action: 'plugin::email.settings.read',\n },\n ],\n },\n },\n })\n );\n }),\n /**\n *\n * ADMIN MISC\n *\n */\n rest.get('/admin/init', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {},\n })\n );\n }),\n rest.get('/admin/information', (req, res, ctx) =>\n res(\n ctx.json({\n autoReload: true,\n communityEdition: false,\n currentEnvironment: 'development',\n nodeVersion: 'v14.13.1',\n strapiVersion: '3.6.0',\n })\n )\n ),\n rest.get('/admin/license-limit-information', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n attribute: 1,\n\n features: [{ name: 'sso' }, { name: 'audit-logs', options: { retentionDays: 1 } }],\n },\n })\n );\n }),\n rest.get('/admin/project-settings', (req, res, ctx) => {\n return res(\n ctx.json({\n menuLogo: {\n ext: '.svg',\n height: 256,\n name: 'michka.svg',\n size: 1.3,\n url: '/uploads/michka.svg',\n width: 256,\n },\n })\n );\n }),\n rest.post('/admin/project-settings', (req, res, ctx) => {\n return res(\n ctx.json({\n menuLogo: {\n ext: '.svg',\n height: 256,\n name: 'michka.svg',\n size: 1.3,\n url: '/uploads/michka.svg',\n width: 256,\n },\n })\n );\n }),\n rest.get('/admin/transfer/tokens', (req, res, ctx) => {\n return res(\n ctx.json({\n data: [\n {\n id: 1,\n name: 'My super token',\n description: 'This describe my super token',\n type: 'read-only',\n createdAt: '2021-11-15T00:00:00.000Z',\n permissions: [],\n },\n ],\n })\n );\n }),\n rest.get('/admin/transfer/tokens/:id', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n id: 1,\n name: 'My super token',\n description: 'This describe my super token',\n type: 'read-only',\n createdAt: '2021-11-15T00:00:00.000Z',\n permissions: [],\n },\n })\n );\n }),\n rest.get('/admin/registration-info', async (req, res, ctx) => {\n const token = req.url.searchParams.get('registrationToken');\n\n if (token === 'error') {\n return res(ctx.status(500), ctx.json({}));\n }\n\n return res(\n ctx.json({\n data: {\n firstname: 'Token firstname',\n lastname: 'Token lastname',\n email: 'test+register-token@strapi.io',\n },\n })\n );\n }),\n rest.post('/admin/renew-token', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n token: 'renewed-test-token',\n },\n })\n );\n }),\n rest.get('/admin/guided-tour-meta', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n isFirstSuperAdminUser: false,\n completedActions: [],\n },\n })\n );\n }),\n /**\n * WEBHOOKS\n */\n rest.get('/admin/webhooks', (req, res, ctx) => {\n return res(\n ctx.json({\n data: mockData.webhooks,\n })\n );\n }),\n rest.post('/admin/webhooks/batch-delete', async (req, res, ctx) => {\n const { ids } = await req.json<{ ids: number[] }>();\n\n return res(\n ctx.json({\n data: mockData.webhooks.filter((webhook) => !ids.includes(webhook.id)),\n })\n );\n }),\n rest.put('/admin/webhooks/:id', async (req, res, ctx) => {\n const { id } = req.params;\n const { isEnabled } = await req.json<{ isEnabled: boolean }>();\n\n return res(\n ctx.json({\n data: mockData.webhooks.map((webhook) =>\n webhook.id === Number(id) ? { ...webhook, isEnabled } : webhook\n ),\n })\n );\n }),\n /**\n *\n * CONTENT_MANAGER\n *\n */\n rest.get('/content-manager/content-types', (req, res, ctx) =>\n res(\n ctx.json({\n data: [\n {\n uid: 'admin::collectionType',\n isDisplayed: true,\n apiID: 'permission',\n kind: 'collectionType',\n },\n\n {\n uid: 'admin::collectionTypeNotDispalyed',\n isDisplayed: false,\n apiID: 'permission',\n kind: 'collectionType',\n },\n\n {\n uid: 'admin::singleType',\n isDisplayed: true,\n kind: 'singleType',\n },\n\n {\n uid: 'admin::singleTypeNotDispalyed',\n isDisplayed: false,\n kind: 'singleType',\n },\n ],\n })\n )\n ),\n rest.get('/content-manager/components', (req, res, ctx) =>\n res(\n ctx.json({\n data: [\n {\n uid: 'basic.relation',\n isDisplayed: true,\n apiID: 'relation',\n category: 'basic',\n info: {\n displayName: 'Relation',\n },\n options: {},\n attributes: {\n id: {\n type: 'integer',\n },\n categories: {\n type: 'relation',\n relation: 'oneToMany',\n target: 'api::category.category',\n targetModel: 'api::category.category',\n relationType: 'oneToMany',\n },\n },\n },\n ],\n })\n )\n ),\n /**\n *\n * NPS SURVEY\n *\n */\n rest.post('https://analytics.strapi.io/submit-nps', (req, res, ctx) => {\n return res(ctx.status(200));\n }),\n /**\n * CONTENT-API (API TOKENS)\n */\n rest.get('/admin/content-api/permissions', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n 'api::address': {\n controllers: {\n address: ['find', 'findOne'],\n },\n },\n 'plugin::myplugin': {\n controllers: {\n test: ['findOne', 'find'],\n },\n },\n },\n })\n );\n }),\n rest.get('/admin/content-api/routes', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n 'api::address': [\n {\n method: 'GET',\n path: '/api/addresses',\n handler: 'api::address.address.find',\n config: {\n auth: {\n scope: ['api::address.address.find'],\n },\n },\n info: {\n apiName: 'address',\n type: 'content-api',\n },\n },\n {\n method: 'GET',\n path: '/api/addresses/:id',\n handler: 'api::address.address.findOne',\n config: {\n auth: {\n scope: ['api::address.address.findOne'],\n },\n },\n info: {\n apiName: 'address',\n type: 'content-api',\n },\n },\n ],\n 'plugin::myplugin': [\n {\n method: 'GET',\n path: '/api/myplugin/tests',\n handler: 'plugin::myplugin.test.find',\n config: {\n auth: {\n scope: ['plugin::myplugin.test.find'],\n },\n },\n info: {\n pluginName: 'myplugin',\n type: 'content-api',\n },\n },\n {\n method: 'GET',\n path: '/api/myplugin/tests/:id',\n handler: 'plugin::myplugin.test.findOne',\n config: {\n auth: {\n scope: ['plugin::myplugin.test.findOne'],\n },\n },\n info: {\n pluginName: 'myplugin',\n type: 'content-api',\n },\n },\n ],\n },\n })\n );\n }),\n /**\n * API TOKENS\n */\n rest.get('/admin/api-tokens', (req, res, ctx) => {\n return res(\n ctx.json({\n data: [\n {\n id: '1',\n name: 'My super token',\n description: 'This describe my super token',\n type: 'read-only',\n createdAt: '2021-11-15T00:00:00.000Z',\n permissions: [],\n },\n ],\n })\n );\n }),\n rest.get('/admin/api-tokens/:id', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n id: '1',\n name: 'My super token',\n description: 'This describe my super token',\n type: 'read-only',\n createdAt: '2021-11-15T00:00:00.000Z',\n permissions: [],\n },\n })\n );\n }),\n /**\n * Audit Logs\n */\n rest.get('/admin/audit-logs', (req, res, ctx) => {\n return res(\n ctx.json({\n results: [\n {\n id: 1,\n action: 'admin.logout',\n date: '2023-10-31T15:56:54.873Z',\n payload: {\n user: {\n id: 1,\n firstname: 'test',\n lastname: 'testing',\n username: null,\n email: 'test@testing.com',\n isActive: true,\n blocked: false,\n preferedLanguage: null,\n createdAt: '2023-10-26T19:19:38.245Z',\n updatedAt: '2023-10-26T19:19:38.245Z',\n roles: [\n {\n id: 1,\n name: 'Super Admin',\n description: 'Super Admins can access and manage all features and settings.',\n code: 'strapi-super-admin',\n },\n ],\n },\n },\n user: {\n id: 1,\n email: 'test@testing.com',\n displayName: 'test testing',\n },\n },\n {\n id: 2,\n action: 'user.create',\n date: '2023-10-31T15:57:38.957Z',\n payload: {\n user: {\n id: 2,\n firstname: 'editor',\n lastname: 'test',\n username: null,\n email: 'editor@testing.com',\n isActive: true,\n blocked: false,\n preferedLanguage: null,\n createdAt: '2023-10-31T15:57:38.948Z',\n updatedAt: '2023-10-31T15:57:38.948Z',\n roles: [\n {\n id: 2,\n name: 'Editor',\n description:\n 'Editors can manage and publish contents including those of other users.',\n code: 'strapi-editor',\n },\n ],\n },\n },\n user: {\n id: 1,\n email: 'test@testing.com',\n displayName: 'test testing',\n },\n },\n ],\n pagination: {\n page: 1,\n pageSize: 2,\n pageCount: 1,\n total: 2,\n },\n })\n );\n }),\n rest.get('/admin/audit-logs/:id', (req, res, ctx) => {\n return res(\n ctx.json({\n id: 1,\n action: 'admin.logout',\n date: '2023-10-31T15:56:54.873Z',\n payload: {\n user: {\n id: 1,\n firstname: 'test',\n lastname: 'testing',\n username: null,\n email: 'test@testing.com',\n isActive: true,\n blocked: false,\n preferedLanguage: null,\n createdAt: '2023-10-26T19:19:38.245Z',\n updatedAt: '2023-10-26T19:19:38.245Z',\n roles: [\n {\n id: 1,\n name: 'Super Admin',\n description: 'Super Admins can access and manage all features and settings.',\n code: 'strapi-super-admin',\n },\n ],\n },\n },\n user: {\n id: 1,\n email: 'test@testing.com',\n displayName: 'test testing',\n },\n })\n );\n }),\n /**\n *\n * fetchClient, useFetchClient and getFetchClient\n *\n */\n rest.get('/use-fetch-client-test', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n results: [\n { id: 2, name: 'newest', publishedAt: null },\n { id: 1, name: 'oldest', publishedAt: null },\n ],\n pagination: { page: 1, pageCount: 10 },\n },\n })\n );\n }),\n rest.get('/test-fetch-client', (req, res, ctx) => {\n return res(ctx.status(200));\n }),\n ]\n);\n"],"names":["server","setupServer","rest","post","req","res","ctx","status","get","json","data","id","code","name","params","filters","url","searchParams","action","subject","properties","fields","conditions","results","firstname","lastname","roles","pagination","page","emai","some","email","username","preferedLanguage","isSSOLocked","put","autoRegister","defaultRole","ssoLockedRoles","role","displayName","category","sections","settings","subCategory","autoReload","communityEdition","currentEnvironment","nodeVersion","strapiVersion","attribute","features","options","retentionDays","menuLogo","ext","height","size","width","description","type","createdAt","permissions","token","isFirstSuperAdminUser","completedActions","mockData","webhooks","ids","filter","webhook","includes","isEnabled","map","Number","uid","isDisplayed","apiID","kind","info","attributes","categories","relation","target","targetModel","relationType","controllers","address","test","method","path","handler","config","auth","scope","apiName","pluginName","date","payload","user","isActive","blocked","updatedAt","pageSize","pageCount","total","publishedAt"],"mappings":"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"}
1
+ {"version":3,"file":"server.mjs","sources":["../../../../admin/tests/server.ts"],"sourcesContent":["import { rest } from 'msw';\nimport { type SetupServer, setupServer } from 'msw/node';\n\nimport { mockData } from './mockData';\n\nexport const server: SetupServer = setupServer(\n ...[\n /**\n * TRACKING\n */\n rest.post('https://analytics.strapi.io/api/v2/track', (req, res, ctx) => {\n return res(ctx.status(200));\n }),\n /**\n *\n * ADMIN ROLES\n *\n */\n rest.get('/admin/roles', (req, res, ctx) =>\n res(\n ctx.json({\n data: [\n {\n id: 1,\n code: 'strapi-editor',\n name: 'Editor',\n },\n {\n id: 2,\n code: 'strapi-author',\n name: 'Author',\n },\n ],\n })\n )\n ),\n\n rest.get('/admin/roles/1', (req, res, ctx) =>\n res(\n ctx.json({\n data: {\n id: 1,\n code: 'strapi-editor',\n params: {\n filters: req.url.searchParams.get('filters'),\n },\n },\n })\n )\n ),\n rest.get('/admin/roles/:id/permissions', (req, res, ctx) => {\n return res(\n ctx.json({\n data: [\n {\n id: 1,\n action: 'plugin::content-manager.explorer.create',\n subject: 'api::address.address',\n properties: {\n fields: ['postal_code', 'categories'],\n },\n conditions: [],\n\n params: {\n filters: req.url.searchParams.get('filters'),\n },\n },\n ],\n })\n );\n }),\n /**\n *\n * ADMIN USERS\n *\n */\n rest.get('/admin/users', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n results: [\n { id: 1, firstname: 'John', lastname: 'Doe', roles: [] },\n { id: 2, firstname: 'Kai', lastname: 'Doe', roles: [] },\n ],\n pagination: {\n page: 1,\n },\n },\n })\n );\n }),\n rest.get('/admin/users/1', (req, res, ctx) =>\n res(\n ctx.json({\n data: {\n id: 1,\n firstname: 'John',\n lastname: 'Doe',\n emai: 'test@testing.com',\n roles: [\n { id: 1, code: 'strapi-editor', name: 'Editor' },\n { id: 2, code: 'strapi-super-admin', name: 'Super Admin' },\n ],\n params: {\n some: req.url.searchParams.get('some'),\n },\n },\n })\n )\n ),\n rest.get('/admin/users/me', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n id: 1,\n email: 'michka@michka.fr',\n firstname: 'michoko',\n lastname: 'ronronscelestes',\n username: 'yolo',\n preferedLanguage: 'en',\n roles: [\n {\n id: 2,\n },\n ],\n },\n })\n );\n }),\n rest.get('/admin/users/me/permissions', (req, res, ctx) => res(ctx.json({ data: [] }))),\n /**\n *\n * ADMIN PROVIDERS\n *\n */\n rest.get('/admin/providers/isSSOLocked', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n isSSOLocked: false,\n },\n })\n );\n }),\n rest.put('/admin/providers/options', (req, res, ctx) =>\n res(\n ctx.json({\n data: {\n autoRegister: false,\n defaultRole: '1',\n ssoLockedRoles: ['1', '2', '3'],\n },\n })\n )\n ),\n rest.get('/admin/providers/options', (req, res, ctx) =>\n res(\n ctx.json({\n data: {\n autoRegister: false,\n defaultRole: '1',\n ssoLockedRoles: ['1', '2'],\n },\n })\n )\n ),\n /**\n *\n * ADMIN PERMISSIONS\n *\n */\n rest.get('/admin/permissions', (req, res, ctx) => {\n const role = req.url.searchParams.get('role');\n\n const permissionsData = {\n conditions: [\n {\n id: 'admin::is-creator',\n displayName: 'Is creator',\n category: 'default',\n },\n ],\n sections: {\n collectionTypes: {\n actions: [],\n subjects: [],\n },\n singleTypes: {\n actions: [],\n subjects: [],\n },\n plugins: [],\n settings: [\n {\n displayName: 'Access the Email Settings page',\n category: 'email',\n subCategory: 'general',\n action: 'plugin::email.settings.read',\n },\n ],\n },\n };\n\n // role === '' is used by AdminPermissions (token permission layout, no role scoping)\n if (role === '1' || role === '') {\n return res(ctx.json({ data: permissionsData }));\n }\n\n return res(ctx.status(404));\n }),\n /**\n *\n * ADMIN MISC\n *\n */\n rest.get('/admin/init', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {},\n })\n );\n }),\n rest.get('/admin/information', (req, res, ctx) =>\n res(\n ctx.json({\n autoReload: true,\n communityEdition: false,\n currentEnvironment: 'development',\n nodeVersion: 'v14.13.1',\n strapiVersion: '3.6.0',\n })\n )\n ),\n rest.get('/admin/license-limit-information', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n attribute: 1,\n\n features: [{ name: 'sso' }, { name: 'audit-logs', options: { retentionDays: 1 } }],\n },\n })\n );\n }),\n rest.get('/admin/project-settings', (req, res, ctx) => {\n return res(\n ctx.json({\n menuLogo: {\n ext: '.svg',\n height: 256,\n name: 'michka.svg',\n size: 1.3,\n url: '/uploads/michka.svg',\n width: 256,\n },\n })\n );\n }),\n rest.post('/admin/project-settings', (req, res, ctx) => {\n return res(\n ctx.json({\n menuLogo: {\n ext: '.svg',\n height: 256,\n name: 'michka.svg',\n size: 1.3,\n url: '/uploads/michka.svg',\n width: 256,\n },\n })\n );\n }),\n rest.get('/admin/transfer/tokens', (req, res, ctx) => {\n return res(\n ctx.json({\n data: [\n {\n id: 1,\n name: 'My super token',\n description: 'This describe my super token',\n type: 'read-only',\n createdAt: '2021-11-15T00:00:00.000Z',\n permissions: [],\n },\n ],\n })\n );\n }),\n rest.get('/admin/transfer/tokens/:id', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n id: 1,\n name: 'My super token',\n description: 'This describe my super token',\n type: 'read-only',\n createdAt: '2021-11-15T00:00:00.000Z',\n permissions: [],\n },\n })\n );\n }),\n rest.get('/admin/registration-info', async (req, res, ctx) => {\n const token = req.url.searchParams.get('registrationToken');\n\n if (token === 'error') {\n return res(ctx.status(500), ctx.json({}));\n }\n\n return res(\n ctx.json({\n data: {\n firstname: 'Token firstname',\n lastname: 'Token lastname',\n email: 'test+register-token@strapi.io',\n },\n })\n );\n }),\n rest.post('/admin/renew-token', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n token: 'renewed-test-token',\n },\n })\n );\n }),\n rest.get('/admin/guided-tour-meta', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n isFirstSuperAdminUser: false,\n completedActions: [],\n },\n })\n );\n }),\n /**\n * WEBHOOKS\n */\n rest.get('/admin/webhooks', (req, res, ctx) => {\n return res(\n ctx.json({\n data: mockData.webhooks,\n })\n );\n }),\n rest.post('/admin/webhooks/batch-delete', async (req, res, ctx) => {\n const { ids } = await req.json<{ ids: number[] }>();\n\n return res(\n ctx.json({\n data: mockData.webhooks.filter((webhook) => !ids.includes(webhook.id)),\n })\n );\n }),\n rest.put('/admin/webhooks/:id', async (req, res, ctx) => {\n const { id } = req.params;\n const { isEnabled } = await req.json<{ isEnabled: boolean }>();\n\n return res(\n ctx.json({\n data: mockData.webhooks.map((webhook) =>\n webhook.id === Number(id) ? { ...webhook, isEnabled } : webhook\n ),\n })\n );\n }),\n /**\n *\n * CONTENT_MANAGER\n *\n */\n rest.get('/content-manager/content-types', (req, res, ctx) =>\n res(\n ctx.json({\n data: [\n {\n uid: 'admin::collectionType',\n isDisplayed: true,\n apiID: 'permission',\n kind: 'collectionType',\n },\n\n {\n uid: 'admin::collectionTypeNotDispalyed',\n isDisplayed: false,\n apiID: 'permission',\n kind: 'collectionType',\n },\n\n {\n uid: 'admin::singleType',\n isDisplayed: true,\n kind: 'singleType',\n },\n\n {\n uid: 'admin::singleTypeNotDispalyed',\n isDisplayed: false,\n kind: 'singleType',\n },\n ],\n })\n )\n ),\n rest.get('/content-manager/components', (req, res, ctx) =>\n res(\n ctx.json({\n data: [\n {\n uid: 'basic.relation',\n isDisplayed: true,\n apiID: 'relation',\n category: 'basic',\n info: {\n displayName: 'Relation',\n },\n options: {},\n attributes: {\n id: {\n type: 'integer',\n },\n categories: {\n type: 'relation',\n relation: 'oneToMany',\n target: 'api::category.category',\n targetModel: 'api::category.category',\n relationType: 'oneToMany',\n },\n },\n },\n ],\n })\n )\n ),\n /**\n *\n * NPS SURVEY\n *\n */\n rest.post('https://analytics.strapi.io/submit-nps', (req, res, ctx) => {\n return res(ctx.status(200));\n }),\n /**\n * CONTENT-API (API TOKENS)\n */\n rest.get('/admin/content-api/permissions', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n 'api::address': {\n controllers: {\n address: ['find', 'findOne'],\n },\n },\n 'plugin::myplugin': {\n controllers: {\n test: ['findOne', 'find'],\n },\n },\n },\n })\n );\n }),\n rest.get('/admin/content-api/routes', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n 'api::address': [\n {\n method: 'GET',\n path: '/api/addresses',\n handler: 'api::address.address.find',\n config: {\n auth: {\n scope: ['api::address.address.find'],\n },\n },\n info: {\n apiName: 'address',\n type: 'content-api',\n },\n },\n {\n method: 'GET',\n path: '/api/addresses/:id',\n handler: 'api::address.address.findOne',\n config: {\n auth: {\n scope: ['api::address.address.findOne'],\n },\n },\n info: {\n apiName: 'address',\n type: 'content-api',\n },\n },\n ],\n 'plugin::myplugin': [\n {\n method: 'GET',\n path: '/api/myplugin/tests',\n handler: 'plugin::myplugin.test.find',\n config: {\n auth: {\n scope: ['plugin::myplugin.test.find'],\n },\n },\n info: {\n pluginName: 'myplugin',\n type: 'content-api',\n },\n },\n {\n method: 'GET',\n path: '/api/myplugin/tests/:id',\n handler: 'plugin::myplugin.test.findOne',\n config: {\n auth: {\n scope: ['plugin::myplugin.test.findOne'],\n },\n },\n info: {\n pluginName: 'myplugin',\n type: 'content-api',\n },\n },\n ],\n },\n })\n );\n }),\n /**\n * API TOKENS\n */\n rest.get('/admin/api-tokens', (req, res, ctx) => {\n return res(\n ctx.json({\n data: [\n {\n id: '1',\n name: 'My super token',\n description: 'This describe my super token',\n kind: 'content-api',\n type: 'read-only',\n createdAt: '2021-11-15T00:00:00.000Z',\n permissions: [],\n },\n ],\n })\n );\n }),\n rest.get('/admin/api-tokens/:id', (req, res, ctx) => {\n const { id } = req.params;\n\n if (id === '2') {\n return res(\n ctx.json({\n data: {\n id: '2',\n name: 'My admin token',\n description: 'This is an admin token',\n kind: 'admin',\n adminPermissions: [],\n adminUserOwner: {\n id: 1,\n firstname: 'John',\n lastname: 'Doe',\n email: 'john@example.com',\n },\n createdAt: '2021-11-15T00:00:00.000Z',\n },\n })\n );\n }\n\n return res(\n ctx.json({\n data: {\n id: '1',\n name: 'My super token',\n description: 'This describe my super token',\n kind: 'content-api',\n type: 'read-only',\n createdAt: '2021-11-15T00:00:00.000Z',\n permissions: [],\n },\n })\n );\n }),\n /**\n * ADMIN TOKENS\n */\n rest.get('/admin/admin-tokens', (req, res, ctx) => {\n return res(\n ctx.json({\n data: [\n {\n id: '1',\n name: 'My admin token',\n description: 'This is an admin token',\n kind: 'admin',\n adminPermissions: [],\n adminUserOwner: {\n id: 1,\n firstname: 'John',\n lastname: 'Doe',\n email: 'john@example.com',\n },\n createdAt: '2021-11-15T00:00:00.000Z',\n },\n ],\n })\n );\n }),\n rest.get('/admin/admin-tokens/:id', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n id: '1',\n name: 'My admin token',\n description: 'This is an admin token',\n kind: 'admin',\n adminPermissions: [],\n adminUserOwner: {\n id: 1,\n firstname: 'John',\n lastname: 'Doe',\n email: 'john@example.com',\n },\n createdAt: '2021-11-15T00:00:00.000Z',\n },\n })\n );\n }),\n rest.get('/admin/admin-tokens/:id/owner-permissions', (req, res, ctx) => {\n return res(ctx.json({ data: [] }));\n }),\n /**\n * Audit Logs\n */\n rest.get('/admin/audit-logs', (req, res, ctx) => {\n return res(\n ctx.json({\n results: [\n {\n id: 1,\n action: 'admin.logout',\n date: '2023-10-31T15:56:54.873Z',\n payload: {\n user: {\n id: 1,\n firstname: 'test',\n lastname: 'testing',\n username: null,\n email: 'test@testing.com',\n isActive: true,\n blocked: false,\n preferedLanguage: null,\n createdAt: '2023-10-26T19:19:38.245Z',\n updatedAt: '2023-10-26T19:19:38.245Z',\n roles: [\n {\n id: 1,\n name: 'Super Admin',\n description: 'Super Admins can access and manage all features and settings.',\n code: 'strapi-super-admin',\n },\n ],\n },\n },\n user: {\n id: 1,\n email: 'test@testing.com',\n displayName: 'test testing',\n },\n },\n {\n id: 2,\n action: 'user.create',\n date: '2023-10-31T15:57:38.957Z',\n payload: {\n user: {\n id: 2,\n firstname: 'editor',\n lastname: 'test',\n username: null,\n email: 'editor@testing.com',\n isActive: true,\n blocked: false,\n preferedLanguage: null,\n createdAt: '2023-10-31T15:57:38.948Z',\n updatedAt: '2023-10-31T15:57:38.948Z',\n roles: [\n {\n id: 2,\n name: 'Editor',\n description:\n 'Editors can manage and publish contents including those of other users.',\n code: 'strapi-editor',\n },\n ],\n },\n },\n user: {\n id: 1,\n email: 'test@testing.com',\n displayName: 'test testing',\n },\n },\n ],\n pagination: {\n page: 1,\n pageSize: 2,\n pageCount: 1,\n total: 2,\n },\n })\n );\n }),\n rest.get('/admin/audit-logs/:id', (req, res, ctx) => {\n return res(\n ctx.json({\n id: 1,\n action: 'admin.logout',\n date: '2023-10-31T15:56:54.873Z',\n payload: {\n user: {\n id: 1,\n firstname: 'test',\n lastname: 'testing',\n username: null,\n email: 'test@testing.com',\n isActive: true,\n blocked: false,\n preferedLanguage: null,\n createdAt: '2023-10-26T19:19:38.245Z',\n updatedAt: '2023-10-26T19:19:38.245Z',\n roles: [\n {\n id: 1,\n name: 'Super Admin',\n description: 'Super Admins can access and manage all features and settings.',\n code: 'strapi-super-admin',\n },\n ],\n },\n },\n user: {\n id: 1,\n email: 'test@testing.com',\n displayName: 'test testing',\n },\n })\n );\n }),\n /**\n *\n * fetchClient, useFetchClient and getFetchClient\n *\n */\n rest.get('/use-fetch-client-test', (req, res, ctx) => {\n return res(\n ctx.json({\n data: {\n results: [\n { id: 2, name: 'newest', publishedAt: null },\n { id: 1, name: 'oldest', publishedAt: null },\n ],\n pagination: { page: 1, pageCount: 10 },\n },\n })\n );\n }),\n rest.get('/test-fetch-client', (req, res, ctx) => {\n return res(ctx.status(200));\n }),\n ]\n);\n"],"names":["server","setupServer","rest","post","req","res","ctx","status","get","json","data","id","code","name","params","filters","url","searchParams","action","subject","properties","fields","conditions","results","firstname","lastname","roles","pagination","page","emai","some","email","username","preferedLanguage","isSSOLocked","put","autoRegister","defaultRole","ssoLockedRoles","role","permissionsData","displayName","category","sections","collectionTypes","actions","subjects","singleTypes","plugins","settings","subCategory","autoReload","communityEdition","currentEnvironment","nodeVersion","strapiVersion","attribute","features","options","retentionDays","menuLogo","ext","height","size","width","description","type","createdAt","permissions","token","isFirstSuperAdminUser","completedActions","mockData","webhooks","ids","filter","webhook","includes","isEnabled","map","Number","uid","isDisplayed","apiID","kind","info","attributes","categories","relation","target","targetModel","relationType","controllers","address","test","method","path","handler","config","auth","scope","apiName","pluginName","adminPermissions","adminUserOwner","date","payload","user","isActive","blocked","updatedAt","pageSize","pageCount","total","publishedAt"],"mappings":"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"}
@@ -92,6 +92,32 @@ export declare const ADMIN_PERMISSIONS_CE: {
92
92
  subject: null;
93
93
  }[];
94
94
  };
95
+ 'admin-tokens': {
96
+ main: {
97
+ action: string;
98
+ subject: null;
99
+ }[];
100
+ create: {
101
+ action: string;
102
+ subject: null;
103
+ }[];
104
+ delete: {
105
+ action: string;
106
+ subject: null;
107
+ }[];
108
+ read: {
109
+ action: string;
110
+ subject: null;
111
+ }[];
112
+ update: {
113
+ action: string;
114
+ subject: null;
115
+ }[];
116
+ regenerate: {
117
+ action: string;
118
+ subject: null;
119
+ }[];
120
+ };
95
121
  'api-tokens': {
96
122
  main: {
97
123
  action: string;
@@ -52,7 +52,7 @@ declare class Router {
52
52
  */
53
53
  createRouter(strapi: StrapiApp, { memory, ...opts }?: RouterOptions): import("@remix-run/router").Router;
54
54
  addMenuLink: (link: Omit<MenuItem, 'Component'> & {
55
- Component: () => Promise<{
55
+ Component?: () => Promise<{
56
56
  default: React.ComponentType;
57
57
  }>;
58
58
  }) => void;
@@ -120,7 +120,8 @@ interface WillModifyTokenEvent {
120
120
  name: 'didCreateToken' | 'didEditToken';
121
121
  properties: {
122
122
  tokenType: TokenEvents['properties']['tokenType'];
123
- type: 'custom' | 'full-access' | 'read-only' | Array<'push' | 'pull' | 'push-pull'>;
123
+ kind?: 'admin' | 'content-api';
124
+ type?: 'custom' | 'full-access' | 'read-only' | Array<'push' | 'pull' | 'push-pull'>;
124
125
  };
125
126
  }
126
127
  interface DeleteEntryEvents {
@@ -0,0 +1,24 @@
1
+ import * as React from 'react';
2
+ import { FormikErrors } from 'formik';
3
+ import type { ApiToken, ContentApiApiToken } from '../../../../../../shared/contracts/api-token';
4
+ interface FormApiTokenContainerProps {
5
+ errors?: FormikErrors<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;
6
+ onChange: ({ target: { name, value } }: {
7
+ target: {
8
+ name: string;
9
+ value: string;
10
+ };
11
+ }) => void;
12
+ canEditInputs: boolean;
13
+ values?: Partial<Pick<ContentApiApiToken, 'name' | 'description' | 'lifespan' | 'type'>>;
14
+ isCreating: boolean;
15
+ apiToken?: null | Partial<ApiToken>;
16
+ kind: 'admin' | 'content-api';
17
+ onDispatch: React.Dispatch<{
18
+ type: any;
19
+ value?: unknown;
20
+ }>;
21
+ setHasChangedPermissions: (hasChanged: boolean) => void;
22
+ }
23
+ export declare const FormApiTokenContainer: ({ errors, onChange, canEditInputs, isCreating, values, apiToken, kind, onDispatch, setHasChangedPermissions, }: FormApiTokenContainerProps) => import("react/jsx-runtime").JSX.Element;
24
+ export {};
@@ -11,7 +11,8 @@ interface TableProps extends Pick<TableImpl.Props<SanitizedTransferToken | ApiTo
11
11
  };
12
12
  tokens: SanitizedTransferToken[] | ApiToken[];
13
13
  tokenType: 'api-token' | 'transfer-token';
14
+ showOwner?: boolean;
14
15
  }
15
- declare const Table: ({ permissions, headers, isLoading, tokens, onConfirmDelete, tokenType, }: TableProps) => import("react/jsx-runtime").JSX.Element;
16
+ declare const Table: ({ permissions, headers, isLoading, tokens, onConfirmDelete, tokenType, showOwner, }: TableProps) => import("react/jsx-runtime").JSX.Element;
16
17
  export { Table };
17
18
  export type { TableProps };
@@ -1,2 +1,19 @@
1
+ import * as yup from 'yup';
1
2
  export declare const API_TOKEN_TYPE = "api-token";
2
3
  export declare const TRANSFER_TOKEN_TYPE = "transfer-token";
4
+ export declare const apiTokenInformationSchema: yup.default<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
5
+ name: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
6
+ type: yup.default<string | undefined, Record<string, any>, string | undefined>;
7
+ description: yup.default<string | null | undefined, Record<string, any>, string | null | undefined>;
8
+ lifespan: import("yup/lib/number").DefinedNumberSchema<number | null | undefined, Record<string, any>>;
9
+ }>, Record<string, any>, import("yup/lib/object").TypeOfShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
10
+ name: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
11
+ type: yup.default<string | undefined, Record<string, any>, string | undefined>;
12
+ description: yup.default<string | null | undefined, Record<string, any>, string | null | undefined>;
13
+ lifespan: import("yup/lib/number").DefinedNumberSchema<number | null | undefined, Record<string, any>>;
14
+ }>>, import("yup/lib/object").AssertsShape<import("yup/lib/object").Assign<import("yup/lib/object").ObjectShape, {
15
+ name: import("yup/lib/string").RequiredStringSchema<string | undefined, Record<string, any>>;
16
+ type: yup.default<string | undefined, Record<string, any>, string | undefined>;
17
+ description: yup.default<string | null | undefined, Record<string, any>, string | null | undefined>;
18
+ lifespan: import("yup/lib/number").DefinedNumberSchema<number | null | undefined, Record<string, any>>;
19
+ }>>>;
@@ -1,2 +1,2 @@
1
1
  import type { RouteObject } from 'react-router-dom';
2
- export declare const ROUTES_CE: RouteObject[];
2
+ export declare const ROUTES_CE: () => RouteObject[];
@@ -0,0 +1 @@
1
+ export declare const ProtectedCreateView: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export declare const EditView: () => import("react/jsx-runtime").JSX.Element;
2
+ export declare const ProtectedEditView: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,13 @@
1
+ import * as React from 'react';
2
+ import { PermissionsAPI } from '../../../Roles/components/Permissions';
3
+ import type { Permission } from '../../../../../../../../shared/contracts/shared';
4
+ import type { Data } from '@strapi/types';
5
+ export interface AdminPermissionsProps {
6
+ disabled?: boolean;
7
+ initialAdminPermissions: Permission[];
8
+ /** Undefined in create mode. */
9
+ tokenId?: string;
10
+ /** The owner's user id. Undefined in create mode, user can only create a token for themselves. */
11
+ ownerUserId?: Data.ID | null;
12
+ }
13
+ export declare const AdminPermissions: React.ForwardRefExoticComponent<AdminPermissionsProps & React.RefAttributes<PermissionsAPI>>;
@@ -0,0 +1,2 @@
1
+ export declare const ListView: () => import("react/jsx-runtime").JSX.Element;
2
+ export declare const ProtectedListView: () => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { Action, SubjectProperty } from '../../../../../../../shared/contracts/permissions';
2
- interface CollapsePropertyMatrixProps extends Pick<ActionRowProps, 'childrenForm' | 'isFormDisabled' | 'label' | 'pathToData' | 'propertyName'> {
2
+ interface CollapsePropertyMatrixProps extends Pick<ActionRowProps, 'childrenForm' | 'isFormDisabled' | 'label' | 'pathToData' | 'propertyName' | 'subject'> {
3
3
  availableActions?: Array<Action & {
4
4
  isDisplayed: boolean;
5
5
  }>;
@@ -9,8 +9,8 @@ interface PropertyAction {
9
9
  actionId: string;
10
10
  isActionRelatedToCurrentProperty: boolean;
11
11
  }
12
- declare const CollapsePropertyMatrix: ({ availableActions, childrenForm, isFormDisabled, label, pathToData, propertyName, }: CollapsePropertyMatrixProps) => import("react/jsx-runtime").JSX.Element;
13
- interface ActionRowProps extends Pick<SubActionRowProps, 'childrenForm' | 'isFormDisabled' | 'propertyActions' | 'propertyName'> {
12
+ declare const CollapsePropertyMatrix: ({ availableActions, childrenForm, isFormDisabled, label, pathToData, propertyName, subject, }: CollapsePropertyMatrixProps) => import("react/jsx-runtime").JSX.Element;
13
+ interface ActionRowProps extends Pick<SubActionRowProps, 'childrenForm' | 'isFormDisabled' | 'propertyActions' | 'propertyName' | 'subject'> {
14
14
  label: string;
15
15
  name: string;
16
16
  required?: boolean;
@@ -24,6 +24,7 @@ interface SubActionRowProps {
24
24
  pathToDataFromActionRow: string;
25
25
  propertyActions: PropertyAction[];
26
26
  propertyName: string;
27
+ subject?: string;
27
28
  recursiveLevel: number;
28
29
  }
29
30
  export { CollapsePropertyMatrix };
@@ -11,9 +11,10 @@ interface ConditionAction extends Pick<ActionRowProps, 'label'> {
11
11
  interface ConditionsModalProps extends Pick<ActionRowProps, 'isFormDisabled'> {
12
12
  actions?: Array<ConditionAction | HiddenCheckboxAction | VisibleCheckboxAction>;
13
13
  headerBreadCrumbs?: string[];
14
+ isReadOnly?: boolean;
14
15
  onClose?: () => void;
15
16
  }
16
- declare const ConditionsModal: ({ actions, headerBreadCrumbs, isFormDisabled, onClose, }: ConditionsModalProps) => import("react/jsx-runtime").JSX.Element;
17
+ declare const ConditionsModal: ({ actions, headerBreadCrumbs, isFormDisabled, isReadOnly, onClose, }: ConditionsModalProps) => import("react/jsx-runtime").JSX.Element;
17
18
  interface ActionRowProps {
18
19
  arrayOfOptionsGroupedByCategory: Array<[
19
20
  string,
@@ -21,6 +22,7 @@ interface ActionRowProps {
21
22
  ]>;
22
23
  isFormDisabled?: boolean;
23
24
  isGrey?: boolean;
25
+ isReadOnly?: boolean;
24
26
  label: string;
25
27
  name: string;
26
28
  onChange?: (name: string, values: Record<string, boolean>) => void;
@@ -13,6 +13,7 @@ interface CollapseProps extends Pick<RowLabelWithCheckboxProps, 'isActive' | 'is
13
13
  isGrey?: boolean;
14
14
  onClickToggle: RowLabelWithCheckboxProps['onClick'];
15
15
  pathToData: string;
16
+ subject: string;
16
17
  }
17
18
  interface VisibleCheckboxAction {
18
19
  actionId: string;
@@ -1,6 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import * as PermissonContracts from '../../../../../../../shared/contracts/permissions';
3
3
  import { Permission } from '../../../../../../../shared/contracts/shared';
4
+ import { Permission as AuthPermission } from '../../../../../features/Auth';
4
5
  import { ConditionForm, Form } from '../utils/forms';
5
6
  import { GenericLayout } from '../utils/layouts';
6
7
  export interface PermissionsAPI {
@@ -15,6 +16,7 @@ interface PermissionsProps {
15
16
  isFormDisabled?: boolean;
16
17
  permissions?: Permission[];
17
18
  layout: PermissonContracts.GetAll.Response['data'];
19
+ userPermissions?: AuthPermission[];
18
20
  }
19
21
  declare const Permissions: React.ForwardRefExoticComponent<PermissionsProps & React.RefAttributes<PermissionsAPI>>;
20
22
  interface PermissionForms {
@@ -38,6 +40,7 @@ interface OnChangeCollectionTypeGlobalActionCheckboxAction {
38
40
  collectionTypeKind: keyof PermissionForms;
39
41
  actionId: string;
40
42
  value: boolean;
43
+ userPermissions?: AuthPermission[];
41
44
  }
42
45
  interface OnChangeCollectionTypeRowLeftCheckboxAction {
43
46
  type: 'ON_CHANGE_COLLECTION_TYPE_ROW_LEFT_CHECKBOX';
@@ -45,10 +48,12 @@ interface OnChangeCollectionTypeRowLeftCheckboxAction {
45
48
  propertyName: string;
46
49
  rowName: string;
47
50
  value: boolean;
51
+ userPermissions?: AuthPermission[];
48
52
  }
49
53
  interface OnChangeConditionsAction {
50
54
  type: 'ON_CHANGE_CONDITIONS';
51
55
  conditions: Record<string, ConditionForm>;
56
+ userPermissions?: AuthPermission[];
52
57
  }
53
58
  export { Permissions };
54
59
  export type { State, OnChangeCollectionTypeRowLeftCheckboxAction, OnChangeConditionsAction, OnChangeCollectionTypeGlobalActionCheckboxAction, };
@@ -1,5 +1,6 @@
1
- /// <reference types="react" />
1
+ import * as React from 'react';
2
2
  import { Condition } from '../../../../../../../shared/contracts/permissions';
3
+ import { Permission as AuthPermission } from '../../../../../features/Auth';
3
4
  import type { OnChangeCollectionTypeGlobalActionCheckboxAction, OnChangeCollectionTypeRowLeftCheckboxAction, OnChangeConditionsAction, State } from '../components/Permissions';
4
5
  export interface PermissionsDataManagerContextValue extends Pick<State, 'modifiedData'> {
5
6
  availableConditions: Condition[];
@@ -18,12 +19,12 @@ export interface PermissionsDataManagerContextValue extends Pick<State, 'modifie
18
19
  };
19
20
  }) => void;
20
21
  onChangeCollectionTypeGlobalActionCheckbox: (collectionTypeKind: OnChangeCollectionTypeGlobalActionCheckboxAction['collectionTypeKind'], actionId: OnChangeCollectionTypeGlobalActionCheckboxAction['actionId'], value: OnChangeCollectionTypeGlobalActionCheckboxAction['value']) => void;
22
+ userPermissions?: AuthPermission[];
23
+ checkUserHasPermission: (action: string, subject?: string | null, field?: string) => boolean;
21
24
  }
22
- declare const PermissionsDataManagerProvider: {
23
- (props: PermissionsDataManagerContextValue & {
24
- children: import("react").ReactNode;
25
- }): JSX.Element;
26
- displayName: string;
27
- };
28
25
  export declare const usePermissionsDataManager: () => PermissionsDataManagerContextValue;
26
+ interface PermissionsDataManagerProviderProps extends Omit<PermissionsDataManagerContextValue, 'checkUserHasPermission'> {
27
+ children: React.ReactNode;
28
+ }
29
+ declare const PermissionsDataManagerProvider: ({ children, userPermissions, availableConditions, modifiedData, onChangeConditions, onChangeSimpleCheckbox, onChangeParentCheckbox, onChangeCollectionTypeLeftActionRowCheckbox, onChangeCollectionTypeGlobalActionCheckbox, }: PermissionsDataManagerProviderProps) => import("react/jsx-runtime").JSX.Element;
29
30
  export { PermissionsDataManagerProvider };
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Utility functions for creating permission checkers used in bulk update operations.
3
+ * These functions encapsulate the logic for validating whether a user has permission
4
+ * to modify specific fields/actions during role and app token editing.
5
+ */
6
+ import type { Permission as AuthPermission } from '../../../../../features/Auth';
7
+ /**
8
+ * Creates a permission checker function for field-level permission validation.
9
+ * Used in bulk update operations to filter which leaves can be modified.
10
+ *
11
+ * @param actionId - The action to check (e.g., 'plugin::content-manager.explorer.create')
12
+ * @param subject - The subject to check (e.g., 'api::article.article'), or null for plugins/settings
13
+ * @param userPermissions - Array of user permissions, or undefined for Role editing mode
14
+ * @returns A checker function that validates if a given path should be allowed,
15
+ * or undefined if in Role editing mode (no restrictions)
16
+ */
17
+ export declare const createFieldPermissionChecker: (actionId: string, subject: string | null, userPermissions: AuthPermission[] | undefined) => ((path: string[]) => boolean) | undefined;
18
+ /**
19
+ * Creates a permission checker for content type operations where the action ID
20
+ * may need to be extracted from the path itself (for content type name checkboxes).
21
+ *
22
+ * @param subject - The subject to check
23
+ * @param actionIdFromContext - The action ID from parent context (may be undefined)
24
+ * @param userPermissions - Array of user permissions, or undefined for Role editing mode
25
+ * @returns A checker function or undefined if in Role editing mode
26
+ */
27
+ export declare const createDynamicActionPermissionChecker: (subject: string | null | undefined, actionIdFromContext: string | undefined, userPermissions: AuthPermission[] | undefined) => ((path: string[]) => boolean) | undefined;
@@ -4,5 +4,11 @@
4
4
  * of an object.
5
5
  * This utility is very helpful when dealing with parent<>children checkboxes
6
6
  */
7
- declare const updateValues: (obj: object, valueToSet: boolean, isFieldUpdate?: boolean) => object;
8
- export { updateValues };
7
+ declare const updateValues: (obj: object, valueToSet: boolean, isFieldUpdate?: boolean) => Record<string, unknown>;
8
+ /**
9
+ * Permission-aware version of updateValues.
10
+ * When permissionChecker is undefined (Role editing), behaves like updateValues.
11
+ * When permissionChecker is provided (Admin Token editing), filters leaf updates based on permissions.
12
+ */
13
+ declare const updateValuesWithPermissions: (obj: object, valueToSet: boolean, permissionChecker?: (path: string[]) => boolean, currentPath?: string[], isFieldUpdate?: boolean) => Record<string, unknown>;
14
+ export { updateValues, updateValuesWithPermissions };
@@ -1,3 +1,6 @@
1
+ import * as AdminToken from '../../../shared/contracts/admin-token';
1
2
  import * as ApiToken from '../../../shared/contracts/api-token';
2
- declare const useGetAPITokensQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", ApiToken.ApiToken[], "adminApi">>, useGetAPITokenQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<import("@strapi/types/dist/data").ID, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", ApiToken.ApiToken, "adminApi">>, useCreateAPITokenMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<ApiToken.ApiTokenBody, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", ApiToken.ApiToken, "adminApi">>, useDeleteAPITokenMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<import("@strapi/types/dist/data").ID, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", ApiToken.ApiToken, "adminApi">>, useUpdateAPITokenMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<ApiToken.Update.Params & ApiToken.ApiTokenBody, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", ApiToken.ApiToken, "adminApi">>;
3
- export { useGetAPITokensQuery, useGetAPITokenQuery, useCreateAPITokenMutation, useDeleteAPITokenMutation, useUpdateAPITokenMutation, };
3
+ declare const useGetAPITokensQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void | {}, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", ApiToken.ContentApiApiToken[], "adminApi">>, useGetAPITokenQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<import("@strapi/types/dist/data").ID, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", ApiToken.ContentApiApiToken, "adminApi">>, useCreateAPITokenMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<ApiToken.ContentApiApiTokenBody, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", ApiToken.ContentApiApiToken, "adminApi">>, useDeleteAPITokenMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<import("@strapi/types/dist/data").ID, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", ApiToken.ContentApiApiToken, "adminApi">>, useUpdateAPITokenMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<ApiToken.Update.Params & Partial<ApiToken.ContentApiApiTokenBody>, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", ApiToken.ContentApiApiToken, "adminApi">>, useGetAPITokenOwnerPermissionsQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<string, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", import("../../../shared/contracts/shared").Permission[], "adminApi">>, useGetAdminTokensQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<void, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", AdminToken.AdminApiToken[], "adminApi">>, useGetAdminTokenQuery: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseQuery<import("@reduxjs/toolkit/query").QueryDefinition<import("@strapi/types/dist/data").ID, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", AdminToken.AdminApiToken, "adminApi">>, useCreateAdminTokenMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<Pick<AdminToken.AdminApiToken, "description" | "name" | "lifespan"> & {
4
+ adminPermissions?: Omit<import("../../../shared/contracts/shared").Permission, "id" | "createdAt" | "updatedAt" | "actionParameters">[] | undefined;
5
+ }, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", AdminToken.AdminApiToken, "adminApi">>, useDeleteAdminTokenMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<import("@strapi/types/dist/data").ID, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", AdminToken.AdminApiToken, "adminApi">>, useUpdateAdminTokenMutation: import("@reduxjs/toolkit/dist/query/react/buildHooks").UseMutation<import("@reduxjs/toolkit/query").MutationDefinition<AdminToken.Update.Params & Partial<AdminToken.AdminTokenBody>, import("@reduxjs/toolkit/query").BaseQueryFn<string | import("..").QueryArguments, unknown, import("..").BaseQueryError>, "GuidedTourMeta" | "HomepageKeyStatistics" | "AiUsage" | "AiFeatureConfig" | "ApiToken", AdminToken.AdminApiToken, "adminApi">>;
6
+ export { useGetAPITokensQuery, useGetAPITokenQuery, useCreateAPITokenMutation, useDeleteAPITokenMutation, useUpdateAPITokenMutation, useGetAPITokenOwnerPermissionsQuery, useGetAdminTokensQuery, useGetAdminTokenQuery, useCreateAdminTokenMutation, useDeleteAdminTokenMutation, useUpdateAdminTokenMutation, };
@@ -1,5 +1,5 @@
1
1
  import type { Permission } from '../features/Auth';
2
- type SettingsPermissions = 'api-tokens' | 'project-settings' | 'roles' | 'transfer-tokens' | 'users' | 'webhooks';
2
+ type SettingsPermissions = 'admin-tokens' | 'api-tokens' | 'project-settings' | 'roles' | 'transfer-tokens' | 'users' | 'webhooks';
3
3
  type EESettingsPermissions = 'auditLogs' | 'review-workflows' | 'sso' | 'releases';
4
4
  type CRUDPermissions = {
5
5
  main?: Permission[];
@@ -30,10 +30,42 @@ const registerModelHooks = ()=>{
30
30
  ],
31
31
  afterCreate: sendDidChangeInterfaceLanguage,
32
32
  afterDelete: sendDidChangeInterfaceLanguage,
33
- afterUpdate ({ params }) {
34
- if (params.data.preferedLanguage) {
33
+ async beforeDelete (event) {
34
+ // Delete all admin API tokens owned by this user before the user row is removed
35
+ await index.getService('api-token-admin').deleteTokensForUser(event.params.where.id);
36
+ },
37
+ async afterUpdate (event) {
38
+ if (event.params.data?.preferedLanguage) {
35
39
  sendDidChangeInterfaceLanguage();
36
40
  }
41
+ if (event.params.data?.roles !== undefined) {
42
+ // We re-sync token permissions for all owner users with their role when the user is updated
43
+ await index.getService('api-token-admin').syncPermissionsForUser(event.result.id);
44
+ }
45
+ }
46
+ });
47
+ strapi.db.lifecycles.subscribe({
48
+ models: [
49
+ 'admin::role'
50
+ ],
51
+ // We re-sync token permissions for all owner users with this role when the role is deleted
52
+ async beforeDelete (event) {
53
+ const users = await strapi.db.query('admin::user').findMany({
54
+ where: {
55
+ roles: {
56
+ id: event.params.where.id
57
+ }
58
+ },
59
+ select: [
60
+ 'id'
61
+ ]
62
+ });
63
+ event.state.affectedUserIds = users.map((u)=>u.id);
64
+ },
65
+ async afterDelete (event) {
66
+ for (const userId of event.state.affectedUserIds ?? []){
67
+ await index.getService('api-token-admin').syncPermissionsForUser(userId);
68
+ }
37
69
  }
38
70
  });
39
71
  };
@@ -83,9 +115,9 @@ const syncAPITokensPermissions = async ()=>{
83
115
  * @sideEffects Creates new API tokens in the database if conditions are met.
84
116
  */ const createDefaultAPITokensIfNeeded = async ()=>{
85
117
  const userService = index.getService('user');
86
- const apiTokenService = index.getService('api-token');
118
+ const apiTokenService = index.getService('api-token-content-api');
87
119
  const usersCount = await userService.count();
88
- const apiTokenCount = await apiTokenService.count();
120
+ const apiTokenCount = await apiTokenService.countAll();
89
121
  if (usersCount === 0 && apiTokenCount === 0) {
90
122
  for (const token of constants.DEFAULT_API_TOKENS){
91
123
  await apiTokenService.create(token);
@@ -126,7 +158,7 @@ var bootstrap = (async ({ strapi: strapi1 })=>{
126
158
  const permissionService = index.getService('permission');
127
159
  const userService = index.getService('user');
128
160
  const roleService = index.getService('role');
129
- const apiTokenService = index.getService('api-token');
161
+ const apiTokenService = index.getService('api-token-content-api');
130
162
  const transferService = index.getService('transfer');
131
163
  const tokenService = index.getService('token');
132
164
  await roleService.createRolesIfNoneExist();