@strapi/admin 5.56.0 → 5.57.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 (311) hide show
  1. package/dist/admin/admin/src/components/Filters.js +1 -1
  2. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  3. package/dist/admin/admin/src/components/Filters.mjs +1 -1
  4. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -2
  6. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  7. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -2
  8. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/MediaLibraryBanner.js +38 -2
  10. package/dist/admin/admin/src/components/MediaLibraryBanner.js.map +1 -1
  11. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs +18 -2
  12. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/RelativeTime.js +9 -0
  14. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  15. package/dist/admin/admin/src/components/RelativeTime.mjs +10 -1
  16. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/TopBanners.js +52 -0
  18. package/dist/admin/admin/src/components/TopBanners.js.map +1 -0
  19. package/dist/admin/admin/src/components/TopBanners.mjs +30 -0
  20. package/dist/admin/admin/src/components/TopBanners.mjs.map +1 -0
  21. package/dist/admin/admin/src/features/Tracking.js +28 -8
  22. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  23. package/dist/admin/admin/src/features/Tracking.mjs +29 -10
  24. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  25. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +4 -20
  26. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  27. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -20
  28. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  29. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js +59 -0
  30. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js.map +1 -0
  31. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs +37 -0
  32. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs.map +1 -0
  33. package/dist/admin/admin/src/translations/en.json.js +5 -0
  34. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  35. package/dist/admin/admin/src/translations/en.json.mjs +5 -0
  36. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  37. package/dist/admin/admin/src/utils/getFetchClient.js +3 -3
  38. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  39. package/dist/admin/admin/src/utils/getFetchClient.mjs +2 -2
  40. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  41. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +6 -1
  42. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  43. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +6 -1
  44. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  45. package/dist/admin/src/components/MediaLibraryBanner.d.ts +10 -1
  46. package/dist/admin/src/components/TopBanners.d.ts +8 -0
  47. package/dist/admin/src/features/Tracking.d.ts +12 -1
  48. package/dist/admin/src/layouts/useAuthenticatedAccessTracking.d.ts +6 -0
  49. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +5 -0
  50. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  51. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +8 -2
  52. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  53. package/dist/ee/server/src/controllers/authentication.d.ts.map +1 -1
  54. package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
  55. package/dist/ee/server/src/index.d.ts +4 -1
  56. package/dist/ee/server/src/index.d.ts.map +1 -1
  57. package/dist/ee/server/src/services/index.d.ts +4 -1
  58. package/dist/ee/server/src/services/index.d.ts.map +1 -1
  59. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  60. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  61. package/dist/ee/server/src/services/seat-enforcement.d.ts +3 -1
  62. package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
  63. package/dist/server/ee/server/src/controllers/admin.js +3 -4
  64. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  65. package/dist/server/ee/server/src/controllers/admin.mjs +3 -4
  66. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  67. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js +2 -2
  68. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  69. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +2 -2
  70. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  71. package/dist/server/ee/server/src/controllers/authentication.js +11 -11
  72. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  73. package/dist/server/ee/server/src/controllers/authentication.mjs +11 -11
  74. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  75. package/dist/server/ee/server/src/controllers/user.js +7 -8
  76. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  77. package/dist/server/ee/server/src/controllers/user.mjs +8 -9
  78. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  79. package/dist/server/ee/server/src/services/metrics.js +9 -7
  80. package/dist/server/ee/server/src/services/metrics.js.map +1 -1
  81. package/dist/server/ee/server/src/services/metrics.mjs +9 -7
  82. package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
  83. package/dist/server/ee/server/src/services/persist-tables.js +3 -4
  84. package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
  85. package/dist/server/ee/server/src/services/persist-tables.mjs +3 -4
  86. package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
  87. package/dist/server/ee/server/src/services/role.js +2 -2
  88. package/dist/server/ee/server/src/services/role.js.map +1 -1
  89. package/dist/server/ee/server/src/services/role.mjs +1 -1
  90. package/dist/server/ee/server/src/services/role.mjs.map +1 -1
  91. package/dist/server/ee/server/src/services/seat-enforcement.js +20 -20
  92. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  93. package/dist/server/ee/server/src/services/seat-enforcement.mjs +20 -20
  94. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  95. package/dist/server/ee/server/src/services/user.js +1 -2
  96. package/dist/server/ee/server/src/services/user.js.map +1 -1
  97. package/dist/server/ee/server/src/services/user.mjs +2 -3
  98. package/dist/server/ee/server/src/services/user.mjs.map +1 -1
  99. package/dist/server/ee/server/src/utils/sso-lock.js +2 -2
  100. package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
  101. package/dist/server/ee/server/src/utils/sso-lock.mjs +1 -1
  102. package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
  103. package/dist/server/server/src/audit-logs/admin-users.js +3 -3
  104. package/dist/server/server/src/audit-logs/admin-users.js.map +1 -1
  105. package/dist/server/server/src/audit-logs/admin-users.mjs +2 -2
  106. package/dist/server/server/src/audit-logs/admin-users.mjs.map +1 -1
  107. package/dist/server/server/src/audit-logs/tokens.js +3 -3
  108. package/dist/server/server/src/audit-logs/tokens.js.map +1 -1
  109. package/dist/server/server/src/audit-logs/tokens.mjs +2 -2
  110. package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -1
  111. package/dist/server/server/src/audit-logs/webhooks.js +2 -2
  112. package/dist/server/server/src/audit-logs/webhooks.js.map +1 -1
  113. package/dist/server/server/src/audit-logs/webhooks.mjs +1 -1
  114. package/dist/server/server/src/audit-logs/webhooks.mjs.map +1 -1
  115. package/dist/server/server/src/bootstrap.js +6 -4
  116. package/dist/server/server/src/bootstrap.js.map +1 -1
  117. package/dist/server/server/src/bootstrap.mjs +6 -4
  118. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  119. package/dist/server/server/src/controllers/admin-token.js +8 -8
  120. package/dist/server/server/src/controllers/admin-token.js.map +1 -1
  121. package/dist/server/server/src/controllers/admin-token.mjs +4 -4
  122. package/dist/server/server/src/controllers/admin-token.mjs.map +1 -1
  123. package/dist/server/server/src/controllers/admin.js +3 -5
  124. package/dist/server/server/src/controllers/admin.js.map +1 -1
  125. package/dist/server/server/src/controllers/admin.mjs +2 -4
  126. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  127. package/dist/server/server/src/controllers/api-token.js +8 -8
  128. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  129. package/dist/server/server/src/controllers/api-token.mjs +4 -4
  130. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  131. package/dist/server/server/src/controllers/formatters/conditions.js +2 -2
  132. package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
  133. package/dist/server/server/src/controllers/formatters/conditions.mjs +2 -2
  134. package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
  135. package/dist/server/server/src/controllers/transfer/index.js +2 -2
  136. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  137. package/dist/server/server/src/controllers/transfer/index.mjs +2 -2
  138. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  139. package/dist/server/server/src/controllers/transfer/token.js +8 -8
  140. package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
  141. package/dist/server/server/src/controllers/transfer/token.mjs +4 -4
  142. package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
  143. package/dist/server/server/src/domain/action/index.js +18 -16
  144. package/dist/server/server/src/domain/action/index.js.map +1 -1
  145. package/dist/server/server/src/domain/action/index.mjs +16 -14
  146. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  147. package/dist/server/server/src/domain/action/provider.mjs +4 -4
  148. package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
  149. package/dist/server/server/src/domain/condition/index.js +7 -4
  150. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  151. package/dist/server/server/src/domain/condition/index.mjs +7 -4
  152. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  153. package/dist/server/server/src/domain/permission/index.js +24 -15
  154. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  155. package/dist/server/server/src/domain/permission/index.mjs +21 -12
  156. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  157. package/dist/server/server/src/middlewares/rateLimit.js +5 -5
  158. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  159. package/dist/server/server/src/middlewares/rateLimit.mjs +4 -4
  160. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  161. package/dist/server/server/src/register.js +6 -0
  162. package/dist/server/server/src/register.js.map +1 -1
  163. package/dist/server/server/src/register.mjs +6 -0
  164. package/dist/server/server/src/register.mjs.map +1 -1
  165. package/dist/server/server/src/services/action.js +1 -2
  166. package/dist/server/server/src/services/action.js.map +1 -1
  167. package/dist/server/server/src/services/action.mjs +1 -2
  168. package/dist/server/server/src/services/action.mjs.map +1 -1
  169. package/dist/server/server/src/services/api-token.js +61 -49
  170. package/dist/server/server/src/services/api-token.js.map +1 -1
  171. package/dist/server/server/src/services/api-token.mjs +53 -41
  172. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  173. package/dist/server/server/src/services/condition.js +2 -2
  174. package/dist/server/server/src/services/condition.js.map +1 -1
  175. package/dist/server/server/src/services/condition.mjs +1 -1
  176. package/dist/server/server/src/services/condition.mjs.map +1 -1
  177. package/dist/server/server/src/services/content-type.js +5 -4
  178. package/dist/server/server/src/services/content-type.js.map +1 -1
  179. package/dist/server/server/src/services/content-type.mjs +8 -7
  180. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  181. package/dist/server/server/src/services/homepage.js +2 -1
  182. package/dist/server/server/src/services/homepage.js.map +1 -1
  183. package/dist/server/server/src/services/homepage.mjs +2 -1
  184. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  185. package/dist/server/server/src/services/passport/local-strategy.js +2 -2
  186. package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
  187. package/dist/server/server/src/services/passport/local-strategy.mjs +1 -1
  188. package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
  189. package/dist/server/server/src/services/passport.js +1 -2
  190. package/dist/server/server/src/services/passport.js.map +1 -1
  191. package/dist/server/server/src/services/passport.mjs +1 -2
  192. package/dist/server/server/src/services/passport.mjs.map +1 -1
  193. package/dist/server/server/src/services/permission/engine.js +4 -4
  194. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  195. package/dist/server/server/src/services/permission/engine.mjs +2 -2
  196. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  197. package/dist/server/server/src/services/permission/permissions-manager/index.js +2 -3
  198. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  199. package/dist/server/server/src/services/permission/permissions-manager/index.mjs +1 -2
  200. package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
  201. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +6 -6
  202. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  203. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +4 -4
  204. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  205. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +47 -41
  206. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  207. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +44 -38
  208. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  209. package/dist/server/server/src/services/permission/permissions-manager/validate.js +30 -26
  210. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  211. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +28 -24
  212. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  213. package/dist/server/server/src/services/permission/queries.js +9 -9
  214. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  215. package/dist/server/server/src/services/permission/queries.mjs +9 -9
  216. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  217. package/dist/server/server/src/services/permission/rename-fields.js +118 -0
  218. package/dist/server/server/src/services/permission/rename-fields.js.map +1 -0
  219. package/dist/server/server/src/services/permission/rename-fields.mjs +116 -0
  220. package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -0
  221. package/dist/server/server/src/services/permission/sections-builder/index.js +2 -2
  222. package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
  223. package/dist/server/server/src/services/permission/sections-builder/index.mjs +2 -2
  224. package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
  225. package/dist/server/server/src/services/permission/sections-builder/section.js +1 -2
  226. package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
  227. package/dist/server/server/src/services/permission/sections-builder/section.mjs +1 -2
  228. package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
  229. package/dist/server/server/src/services/permission/sections-builder/utils.js +6 -6
  230. package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
  231. package/dist/server/server/src/services/permission/sections-builder/utils.mjs +4 -4
  232. package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
  233. package/dist/server/server/src/services/role.js +20 -19
  234. package/dist/server/server/src/services/role.js.map +1 -1
  235. package/dist/server/server/src/services/role.mjs +20 -19
  236. package/dist/server/server/src/services/role.mjs.map +1 -1
  237. package/dist/server/server/src/services/transfer/token.js +20 -16
  238. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  239. package/dist/server/server/src/services/transfer/token.mjs +14 -10
  240. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  241. package/dist/server/server/src/services/user.js +2 -3
  242. package/dist/server/server/src/services/user.js.map +1 -1
  243. package/dist/server/server/src/services/user.mjs +3 -4
  244. package/dist/server/server/src/services/user.mjs.map +1 -1
  245. package/dist/server/server/src/strategies/api-token-utils.js +2 -3
  246. package/dist/server/server/src/strategies/api-token-utils.js.map +1 -1
  247. package/dist/server/server/src/strategies/api-token-utils.mjs +2 -3
  248. package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -1
  249. package/dist/server/server/src/strategies/content-api-token.js +3 -3
  250. package/dist/server/server/src/strategies/content-api-token.js.map +1 -1
  251. package/dist/server/server/src/strategies/content-api-token.mjs +1 -1
  252. package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -1
  253. package/dist/server/server/src/strategies/data-transfer.js +4 -4
  254. package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
  255. package/dist/server/server/src/strategies/data-transfer.mjs +3 -3
  256. package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
  257. package/dist/server/server/src/validation/common-validators.js +9 -10
  258. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  259. package/dist/server/server/src/validation/common-validators.mjs +13 -14
  260. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  261. package/dist/server/server/src/validation/user.js +1 -2
  262. package/dist/server/server/src/validation/user.js.map +1 -1
  263. package/dist/server/server/src/validation/user.mjs +1 -2
  264. package/dist/server/server/src/validation/user.mjs.map +1 -1
  265. package/dist/server/src/audit-logs/tokens.d.ts.map +1 -1
  266. package/dist/server/src/bootstrap.d.ts.map +1 -1
  267. package/dist/server/src/controllers/admin-token.d.ts.map +1 -1
  268. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  269. package/dist/server/src/controllers/api-token.d.ts.map +1 -1
  270. package/dist/server/src/controllers/formatters/conditions.d.ts +1 -1
  271. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  272. package/dist/server/src/controllers/homepage.d.ts +1 -1
  273. package/dist/server/src/controllers/index.d.ts +1 -1
  274. package/dist/server/src/controllers/transfer/index.d.ts.map +1 -1
  275. package/dist/server/src/controllers/transfer/token.d.ts.map +1 -1
  276. package/dist/server/src/domain/action/index.d.ts +1 -0
  277. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  278. package/dist/server/src/domain/condition/index.d.ts +2 -2
  279. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  280. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  281. package/dist/server/src/index.d.ts +3 -3
  282. package/dist/server/src/index.d.ts.map +1 -1
  283. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  284. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  285. package/dist/server/src/register.d.ts.map +1 -1
  286. package/dist/server/src/services/action.d.ts.map +1 -1
  287. package/dist/server/src/services/api-token.d.ts.map +1 -1
  288. package/dist/server/src/services/condition.d.ts.map +1 -1
  289. package/dist/server/src/services/content-type.d.ts.map +1 -1
  290. package/dist/server/src/services/homepage.d.ts +1 -1
  291. package/dist/server/src/services/homepage.d.ts.map +1 -1
  292. package/dist/server/src/services/index.d.ts +2 -2
  293. package/dist/server/src/services/index.d.ts.map +1 -1
  294. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  295. package/dist/server/src/services/passport.d.ts.map +1 -1
  296. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  297. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  298. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  299. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  300. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  301. package/dist/server/src/services/permission/rename-fields.d.ts +21 -0
  302. package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -0
  303. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  304. package/dist/server/src/services/permission/sections-builder/utils.d.ts +1 -1
  305. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  306. package/dist/server/src/services/role.d.ts +1 -1
  307. package/dist/server/src/services/role.d.ts.map +1 -1
  308. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  309. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  310. package/dist/server/src/validation/user.d.ts.map +1 -1
  311. package/package.json +9 -9
@@ -1,5 +1,5 @@
1
+ import { differenceWith, omit, pick, difference, isEqual, isEmpty, isNumber } from 'lodash';
1
2
  import crypto from 'crypto';
2
- import { pick, uniq, differenceWith, prop, omit, map, difference, isEqual, isArray, isEmpty, isNumber, isNil } from 'lodash/fp';
3
3
  import { errors, emitAudit } from '@strapi/utils';
4
4
  import constants from './constants.mjs';
5
5
  import { getService } from '../utils/index.mjs';
@@ -93,7 +93,7 @@ const UPDATABLE_FIELDS = [
93
93
  throw new ValidationError('Non-custom tokens should not reference permissions');
94
94
  }
95
95
  // Custom type tokens should always have permissions attached to them
96
- if (type === constants.API_TOKEN_TYPE.CUSTOM && !isArray(permissions)) {
96
+ if (type === constants.API_TOKEN_TYPE.CUSTOM && !Array.isArray(permissions)) {
97
97
  throw new ValidationError('Missing permissions attribute for custom token');
98
98
  }
99
99
  // Permissions provided for a custom type token should be valid/registered permissions UID
@@ -108,7 +108,7 @@ const UPDATABLE_FIELDS = [
108
108
  /**
109
109
  * Check if a token's lifespan is valid
110
110
  */ const isValidLifespan = (lifespan)=>{
111
- if (isNil(lifespan)) {
111
+ if (lifespan == null) {
112
112
  return true;
113
113
  }
114
114
  if (!isNumber(lifespan) || !Object.values(constants.API_TOKEN_LIFESPANS).includes(lifespan)) {
@@ -226,7 +226,9 @@ const UPDATABLE_FIELDS = [
226
226
  const anyUserPermHasAllFields = matchingUserPerms.some((p)=>!p.properties?.fields || p.properties.fields.length === 0);
227
227
  const requestedFields = requested.properties?.fields;
228
228
  if (!anyUserPermHasAllFields) {
229
- const effectiveUserFields = uniq(matchingUserPerms.flatMap((p)=>p.properties?.fields || []));
229
+ const effectiveUserFields = [
230
+ ...new Set(matchingUserPerms.flatMap((p)=>p.properties?.fields || []))
231
+ ];
230
232
  // When the owner is field-restricted, omitting fields would widen access to all fields.
231
233
  // Force explicit field selection so token scope can't exceed the owner's ceiling.
232
234
  if (requestedFields === undefined || requestedFields === null) {
@@ -246,7 +248,9 @@ const UPDATABLE_FIELDS = [
246
248
  // If any matching user perm is unconditional → token gets no conditions.
247
249
  // Otherwise → union of conditions across matching perms.
248
250
  const anyUserPermIsUnconditional = matchingUserPerms.some((p)=>!p.conditions || p.conditions.length === 0);
249
- const enforcedConditions = anyUserPermIsUnconditional ? [] : uniq(matchingUserPerms.flatMap((p)=>p.conditions || []));
251
+ const enforcedConditions = anyUserPermIsUnconditional ? [] : [
252
+ ...new Set(matchingUserPerms.flatMap((p)=>p.conditions || []))
253
+ ];
250
254
  return {
251
255
  ...requested,
252
256
  conditions: enforcedConditions
@@ -286,7 +290,7 @@ const UPDATABLE_FIELDS = [
286
290
  'action',
287
291
  'actionParameters'
288
292
  ];
289
- const pickComparableFields = pick(COMPARABLE_FIELDS);
293
+ const pickComparableFields = (permission)=>pick(permission, COMPARABLE_FIELDS);
290
294
  /**
291
295
  * Helper to clean JSON (remove undefined values)
292
296
  */ const jsonClean = (data)=>JSON.parse(JSON.stringify(data));
@@ -317,10 +321,10 @@ const pickComparableFields = pick(COMPARABLE_FIELDS);
317
321
  }
318
322
  }
319
323
  });
320
- const permissionsToAdd = differenceWith(arePermissionsEqual, permissionsWithToken, existingPermissions);
321
- const permissionsToDelete = differenceWith(arePermissionsEqual, existingPermissions, permissionsWithToken);
324
+ const permissionsToAdd = differenceWith(permissionsWithToken, existingPermissions, arePermissionsEqual);
325
+ const permissionsToDelete = differenceWith(existingPermissions, permissionsWithToken, arePermissionsEqual);
322
326
  if (permissionsToDelete.length > 0) {
323
- await getService('permission').deleteByIds(permissionsToDelete.map(prop('id')));
327
+ await getService('permission').deleteByIds(permissionsToDelete.map((permission)=>permission?.id));
324
328
  }
325
329
  if (permissionsToAdd.length > 0) {
326
330
  await createApiTokenAdminPermissions(tokenId, permissionsToAdd);
@@ -357,7 +361,9 @@ const pickComparableFields = pick(COMPARABLE_FIELDS);
357
361
  const anyUserPermHasAllFields = matchingUserPerms.some((p)=>!p.properties?.fields || p.properties.fields.length === 0);
358
362
  const tokenFields = tokenPerm.properties?.fields;
359
363
  const fieldCeilingExceeded = !anyUserPermHasAllFields && tokenFields !== undefined && tokenFields !== null && tokenFields.length > 0 && (()=>{
360
- const effectiveUserFields = uniq(matchingUserPerms.flatMap((p)=>p.properties?.fields || []));
364
+ const effectiveUserFields = [
365
+ ...new Set(matchingUserPerms.flatMap((p)=>p.properties?.fields || []))
366
+ ];
361
367
  return tokenFields.some((f)=>!effectiveUserFields.includes(f));
362
368
  })();
363
369
  if (fieldCeilingExceeded) {
@@ -366,7 +372,9 @@ const pickComparableFields = pick(COMPARABLE_FIELDS);
366
372
  }
367
373
  // Condition: force conditions to be the ones of the user permission(s)
368
374
  const anyUserPermIsUnconditional = matchingUserPerms.some((p)=>!p.conditions || p.conditions.length === 0);
369
- const enforcedConditions = anyUserPermIsUnconditional ? [] : uniq(matchingUserPerms.flatMap((p)=>p.conditions || []));
375
+ const enforcedConditions = anyUserPermIsUnconditional ? [] : [
376
+ ...new Set(matchingUserPerms.flatMap((p)=>p.conditions || []))
377
+ ];
370
378
  const currentConditions = tokenPerm.conditions || [];
371
379
  const conditionsChanged = enforcedConditions.length !== currentConditions.length || enforcedConditions.some((c)=>!currentConditions.includes(c));
372
380
  if (conditionsChanged) {
@@ -448,7 +456,7 @@ const pickComparableFields = pick(COMPARABLE_FIELDS);
448
456
  /**
449
457
  * Flatten a token's database permissions objects to an array of strings
450
458
  */ const flattenTokenPermissions = (permissions)=>{
451
- return isArray(permissions) ? map('action', permissions) : [];
459
+ return Array.isArray(permissions) ? Array.from(permissions, (permission)=>permission?.action) : [];
452
460
  };
453
461
  /**
454
462
  * Get a token.
@@ -473,14 +481,14 @@ const pickComparableFields = pick(COMPARABLE_FIELDS);
473
481
  }
474
482
  // Tokens created before kind introduction case: force kind to be content-api
475
483
  const computedKind = token.kind ?? 'content-api';
476
- const result = omit([
484
+ const result = omit(token, [
477
485
  'accessKey',
478
486
  'encryptedKey',
479
487
  'type',
480
488
  'permissions',
481
489
  'adminPermissions',
482
490
  'adminUserOwner'
483
- ], token);
491
+ ]);
484
492
  if (computedKind === 'content-api') {
485
493
  Object.assign(result, {
486
494
  kind: 'content-api',
@@ -574,7 +582,7 @@ const authenticateAdminToken = async (accessToken)=>{
574
582
  const getExpirationFields = (lifespan)=>{
575
583
  // it must be nil or a finite number >= 0
576
584
  const isValidNumber = isNumber(lifespan) && Number.isFinite(lifespan) && lifespan > 0;
577
- if (!isValidNumber && !isNil(lifespan)) {
585
+ if (!isValidNumber && lifespan != null) {
578
586
  throw new ValidationError('lifespan must be a positive number or null');
579
587
  }
580
588
  return {
@@ -598,11 +606,11 @@ const getExpirationFields = (lifespan)=>{
598
606
  select: SELECT_FIELDS,
599
607
  populate: POPULATE_FIELDS,
600
608
  data: {
601
- ...omit([
609
+ ...omit(attributes, [
602
610
  'permissions',
603
611
  'adminPermissions',
604
612
  'adminUserOwner'
605
- ], attributes),
613
+ ]),
606
614
  accessKey: hash(accessKey),
607
615
  encryptedKey,
608
616
  adminUserOwner: null,
@@ -616,7 +624,9 @@ const getExpirationFields = (lifespan)=>{
616
624
  // If this is a custom type token, create the related content-API permissions
617
625
  if (castedContentApiApiTokenBody.type === constants.API_TOKEN_TYPE.CUSTOM) {
618
626
  // TODO: createMany doesn't seem to create relation properly, implement a better way rather than a ton of queries
619
- await Promise.all(uniq(castedContentApiApiTokenBody.permissions).map((action)=>strapi.db.query('admin::api-token-permission').create({
627
+ await Promise.all([
628
+ ...new Set(castedContentApiApiTokenBody.permissions)
629
+ ].map((action)=>strapi.db.query('admin::api-token-permission').create({
620
630
  data: {
621
631
  action,
622
632
  token: apiToken
@@ -644,10 +654,10 @@ const getExpirationFields = (lifespan)=>{
644
654
  }
645
655
  });
646
656
  // Casted to any to avoid complex type duplication
647
- return omit([
657
+ return omit(result, [
648
658
  'adminPermissions',
649
659
  'adminUserOwner'
650
- ], result);
660
+ ]);
651
661
  }
652
662
  // kind === 'admin'
653
663
  assertAdminKindFields(attributes);
@@ -670,11 +680,11 @@ const getExpirationFields = (lifespan)=>{
670
680
  select: SELECT_FIELDS,
671
681
  populate: POPULATE_FIELDS,
672
682
  data: {
673
- ...omit([
683
+ ...omit(attributes, [
674
684
  'permissions',
675
685
  'adminPermissions',
676
686
  'adminUserOwner'
677
- ], attributes),
687
+ ]),
678
688
  accessKey: hash(accessKey),
679
689
  encryptedKey,
680
690
  adminUserOwner: ownerId,
@@ -709,9 +719,9 @@ const getExpirationFields = (lifespan)=>{
709
719
  });
710
720
  // Casted to any to avoid complex type duplication
711
721
  return {
712
- ...omit([
722
+ ...omit(result, [
713
723
  'permissions'
714
- ], result),
724
+ ]),
715
725
  adminUserOwner: toAdminTokenOwner(result.adminUserOwner)
716
726
  };
717
727
  };
@@ -757,9 +767,9 @@ const regenerate = async (id)=>{
757
767
  }
758
768
  });
759
769
  return {
760
- ...omit([
770
+ ...omit(apiToken, [
761
771
  'adminUserOwner'
762
- ], apiToken),
772
+ ]),
763
773
  kind: apiToken.kind ?? 'content-api',
764
774
  accessKey
765
775
  };
@@ -829,18 +839,18 @@ For security reasons, prefer storing the secret in an environment variable and r
829
839
  if (!tokens) {
830
840
  return tokens;
831
841
  }
832
- return tokens.map((token)=>token.kind === null || token.kind === 'content-api' ? omit([
833
- 'adminPermissions',
834
- 'adminUserOwner'
835
- ], {
842
+ return tokens.map((token)=>token.kind === null || token.kind === 'content-api' ? omit({
836
843
  ...token,
837
844
  // Tokens created before kind introduction case: force kind to be content-api
838
845
  kind: 'content-api',
839
846
  permissions: flattenTokenPermissions(token.permissions)
840
- }) : {
841
- ...omit([
847
+ }, [
848
+ 'adminPermissions',
849
+ 'adminUserOwner'
850
+ ]) : {
851
+ ...omit(token, [
842
852
  'permissions'
843
- ], token),
853
+ ]),
844
854
  adminUserOwner: token.adminUserOwner !== null && token.adminUserOwner !== undefined ? toAdminTokenOwner(token.adminUserOwner) : null
845
855
  });
846
856
  };
@@ -892,14 +902,14 @@ For security reasons, prefer storing the secret in an environment variable and r
892
902
  };
893
903
  }
894
904
  // content-api tokens (including legacy null-kind rows): normalise shape
895
- return omit([
896
- 'adminPermissions',
897
- 'adminUserOwner'
898
- ], {
905
+ return omit({
899
906
  ...deletedToken,
900
907
  kind: 'content-api',
901
908
  permissions: flattenTokenPermissions(deletedToken.permissions)
902
- });
909
+ }, [
910
+ 'adminPermissions',
911
+ 'adminUserOwner'
912
+ ]);
903
913
  };
904
914
  /**
905
915
  * Update a token and its permissions
@@ -992,7 +1002,7 @@ For security reasons, prefer storing the secret in an environment variable and r
992
1002
  }
993
1003
  }
994
1004
  }
995
- const baseData = pick(UPDATABLE_FIELDS, attributes);
1005
+ const baseData = pick(attributes, UPDATABLE_FIELDS);
996
1006
  // Migrate legacy null-kind rows to the explicit value on first write
997
1007
  if (originalToken.kind === null) {
998
1008
  baseData.kind = 'content-api';
@@ -1009,8 +1019,10 @@ For security reasons, prefer storing the secret in an environment variable and r
1009
1019
  // custom tokens need to have their permissions updated as well
1010
1020
  if (updatedToken.type === constants.API_TOKEN_TYPE.CUSTOM && incomingPermissions !== undefined) {
1011
1021
  const currentPermissionsResult = await strapi.db.query('admin::api-token').load(updatedToken, 'permissions');
1012
- const currentPermissions = map('action', currentPermissionsResult || []);
1013
- const newPermissions = uniq(incomingPermissions || []);
1022
+ const currentPermissions = Array.from(currentPermissionsResult || [], (permission)=>permission?.action);
1023
+ const newPermissions = [
1024
+ ...new Set(incomingPermissions || [])
1025
+ ];
1014
1026
  const actionsToDelete = difference(currentPermissions, newPermissions);
1015
1027
  const actionsToAdd = difference(newPermissions, currentPermissions);
1016
1028
  // TODO: improve efficiency here