@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,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
+ var _ = require('lodash');
3
4
  var crypto = require('crypto');
4
- var fp = require('lodash/fp');
5
5
  var utils = require('@strapi/utils');
6
6
  var constants = require('./constants.js');
7
7
  var index = require('../utils/index.js');
@@ -95,18 +95,18 @@ const UPDATABLE_FIELDS = [
95
95
  * Assert that a token's permissions attribute is valid for its type
96
96
  */ const assertCustomTokenPermissionsValidity = (type, permissions)=>{
97
97
  // Ensure non-custom tokens doesn't have permissions
98
- if (type !== constants.API_TOKEN_TYPE.CUSTOM && !fp.isEmpty(permissions)) {
98
+ if (type !== constants.API_TOKEN_TYPE.CUSTOM && !_.isEmpty(permissions)) {
99
99
  throw new ValidationError('Non-custom tokens should not reference permissions');
100
100
  }
101
101
  // Custom type tokens should always have permissions attached to them
102
- if (type === constants.API_TOKEN_TYPE.CUSTOM && !fp.isArray(permissions)) {
102
+ if (type === constants.API_TOKEN_TYPE.CUSTOM && !Array.isArray(permissions)) {
103
103
  throw new ValidationError('Missing permissions attribute for custom token');
104
104
  }
105
105
  // Permissions provided for a custom type token should be valid/registered permissions UID
106
106
  if (type === constants.API_TOKEN_TYPE.CUSTOM) {
107
107
  const validPermissions = strapi.contentAPI.permissions.providers.action.keys();
108
- const invalidPermissions = fp.difference(permissions, validPermissions);
109
- if (!fp.isEmpty(invalidPermissions)) {
108
+ const invalidPermissions = _.difference(permissions, validPermissions);
109
+ if (!_.isEmpty(invalidPermissions)) {
110
110
  throw new ValidationError(`Unknown permissions provided: ${invalidPermissions.join(', ')}`);
111
111
  }
112
112
  }
@@ -114,10 +114,10 @@ const UPDATABLE_FIELDS = [
114
114
  /**
115
115
  * Check if a token's lifespan is valid
116
116
  */ const isValidLifespan = (lifespan)=>{
117
- if (fp.isNil(lifespan)) {
117
+ if (lifespan == null) {
118
118
  return true;
119
119
  }
120
- if (!fp.isNumber(lifespan) || !Object.values(constants.API_TOKEN_LIFESPANS).includes(lifespan)) {
120
+ if (!_.isNumber(lifespan) || !Object.values(constants.API_TOKEN_LIFESPANS).includes(lifespan)) {
121
121
  return false;
122
122
  }
123
123
  return true;
@@ -232,7 +232,9 @@ const UPDATABLE_FIELDS = [
232
232
  const anyUserPermHasAllFields = matchingUserPerms.some((p)=>!p.properties?.fields || p.properties.fields.length === 0);
233
233
  const requestedFields = requested.properties?.fields;
234
234
  if (!anyUserPermHasAllFields) {
235
- const effectiveUserFields = fp.uniq(matchingUserPerms.flatMap((p)=>p.properties?.fields || []));
235
+ const effectiveUserFields = [
236
+ ...new Set(matchingUserPerms.flatMap((p)=>p.properties?.fields || []))
237
+ ];
236
238
  // When the owner is field-restricted, omitting fields would widen access to all fields.
237
239
  // Force explicit field selection so token scope can't exceed the owner's ceiling.
238
240
  if (requestedFields === undefined || requestedFields === null) {
@@ -252,7 +254,9 @@ const UPDATABLE_FIELDS = [
252
254
  // If any matching user perm is unconditional → token gets no conditions.
253
255
  // Otherwise → union of conditions across matching perms.
254
256
  const anyUserPermIsUnconditional = matchingUserPerms.some((p)=>!p.conditions || p.conditions.length === 0);
255
- const enforcedConditions = anyUserPermIsUnconditional ? [] : fp.uniq(matchingUserPerms.flatMap((p)=>p.conditions || []));
257
+ const enforcedConditions = anyUserPermIsUnconditional ? [] : [
258
+ ...new Set(matchingUserPerms.flatMap((p)=>p.conditions || []))
259
+ ];
256
260
  return {
257
261
  ...requested,
258
262
  conditions: enforcedConditions
@@ -292,7 +296,7 @@ const UPDATABLE_FIELDS = [
292
296
  'action',
293
297
  'actionParameters'
294
298
  ];
295
- const pickComparableFields = fp.pick(COMPARABLE_FIELDS);
299
+ const pickComparableFields = (permission)=>_.pick(permission, COMPARABLE_FIELDS);
296
300
  /**
297
301
  * Helper to clean JSON (remove undefined values)
298
302
  */ const jsonClean = (data)=>JSON.parse(JSON.stringify(data));
@@ -300,7 +304,7 @@ const pickComparableFields = fp.pick(COMPARABLE_FIELDS);
300
304
  * Compare two permissions for equality
301
305
  */ const arePermissionsEqual = (p1, p2)=>{
302
306
  if (p1.action === p2.action) {
303
- return fp.isEqual(jsonClean(pickComparableFields(p1)), jsonClean(pickComparableFields(p2)));
307
+ return _.isEqual(jsonClean(pickComparableFields(p1)), jsonClean(pickComparableFields(p2)));
304
308
  }
305
309
  return false;
306
310
  };
@@ -323,10 +327,10 @@ const pickComparableFields = fp.pick(COMPARABLE_FIELDS);
323
327
  }
324
328
  }
325
329
  });
326
- const permissionsToAdd = fp.differenceWith(arePermissionsEqual, permissionsWithToken, existingPermissions);
327
- const permissionsToDelete = fp.differenceWith(arePermissionsEqual, existingPermissions, permissionsWithToken);
330
+ const permissionsToAdd = _.differenceWith(permissionsWithToken, existingPermissions, arePermissionsEqual);
331
+ const permissionsToDelete = _.differenceWith(existingPermissions, permissionsWithToken, arePermissionsEqual);
328
332
  if (permissionsToDelete.length > 0) {
329
- await index.getService('permission').deleteByIds(permissionsToDelete.map(fp.prop('id')));
333
+ await index.getService('permission').deleteByIds(permissionsToDelete.map((permission)=>permission?.id));
330
334
  }
331
335
  if (permissionsToAdd.length > 0) {
332
336
  await createApiTokenAdminPermissions(tokenId, permissionsToAdd);
@@ -363,7 +367,9 @@ const pickComparableFields = fp.pick(COMPARABLE_FIELDS);
363
367
  const anyUserPermHasAllFields = matchingUserPerms.some((p)=>!p.properties?.fields || p.properties.fields.length === 0);
364
368
  const tokenFields = tokenPerm.properties?.fields;
365
369
  const fieldCeilingExceeded = !anyUserPermHasAllFields && tokenFields !== undefined && tokenFields !== null && tokenFields.length > 0 && (()=>{
366
- const effectiveUserFields = fp.uniq(matchingUserPerms.flatMap((p)=>p.properties?.fields || []));
370
+ const effectiveUserFields = [
371
+ ...new Set(matchingUserPerms.flatMap((p)=>p.properties?.fields || []))
372
+ ];
367
373
  return tokenFields.some((f)=>!effectiveUserFields.includes(f));
368
374
  })();
369
375
  if (fieldCeilingExceeded) {
@@ -372,7 +378,9 @@ const pickComparableFields = fp.pick(COMPARABLE_FIELDS);
372
378
  }
373
379
  // Condition: force conditions to be the ones of the user permission(s)
374
380
  const anyUserPermIsUnconditional = matchingUserPerms.some((p)=>!p.conditions || p.conditions.length === 0);
375
- const enforcedConditions = anyUserPermIsUnconditional ? [] : fp.uniq(matchingUserPerms.flatMap((p)=>p.conditions || []));
381
+ const enforcedConditions = anyUserPermIsUnconditional ? [] : [
382
+ ...new Set(matchingUserPerms.flatMap((p)=>p.conditions || []))
383
+ ];
376
384
  const currentConditions = tokenPerm.conditions || [];
377
385
  const conditionsChanged = enforcedConditions.length !== currentConditions.length || enforcedConditions.some((c)=>!currentConditions.includes(c));
378
386
  if (conditionsChanged) {
@@ -454,7 +462,7 @@ const pickComparableFields = fp.pick(COMPARABLE_FIELDS);
454
462
  /**
455
463
  * Flatten a token's database permissions objects to an array of strings
456
464
  */ const flattenTokenPermissions = (permissions)=>{
457
- return fp.isArray(permissions) ? fp.map('action', permissions) : [];
465
+ return Array.isArray(permissions) ? Array.from(permissions, (permission)=>permission?.action) : [];
458
466
  };
459
467
  /**
460
468
  * Get a token.
@@ -479,14 +487,14 @@ const pickComparableFields = fp.pick(COMPARABLE_FIELDS);
479
487
  }
480
488
  // Tokens created before kind introduction case: force kind to be content-api
481
489
  const computedKind = token.kind ?? 'content-api';
482
- const result = fp.omit([
490
+ const result = _.omit(token, [
483
491
  'accessKey',
484
492
  'encryptedKey',
485
493
  'type',
486
494
  'permissions',
487
495
  'adminPermissions',
488
496
  'adminUserOwner'
489
- ], token);
497
+ ]);
490
498
  if (computedKind === 'content-api') {
491
499
  Object.assign(result, {
492
500
  kind: 'content-api',
@@ -579,8 +587,8 @@ const authenticateAdminToken = async (accessToken)=>{
579
587
  };
580
588
  const getExpirationFields = (lifespan)=>{
581
589
  // it must be nil or a finite number >= 0
582
- const isValidNumber = fp.isNumber(lifespan) && Number.isFinite(lifespan) && lifespan > 0;
583
- if (!isValidNumber && !fp.isNil(lifespan)) {
590
+ const isValidNumber = _.isNumber(lifespan) && Number.isFinite(lifespan) && lifespan > 0;
591
+ if (!isValidNumber && lifespan != null) {
584
592
  throw new ValidationError('lifespan must be a positive number or null');
585
593
  }
586
594
  return {
@@ -604,11 +612,11 @@ const getExpirationFields = (lifespan)=>{
604
612
  select: SELECT_FIELDS,
605
613
  populate: POPULATE_FIELDS,
606
614
  data: {
607
- ...fp.omit([
615
+ ..._.omit(attributes, [
608
616
  'permissions',
609
617
  'adminPermissions',
610
618
  'adminUserOwner'
611
- ], attributes),
619
+ ]),
612
620
  accessKey: hash(accessKey),
613
621
  encryptedKey,
614
622
  adminUserOwner: null,
@@ -622,7 +630,9 @@ const getExpirationFields = (lifespan)=>{
622
630
  // If this is a custom type token, create the related content-API permissions
623
631
  if (castedContentApiApiTokenBody.type === constants.API_TOKEN_TYPE.CUSTOM) {
624
632
  // TODO: createMany doesn't seem to create relation properly, implement a better way rather than a ton of queries
625
- await Promise.all(fp.uniq(castedContentApiApiTokenBody.permissions).map((action)=>strapi.db.query('admin::api-token-permission').create({
633
+ await Promise.all([
634
+ ...new Set(castedContentApiApiTokenBody.permissions)
635
+ ].map((action)=>strapi.db.query('admin::api-token-permission').create({
626
636
  data: {
627
637
  action,
628
638
  token: apiToken
@@ -650,10 +660,10 @@ const getExpirationFields = (lifespan)=>{
650
660
  }
651
661
  });
652
662
  // Casted to any to avoid complex type duplication
653
- return fp.omit([
663
+ return _.omit(result, [
654
664
  'adminPermissions',
655
665
  'adminUserOwner'
656
- ], result);
666
+ ]);
657
667
  }
658
668
  // kind === 'admin'
659
669
  assertAdminKindFields(attributes);
@@ -676,11 +686,11 @@ const getExpirationFields = (lifespan)=>{
676
686
  select: SELECT_FIELDS,
677
687
  populate: POPULATE_FIELDS,
678
688
  data: {
679
- ...fp.omit([
689
+ ..._.omit(attributes, [
680
690
  'permissions',
681
691
  'adminPermissions',
682
692
  'adminUserOwner'
683
- ], attributes),
693
+ ]),
684
694
  accessKey: hash(accessKey),
685
695
  encryptedKey,
686
696
  adminUserOwner: ownerId,
@@ -715,9 +725,9 @@ const getExpirationFields = (lifespan)=>{
715
725
  });
716
726
  // Casted to any to avoid complex type duplication
717
727
  return {
718
- ...fp.omit([
728
+ ..._.omit(result, [
719
729
  'permissions'
720
- ], result),
730
+ ]),
721
731
  adminUserOwner: toAdminTokenOwner(result.adminUserOwner)
722
732
  };
723
733
  };
@@ -763,9 +773,9 @@ const regenerate = async (id)=>{
763
773
  }
764
774
  });
765
775
  return {
766
- ...fp.omit([
776
+ ..._.omit(apiToken, [
767
777
  'adminUserOwner'
768
- ], apiToken),
778
+ ]),
769
779
  kind: apiToken.kind ?? 'content-api',
770
780
  accessKey
771
781
  };
@@ -835,18 +845,18 @@ For security reasons, prefer storing the secret in an environment variable and r
835
845
  if (!tokens) {
836
846
  return tokens;
837
847
  }
838
- return tokens.map((token)=>token.kind === null || token.kind === 'content-api' ? fp.omit([
839
- 'adminPermissions',
840
- 'adminUserOwner'
841
- ], {
848
+ return tokens.map((token)=>token.kind === null || token.kind === 'content-api' ? _.omit({
842
849
  ...token,
843
850
  // Tokens created before kind introduction case: force kind to be content-api
844
851
  kind: 'content-api',
845
852
  permissions: flattenTokenPermissions(token.permissions)
846
- }) : {
847
- ...fp.omit([
853
+ }, [
854
+ 'adminPermissions',
855
+ 'adminUserOwner'
856
+ ]) : {
857
+ ..._.omit(token, [
848
858
  'permissions'
849
- ], token),
859
+ ]),
850
860
  adminUserOwner: token.adminUserOwner !== null && token.adminUserOwner !== undefined ? toAdminTokenOwner(token.adminUserOwner) : null
851
861
  });
852
862
  };
@@ -898,14 +908,14 @@ For security reasons, prefer storing the secret in an environment variable and r
898
908
  };
899
909
  }
900
910
  // content-api tokens (including legacy null-kind rows): normalise shape
901
- return fp.omit([
902
- 'adminPermissions',
903
- 'adminUserOwner'
904
- ], {
911
+ return _.omit({
905
912
  ...deletedToken,
906
913
  kind: 'content-api',
907
914
  permissions: flattenTokenPermissions(deletedToken.permissions)
908
- });
915
+ }, [
916
+ 'adminPermissions',
917
+ 'adminUserOwner'
918
+ ]);
909
919
  };
910
920
  /**
911
921
  * Update a token and its permissions
@@ -998,7 +1008,7 @@ For security reasons, prefer storing the secret in an environment variable and r
998
1008
  }
999
1009
  }
1000
1010
  }
1001
- const baseData = fp.pick(UPDATABLE_FIELDS, attributes);
1011
+ const baseData = _.pick(attributes, UPDATABLE_FIELDS);
1002
1012
  // Migrate legacy null-kind rows to the explicit value on first write
1003
1013
  if (originalToken.kind === null) {
1004
1014
  baseData.kind = 'content-api';
@@ -1015,10 +1025,12 @@ For security reasons, prefer storing the secret in an environment variable and r
1015
1025
  // custom tokens need to have their permissions updated as well
1016
1026
  if (updatedToken.type === constants.API_TOKEN_TYPE.CUSTOM && incomingPermissions !== undefined) {
1017
1027
  const currentPermissionsResult = await strapi.db.query('admin::api-token').load(updatedToken, 'permissions');
1018
- const currentPermissions = fp.map('action', currentPermissionsResult || []);
1019
- const newPermissions = fp.uniq(incomingPermissions || []);
1020
- const actionsToDelete = fp.difference(currentPermissions, newPermissions);
1021
- const actionsToAdd = fp.difference(newPermissions, currentPermissions);
1028
+ const currentPermissions = Array.from(currentPermissionsResult || [], (permission)=>permission?.action);
1029
+ const newPermissions = [
1030
+ ...new Set(incomingPermissions || [])
1031
+ ];
1032
+ const actionsToDelete = _.difference(currentPermissions, newPermissions);
1033
+ const actionsToAdd = _.difference(newPermissions, currentPermissions);
1022
1034
  // TODO: improve efficiency here
1023
1035
  await Promise.all(actionsToDelete.map((action)=>strapi.db.query('admin::api-token-permission').delete({
1024
1036
  where: {