@strapi/admin 5.55.1 → 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 (388) 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/components/UpsellBanner.js +9 -16
  22. package/dist/admin/admin/src/components/UpsellBanner.js.map +1 -1
  23. package/dist/admin/admin/src/components/UpsellBanner.mjs +11 -18
  24. package/dist/admin/admin/src/components/UpsellBanner.mjs.map +1 -1
  25. package/dist/admin/admin/src/features/Tracking.js +28 -8
  26. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  27. package/dist/admin/admin/src/features/Tracking.mjs +29 -10
  28. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  29. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +4 -20
  30. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  31. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -20
  32. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  33. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js +59 -0
  34. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js.map +1 -0
  35. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs +37 -0
  36. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs.map +1 -0
  37. package/dist/admin/admin/src/render.js +4 -69
  38. package/dist/admin/admin/src/render.js.map +1 -1
  39. package/dist/admin/admin/src/render.mjs +4 -69
  40. package/dist/admin/admin/src/render.mjs.map +1 -1
  41. package/dist/admin/admin/src/translations/en.json.js +15 -0
  42. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  43. package/dist/admin/admin/src/translations/en.json.mjs +15 -0
  44. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  45. package/dist/admin/admin/src/utils/browserStrapi.js +93 -0
  46. package/dist/admin/admin/src/utils/browserStrapi.js.map +1 -0
  47. package/dist/admin/admin/src/utils/browserStrapi.mjs +91 -0
  48. package/dist/admin/admin/src/utils/browserStrapi.mjs.map +1 -0
  49. package/dist/admin/admin/src/utils/getFetchClient.js +3 -3
  50. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  51. package/dist/admin/admin/src/utils/getFetchClient.mjs +2 -2
  52. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  53. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.js +2 -1
  54. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.js.map +1 -1
  55. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.mjs +2 -1
  56. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.mjs.map +1 -1
  57. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +16 -1
  58. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  59. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +16 -1
  60. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  61. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js +3 -1
  62. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.js.map +1 -1
  63. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs +3 -1
  64. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getDisplayedFilters.mjs.map +1 -1
  65. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/legacyActions.js +64 -0
  66. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/legacyActions.js.map +1 -0
  67. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/legacyActions.mjs +60 -0
  68. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/legacyActions.mjs.map +1 -0
  69. package/dist/admin/ee/admin/src/services/auditLogs.js +2 -1
  70. package/dist/admin/ee/admin/src/services/auditLogs.js.map +1 -1
  71. package/dist/admin/ee/admin/src/services/auditLogs.mjs +2 -1
  72. package/dist/admin/ee/admin/src/services/auditLogs.mjs.map +1 -1
  73. package/dist/admin/src/components/MediaLibraryBanner.d.ts +10 -1
  74. package/dist/admin/src/components/SubNav.d.ts +2 -2
  75. package/dist/admin/src/components/TopBanners.d.ts +8 -0
  76. package/dist/admin/src/features/Tracking.d.ts +12 -1
  77. package/dist/admin/src/layouts/useAuthenticatedAccessTracking.d.ts +6 -0
  78. package/dist/admin/src/utils/browserStrapi.d.ts +11 -0
  79. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +15 -0
  80. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/legacyActions.d.ts +14 -0
  81. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +10 -1
  82. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  83. package/dist/ee/server/src/controllers/admin.d.ts +2 -28
  84. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  85. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +8 -2
  86. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  87. package/dist/ee/server/src/controllers/authentication.d.ts.map +1 -1
  88. package/dist/ee/server/src/controllers/index.d.ts +1 -28
  89. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  90. package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
  91. package/dist/ee/server/src/index.d.ts +6 -30
  92. package/dist/ee/server/src/index.d.ts.map +1 -1
  93. package/dist/ee/server/src/services/auth.d.ts +1 -1
  94. package/dist/ee/server/src/services/auth.d.ts.map +1 -1
  95. package/dist/ee/server/src/services/index.d.ts +5 -2
  96. package/dist/ee/server/src/services/index.d.ts.map +1 -1
  97. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  98. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  99. package/dist/ee/server/src/services/seat-enforcement.d.ts +3 -1
  100. package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
  101. package/dist/ee/server/src/services/user.d.ts.map +1 -1
  102. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +37 -21
  103. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  104. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +37 -21
  105. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  106. package/dist/server/ee/server/src/controllers/admin.js +8 -7
  107. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  108. package/dist/server/ee/server/src/controllers/admin.mjs +8 -7
  109. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  110. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js +2 -2
  111. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  112. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +2 -2
  113. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  114. package/dist/server/ee/server/src/controllers/authentication.js +11 -11
  115. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  116. package/dist/server/ee/server/src/controllers/authentication.mjs +11 -11
  117. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  118. package/dist/server/ee/server/src/controllers/user.js +7 -8
  119. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  120. package/dist/server/ee/server/src/controllers/user.mjs +8 -9
  121. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  122. package/dist/server/ee/server/src/index.js +4 -0
  123. package/dist/server/ee/server/src/index.js.map +1 -1
  124. package/dist/server/ee/server/src/index.mjs +4 -0
  125. package/dist/server/ee/server/src/index.mjs.map +1 -1
  126. package/dist/server/ee/server/src/services/auth.js +1 -6
  127. package/dist/server/ee/server/src/services/auth.js.map +1 -1
  128. package/dist/server/ee/server/src/services/auth.mjs +2 -7
  129. package/dist/server/ee/server/src/services/auth.mjs.map +1 -1
  130. package/dist/server/ee/server/src/services/metrics.js +9 -7
  131. package/dist/server/ee/server/src/services/metrics.js.map +1 -1
  132. package/dist/server/ee/server/src/services/metrics.mjs +9 -7
  133. package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
  134. package/dist/server/ee/server/src/services/persist-tables.js +3 -4
  135. package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
  136. package/dist/server/ee/server/src/services/persist-tables.mjs +3 -4
  137. package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
  138. package/dist/server/ee/server/src/services/role.js +2 -2
  139. package/dist/server/ee/server/src/services/role.js.map +1 -1
  140. package/dist/server/ee/server/src/services/role.mjs +1 -1
  141. package/dist/server/ee/server/src/services/role.mjs.map +1 -1
  142. package/dist/server/ee/server/src/services/seat-enforcement.js +20 -20
  143. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  144. package/dist/server/ee/server/src/services/seat-enforcement.mjs +20 -20
  145. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  146. package/dist/server/ee/server/src/services/user.js +37 -6
  147. package/dist/server/ee/server/src/services/user.js.map +1 -1
  148. package/dist/server/ee/server/src/services/user.mjs +38 -7
  149. package/dist/server/ee/server/src/services/user.mjs.map +1 -1
  150. package/dist/server/ee/server/src/utils/sso-lock.js +2 -2
  151. package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
  152. package/dist/server/ee/server/src/utils/sso-lock.mjs +1 -1
  153. package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
  154. package/dist/server/server/src/audit-logs/admin-users.js +169 -0
  155. package/dist/server/server/src/audit-logs/admin-users.js.map +1 -0
  156. package/dist/server/server/src/audit-logs/admin-users.mjs +157 -0
  157. package/dist/server/server/src/audit-logs/admin-users.mjs.map +1 -0
  158. package/dist/server/server/src/audit-logs/tokens.js +3 -3
  159. package/dist/server/server/src/audit-logs/tokens.js.map +1 -1
  160. package/dist/server/server/src/audit-logs/tokens.mjs +2 -2
  161. package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -1
  162. package/dist/server/server/src/audit-logs/webhooks.js +106 -0
  163. package/dist/server/server/src/audit-logs/webhooks.js.map +1 -0
  164. package/dist/server/server/src/audit-logs/webhooks.mjs +100 -0
  165. package/dist/server/server/src/audit-logs/webhooks.mjs.map +1 -0
  166. package/dist/server/server/src/bootstrap.js +6 -4
  167. package/dist/server/server/src/bootstrap.js.map +1 -1
  168. package/dist/server/server/src/bootstrap.mjs +6 -4
  169. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  170. package/dist/server/server/src/controllers/admin-token.js +8 -8
  171. package/dist/server/server/src/controllers/admin-token.js.map +1 -1
  172. package/dist/server/server/src/controllers/admin-token.mjs +4 -4
  173. package/dist/server/server/src/controllers/admin-token.mjs.map +1 -1
  174. package/dist/server/server/src/controllers/admin.js +4 -5
  175. package/dist/server/server/src/controllers/admin.js.map +1 -1
  176. package/dist/server/server/src/controllers/admin.mjs +3 -4
  177. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  178. package/dist/server/server/src/controllers/api-token.js +8 -8
  179. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  180. package/dist/server/server/src/controllers/api-token.mjs +4 -4
  181. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  182. package/dist/server/server/src/controllers/authentication.js +8 -1
  183. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  184. package/dist/server/server/src/controllers/authentication.mjs +8 -1
  185. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  186. package/dist/server/server/src/controllers/formatters/conditions.js +2 -2
  187. package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
  188. package/dist/server/server/src/controllers/formatters/conditions.mjs +2 -2
  189. package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
  190. package/dist/server/server/src/controllers/transfer/index.js +2 -2
  191. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  192. package/dist/server/server/src/controllers/transfer/index.mjs +2 -2
  193. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  194. package/dist/server/server/src/controllers/transfer/token.js +8 -8
  195. package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
  196. package/dist/server/server/src/controllers/transfer/token.mjs +4 -4
  197. package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
  198. package/dist/server/server/src/controllers/webhooks.js +26 -0
  199. package/dist/server/server/src/controllers/webhooks.js.map +1 -1
  200. package/dist/server/server/src/controllers/webhooks.mjs +27 -1
  201. package/dist/server/server/src/controllers/webhooks.mjs.map +1 -1
  202. package/dist/server/server/src/domain/action/index.js +18 -16
  203. package/dist/server/server/src/domain/action/index.js.map +1 -1
  204. package/dist/server/server/src/domain/action/index.mjs +16 -14
  205. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  206. package/dist/server/server/src/domain/action/provider.mjs +4 -4
  207. package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
  208. package/dist/server/server/src/domain/condition/index.js +7 -4
  209. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  210. package/dist/server/server/src/domain/condition/index.mjs +7 -4
  211. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  212. package/dist/server/server/src/domain/permission/index.js +24 -15
  213. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  214. package/dist/server/server/src/domain/permission/index.mjs +21 -12
  215. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  216. package/dist/server/server/src/middlewares/rateLimit.js +5 -5
  217. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  218. package/dist/server/server/src/middlewares/rateLimit.mjs +4 -4
  219. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  220. package/dist/server/server/src/register.js +6 -0
  221. package/dist/server/server/src/register.js.map +1 -1
  222. package/dist/server/server/src/register.mjs +6 -0
  223. package/dist/server/server/src/register.mjs.map +1 -1
  224. package/dist/server/server/src/services/action.js +1 -2
  225. package/dist/server/server/src/services/action.js.map +1 -1
  226. package/dist/server/server/src/services/action.mjs +1 -2
  227. package/dist/server/server/src/services/action.mjs.map +1 -1
  228. package/dist/server/server/src/services/api-token.js +61 -49
  229. package/dist/server/server/src/services/api-token.js.map +1 -1
  230. package/dist/server/server/src/services/api-token.mjs +53 -41
  231. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  232. package/dist/server/server/src/services/auth.js +27 -6
  233. package/dist/server/server/src/services/auth.js.map +1 -1
  234. package/dist/server/server/src/services/auth.mjs +28 -8
  235. package/dist/server/server/src/services/auth.mjs.map +1 -1
  236. package/dist/server/server/src/services/condition.js +2 -2
  237. package/dist/server/server/src/services/condition.js.map +1 -1
  238. package/dist/server/server/src/services/condition.mjs +1 -1
  239. package/dist/server/server/src/services/condition.mjs.map +1 -1
  240. package/dist/server/server/src/services/content-type.js +5 -4
  241. package/dist/server/server/src/services/content-type.js.map +1 -1
  242. package/dist/server/server/src/services/content-type.mjs +8 -7
  243. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  244. package/dist/server/server/src/services/homepage.js +2 -1
  245. package/dist/server/server/src/services/homepage.js.map +1 -1
  246. package/dist/server/server/src/services/homepage.mjs +2 -1
  247. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  248. package/dist/server/server/src/services/passport/local-strategy.js +2 -2
  249. package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
  250. package/dist/server/server/src/services/passport/local-strategy.mjs +1 -1
  251. package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
  252. package/dist/server/server/src/services/passport.js +1 -2
  253. package/dist/server/server/src/services/passport.js.map +1 -1
  254. package/dist/server/server/src/services/passport.mjs +1 -2
  255. package/dist/server/server/src/services/passport.mjs.map +1 -1
  256. package/dist/server/server/src/services/permission/engine.js +4 -4
  257. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  258. package/dist/server/server/src/services/permission/engine.mjs +2 -2
  259. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  260. package/dist/server/server/src/services/permission/permissions-manager/index.js +2 -3
  261. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  262. package/dist/server/server/src/services/permission/permissions-manager/index.mjs +1 -2
  263. package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
  264. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +6 -6
  265. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  266. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +4 -4
  267. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  268. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +47 -41
  269. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  270. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +44 -38
  271. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  272. package/dist/server/server/src/services/permission/permissions-manager/validate.js +30 -26
  273. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  274. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +28 -24
  275. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  276. package/dist/server/server/src/services/permission/queries.js +9 -9
  277. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  278. package/dist/server/server/src/services/permission/queries.mjs +9 -9
  279. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  280. package/dist/server/server/src/services/permission/rename-fields.js +118 -0
  281. package/dist/server/server/src/services/permission/rename-fields.js.map +1 -0
  282. package/dist/server/server/src/services/permission/rename-fields.mjs +116 -0
  283. package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -0
  284. package/dist/server/server/src/services/permission/sections-builder/index.js +2 -2
  285. package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
  286. package/dist/server/server/src/services/permission/sections-builder/index.mjs +2 -2
  287. package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
  288. package/dist/server/server/src/services/permission/sections-builder/section.js +1 -2
  289. package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
  290. package/dist/server/server/src/services/permission/sections-builder/section.mjs +1 -2
  291. package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
  292. package/dist/server/server/src/services/permission/sections-builder/utils.js +6 -6
  293. package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
  294. package/dist/server/server/src/services/permission/sections-builder/utils.mjs +4 -4
  295. package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
  296. package/dist/server/server/src/services/role.js +20 -19
  297. package/dist/server/server/src/services/role.js.map +1 -1
  298. package/dist/server/server/src/services/role.mjs +20 -19
  299. package/dist/server/server/src/services/role.mjs.map +1 -1
  300. package/dist/server/server/src/services/transfer/token.js +20 -16
  301. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  302. package/dist/server/server/src/services/transfer/token.mjs +14 -10
  303. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  304. package/dist/server/server/src/services/user.js +50 -12
  305. package/dist/server/server/src/services/user.js.map +1 -1
  306. package/dist/server/server/src/services/user.mjs +52 -14
  307. package/dist/server/server/src/services/user.mjs.map +1 -1
  308. package/dist/server/server/src/strategies/api-token-utils.js +2 -3
  309. package/dist/server/server/src/strategies/api-token-utils.js.map +1 -1
  310. package/dist/server/server/src/strategies/api-token-utils.mjs +2 -3
  311. package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -1
  312. package/dist/server/server/src/strategies/content-api-token.js +3 -3
  313. package/dist/server/server/src/strategies/content-api-token.js.map +1 -1
  314. package/dist/server/server/src/strategies/content-api-token.mjs +1 -1
  315. package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -1
  316. package/dist/server/server/src/strategies/data-transfer.js +4 -4
  317. package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
  318. package/dist/server/server/src/strategies/data-transfer.mjs +3 -3
  319. package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
  320. package/dist/server/server/src/validation/common-validators.js +9 -10
  321. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  322. package/dist/server/server/src/validation/common-validators.mjs +13 -14
  323. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  324. package/dist/server/server/src/validation/user.js +1 -2
  325. package/dist/server/server/src/validation/user.js.map +1 -1
  326. package/dist/server/server/src/validation/user.mjs +1 -2
  327. package/dist/server/server/src/validation/user.mjs.map +1 -1
  328. package/dist/server/src/audit-logs/admin-users.d.ts +119 -0
  329. package/dist/server/src/audit-logs/admin-users.d.ts.map +1 -0
  330. package/dist/server/src/audit-logs/tokens.d.ts.map +1 -1
  331. package/dist/server/src/audit-logs/webhooks.d.ts +59 -0
  332. package/dist/server/src/audit-logs/webhooks.d.ts.map +1 -0
  333. package/dist/server/src/bootstrap.d.ts.map +1 -1
  334. package/dist/server/src/controllers/admin-token.d.ts.map +1 -1
  335. package/dist/server/src/controllers/admin.d.ts +2 -11
  336. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  337. package/dist/server/src/controllers/api-token.d.ts.map +1 -1
  338. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  339. package/dist/server/src/controllers/formatters/conditions.d.ts +1 -1
  340. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  341. package/dist/server/src/controllers/homepage.d.ts +1 -1
  342. package/dist/server/src/controllers/index.d.ts +2 -11
  343. package/dist/server/src/controllers/index.d.ts.map +1 -1
  344. package/dist/server/src/controllers/transfer/index.d.ts.map +1 -1
  345. package/dist/server/src/controllers/transfer/token.d.ts.map +1 -1
  346. package/dist/server/src/controllers/webhooks.d.ts.map +1 -1
  347. package/dist/server/src/domain/action/index.d.ts +1 -0
  348. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  349. package/dist/server/src/domain/condition/index.d.ts +2 -2
  350. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  351. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  352. package/dist/server/src/domain/user.d.ts +2 -2
  353. package/dist/server/src/index.d.ts +4 -13
  354. package/dist/server/src/index.d.ts.map +1 -1
  355. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  356. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  357. package/dist/server/src/register.d.ts.map +1 -1
  358. package/dist/server/src/services/action.d.ts.map +1 -1
  359. package/dist/server/src/services/api-token.d.ts.map +1 -1
  360. package/dist/server/src/services/auth.d.ts +6 -1
  361. package/dist/server/src/services/auth.d.ts.map +1 -1
  362. package/dist/server/src/services/condition.d.ts.map +1 -1
  363. package/dist/server/src/services/content-type.d.ts.map +1 -1
  364. package/dist/server/src/services/homepage.d.ts +1 -1
  365. package/dist/server/src/services/homepage.d.ts.map +1 -1
  366. package/dist/server/src/services/index.d.ts +2 -2
  367. package/dist/server/src/services/index.d.ts.map +1 -1
  368. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  369. package/dist/server/src/services/passport.d.ts.map +1 -1
  370. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  371. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  372. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  373. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  374. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  375. package/dist/server/src/services/permission/rename-fields.d.ts +21 -0
  376. package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -0
  377. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  378. package/dist/server/src/services/permission/sections-builder/utils.d.ts +1 -1
  379. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  380. package/dist/server/src/services/role.d.ts +1 -1
  381. package/dist/server/src/services/role.d.ts.map +1 -1
  382. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  383. package/dist/server/src/services/user.d.ts.map +1 -1
  384. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  385. package/dist/server/src/validation/user.d.ts.map +1 -1
  386. package/dist/shared/contracts/admin.d.ts +36 -2
  387. package/dist/shared/contracts/admin.d.ts.map +1 -1
  388. package/package.json +13 -13
@@ -2,7 +2,8 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var fp = require('lodash/fp');
5
+ var utils = require('@strapi/utils');
6
+ var _ = require('lodash');
6
7
 
7
8
  const permissionFields = [
8
9
  'id',
@@ -22,7 +23,7 @@ const sanitizedPermissionFields = [
22
23
  'properties',
23
24
  'conditions'
24
25
  ];
25
- const sanitizePermissionFields = fp.pick(sanitizedPermissionFields);
26
+ const sanitizePermissionFields = (permission)=>_.pick(permission, sanitizedPermissionFields);
26
27
  /**
27
28
  * Creates a permission with default values
28
29
  */ const getDefaultPermission = ()=>({
@@ -36,57 +37,65 @@ const sanitizePermissionFields = fp.pick(sanitizedPermissionFields);
36
37
  * @param condition - The condition to add
37
38
  * @param permission - The permission on which we want to add the condition
38
39
  * @return
39
- */ const addCondition = fp.curry((condition, permission)=>{
40
+ */ const addCondition = _.curry((condition, permission)=>{
40
41
  const { conditions } = permission;
41
- const newConditions = Array.isArray(conditions) ? fp.uniq(conditions.concat(condition)) : [
42
+ const newConditions = Array.isArray(conditions) ? [
43
+ ...new Set(conditions.concat(condition))
44
+ ] : [
42
45
  condition
43
46
  ];
44
- return fp.set('conditions', newConditions, permission);
47
+ return {
48
+ ...permission,
49
+ conditions: newConditions
50
+ };
45
51
  });
46
52
  /**
47
53
  * Returns a new permission without the given condition
48
54
  * @param condition - The condition to remove
49
55
  * @param permission - The permission on which we want to remove the condition
50
- */ const removeCondition = fp.curry((condition, permission)=>{
51
- return fp.set('conditions', fp.remove(fp.eq(condition), permission.conditions), permission);
56
+ */ const removeCondition = _.curry((condition, permission)=>{
57
+ return {
58
+ ...permission,
59
+ conditions: _.reject(permission.conditions, (value)=>value === condition)
60
+ };
52
61
  });
53
62
  /**
54
63
  * Gets a property or a part of a property from a permission.
55
64
  * @param property - The property to get
56
65
  * @param permission - The permission on which we want to access the property
57
- */ const getProperty = fp.curry((property, permission)=>fp.get(`properties.${property}`, permission));
66
+ */ const getProperty = _.curry((property, permission)=>_.get(permission, `properties.${property}`));
58
67
  /**
59
68
  * Set a value for a given property on a new permission object
60
69
  * @param property - The name of the property
61
70
  * @param value - The value of the property
62
71
  * @param permission - The permission on which we want to set the property
63
72
  */ const setProperty = (property, value, permission)=>{
64
- return fp.set(`properties.${property}`, value, permission);
73
+ return utils.objects.set(permission, `properties.${property}`, value);
65
74
  };
66
75
  /**
67
76
  * Returns a new permission without the given property name set
68
77
  * @param property - The name of the property to delete
69
78
  * @param permission - The permission on which we want to remove the property
70
- */ const deleteProperty = (property, permission)=>fp.omit(`properties.${property}`, permission);
79
+ */ const deleteProperty = (property, permission)=>_.omit(permission, `properties.${property}`);
71
80
  /**
72
81
  * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields
73
82
  * @param attributes
74
83
  */ const create = (attributes)=>{
75
- return fp.pipe(fp.pick(permissionFields), fp.merge(getDefaultPermission()))(attributes);
84
+ return _.merge({}, getDefaultPermission(), _.pick(attributes, permissionFields));
76
85
  };
77
86
  /**
78
87
  * Using the given condition provider, check and remove invalid condition from the permission's condition array.
79
88
  * @param provider - The condition provider used to do the checks
80
89
  * @param permission - The condition to sanitize
81
- */ const sanitizeConditions = fp.curry((provider, permission)=>{
82
- if (!fp.isArray(permission.conditions)) {
90
+ */ const sanitizeConditions = _.curry((provider, permission)=>{
91
+ if (!Array.isArray(permission.conditions)) {
83
92
  return permission;
84
93
  }
85
94
  return permission.conditions.filter((condition)=>!provider.has(condition)).reduce((perm, condition)=>removeCondition(condition, perm), permission);
86
95
  });
87
96
  function toPermission(payload) {
88
- if (fp.isArray(payload)) {
89
- return fp.map((value)=>create(value), payload);
97
+ if (Array.isArray(payload)) {
98
+ return Array.from(payload, (value)=>create(value));
90
99
  }
91
100
  return create(payload);
92
101
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../server/src/domain/permission/index.ts"],"sourcesContent":["import type { Utils } from '@strapi/types';\n\nimport { providerFactory } from '@strapi/utils';\nimport {\n pipe,\n set,\n pick,\n eq,\n omit,\n remove,\n get,\n uniq,\n isArray,\n map,\n curry,\n merge,\n} from 'lodash/fp';\nimport { Permission } from '../../../../shared/contracts/shared';\nimport { SanitizedPermission } from '../../../../shared/contracts/roles';\n\nexport type CreatePermissionPayload = Utils.Object.PartialBy<\n Permission,\n 'actionParameters' | 'conditions' | 'properties' | 'subject' | 'id' | 'createdAt' | 'updatedAt'\n>;\n\ntype Provider = ReturnType<typeof providerFactory>;\n\nexport const permissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n 'role',\n 'apiToken',\n];\nexport const sanitizedPermissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n] as const;\n\nexport const sanitizePermissionFields: (p: Permission) => SanitizedPermission =\n pick(sanitizedPermissionFields);\n\n/**\n * Creates a permission with default values\n */\nconst getDefaultPermission = () => ({\n actionParameters: {},\n conditions: [],\n properties: {},\n subject: null,\n});\n\n/**\n * Returns a new permission with the given condition\n * @param condition - The condition to add\n * @param permission - The permission on which we want to add the condition\n * @return\n */\nexport const addCondition = curry((condition: string, permission: Permission): Permission => {\n const { conditions } = permission;\n const newConditions = Array.isArray(conditions)\n ? uniq(conditions.concat(condition))\n : [condition];\n\n return set('conditions', newConditions, permission);\n});\n\n/**\n * Returns a new permission without the given condition\n * @param condition - The condition to remove\n * @param permission - The permission on which we want to remove the condition\n */\nexport const removeCondition = curry((condition: string, permission: Permission): Permission => {\n return set('conditions', remove(eq(condition), permission.conditions), permission);\n});\n\n/**\n * Gets a property or a part of a property from a permission.\n * @param property - The property to get\n * @param permission - The permission on which we want to access the property\n */\nexport const getProperty = curry(\n (property: string, permission: Permission): Permission =>\n get(`properties.${property}`, permission)\n);\n\n/**\n * Set a value for a given property on a new permission object\n * @param property - The name of the property\n * @param value - The value of the property\n * @param permission - The permission on which we want to set the property\n */\nexport const setProperty = (\n property: string,\n value: unknown,\n permission: Permission\n): Permission => {\n return set(`properties.${property}`, value, permission);\n};\n\n/**\n * Returns a new permission without the given property name set\n * @param property - The name of the property to delete\n * @param permission - The permission on which we want to remove the property\n */\nexport const deleteProperty = <TProperty extends string>(\n property: TProperty,\n permission: Permission\n) => omit(`properties.${property}`, permission) as Omit<Permission, TProperty>;\n\n/**\n * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields\n * @param attributes\n */\nexport const create = (attributes: CreatePermissionPayload) => {\n return pipe(pick(permissionFields), merge(getDefaultPermission()))(attributes) as Permission;\n};\n\n/**\n * Using the given condition provider, check and remove invalid condition from the permission's condition array.\n * @param provider - The condition provider used to do the checks\n * @param permission - The condition to sanitize\n */\nexport const sanitizeConditions = curry(\n (provider: Provider, permission: Permission): Permission => {\n if (!isArray(permission.conditions)) {\n return permission;\n }\n\n return permission.conditions\n .filter((condition: string) => !provider.has(condition))\n .reduce(\n (perm: Permission, condition: string) => removeCondition(condition, perm),\n permission\n );\n }\n);\n\n/**\n * Transform raw attributes into valid permissions using the create domain function.\n * @param payload - Can either be a single object of attributes or an array of those objects.\n */\n\nfunction toPermission<T extends CreatePermissionPayload>(payload: T[]): Permission[];\nfunction toPermission<T extends CreatePermissionPayload>(payload: T): Permission;\nfunction toPermission<T extends CreatePermissionPayload>(\n payload: T[] | T\n): Permission[] | Permission {\n if (isArray(payload)) {\n return map((value) => create(value), payload);\n }\n\n return create(payload);\n}\n\nexport { toPermission };\n\nexport default {\n addCondition,\n removeCondition,\n create,\n deleteProperty,\n permissionFields,\n getProperty,\n sanitizedPermissionFields,\n sanitizeConditions,\n sanitizePermissionFields,\n setProperty,\n toPermission,\n};\n"],"names":["permissionFields","sanitizedPermissionFields","sanitizePermissionFields","pick","getDefaultPermission","actionParameters","conditions","properties","subject","addCondition","curry","condition","permission","newConditions","Array","isArray","uniq","concat","set","removeCondition","remove","eq","getProperty","property","get","setProperty","value","deleteProperty","omit","create","attributes","pipe","merge","sanitizeConditions","provider","filter","has","reduce","perm","toPermission","payload","map"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../server/src/domain/permission/index.ts"],"sourcesContent":["import { objects, providerFactory } from '@strapi/utils';\nimport { pick, reject, merge, omit, get, curry } from 'lodash';\nimport type { Utils } from '@strapi/types';\n\nimport { Permission } from '../../../../shared/contracts/shared';\nimport { SanitizedPermission } from '../../../../shared/contracts/roles';\n\nexport type CreatePermissionPayload = Utils.Object.PartialBy<\n Permission,\n 'actionParameters' | 'conditions' | 'properties' | 'subject' | 'id' | 'createdAt' | 'updatedAt'\n>;\n\ntype Provider = ReturnType<typeof providerFactory>;\n\nexport const permissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n 'role',\n 'apiToken',\n];\nexport const sanitizedPermissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n] as const;\n\nexport const sanitizePermissionFields: (p: Permission) => SanitizedPermission = (permission) =>\n pick(permission, sanitizedPermissionFields);\n\n/**\n * Creates a permission with default values\n */\nconst getDefaultPermission = () => ({\n actionParameters: {},\n conditions: [],\n properties: {},\n subject: null,\n});\n\n/**\n * Returns a new permission with the given condition\n * @param condition - The condition to add\n * @param permission - The permission on which we want to add the condition\n * @return\n */\nexport const addCondition = curry((condition: string, permission: Permission): Permission => {\n const { conditions } = permission;\n const newConditions = Array.isArray(conditions)\n ? [...new Set(conditions.concat(condition))]\n : [condition];\n\n return { ...permission, conditions: newConditions };\n});\n\n/**\n * Returns a new permission without the given condition\n * @param condition - The condition to remove\n * @param permission - The permission on which we want to remove the condition\n */\nexport const removeCondition = curry((condition: string, permission: Permission): Permission => {\n return {\n ...permission,\n conditions: reject(permission.conditions, (value) => value === condition),\n };\n});\n\n/**\n * Gets a property or a part of a property from a permission.\n * @param property - The property to get\n * @param permission - The permission on which we want to access the property\n */\nexport const getProperty = curry(\n (property: string, permission: Permission): Permission =>\n get(permission, `properties.${property}`)\n);\n\n/**\n * Set a value for a given property on a new permission object\n * @param property - The name of the property\n * @param value - The value of the property\n * @param permission - The permission on which we want to set the property\n */\nexport const setProperty = (\n property: string,\n value: unknown,\n permission: Permission\n): Permission => {\n return objects.set(permission, `properties.${property}`, value);\n};\n\n/**\n * Returns a new permission without the given property name set\n * @param property - The name of the property to delete\n * @param permission - The permission on which we want to remove the property\n */\nexport const deleteProperty = <TProperty extends string>(\n property: TProperty,\n permission: Permission\n) => omit(permission, `properties.${property}` as string) as Omit<Permission, TProperty>;\n\n/**\n * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields\n * @param attributes\n */\nexport const create = (attributes: CreatePermissionPayload) => {\n return merge({}, getDefaultPermission(), pick(attributes, permissionFields)) as Permission;\n};\n\n/**\n * Using the given condition provider, check and remove invalid condition from the permission's condition array.\n * @param provider - The condition provider used to do the checks\n * @param permission - The condition to sanitize\n */\nexport const sanitizeConditions = curry(\n (provider: Provider, permission: Permission): Permission => {\n if (!Array.isArray(permission.conditions)) {\n return permission;\n }\n\n return permission.conditions\n .filter((condition: string) => !provider.has(condition))\n .reduce(\n (perm: Permission, condition: string) => removeCondition(condition, perm),\n permission\n );\n }\n);\n\n/**\n * Transform raw attributes into valid permissions using the create domain function.\n * @param payload - Can either be a single object of attributes or an array of those objects.\n */\n\nfunction toPermission<T extends CreatePermissionPayload>(payload: T[]): Permission[];\nfunction toPermission<T extends CreatePermissionPayload>(payload: T): Permission;\nfunction toPermission<T extends CreatePermissionPayload>(\n payload: T[] | T\n): Permission[] | Permission {\n if (Array.isArray(payload)) {\n return Array.from(payload, (value) => create(value));\n }\n\n return create(payload);\n}\n\nexport { toPermission };\n\nexport default {\n addCondition,\n removeCondition,\n create,\n deleteProperty,\n permissionFields,\n getProperty,\n sanitizedPermissionFields,\n sanitizeConditions,\n sanitizePermissionFields,\n setProperty,\n toPermission,\n};\n"],"names":["permissionFields","sanitizedPermissionFields","sanitizePermissionFields","permission","pick","getDefaultPermission","actionParameters","conditions","properties","subject","addCondition","curry","condition","newConditions","Array","isArray","Set","concat","removeCondition","reject","value","getProperty","property","get","setProperty","objects","set","deleteProperty","omit","create","attributes","merge","sanitizeConditions","provider","filter","has","reduce","perm","toPermission","payload","from"],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { pick, curry, uniq, set, remove, eq, get, isArray, omit, map, pipe, merge } from 'lodash/fp';
1
+ import { objects } from '@strapi/utils';
2
+ import { curry, reject, get, omit, pick, merge } from 'lodash';
2
3
 
3
4
  const permissionFields = [
4
5
  'id',
@@ -18,7 +19,7 @@ const sanitizedPermissionFields = [
18
19
  'properties',
19
20
  'conditions'
20
21
  ];
21
- const sanitizePermissionFields = pick(sanitizedPermissionFields);
22
+ const sanitizePermissionFields = (permission)=>pick(permission, sanitizedPermissionFields);
22
23
  /**
23
24
  * Creates a permission with default values
24
25
  */ const getDefaultPermission = ()=>({
@@ -34,55 +35,63 @@ const sanitizePermissionFields = pick(sanitizedPermissionFields);
34
35
  * @return
35
36
  */ const addCondition = curry((condition, permission)=>{
36
37
  const { conditions } = permission;
37
- const newConditions = Array.isArray(conditions) ? uniq(conditions.concat(condition)) : [
38
+ const newConditions = Array.isArray(conditions) ? [
39
+ ...new Set(conditions.concat(condition))
40
+ ] : [
38
41
  condition
39
42
  ];
40
- return set('conditions', newConditions, permission);
43
+ return {
44
+ ...permission,
45
+ conditions: newConditions
46
+ };
41
47
  });
42
48
  /**
43
49
  * Returns a new permission without the given condition
44
50
  * @param condition - The condition to remove
45
51
  * @param permission - The permission on which we want to remove the condition
46
52
  */ const removeCondition = curry((condition, permission)=>{
47
- return set('conditions', remove(eq(condition), permission.conditions), permission);
53
+ return {
54
+ ...permission,
55
+ conditions: reject(permission.conditions, (value)=>value === condition)
56
+ };
48
57
  });
49
58
  /**
50
59
  * Gets a property or a part of a property from a permission.
51
60
  * @param property - The property to get
52
61
  * @param permission - The permission on which we want to access the property
53
- */ const getProperty = curry((property, permission)=>get(`properties.${property}`, permission));
62
+ */ const getProperty = curry((property, permission)=>get(permission, `properties.${property}`));
54
63
  /**
55
64
  * Set a value for a given property on a new permission object
56
65
  * @param property - The name of the property
57
66
  * @param value - The value of the property
58
67
  * @param permission - The permission on which we want to set the property
59
68
  */ const setProperty = (property, value, permission)=>{
60
- return set(`properties.${property}`, value, permission);
69
+ return objects.set(permission, `properties.${property}`, value);
61
70
  };
62
71
  /**
63
72
  * Returns a new permission without the given property name set
64
73
  * @param property - The name of the property to delete
65
74
  * @param permission - The permission on which we want to remove the property
66
- */ const deleteProperty = (property, permission)=>omit(`properties.${property}`, permission);
75
+ */ const deleteProperty = (property, permission)=>omit(permission, `properties.${property}`);
67
76
  /**
68
77
  * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields
69
78
  * @param attributes
70
79
  */ const create = (attributes)=>{
71
- return pipe(pick(permissionFields), merge(getDefaultPermission()))(attributes);
80
+ return merge({}, getDefaultPermission(), pick(attributes, permissionFields));
72
81
  };
73
82
  /**
74
83
  * Using the given condition provider, check and remove invalid condition from the permission's condition array.
75
84
  * @param provider - The condition provider used to do the checks
76
85
  * @param permission - The condition to sanitize
77
86
  */ const sanitizeConditions = curry((provider, permission)=>{
78
- if (!isArray(permission.conditions)) {
87
+ if (!Array.isArray(permission.conditions)) {
79
88
  return permission;
80
89
  }
81
90
  return permission.conditions.filter((condition)=>!provider.has(condition)).reduce((perm, condition)=>removeCondition(condition, perm), permission);
82
91
  });
83
92
  function toPermission(payload) {
84
- if (isArray(payload)) {
85
- return map((value)=>create(value), payload);
93
+ if (Array.isArray(payload)) {
94
+ return Array.from(payload, (value)=>create(value));
86
95
  }
87
96
  return create(payload);
88
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../../server/src/domain/permission/index.ts"],"sourcesContent":["import type { Utils } from '@strapi/types';\n\nimport { providerFactory } from '@strapi/utils';\nimport {\n pipe,\n set,\n pick,\n eq,\n omit,\n remove,\n get,\n uniq,\n isArray,\n map,\n curry,\n merge,\n} from 'lodash/fp';\nimport { Permission } from '../../../../shared/contracts/shared';\nimport { SanitizedPermission } from '../../../../shared/contracts/roles';\n\nexport type CreatePermissionPayload = Utils.Object.PartialBy<\n Permission,\n 'actionParameters' | 'conditions' | 'properties' | 'subject' | 'id' | 'createdAt' | 'updatedAt'\n>;\n\ntype Provider = ReturnType<typeof providerFactory>;\n\nexport const permissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n 'role',\n 'apiToken',\n];\nexport const sanitizedPermissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n] as const;\n\nexport const sanitizePermissionFields: (p: Permission) => SanitizedPermission =\n pick(sanitizedPermissionFields);\n\n/**\n * Creates a permission with default values\n */\nconst getDefaultPermission = () => ({\n actionParameters: {},\n conditions: [],\n properties: {},\n subject: null,\n});\n\n/**\n * Returns a new permission with the given condition\n * @param condition - The condition to add\n * @param permission - The permission on which we want to add the condition\n * @return\n */\nexport const addCondition = curry((condition: string, permission: Permission): Permission => {\n const { conditions } = permission;\n const newConditions = Array.isArray(conditions)\n ? uniq(conditions.concat(condition))\n : [condition];\n\n return set('conditions', newConditions, permission);\n});\n\n/**\n * Returns a new permission without the given condition\n * @param condition - The condition to remove\n * @param permission - The permission on which we want to remove the condition\n */\nexport const removeCondition = curry((condition: string, permission: Permission): Permission => {\n return set('conditions', remove(eq(condition), permission.conditions), permission);\n});\n\n/**\n * Gets a property or a part of a property from a permission.\n * @param property - The property to get\n * @param permission - The permission on which we want to access the property\n */\nexport const getProperty = curry(\n (property: string, permission: Permission): Permission =>\n get(`properties.${property}`, permission)\n);\n\n/**\n * Set a value for a given property on a new permission object\n * @param property - The name of the property\n * @param value - The value of the property\n * @param permission - The permission on which we want to set the property\n */\nexport const setProperty = (\n property: string,\n value: unknown,\n permission: Permission\n): Permission => {\n return set(`properties.${property}`, value, permission);\n};\n\n/**\n * Returns a new permission without the given property name set\n * @param property - The name of the property to delete\n * @param permission - The permission on which we want to remove the property\n */\nexport const deleteProperty = <TProperty extends string>(\n property: TProperty,\n permission: Permission\n) => omit(`properties.${property}`, permission) as Omit<Permission, TProperty>;\n\n/**\n * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields\n * @param attributes\n */\nexport const create = (attributes: CreatePermissionPayload) => {\n return pipe(pick(permissionFields), merge(getDefaultPermission()))(attributes) as Permission;\n};\n\n/**\n * Using the given condition provider, check and remove invalid condition from the permission's condition array.\n * @param provider - The condition provider used to do the checks\n * @param permission - The condition to sanitize\n */\nexport const sanitizeConditions = curry(\n (provider: Provider, permission: Permission): Permission => {\n if (!isArray(permission.conditions)) {\n return permission;\n }\n\n return permission.conditions\n .filter((condition: string) => !provider.has(condition))\n .reduce(\n (perm: Permission, condition: string) => removeCondition(condition, perm),\n permission\n );\n }\n);\n\n/**\n * Transform raw attributes into valid permissions using the create domain function.\n * @param payload - Can either be a single object of attributes or an array of those objects.\n */\n\nfunction toPermission<T extends CreatePermissionPayload>(payload: T[]): Permission[];\nfunction toPermission<T extends CreatePermissionPayload>(payload: T): Permission;\nfunction toPermission<T extends CreatePermissionPayload>(\n payload: T[] | T\n): Permission[] | Permission {\n if (isArray(payload)) {\n return map((value) => create(value), payload);\n }\n\n return create(payload);\n}\n\nexport { toPermission };\n\nexport default {\n addCondition,\n removeCondition,\n create,\n deleteProperty,\n permissionFields,\n getProperty,\n sanitizedPermissionFields,\n sanitizeConditions,\n sanitizePermissionFields,\n setProperty,\n toPermission,\n};\n"],"names":["permissionFields","sanitizedPermissionFields","sanitizePermissionFields","pick","getDefaultPermission","actionParameters","conditions","properties","subject","addCondition","curry","condition","permission","newConditions","Array","isArray","uniq","concat","set","removeCondition","remove","eq","getProperty","property","get","setProperty","value","deleteProperty","omit","create","attributes","pipe","merge","sanitizeConditions","provider","filter","has","reduce","perm","toPermission","payload","map"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../../server/src/domain/permission/index.ts"],"sourcesContent":["import { objects, providerFactory } from '@strapi/utils';\nimport { pick, reject, merge, omit, get, curry } from 'lodash';\nimport type { Utils } from '@strapi/types';\n\nimport { Permission } from '../../../../shared/contracts/shared';\nimport { SanitizedPermission } from '../../../../shared/contracts/roles';\n\nexport type CreatePermissionPayload = Utils.Object.PartialBy<\n Permission,\n 'actionParameters' | 'conditions' | 'properties' | 'subject' | 'id' | 'createdAt' | 'updatedAt'\n>;\n\ntype Provider = ReturnType<typeof providerFactory>;\n\nexport const permissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n 'role',\n 'apiToken',\n];\nexport const sanitizedPermissionFields = [\n 'id',\n 'action',\n 'actionParameters',\n 'subject',\n 'properties',\n 'conditions',\n] as const;\n\nexport const sanitizePermissionFields: (p: Permission) => SanitizedPermission = (permission) =>\n pick(permission, sanitizedPermissionFields);\n\n/**\n * Creates a permission with default values\n */\nconst getDefaultPermission = () => ({\n actionParameters: {},\n conditions: [],\n properties: {},\n subject: null,\n});\n\n/**\n * Returns a new permission with the given condition\n * @param condition - The condition to add\n * @param permission - The permission on which we want to add the condition\n * @return\n */\nexport const addCondition = curry((condition: string, permission: Permission): Permission => {\n const { conditions } = permission;\n const newConditions = Array.isArray(conditions)\n ? [...new Set(conditions.concat(condition))]\n : [condition];\n\n return { ...permission, conditions: newConditions };\n});\n\n/**\n * Returns a new permission without the given condition\n * @param condition - The condition to remove\n * @param permission - The permission on which we want to remove the condition\n */\nexport const removeCondition = curry((condition: string, permission: Permission): Permission => {\n return {\n ...permission,\n conditions: reject(permission.conditions, (value) => value === condition),\n };\n});\n\n/**\n * Gets a property or a part of a property from a permission.\n * @param property - The property to get\n * @param permission - The permission on which we want to access the property\n */\nexport const getProperty = curry(\n (property: string, permission: Permission): Permission =>\n get(permission, `properties.${property}`)\n);\n\n/**\n * Set a value for a given property on a new permission object\n * @param property - The name of the property\n * @param value - The value of the property\n * @param permission - The permission on which we want to set the property\n */\nexport const setProperty = (\n property: string,\n value: unknown,\n permission: Permission\n): Permission => {\n return objects.set(permission, `properties.${property}`, value);\n};\n\n/**\n * Returns a new permission without the given property name set\n * @param property - The name of the property to delete\n * @param permission - The permission on which we want to remove the property\n */\nexport const deleteProperty = <TProperty extends string>(\n property: TProperty,\n permission: Permission\n) => omit(permission, `properties.${property}` as string) as Omit<Permission, TProperty>;\n\n/**\n * Creates a new {@link Permission} object from raw attributes. Set default values for certain fields\n * @param attributes\n */\nexport const create = (attributes: CreatePermissionPayload) => {\n return merge({}, getDefaultPermission(), pick(attributes, permissionFields)) as Permission;\n};\n\n/**\n * Using the given condition provider, check and remove invalid condition from the permission's condition array.\n * @param provider - The condition provider used to do the checks\n * @param permission - The condition to sanitize\n */\nexport const sanitizeConditions = curry(\n (provider: Provider, permission: Permission): Permission => {\n if (!Array.isArray(permission.conditions)) {\n return permission;\n }\n\n return permission.conditions\n .filter((condition: string) => !provider.has(condition))\n .reduce(\n (perm: Permission, condition: string) => removeCondition(condition, perm),\n permission\n );\n }\n);\n\n/**\n * Transform raw attributes into valid permissions using the create domain function.\n * @param payload - Can either be a single object of attributes or an array of those objects.\n */\n\nfunction toPermission<T extends CreatePermissionPayload>(payload: T[]): Permission[];\nfunction toPermission<T extends CreatePermissionPayload>(payload: T): Permission;\nfunction toPermission<T extends CreatePermissionPayload>(\n payload: T[] | T\n): Permission[] | Permission {\n if (Array.isArray(payload)) {\n return Array.from(payload, (value) => create(value));\n }\n\n return create(payload);\n}\n\nexport { toPermission };\n\nexport default {\n addCondition,\n removeCondition,\n create,\n deleteProperty,\n permissionFields,\n getProperty,\n sanitizedPermissionFields,\n sanitizeConditions,\n sanitizePermissionFields,\n setProperty,\n toPermission,\n};\n"],"names":["permissionFields","sanitizedPermissionFields","sanitizePermissionFields","permission","pick","getDefaultPermission","actionParameters","conditions","properties","subject","addCondition","curry","condition","newConditions","Array","isArray","Set","concat","removeCondition","reject","value","getProperty","property","get","setProperty","objects","set","deleteProperty","omit","create","attributes","merge","sanitizeConditions","provider","filter","has","reduce","perm","toPermission","payload","from"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
+ var _ = require('lodash');
3
4
  var path = require('path');
4
5
  var utils = require('@strapi/utils');
5
- var fp = require('lodash/fp');
6
6
 
7
7
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
8
 
@@ -16,16 +16,16 @@ var rateLimit = ((config, { strapi })=>async (ctx, next)=>{
16
16
  enabled: true
17
17
  };
18
18
  }
19
- if (!fp.has('enabled', rateLimitConfig)) {
19
+ if (!_.has(rateLimitConfig, 'enabled')) {
20
20
  rateLimitConfig.enabled = true;
21
21
  }
22
22
  if (rateLimitConfig.enabled === true) {
23
23
  // TODO: TS - Do the dynamic import
24
24
  // eslint-disable-next-line @typescript-eslint/no-var-requires
25
25
  const rateLimit = require('koa2-ratelimit').RateLimit;
26
- const requestEmail = fp.get('request.body.email')(ctx);
27
- const userEmail = fp.isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';
28
- const requestPath = fp.isString(ctx.request.path) ? fp.toLower(path__default.default.normalize(ctx.request.path)).replace(/\/$/, '') : 'invalidPath';
26
+ const requestEmail = _.get(ctx, 'request.body.email');
27
+ const userEmail = _.isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';
28
+ const requestPath = _.isString(ctx.request.path) ? path__default.default.normalize(ctx.request.path).toLowerCase().replace(/\/$/, '') : 'invalidPath';
29
29
  const loadConfig = {
30
30
  interval: {
31
31
  min: 5
@@ -1 +1 @@
1
- {"version":3,"file":"rateLimit.js","sources":["../../../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport path from 'path';\nimport { errors } from '@strapi/utils';\nimport { isString, has, toLower, get } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n let rateLimitConfig = strapi.config.get('admin.rateLimit') as any;\n\n if (!rateLimitConfig) {\n rateLimitConfig = {\n enabled: true,\n };\n }\n\n if (!has('enabled', rateLimitConfig)) {\n rateLimitConfig.enabled = true;\n }\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get('request.body.email')(ctx);\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const requestPath = isString(ctx.request.path)\n ? toLower(path.normalize(ctx.request.path)).replace(/\\/$/, '')\n : 'invalidPath';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}:${requestPath}:${ctx.request.ip}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","errors","config","strapi","ctx","next","rateLimitConfig","get","enabled","has","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","requestPath","request","path","toLower","normalize","replace","loadConfig","interval","min","max","prefixKey","ip","handler","middleware"],"mappings":";;;;;;;;;;AAMA,MAAM,EAAEA,cAAc,EAAE,GAAGC,YAAAA;AAE3B,gBAAe,CAAA,CAACC,MAAAA,EAAa,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAAA,EAAcC,IAAAA,GAAAA;AACnB,QAAA,IAAIC,eAAAA,GAAkBH,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,iBAAA,CAAA;AAExC,QAAA,IAAI,CAACD,eAAAA,EAAiB;YACpBA,eAAAA,GAAkB;gBAChBE,OAAAA,EAAS;AACX,aAAA;AACF,QAAA;QAEA,IAAI,CAACC,MAAAA,CAAI,SAAA,EAAWH,eAAAA,CAAAA,EAAkB;AACpCA,YAAAA,eAAAA,CAAgBE,OAAO,GAAG,IAAA;AAC5B,QAAA;QAEA,IAAIF,eAAAA,CAAgBE,OAAO,KAAK,IAAA,EAAM;;;YAGpC,MAAME,SAAAA,GAAYC,OAAAA,CAAQ,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeN,OAAI,oBAAA,CAAA,CAAsBH,GAAAA,CAAAA;AAC/C,YAAA,MAAMU,SAAAA,GAAYC,WAAAA,CAASF,YAAAA,CAAAA,GAAgBA,YAAAA,CAAaG,WAAW,EAAA,GAAK,cAAA;AAExE,YAAA,MAAMC,cAAcF,WAAAA,CAASX,GAAAA,CAAIc,OAAO,CAACC,IAAI,IACzCC,UAAAA,CAAQD,qBAAAA,CAAKE,SAAS,CAACjB,GAAAA,CAAIc,OAAO,CAACC,IAAI,GAAGG,OAAO,CAAC,OAAO,EAAA,CAAA,GACzD,aAAA;AAEJ,YAAA,MAAMC,UAAAA,GAAa;gBACjBC,QAAAA,EAAU;oBAAEC,GAAAA,EAAK;AAAE,iBAAA;gBACnBC,GAAAA,EAAK,CAAA;gBACLC,SAAAA,EAAW,CAAA,EAAGb,SAAAA,CAAU,CAAC,EAAEG,WAAAA,CAAY,CAAC,EAAEb,GAAAA,CAAIc,OAAO,CAACU,EAAE,CAAA,CAAE;AAC1DC,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAI7B,cAAAA,EAAAA;AACZ,gBAAA,CAAA;AACA,gBAAA,GAAGM,eAAe;AAClB,gBAAA,GAAGJ;AACL,aAAA;AAEA,YAAA,OAAOQ,SAAAA,CAAUoB,UAAU,CAACP,UAAAA,CAAAA,CAAYnB,GAAAA,EAAKC,IAAAA,CAAAA;AAC/C,QAAA;QAEA,OAAOA,IAAAA,EAAAA;AACT,IAAA,CAAA;;;;"}
1
+ {"version":3,"file":"rateLimit.js","sources":["../../../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import { get, isString, has } from 'lodash';\nimport type { Context, Next } from 'koa';\nimport path from 'path';\nimport { errors } from '@strapi/utils';\n\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n let rateLimitConfig = strapi.config.get('admin.rateLimit') as any;\n\n if (!rateLimitConfig) {\n rateLimitConfig = {\n enabled: true,\n };\n }\n\n if (!has(rateLimitConfig, 'enabled')) {\n rateLimitConfig.enabled = true;\n }\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get(ctx, 'request.body.email');\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const requestPath = isString(ctx.request.path)\n ? path.normalize(ctx.request.path).toLowerCase().replace(/\\/$/, '')\n : 'invalidPath';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}:${requestPath}:${ctx.request.ip}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","errors","config","strapi","ctx","next","rateLimitConfig","get","enabled","has","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","requestPath","request","path","normalize","replace","loadConfig","interval","min","max","prefixKey","ip","handler","middleware"],"mappings":";;;;;;;;;;AAOA,MAAM,EAAEA,cAAc,EAAE,GAAGC,YAAAA;AAE3B,gBAAe,CAAA,CAACC,MAAAA,EAAa,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAAA,EAAcC,IAAAA,GAAAA;AACnB,QAAA,IAAIC,eAAAA,GAAkBH,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,iBAAA,CAAA;AAExC,QAAA,IAAI,CAACD,eAAAA,EAAiB;YACpBA,eAAAA,GAAkB;gBAChBE,OAAAA,EAAS;AACX,aAAA;AACF,QAAA;QAEA,IAAI,CAACC,KAAAA,CAAIH,eAAAA,EAAiB,SAAA,CAAA,EAAY;AACpCA,YAAAA,eAAAA,CAAgBE,OAAO,GAAG,IAAA;AAC5B,QAAA;QAEA,IAAIF,eAAAA,CAAgBE,OAAO,KAAK,IAAA,EAAM;;;YAGpC,MAAME,SAAAA,GAAYC,OAAAA,CAAQ,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeN,MAAIH,GAAAA,EAAK,oBAAA,CAAA;AAC9B,YAAA,MAAMU,SAAAA,GAAYC,UAAAA,CAASF,YAAAA,CAAAA,GAAgBA,YAAAA,CAAaG,WAAW,EAAA,GAAK,cAAA;YAExE,MAAMC,WAAAA,GAAcF,WAASX,GAAAA,CAAIc,OAAO,CAACC,IAAI,CAAA,GACzCA,sBAAKC,SAAS,CAAChB,IAAIc,OAAO,CAACC,IAAI,CAAA,CAAEH,WAAW,GAAGK,OAAO,CAAC,OAAO,EAAA,CAAA,GAC9D,aAAA;AAEJ,YAAA,MAAMC,UAAAA,GAAa;gBACjBC,QAAAA,EAAU;oBAAEC,GAAAA,EAAK;AAAE,iBAAA;gBACnBC,GAAAA,EAAK,CAAA;gBACLC,SAAAA,EAAW,CAAA,EAAGZ,SAAAA,CAAU,CAAC,EAAEG,WAAAA,CAAY,CAAC,EAAEb,GAAAA,CAAIc,OAAO,CAACS,EAAE,CAAA,CAAE;AAC1DC,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAI5B,cAAAA,EAAAA;AACZ,gBAAA,CAAA;AACA,gBAAA,GAAGM,eAAe;AAClB,gBAAA,GAAGJ;AACL,aAAA;AAEA,YAAA,OAAOQ,SAAAA,CAAUmB,UAAU,CAACP,UAAAA,CAAAA,CAAYlB,GAAAA,EAAKC,IAAAA,CAAAA;AAC/C,QAAA;QAEA,OAAOA,IAAAA,EAAAA;AACT,IAAA,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
+ import { has, get, isString } from 'lodash';
1
2
  import path from 'path';
2
3
  import { errors } from '@strapi/utils';
3
- import { has, get, isString, toLower } from 'lodash/fp';
4
4
 
5
5
  const { RateLimitError } = errors;
6
6
  var rateLimit = ((config, { strapi })=>async (ctx, next)=>{
@@ -10,16 +10,16 @@ var rateLimit = ((config, { strapi })=>async (ctx, next)=>{
10
10
  enabled: true
11
11
  };
12
12
  }
13
- if (!has('enabled', rateLimitConfig)) {
13
+ if (!has(rateLimitConfig, 'enabled')) {
14
14
  rateLimitConfig.enabled = true;
15
15
  }
16
16
  if (rateLimitConfig.enabled === true) {
17
17
  // TODO: TS - Do the dynamic import
18
18
  // eslint-disable-next-line @typescript-eslint/no-var-requires
19
19
  const rateLimit = require('koa2-ratelimit').RateLimit;
20
- const requestEmail = get('request.body.email')(ctx);
20
+ const requestEmail = get(ctx, 'request.body.email');
21
21
  const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';
22
- const requestPath = isString(ctx.request.path) ? toLower(path.normalize(ctx.request.path)).replace(/\/$/, '') : 'invalidPath';
22
+ const requestPath = isString(ctx.request.path) ? path.normalize(ctx.request.path).toLowerCase().replace(/\/$/, '') : 'invalidPath';
23
23
  const loadConfig = {
24
24
  interval: {
25
25
  min: 5
@@ -1 +1 @@
1
- {"version":3,"file":"rateLimit.mjs","sources":["../../../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\nimport path from 'path';\nimport { errors } from '@strapi/utils';\nimport { isString, has, toLower, get } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n let rateLimitConfig = strapi.config.get('admin.rateLimit') as any;\n\n if (!rateLimitConfig) {\n rateLimitConfig = {\n enabled: true,\n };\n }\n\n if (!has('enabled', rateLimitConfig)) {\n rateLimitConfig.enabled = true;\n }\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get('request.body.email')(ctx);\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const requestPath = isString(ctx.request.path)\n ? toLower(path.normalize(ctx.request.path)).replace(/\\/$/, '')\n : 'invalidPath';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}:${requestPath}:${ctx.request.ip}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","errors","config","strapi","ctx","next","rateLimitConfig","get","enabled","has","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","requestPath","request","path","toLower","normalize","replace","loadConfig","interval","min","max","prefixKey","ip","handler","middleware"],"mappings":";;;;AAMA,MAAM,EAAEA,cAAc,EAAE,GAAGC,MAAAA;AAE3B,gBAAe,CAAA,CAACC,MAAAA,EAAa,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAAA,EAAcC,IAAAA,GAAAA;AACnB,QAAA,IAAIC,eAAAA,GAAkBH,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,iBAAA,CAAA;AAExC,QAAA,IAAI,CAACD,eAAAA,EAAiB;YACpBA,eAAAA,GAAkB;gBAChBE,OAAAA,EAAS;AACX,aAAA;AACF,QAAA;QAEA,IAAI,CAACC,GAAAA,CAAI,SAAA,EAAWH,eAAAA,CAAAA,EAAkB;AACpCA,YAAAA,eAAAA,CAAgBE,OAAO,GAAG,IAAA;AAC5B,QAAA;QAEA,IAAIF,eAAAA,CAAgBE,OAAO,KAAK,IAAA,EAAM;;;YAGpC,MAAME,SAAAA,GAAYC,OAAAA,CAAQ,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeN,IAAI,oBAAA,CAAA,CAAsBH,GAAAA,CAAAA;AAC/C,YAAA,MAAMU,SAAAA,GAAYC,QAAAA,CAASF,YAAAA,CAAAA,GAAgBA,YAAAA,CAAaG,WAAW,EAAA,GAAK,cAAA;AAExE,YAAA,MAAMC,cAAcF,QAAAA,CAASX,GAAAA,CAAIc,OAAO,CAACC,IAAI,IACzCC,OAAAA,CAAQD,IAAAA,CAAKE,SAAS,CAACjB,GAAAA,CAAIc,OAAO,CAACC,IAAI,GAAGG,OAAO,CAAC,OAAO,EAAA,CAAA,GACzD,aAAA;AAEJ,YAAA,MAAMC,UAAAA,GAAa;gBACjBC,QAAAA,EAAU;oBAAEC,GAAAA,EAAK;AAAE,iBAAA;gBACnBC,GAAAA,EAAK,CAAA;gBACLC,SAAAA,EAAW,CAAA,EAAGb,SAAAA,CAAU,CAAC,EAAEG,WAAAA,CAAY,CAAC,EAAEb,GAAAA,CAAIc,OAAO,CAACU,EAAE,CAAA,CAAE;AAC1DC,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAI7B,cAAAA,EAAAA;AACZ,gBAAA,CAAA;AACA,gBAAA,GAAGM,eAAe;AAClB,gBAAA,GAAGJ;AACL,aAAA;AAEA,YAAA,OAAOQ,SAAAA,CAAUoB,UAAU,CAACP,UAAAA,CAAAA,CAAYnB,GAAAA,EAAKC,IAAAA,CAAAA;AAC/C,QAAA;QAEA,OAAOA,IAAAA,EAAAA;AACT,IAAA,CAAA;;;;"}
1
+ {"version":3,"file":"rateLimit.mjs","sources":["../../../../../server/src/middlewares/rateLimit.ts"],"sourcesContent":["import { get, isString, has } from 'lodash';\nimport type { Context, Next } from 'koa';\nimport path from 'path';\nimport { errors } from '@strapi/utils';\n\nimport type { Core } from '@strapi/types';\n\nconst { RateLimitError } = errors;\n\nexport default (config: any, { strapi }: { strapi: Core.Strapi }) =>\n async (ctx: Context, next: Next) => {\n let rateLimitConfig = strapi.config.get('admin.rateLimit') as any;\n\n if (!rateLimitConfig) {\n rateLimitConfig = {\n enabled: true,\n };\n }\n\n if (!has(rateLimitConfig, 'enabled')) {\n rateLimitConfig.enabled = true;\n }\n\n if (rateLimitConfig.enabled === true) {\n // TODO: TS - Do the dynamic import\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const rateLimit = require('koa2-ratelimit').RateLimit;\n\n const requestEmail = get(ctx, 'request.body.email');\n const userEmail = isString(requestEmail) ? requestEmail.toLowerCase() : 'unknownEmail';\n\n const requestPath = isString(ctx.request.path)\n ? path.normalize(ctx.request.path).toLowerCase().replace(/\\/$/, '')\n : 'invalidPath';\n\n const loadConfig = {\n interval: { min: 5 },\n max: 5,\n prefixKey: `${userEmail}:${requestPath}:${ctx.request.ip}`,\n handler() {\n throw new RateLimitError();\n },\n ...rateLimitConfig,\n ...config,\n };\n\n return rateLimit.middleware(loadConfig)(ctx, next);\n }\n\n return next();\n };\n"],"names":["RateLimitError","errors","config","strapi","ctx","next","rateLimitConfig","get","enabled","has","rateLimit","require","RateLimit","requestEmail","userEmail","isString","toLowerCase","requestPath","request","path","normalize","replace","loadConfig","interval","min","max","prefixKey","ip","handler","middleware"],"mappings":";;;;AAOA,MAAM,EAAEA,cAAc,EAAE,GAAGC,MAAAA;AAE3B,gBAAe,CAAA,CAACC,MAAAA,EAAa,EAAEC,MAAM,EAA2B,GAC9D,OAAOC,GAAAA,EAAcC,IAAAA,GAAAA;AACnB,QAAA,IAAIC,eAAAA,GAAkBH,MAAAA,CAAOD,MAAM,CAACK,GAAG,CAAC,iBAAA,CAAA;AAExC,QAAA,IAAI,CAACD,eAAAA,EAAiB;YACpBA,eAAAA,GAAkB;gBAChBE,OAAAA,EAAS;AACX,aAAA;AACF,QAAA;QAEA,IAAI,CAACC,GAAAA,CAAIH,eAAAA,EAAiB,SAAA,CAAA,EAAY;AACpCA,YAAAA,eAAAA,CAAgBE,OAAO,GAAG,IAAA;AAC5B,QAAA;QAEA,IAAIF,eAAAA,CAAgBE,OAAO,KAAK,IAAA,EAAM;;;YAGpC,MAAME,SAAAA,GAAYC,OAAAA,CAAQ,gBAAA,CAAA,CAAkBC,SAAS;YAErD,MAAMC,YAAAA,GAAeN,IAAIH,GAAAA,EAAK,oBAAA,CAAA;AAC9B,YAAA,MAAMU,SAAAA,GAAYC,QAAAA,CAASF,YAAAA,CAAAA,GAAgBA,YAAAA,CAAaG,WAAW,EAAA,GAAK,cAAA;YAExE,MAAMC,WAAAA,GAAcF,SAASX,GAAAA,CAAIc,OAAO,CAACC,IAAI,CAAA,GACzCA,KAAKC,SAAS,CAAChB,IAAIc,OAAO,CAACC,IAAI,CAAA,CAAEH,WAAW,GAAGK,OAAO,CAAC,OAAO,EAAA,CAAA,GAC9D,aAAA;AAEJ,YAAA,MAAMC,UAAAA,GAAa;gBACjBC,QAAAA,EAAU;oBAAEC,GAAAA,EAAK;AAAE,iBAAA;gBACnBC,GAAAA,EAAK,CAAA;gBACLC,SAAAA,EAAW,CAAA,EAAGZ,SAAAA,CAAU,CAAC,EAAEG,WAAAA,CAAY,CAAC,EAAEb,GAAAA,CAAIc,OAAO,CAACS,EAAE,CAAA,CAAE;AAC1DC,gBAAAA,OAAAA,CAAAA,GAAAA;AACE,oBAAA,MAAM,IAAI5B,cAAAA,EAAAA;AACZ,gBAAA,CAAA;AACA,gBAAA,GAAGM,eAAe;AAClB,gBAAA,GAAGJ;AACL,aAAA;AAEA,YAAA,OAAOQ,SAAAA,CAAUmB,UAAU,CAACP,UAAAA,CAAAA,CAAYlB,GAAAA,EAAKC,IAAAA,CAAAA;AAC/C,QAAA;QAEA,OAAOA,IAAAA,EAAAA;AACT,IAAA,CAAA;;;;"}
@@ -6,9 +6,15 @@ var ai = require('./ai/services/ai.js');
6
6
  var contentApiToken = require('./strategies/content-api-token.js');
7
7
  var adminToken = require('./strategies/admin-token.js');
8
8
  var migratePreferedLanguageDkToDa = require('./migrations/database/migrate-prefered-language-dk-to-da.js');
9
+ var renameFields = require('./services/permission/rename-fields.js');
9
10
 
10
11
  var register = (({ strapi })=>{
11
12
  strapi.db.migrations.providers.internal.register(migratePreferedLanguageDkToDa.migrateAdminPreferedLanguageDkToDa);
13
+ // Generated rename migrations carry field renames to admin permissions; this
14
+ // must be registered before user migrations run (during schema sync).
15
+ strapi.db.schema.registerAttributeRenameHandler(renameFields.createPermissionFieldRenamer({
16
+ strapi
17
+ }));
12
18
  const passportMiddleware = strapi.service('admin::passport').init();
13
19
  strapi.server.api('admin').use(passportMiddleware);
14
20
  strapi.get('auth').register('admin', admin.default);
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sources":["../../../../server/src/register.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport registerAdminPanelRoute from './routes/serve-admin-panel';\nimport adminAuthStrategy from './strategies/admin';\nimport { createAiAdminService } from './ai/services/ai';\nimport contentApiTokenAuthStrategy from './strategies/content-api-token';\nimport adminTokenAuthStrategy from './strategies/admin-token';\nimport { migrateAdminPreferedLanguageDkToDa } from './migrations/database/migrate-prefered-language-dk-to-da';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n strapi.db.migrations.providers.internal.register(migrateAdminPreferedLanguageDkToDa);\n\n const passportMiddleware = strapi.service('admin::passport').init();\n\n strapi.server.api('admin').use(passportMiddleware);\n strapi.get('auth').register('admin', adminAuthStrategy);\n strapi.get('auth').register('admin', adminTokenAuthStrategy);\n strapi.get('auth').register('content-api', contentApiTokenAuthStrategy);\n\n strapi.add('ai.admin', () => createAiAdminService({ strapi }));\n\n const shouldServeAdminPanel = strapi.config.get('admin.serveAdminPanel');\n\n if (shouldServeAdminPanel) {\n registerAdminPanelRoute({ strapi });\n }\n};\n"],"names":["strapi","db","migrations","providers","internal","register","migrateAdminPreferedLanguageDkToDa","passportMiddleware","service","init","server","api","use","get","adminAuthStrategy","adminTokenAuthStrategy","contentApiTokenAuthStrategy","add","createAiAdminService","shouldServeAdminPanel","config","registerAdminPanelRoute"],"mappings":";;;;;;;;;AAQA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAA2B,GAAA;IACjDA,MAAAA,CAAOC,EAAE,CAACC,UAAU,CAACC,SAAS,CAACC,QAAQ,CAACC,QAAQ,CAACC,gEAAAA,CAAAA;AAEjD,IAAA,MAAMC,kBAAAA,GAAqBP,MAAAA,CAAOQ,OAAO,CAAC,mBAAmBC,IAAI,EAAA;AAEjET,IAAAA,MAAAA,CAAOU,MAAM,CAACC,GAAG,CAAC,OAAA,CAAA,CAASC,GAAG,CAACL,kBAAAA,CAAAA;AAC/BP,IAAAA,MAAAA,CAAOa,GAAG,CAAC,MAAA,CAAA,CAAQR,QAAQ,CAAC,OAAA,EAASS,aAAAA,CAAAA;AACrCd,IAAAA,MAAAA,CAAOa,GAAG,CAAC,MAAA,CAAA,CAAQR,QAAQ,CAAC,OAAA,EAASU,kBAAAA,CAAAA;AACrCf,IAAAA,MAAAA,CAAOa,GAAG,CAAC,MAAA,CAAA,CAAQR,QAAQ,CAAC,aAAA,EAAeW,uBAAAA,CAAAA;AAE3ChB,IAAAA,MAAAA,CAAOiB,GAAG,CAAC,UAAA,EAAY,IAAMC,uBAAAA,CAAqB;AAAElB,YAAAA;AAAO,SAAA,CAAA,CAAA;AAE3D,IAAA,MAAMmB,qBAAAA,GAAwBnB,MAAAA,CAAOoB,MAAM,CAACP,GAAG,CAAC,uBAAA,CAAA;AAEhD,IAAA,IAAIM,qBAAAA,EAAuB;QACzBE,uBAAAA,CAAwB;AAAErB,YAAAA;AAAO,SAAA,CAAA;AACnC,IAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"register.js","sources":["../../../../server/src/register.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport registerAdminPanelRoute from './routes/serve-admin-panel';\nimport adminAuthStrategy from './strategies/admin';\nimport { createAiAdminService } from './ai/services/ai';\nimport contentApiTokenAuthStrategy from './strategies/content-api-token';\nimport adminTokenAuthStrategy from './strategies/admin-token';\nimport { migrateAdminPreferedLanguageDkToDa } from './migrations/database/migrate-prefered-language-dk-to-da';\nimport { createPermissionFieldRenamer } from './services/permission/rename-fields';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n strapi.db.migrations.providers.internal.register(migrateAdminPreferedLanguageDkToDa);\n // Generated rename migrations carry field renames to admin permissions; this\n // must be registered before user migrations run (during schema sync).\n strapi.db.schema.registerAttributeRenameHandler(createPermissionFieldRenamer({ strapi }));\n\n const passportMiddleware = strapi.service('admin::passport').init();\n\n strapi.server.api('admin').use(passportMiddleware);\n strapi.get('auth').register('admin', adminAuthStrategy);\n strapi.get('auth').register('admin', adminTokenAuthStrategy);\n strapi.get('auth').register('content-api', contentApiTokenAuthStrategy);\n\n strapi.add('ai.admin', () => createAiAdminService({ strapi }));\n\n const shouldServeAdminPanel = strapi.config.get('admin.serveAdminPanel');\n\n if (shouldServeAdminPanel) {\n registerAdminPanelRoute({ strapi });\n }\n};\n"],"names":["strapi","db","migrations","providers","internal","register","migrateAdminPreferedLanguageDkToDa","schema","registerAttributeRenameHandler","createPermissionFieldRenamer","passportMiddleware","service","init","server","api","use","get","adminAuthStrategy","adminTokenAuthStrategy","contentApiTokenAuthStrategy","add","createAiAdminService","shouldServeAdminPanel","config","registerAdminPanelRoute"],"mappings":";;;;;;;;;;AASA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAA2B,GAAA;IACjDA,MAAAA,CAAOC,EAAE,CAACC,UAAU,CAACC,SAAS,CAACC,QAAQ,CAACC,QAAQ,CAACC,gEAAAA,CAAAA;;;AAGjDN,IAAAA,MAAAA,CAAOC,EAAE,CAACM,MAAM,CAACC,8BAA8B,CAACC,yCAAAA,CAA6B;AAAET,QAAAA;AAAO,KAAA,CAAA,CAAA;AAEtF,IAAA,MAAMU,kBAAAA,GAAqBV,MAAAA,CAAOW,OAAO,CAAC,mBAAmBC,IAAI,EAAA;AAEjEZ,IAAAA,MAAAA,CAAOa,MAAM,CAACC,GAAG,CAAC,OAAA,CAAA,CAASC,GAAG,CAACL,kBAAAA,CAAAA;AAC/BV,IAAAA,MAAAA,CAAOgB,GAAG,CAAC,MAAA,CAAA,CAAQX,QAAQ,CAAC,OAAA,EAASY,aAAAA,CAAAA;AACrCjB,IAAAA,MAAAA,CAAOgB,GAAG,CAAC,MAAA,CAAA,CAAQX,QAAQ,CAAC,OAAA,EAASa,kBAAAA,CAAAA;AACrClB,IAAAA,MAAAA,CAAOgB,GAAG,CAAC,MAAA,CAAA,CAAQX,QAAQ,CAAC,aAAA,EAAec,uBAAAA,CAAAA;AAE3CnB,IAAAA,MAAAA,CAAOoB,GAAG,CAAC,UAAA,EAAY,IAAMC,uBAAAA,CAAqB;AAAErB,YAAAA;AAAO,SAAA,CAAA,CAAA;AAE3D,IAAA,MAAMsB,qBAAAA,GAAwBtB,MAAAA,CAAOuB,MAAM,CAACP,GAAG,CAAC,uBAAA,CAAA;AAEhD,IAAA,IAAIM,qBAAAA,EAAuB;QACzBE,uBAAAA,CAAwB;AAAExB,YAAAA;AAAO,SAAA,CAAA;AACnC,IAAA;AACF,CAAA;;;;"}
@@ -4,9 +4,15 @@ import { createAiAdminService } from './ai/services/ai.mjs';
4
4
  import contentApiTokenAuthStrategy from './strategies/content-api-token.mjs';
5
5
  import adminTokenAuthStrategy from './strategies/admin-token.mjs';
6
6
  import { migrateAdminPreferedLanguageDkToDa } from './migrations/database/migrate-prefered-language-dk-to-da.mjs';
7
+ import { createPermissionFieldRenamer } from './services/permission/rename-fields.mjs';
7
8
 
8
9
  var register = (({ strapi })=>{
9
10
  strapi.db.migrations.providers.internal.register(migrateAdminPreferedLanguageDkToDa);
11
+ // Generated rename migrations carry field renames to admin permissions; this
12
+ // must be registered before user migrations run (during schema sync).
13
+ strapi.db.schema.registerAttributeRenameHandler(createPermissionFieldRenamer({
14
+ strapi
15
+ }));
10
16
  const passportMiddleware = strapi.service('admin::passport').init();
11
17
  strapi.server.api('admin').use(passportMiddleware);
12
18
  strapi.get('auth').register('admin', adminAuthStrategy);
@@ -1 +1 @@
1
- {"version":3,"file":"register.mjs","sources":["../../../../server/src/register.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport registerAdminPanelRoute from './routes/serve-admin-panel';\nimport adminAuthStrategy from './strategies/admin';\nimport { createAiAdminService } from './ai/services/ai';\nimport contentApiTokenAuthStrategy from './strategies/content-api-token';\nimport adminTokenAuthStrategy from './strategies/admin-token';\nimport { migrateAdminPreferedLanguageDkToDa } from './migrations/database/migrate-prefered-language-dk-to-da';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n strapi.db.migrations.providers.internal.register(migrateAdminPreferedLanguageDkToDa);\n\n const passportMiddleware = strapi.service('admin::passport').init();\n\n strapi.server.api('admin').use(passportMiddleware);\n strapi.get('auth').register('admin', adminAuthStrategy);\n strapi.get('auth').register('admin', adminTokenAuthStrategy);\n strapi.get('auth').register('content-api', contentApiTokenAuthStrategy);\n\n strapi.add('ai.admin', () => createAiAdminService({ strapi }));\n\n const shouldServeAdminPanel = strapi.config.get('admin.serveAdminPanel');\n\n if (shouldServeAdminPanel) {\n registerAdminPanelRoute({ strapi });\n }\n};\n"],"names":["strapi","db","migrations","providers","internal","register","migrateAdminPreferedLanguageDkToDa","passportMiddleware","service","init","server","api","use","get","adminAuthStrategy","adminTokenAuthStrategy","contentApiTokenAuthStrategy","add","createAiAdminService","shouldServeAdminPanel","config","registerAdminPanelRoute"],"mappings":";;;;;;;AAQA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAA2B,GAAA;IACjDA,MAAAA,CAAOC,EAAE,CAACC,UAAU,CAACC,SAAS,CAACC,QAAQ,CAACC,QAAQ,CAACC,kCAAAA,CAAAA;AAEjD,IAAA,MAAMC,kBAAAA,GAAqBP,MAAAA,CAAOQ,OAAO,CAAC,mBAAmBC,IAAI,EAAA;AAEjET,IAAAA,MAAAA,CAAOU,MAAM,CAACC,GAAG,CAAC,OAAA,CAAA,CAASC,GAAG,CAACL,kBAAAA,CAAAA;AAC/BP,IAAAA,MAAAA,CAAOa,GAAG,CAAC,MAAA,CAAA,CAAQR,QAAQ,CAAC,OAAA,EAASS,iBAAAA,CAAAA;AACrCd,IAAAA,MAAAA,CAAOa,GAAG,CAAC,MAAA,CAAA,CAAQR,QAAQ,CAAC,OAAA,EAASU,sBAAAA,CAAAA;AACrCf,IAAAA,MAAAA,CAAOa,GAAG,CAAC,MAAA,CAAA,CAAQR,QAAQ,CAAC,aAAA,EAAeW,2BAAAA,CAAAA;AAE3ChB,IAAAA,MAAAA,CAAOiB,GAAG,CAAC,UAAA,EAAY,IAAMC,oBAAAA,CAAqB;AAAElB,YAAAA;AAAO,SAAA,CAAA,CAAA;AAE3D,IAAA,MAAMmB,qBAAAA,GAAwBnB,MAAAA,CAAOoB,MAAM,CAACP,GAAG,CAAC,uBAAA,CAAA;AAEhD,IAAA,IAAIM,qBAAAA,EAAuB;QACzBE,uBAAAA,CAAwB;AAAErB,YAAAA;AAAO,SAAA,CAAA;AACnC,IAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"register.mjs","sources":["../../../../server/src/register.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport registerAdminPanelRoute from './routes/serve-admin-panel';\nimport adminAuthStrategy from './strategies/admin';\nimport { createAiAdminService } from './ai/services/ai';\nimport contentApiTokenAuthStrategy from './strategies/content-api-token';\nimport adminTokenAuthStrategy from './strategies/admin-token';\nimport { migrateAdminPreferedLanguageDkToDa } from './migrations/database/migrate-prefered-language-dk-to-da';\nimport { createPermissionFieldRenamer } from './services/permission/rename-fields';\n\nexport default ({ strapi }: { strapi: Core.Strapi }) => {\n strapi.db.migrations.providers.internal.register(migrateAdminPreferedLanguageDkToDa);\n // Generated rename migrations carry field renames to admin permissions; this\n // must be registered before user migrations run (during schema sync).\n strapi.db.schema.registerAttributeRenameHandler(createPermissionFieldRenamer({ strapi }));\n\n const passportMiddleware = strapi.service('admin::passport').init();\n\n strapi.server.api('admin').use(passportMiddleware);\n strapi.get('auth').register('admin', adminAuthStrategy);\n strapi.get('auth').register('admin', adminTokenAuthStrategy);\n strapi.get('auth').register('content-api', contentApiTokenAuthStrategy);\n\n strapi.add('ai.admin', () => createAiAdminService({ strapi }));\n\n const shouldServeAdminPanel = strapi.config.get('admin.serveAdminPanel');\n\n if (shouldServeAdminPanel) {\n registerAdminPanelRoute({ strapi });\n }\n};\n"],"names":["strapi","db","migrations","providers","internal","register","migrateAdminPreferedLanguageDkToDa","schema","registerAttributeRenameHandler","createPermissionFieldRenamer","passportMiddleware","service","init","server","api","use","get","adminAuthStrategy","adminTokenAuthStrategy","contentApiTokenAuthStrategy","add","createAiAdminService","shouldServeAdminPanel","config","registerAdminPanelRoute"],"mappings":";;;;;;;;AASA,eAAe,CAAA,CAAC,EAAEA,MAAM,EAA2B,GAAA;IACjDA,MAAAA,CAAOC,EAAE,CAACC,UAAU,CAACC,SAAS,CAACC,QAAQ,CAACC,QAAQ,CAACC,kCAAAA,CAAAA;;;AAGjDN,IAAAA,MAAAA,CAAOC,EAAE,CAACM,MAAM,CAACC,8BAA8B,CAACC,4BAAAA,CAA6B;AAAET,QAAAA;AAAO,KAAA,CAAA,CAAA;AAEtF,IAAA,MAAMU,kBAAAA,GAAqBV,MAAAA,CAAOW,OAAO,CAAC,mBAAmBC,IAAI,EAAA;AAEjEZ,IAAAA,MAAAA,CAAOa,MAAM,CAACC,GAAG,CAAC,OAAA,CAAA,CAASC,GAAG,CAACL,kBAAAA,CAAAA;AAC/BV,IAAAA,MAAAA,CAAOgB,GAAG,CAAC,MAAA,CAAA,CAAQX,QAAQ,CAAC,OAAA,EAASY,iBAAAA,CAAAA;AACrCjB,IAAAA,MAAAA,CAAOgB,GAAG,CAAC,MAAA,CAAA,CAAQX,QAAQ,CAAC,OAAA,EAASa,sBAAAA,CAAAA;AACrClB,IAAAA,MAAAA,CAAOgB,GAAG,CAAC,MAAA,CAAA,CAAQX,QAAQ,CAAC,aAAA,EAAec,2BAAAA,CAAAA;AAE3CnB,IAAAA,MAAAA,CAAOoB,GAAG,CAAC,UAAA,EAAY,IAAMC,oBAAAA,CAAqB;AAAErB,YAAAA;AAAO,SAAA,CAAA,CAAA;AAE3D,IAAA,MAAMsB,qBAAAA,GAAwBtB,MAAAA,CAAOuB,MAAM,CAACP,GAAG,CAAC,uBAAA,CAAA;AAEhD,IAAA,IAAIM,qBAAAA,EAAuB;QACzBE,uBAAAA,CAAwB;AAAExB,YAAAA;AAAO,SAAA,CAAA;AACnC,IAAA;AACF,CAAA;;;;"}
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
4
3
  var utils = require('@strapi/utils');
5
4
  var index = require('../utils/index.js');
6
5
  var constants = require('./constants.js');
@@ -14,7 +13,7 @@ const { NotFoundError } = utils.errors;
14
13
  * @returns {object[]}
15
14
  */ const getAllowedActionsForRole = async (roleId)=>{
16
15
  const { actionProvider } = index.getService('permission');
17
- if (!fp.isNil(roleId)) {
16
+ if (roleId != null) {
18
17
  const role = await index.getService('role').findOne({
19
18
  id: roleId
20
19
  });
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sources":["../../../../../server/src/services/action.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport { getService } from '../utils';\nimport constants from './constants';\nimport type { AdminRole } from '../../../shared/contracts/shared';\n\nconst { AUTHOR_CODE, PUBLISH_ACTION } = constants;\n\nconst { NotFoundError } = errors;\n// TODO: move actionProvider here instead of in the permission service\n\n/**\n * Returns actions available for a role.\n * @param {string|number} roleId\n * @returns {object[]}\n */\nconst getAllowedActionsForRole = async (roleId?: string) => {\n const { actionProvider } = getService('permission');\n\n if (!isNil(roleId)) {\n const role: AdminRole = await getService('role').findOne({ id: roleId });\n\n if (!role) {\n throw new NotFoundError('role.notFound');\n }\n\n if (role.code === AUTHOR_CODE) {\n return actionProvider.values().filter(({ actionId }: any) => actionId !== PUBLISH_ACTION);\n }\n }\n\n return actionProvider.values();\n};\n\nexport { getAllowedActionsForRole };\n"],"names":["AUTHOR_CODE","PUBLISH_ACTION","constants","NotFoundError","errors","getAllowedActionsForRole","roleId","actionProvider","getService","isNil","role","findOne","id","code","values","filter","actionId"],"mappings":";;;;;;;AAMA,MAAM,EAAEA,WAAW,EAAEC,cAAc,EAAE,GAAGC,SAAAA;AAExC,MAAM,EAAEC,aAAa,EAAE,GAAGC,YAAAA;AAC1B;AAEA;;;;IAKA,MAAMC,2BAA2B,OAAOC,MAAAA,GAAAA;AACtC,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGC,gBAAAA,CAAW,YAAA,CAAA;IAEtC,IAAI,CAACC,SAAMH,MAAAA,CAAAA,EAAS;AAClB,QAAA,MAAMI,IAAAA,GAAkB,MAAMF,gBAAAA,CAAW,MAAA,CAAA,CAAQG,OAAO,CAAC;YAAEC,EAAAA,EAAIN;AAAO,SAAA,CAAA;AAEtE,QAAA,IAAI,CAACI,IAAAA,EAAM;AACT,YAAA,MAAM,IAAIP,aAAAA,CAAc,eAAA,CAAA;AAC1B,QAAA;QAEA,IAAIO,IAAAA,CAAKG,IAAI,KAAKb,WAAAA,EAAa;YAC7B,OAAOO,cAAAA,CAAeO,MAAM,EAAA,CAAGC,MAAM,CAAC,CAAC,EAAEC,QAAQ,EAAO,GAAKA,QAAAA,KAAaf,cAAAA,CAAAA;AAC5E,QAAA;AACF,IAAA;AAEA,IAAA,OAAOM,eAAeO,MAAM,EAAA;AAC9B;;;;"}
1
+ {"version":3,"file":"action.js","sources":["../../../../../server/src/services/action.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\nimport { getService } from '../utils';\nimport constants from './constants';\nimport type { AdminRole } from '../../../shared/contracts/shared';\n\nconst { AUTHOR_CODE, PUBLISH_ACTION } = constants;\n\nconst { NotFoundError } = errors;\n// TODO: move actionProvider here instead of in the permission service\n\n/**\n * Returns actions available for a role.\n * @param {string|number} roleId\n * @returns {object[]}\n */\nconst getAllowedActionsForRole = async (roleId?: string) => {\n const { actionProvider } = getService('permission');\n\n if (roleId != null) {\n const role: AdminRole = await getService('role').findOne({ id: roleId });\n\n if (!role) {\n throw new NotFoundError('role.notFound');\n }\n\n if (role.code === AUTHOR_CODE) {\n return actionProvider.values().filter(({ actionId }: any) => actionId !== PUBLISH_ACTION);\n }\n }\n\n return actionProvider.values();\n};\n\nexport { getAllowedActionsForRole };\n"],"names":["AUTHOR_CODE","PUBLISH_ACTION","constants","NotFoundError","errors","getAllowedActionsForRole","roleId","actionProvider","getService","role","findOne","id","code","values","filter","actionId"],"mappings":";;;;;;AAKA,MAAM,EAAEA,WAAW,EAAEC,cAAc,EAAE,GAAGC,SAAAA;AAExC,MAAM,EAAEC,aAAa,EAAE,GAAGC,YAAAA;AAC1B;AAEA;;;;IAKA,MAAMC,2BAA2B,OAAOC,MAAAA,GAAAA;AACtC,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGC,gBAAAA,CAAW,YAAA,CAAA;AAEtC,IAAA,IAAIF,UAAU,IAAA,EAAM;AAClB,QAAA,MAAMG,IAAAA,GAAkB,MAAMD,gBAAAA,CAAW,MAAA,CAAA,CAAQE,OAAO,CAAC;YAAEC,EAAAA,EAAIL;AAAO,SAAA,CAAA;AAEtE,QAAA,IAAI,CAACG,IAAAA,EAAM;AACT,YAAA,MAAM,IAAIN,aAAAA,CAAc,eAAA,CAAA;AAC1B,QAAA;QAEA,IAAIM,IAAAA,CAAKG,IAAI,KAAKZ,WAAAA,EAAa;YAC7B,OAAOO,cAAAA,CAAeM,MAAM,EAAA,CAAGC,MAAM,CAAC,CAAC,EAAEC,QAAQ,EAAO,GAAKA,QAAAA,KAAad,cAAAA,CAAAA;AAC5E,QAAA;AACF,IAAA;AAEA,IAAA,OAAOM,eAAeM,MAAM,EAAA;AAC9B;;;;"}
@@ -1,4 +1,3 @@
1
- import { isNil } from 'lodash/fp';
2
1
  import { errors } from '@strapi/utils';
3
2
  import { getService } from '../utils/index.mjs';
4
3
  import constants from './constants.mjs';
@@ -12,7 +11,7 @@ const { NotFoundError } = errors;
12
11
  * @returns {object[]}
13
12
  */ const getAllowedActionsForRole = async (roleId)=>{
14
13
  const { actionProvider } = getService('permission');
15
- if (!isNil(roleId)) {
14
+ if (roleId != null) {
16
15
  const role = await getService('role').findOne({
17
16
  id: roleId
18
17
  });
@@ -1 +1 @@
1
- {"version":3,"file":"action.mjs","sources":["../../../../../server/src/services/action.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport { getService } from '../utils';\nimport constants from './constants';\nimport type { AdminRole } from '../../../shared/contracts/shared';\n\nconst { AUTHOR_CODE, PUBLISH_ACTION } = constants;\n\nconst { NotFoundError } = errors;\n// TODO: move actionProvider here instead of in the permission service\n\n/**\n * Returns actions available for a role.\n * @param {string|number} roleId\n * @returns {object[]}\n */\nconst getAllowedActionsForRole = async (roleId?: string) => {\n const { actionProvider } = getService('permission');\n\n if (!isNil(roleId)) {\n const role: AdminRole = await getService('role').findOne({ id: roleId });\n\n if (!role) {\n throw new NotFoundError('role.notFound');\n }\n\n if (role.code === AUTHOR_CODE) {\n return actionProvider.values().filter(({ actionId }: any) => actionId !== PUBLISH_ACTION);\n }\n }\n\n return actionProvider.values();\n};\n\nexport { getAllowedActionsForRole };\n"],"names":["AUTHOR_CODE","PUBLISH_ACTION","constants","NotFoundError","errors","getAllowedActionsForRole","roleId","actionProvider","getService","isNil","role","findOne","id","code","values","filter","actionId"],"mappings":";;;;;AAMA,MAAM,EAAEA,WAAW,EAAEC,cAAc,EAAE,GAAGC,SAAAA;AAExC,MAAM,EAAEC,aAAa,EAAE,GAAGC,MAAAA;AAC1B;AAEA;;;;IAKA,MAAMC,2BAA2B,OAAOC,MAAAA,GAAAA;AACtC,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGC,UAAAA,CAAW,YAAA,CAAA;IAEtC,IAAI,CAACC,MAAMH,MAAAA,CAAAA,EAAS;AAClB,QAAA,MAAMI,IAAAA,GAAkB,MAAMF,UAAAA,CAAW,MAAA,CAAA,CAAQG,OAAO,CAAC;YAAEC,EAAAA,EAAIN;AAAO,SAAA,CAAA;AAEtE,QAAA,IAAI,CAACI,IAAAA,EAAM;AACT,YAAA,MAAM,IAAIP,aAAAA,CAAc,eAAA,CAAA;AAC1B,QAAA;QAEA,IAAIO,IAAAA,CAAKG,IAAI,KAAKb,WAAAA,EAAa;YAC7B,OAAOO,cAAAA,CAAeO,MAAM,EAAA,CAAGC,MAAM,CAAC,CAAC,EAAEC,QAAQ,EAAO,GAAKA,QAAAA,KAAaf,cAAAA,CAAAA;AAC5E,QAAA;AACF,IAAA;AAEA,IAAA,OAAOM,eAAeO,MAAM,EAAA;AAC9B;;;;"}
1
+ {"version":3,"file":"action.mjs","sources":["../../../../../server/src/services/action.ts"],"sourcesContent":["import { errors } from '@strapi/utils';\nimport { getService } from '../utils';\nimport constants from './constants';\nimport type { AdminRole } from '../../../shared/contracts/shared';\n\nconst { AUTHOR_CODE, PUBLISH_ACTION } = constants;\n\nconst { NotFoundError } = errors;\n// TODO: move actionProvider here instead of in the permission service\n\n/**\n * Returns actions available for a role.\n * @param {string|number} roleId\n * @returns {object[]}\n */\nconst getAllowedActionsForRole = async (roleId?: string) => {\n const { actionProvider } = getService('permission');\n\n if (roleId != null) {\n const role: AdminRole = await getService('role').findOne({ id: roleId });\n\n if (!role) {\n throw new NotFoundError('role.notFound');\n }\n\n if (role.code === AUTHOR_CODE) {\n return actionProvider.values().filter(({ actionId }: any) => actionId !== PUBLISH_ACTION);\n }\n }\n\n return actionProvider.values();\n};\n\nexport { getAllowedActionsForRole };\n"],"names":["AUTHOR_CODE","PUBLISH_ACTION","constants","NotFoundError","errors","getAllowedActionsForRole","roleId","actionProvider","getService","role","findOne","id","code","values","filter","actionId"],"mappings":";;;;AAKA,MAAM,EAAEA,WAAW,EAAEC,cAAc,EAAE,GAAGC,SAAAA;AAExC,MAAM,EAAEC,aAAa,EAAE,GAAGC,MAAAA;AAC1B;AAEA;;;;IAKA,MAAMC,2BAA2B,OAAOC,MAAAA,GAAAA;AACtC,IAAA,MAAM,EAAEC,cAAc,EAAE,GAAGC,UAAAA,CAAW,YAAA,CAAA;AAEtC,IAAA,IAAIF,UAAU,IAAA,EAAM;AAClB,QAAA,MAAMG,IAAAA,GAAkB,MAAMD,UAAAA,CAAW,MAAA,CAAA,CAAQE,OAAO,CAAC;YAAEC,EAAAA,EAAIL;AAAO,SAAA,CAAA;AAEtE,QAAA,IAAI,CAACG,IAAAA,EAAM;AACT,YAAA,MAAM,IAAIN,aAAAA,CAAc,eAAA,CAAA;AAC1B,QAAA;QAEA,IAAIM,IAAAA,CAAKG,IAAI,KAAKZ,WAAAA,EAAa;YAC7B,OAAOO,cAAAA,CAAeM,MAAM,EAAA,CAAGC,MAAM,CAAC,CAAC,EAAEC,QAAQ,EAAO,GAAKA,QAAAA,KAAad,cAAAA,CAAAA;AAC5E,QAAA;AACF,IAAA;AAEA,IAAA,OAAOM,eAAeM,MAAM,EAAA;AAC9B;;;;"}