@strapi/admin 5.56.0 → 5.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/dist/admin/admin/src/components/Filters.js +1 -1
  2. package/dist/admin/admin/src/components/Filters.js.map +1 -1
  3. package/dist/admin/admin/src/components/Filters.mjs +1 -1
  4. package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
  5. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -2
  6. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  7. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -2
  8. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/MediaLibraryBanner.js +38 -2
  10. package/dist/admin/admin/src/components/MediaLibraryBanner.js.map +1 -1
  11. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs +18 -2
  12. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/RelativeTime.js +9 -0
  14. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  15. package/dist/admin/admin/src/components/RelativeTime.mjs +10 -1
  16. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/TopBanners.js +52 -0
  18. package/dist/admin/admin/src/components/TopBanners.js.map +1 -0
  19. package/dist/admin/admin/src/components/TopBanners.mjs +30 -0
  20. package/dist/admin/admin/src/components/TopBanners.mjs.map +1 -0
  21. package/dist/admin/admin/src/features/Tracking.js +28 -8
  22. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  23. package/dist/admin/admin/src/features/Tracking.mjs +29 -10
  24. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  25. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +4 -20
  26. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  27. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -20
  28. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  29. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js +59 -0
  30. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js.map +1 -0
  31. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs +37 -0
  32. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs.map +1 -0
  33. package/dist/admin/admin/src/translations/en.json.js +5 -0
  34. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  35. package/dist/admin/admin/src/translations/en.json.mjs +5 -0
  36. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  37. package/dist/admin/admin/src/utils/getFetchClient.js +3 -3
  38. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  39. package/dist/admin/admin/src/utils/getFetchClient.mjs +2 -2
  40. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  41. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +6 -1
  42. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  43. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +6 -1
  44. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  45. package/dist/admin/src/components/MediaLibraryBanner.d.ts +10 -1
  46. package/dist/admin/src/components/TopBanners.d.ts +8 -0
  47. package/dist/admin/src/features/Tracking.d.ts +12 -1
  48. package/dist/admin/src/layouts/useAuthenticatedAccessTracking.d.ts +6 -0
  49. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +5 -0
  50. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  51. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +8 -2
  52. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  53. package/dist/ee/server/src/controllers/authentication.d.ts.map +1 -1
  54. package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
  55. package/dist/ee/server/src/index.d.ts +4 -1
  56. package/dist/ee/server/src/index.d.ts.map +1 -1
  57. package/dist/ee/server/src/services/index.d.ts +4 -1
  58. package/dist/ee/server/src/services/index.d.ts.map +1 -1
  59. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  60. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  61. package/dist/ee/server/src/services/seat-enforcement.d.ts +3 -1
  62. package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
  63. package/dist/server/ee/server/src/controllers/admin.js +3 -4
  64. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  65. package/dist/server/ee/server/src/controllers/admin.mjs +3 -4
  66. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  67. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js +2 -2
  68. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  69. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +2 -2
  70. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  71. package/dist/server/ee/server/src/controllers/authentication.js +11 -11
  72. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  73. package/dist/server/ee/server/src/controllers/authentication.mjs +11 -11
  74. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  75. package/dist/server/ee/server/src/controllers/user.js +7 -8
  76. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  77. package/dist/server/ee/server/src/controllers/user.mjs +8 -9
  78. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  79. package/dist/server/ee/server/src/services/metrics.js +9 -7
  80. package/dist/server/ee/server/src/services/metrics.js.map +1 -1
  81. package/dist/server/ee/server/src/services/metrics.mjs +9 -7
  82. package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
  83. package/dist/server/ee/server/src/services/persist-tables.js +3 -4
  84. package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
  85. package/dist/server/ee/server/src/services/persist-tables.mjs +3 -4
  86. package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
  87. package/dist/server/ee/server/src/services/role.js +2 -2
  88. package/dist/server/ee/server/src/services/role.js.map +1 -1
  89. package/dist/server/ee/server/src/services/role.mjs +1 -1
  90. package/dist/server/ee/server/src/services/role.mjs.map +1 -1
  91. package/dist/server/ee/server/src/services/seat-enforcement.js +20 -20
  92. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  93. package/dist/server/ee/server/src/services/seat-enforcement.mjs +20 -20
  94. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  95. package/dist/server/ee/server/src/services/user.js +1 -2
  96. package/dist/server/ee/server/src/services/user.js.map +1 -1
  97. package/dist/server/ee/server/src/services/user.mjs +2 -3
  98. package/dist/server/ee/server/src/services/user.mjs.map +1 -1
  99. package/dist/server/ee/server/src/utils/sso-lock.js +2 -2
  100. package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
  101. package/dist/server/ee/server/src/utils/sso-lock.mjs +1 -1
  102. package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
  103. package/dist/server/server/src/audit-logs/admin-users.js +3 -3
  104. package/dist/server/server/src/audit-logs/admin-users.js.map +1 -1
  105. package/dist/server/server/src/audit-logs/admin-users.mjs +2 -2
  106. package/dist/server/server/src/audit-logs/admin-users.mjs.map +1 -1
  107. package/dist/server/server/src/audit-logs/tokens.js +3 -3
  108. package/dist/server/server/src/audit-logs/tokens.js.map +1 -1
  109. package/dist/server/server/src/audit-logs/tokens.mjs +2 -2
  110. package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -1
  111. package/dist/server/server/src/audit-logs/webhooks.js +2 -2
  112. package/dist/server/server/src/audit-logs/webhooks.js.map +1 -1
  113. package/dist/server/server/src/audit-logs/webhooks.mjs +1 -1
  114. package/dist/server/server/src/audit-logs/webhooks.mjs.map +1 -1
  115. package/dist/server/server/src/bootstrap.js +6 -4
  116. package/dist/server/server/src/bootstrap.js.map +1 -1
  117. package/dist/server/server/src/bootstrap.mjs +6 -4
  118. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  119. package/dist/server/server/src/controllers/admin-token.js +8 -8
  120. package/dist/server/server/src/controllers/admin-token.js.map +1 -1
  121. package/dist/server/server/src/controllers/admin-token.mjs +4 -4
  122. package/dist/server/server/src/controllers/admin-token.mjs.map +1 -1
  123. package/dist/server/server/src/controllers/admin.js +3 -5
  124. package/dist/server/server/src/controllers/admin.js.map +1 -1
  125. package/dist/server/server/src/controllers/admin.mjs +2 -4
  126. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  127. package/dist/server/server/src/controllers/api-token.js +8 -8
  128. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  129. package/dist/server/server/src/controllers/api-token.mjs +4 -4
  130. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  131. package/dist/server/server/src/controllers/formatters/conditions.js +2 -2
  132. package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
  133. package/dist/server/server/src/controllers/formatters/conditions.mjs +2 -2
  134. package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
  135. package/dist/server/server/src/controllers/transfer/index.js +2 -2
  136. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  137. package/dist/server/server/src/controllers/transfer/index.mjs +2 -2
  138. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  139. package/dist/server/server/src/controllers/transfer/token.js +8 -8
  140. package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
  141. package/dist/server/server/src/controllers/transfer/token.mjs +4 -4
  142. package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
  143. package/dist/server/server/src/domain/action/index.js +18 -16
  144. package/dist/server/server/src/domain/action/index.js.map +1 -1
  145. package/dist/server/server/src/domain/action/index.mjs +16 -14
  146. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  147. package/dist/server/server/src/domain/action/provider.mjs +4 -4
  148. package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
  149. package/dist/server/server/src/domain/condition/index.js +7 -4
  150. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  151. package/dist/server/server/src/domain/condition/index.mjs +7 -4
  152. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  153. package/dist/server/server/src/domain/permission/index.js +24 -15
  154. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  155. package/dist/server/server/src/domain/permission/index.mjs +21 -12
  156. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  157. package/dist/server/server/src/middlewares/rateLimit.js +5 -5
  158. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  159. package/dist/server/server/src/middlewares/rateLimit.mjs +4 -4
  160. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  161. package/dist/server/server/src/register.js +6 -0
  162. package/dist/server/server/src/register.js.map +1 -1
  163. package/dist/server/server/src/register.mjs +6 -0
  164. package/dist/server/server/src/register.mjs.map +1 -1
  165. package/dist/server/server/src/services/action.js +1 -2
  166. package/dist/server/server/src/services/action.js.map +1 -1
  167. package/dist/server/server/src/services/action.mjs +1 -2
  168. package/dist/server/server/src/services/action.mjs.map +1 -1
  169. package/dist/server/server/src/services/api-token.js +61 -49
  170. package/dist/server/server/src/services/api-token.js.map +1 -1
  171. package/dist/server/server/src/services/api-token.mjs +53 -41
  172. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  173. package/dist/server/server/src/services/condition.js +2 -2
  174. package/dist/server/server/src/services/condition.js.map +1 -1
  175. package/dist/server/server/src/services/condition.mjs +1 -1
  176. package/dist/server/server/src/services/condition.mjs.map +1 -1
  177. package/dist/server/server/src/services/content-type.js +5 -4
  178. package/dist/server/server/src/services/content-type.js.map +1 -1
  179. package/dist/server/server/src/services/content-type.mjs +8 -7
  180. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  181. package/dist/server/server/src/services/homepage.js +2 -1
  182. package/dist/server/server/src/services/homepage.js.map +1 -1
  183. package/dist/server/server/src/services/homepage.mjs +2 -1
  184. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  185. package/dist/server/server/src/services/passport/local-strategy.js +2 -2
  186. package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
  187. package/dist/server/server/src/services/passport/local-strategy.mjs +1 -1
  188. package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
  189. package/dist/server/server/src/services/passport.js +1 -2
  190. package/dist/server/server/src/services/passport.js.map +1 -1
  191. package/dist/server/server/src/services/passport.mjs +1 -2
  192. package/dist/server/server/src/services/passport.mjs.map +1 -1
  193. package/dist/server/server/src/services/permission/engine.js +4 -4
  194. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  195. package/dist/server/server/src/services/permission/engine.mjs +2 -2
  196. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  197. package/dist/server/server/src/services/permission/permissions-manager/index.js +2 -3
  198. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  199. package/dist/server/server/src/services/permission/permissions-manager/index.mjs +1 -2
  200. package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
  201. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +6 -6
  202. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  203. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +4 -4
  204. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  205. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +47 -41
  206. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  207. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +44 -38
  208. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  209. package/dist/server/server/src/services/permission/permissions-manager/validate.js +30 -26
  210. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  211. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +28 -24
  212. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  213. package/dist/server/server/src/services/permission/queries.js +9 -9
  214. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  215. package/dist/server/server/src/services/permission/queries.mjs +9 -9
  216. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  217. package/dist/server/server/src/services/permission/rename-fields.js +118 -0
  218. package/dist/server/server/src/services/permission/rename-fields.js.map +1 -0
  219. package/dist/server/server/src/services/permission/rename-fields.mjs +116 -0
  220. package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -0
  221. package/dist/server/server/src/services/permission/sections-builder/index.js +2 -2
  222. package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
  223. package/dist/server/server/src/services/permission/sections-builder/index.mjs +2 -2
  224. package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
  225. package/dist/server/server/src/services/permission/sections-builder/section.js +1 -2
  226. package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
  227. package/dist/server/server/src/services/permission/sections-builder/section.mjs +1 -2
  228. package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
  229. package/dist/server/server/src/services/permission/sections-builder/utils.js +6 -6
  230. package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
  231. package/dist/server/server/src/services/permission/sections-builder/utils.mjs +4 -4
  232. package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
  233. package/dist/server/server/src/services/role.js +20 -19
  234. package/dist/server/server/src/services/role.js.map +1 -1
  235. package/dist/server/server/src/services/role.mjs +20 -19
  236. package/dist/server/server/src/services/role.mjs.map +1 -1
  237. package/dist/server/server/src/services/transfer/token.js +20 -16
  238. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  239. package/dist/server/server/src/services/transfer/token.mjs +14 -10
  240. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  241. package/dist/server/server/src/services/user.js +2 -3
  242. package/dist/server/server/src/services/user.js.map +1 -1
  243. package/dist/server/server/src/services/user.mjs +3 -4
  244. package/dist/server/server/src/services/user.mjs.map +1 -1
  245. package/dist/server/server/src/strategies/api-token-utils.js +2 -3
  246. package/dist/server/server/src/strategies/api-token-utils.js.map +1 -1
  247. package/dist/server/server/src/strategies/api-token-utils.mjs +2 -3
  248. package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -1
  249. package/dist/server/server/src/strategies/content-api-token.js +3 -3
  250. package/dist/server/server/src/strategies/content-api-token.js.map +1 -1
  251. package/dist/server/server/src/strategies/content-api-token.mjs +1 -1
  252. package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -1
  253. package/dist/server/server/src/strategies/data-transfer.js +4 -4
  254. package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
  255. package/dist/server/server/src/strategies/data-transfer.mjs +3 -3
  256. package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
  257. package/dist/server/server/src/validation/common-validators.js +9 -10
  258. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  259. package/dist/server/server/src/validation/common-validators.mjs +13 -14
  260. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  261. package/dist/server/server/src/validation/user.js +1 -2
  262. package/dist/server/server/src/validation/user.js.map +1 -1
  263. package/dist/server/server/src/validation/user.mjs +1 -2
  264. package/dist/server/server/src/validation/user.mjs.map +1 -1
  265. package/dist/server/src/audit-logs/tokens.d.ts.map +1 -1
  266. package/dist/server/src/bootstrap.d.ts.map +1 -1
  267. package/dist/server/src/controllers/admin-token.d.ts.map +1 -1
  268. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  269. package/dist/server/src/controllers/api-token.d.ts.map +1 -1
  270. package/dist/server/src/controllers/formatters/conditions.d.ts +1 -1
  271. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  272. package/dist/server/src/controllers/homepage.d.ts +1 -1
  273. package/dist/server/src/controllers/index.d.ts +1 -1
  274. package/dist/server/src/controllers/transfer/index.d.ts.map +1 -1
  275. package/dist/server/src/controllers/transfer/token.d.ts.map +1 -1
  276. package/dist/server/src/domain/action/index.d.ts +1 -0
  277. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  278. package/dist/server/src/domain/condition/index.d.ts +2 -2
  279. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  280. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  281. package/dist/server/src/index.d.ts +3 -3
  282. package/dist/server/src/index.d.ts.map +1 -1
  283. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  284. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  285. package/dist/server/src/register.d.ts.map +1 -1
  286. package/dist/server/src/services/action.d.ts.map +1 -1
  287. package/dist/server/src/services/api-token.d.ts.map +1 -1
  288. package/dist/server/src/services/condition.d.ts.map +1 -1
  289. package/dist/server/src/services/content-type.d.ts.map +1 -1
  290. package/dist/server/src/services/homepage.d.ts +1 -1
  291. package/dist/server/src/services/homepage.d.ts.map +1 -1
  292. package/dist/server/src/services/index.d.ts +2 -2
  293. package/dist/server/src/services/index.d.ts.map +1 -1
  294. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  295. package/dist/server/src/services/passport.d.ts.map +1 -1
  296. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  297. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  298. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  299. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  300. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  301. package/dist/server/src/services/permission/rename-fields.d.ts +21 -0
  302. package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -0
  303. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  304. package/dist/server/src/services/permission/sections-builder/utils.d.ts +1 -1
  305. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  306. package/dist/server/src/services/role.d.ts +1 -1
  307. package/dist/server/src/services/role.d.ts.map +1 -1
  308. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  309. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  310. package/dist/server/src/validation/user.d.ts.map +1 -1
  311. package/package.json +9 -9
@@ -1,4 +1,3 @@
1
- import { assign } from 'lodash/fp';
2
1
  import { getService } from '../utils/index.mjs';
3
2
 
4
3
  const getSSOProvidersList = async ()=>{
@@ -13,10 +12,11 @@ const sendUpdateProjectInformation = async (strapi1)=>{
13
12
  const numberOfAdminUsers = await getService('user').count();
14
13
  if (strapi1.ee.features.isEnabled('sso')) {
15
14
  const SSOProviders = await getSSOProvidersList();
16
- groupProperties = assign(groupProperties, {
15
+ groupProperties = {
16
+ ...groupProperties,
17
17
  SSOProviders,
18
18
  isSSOConfigured: SSOProviders.length !== 0
19
- });
19
+ };
20
20
  }
21
21
  if (strapi1.ee.features.isEnabled('cms-content-releases')) {
22
22
  const numberOfContentReleases = await strapi1.db.query('plugin::content-releases.release').count();
@@ -27,15 +27,17 @@ const sendUpdateProjectInformation = async (strapi1)=>{
27
27
  }
28
28
  }
29
29
  });
30
- groupProperties = assign(groupProperties, {
30
+ groupProperties = {
31
+ ...groupProperties,
31
32
  numberOfContentReleases,
32
33
  numberOfPublishedContentReleases
33
- });
34
+ };
34
35
  }
35
- groupProperties = assign(groupProperties, {
36
+ groupProperties = {
37
+ ...groupProperties,
36
38
  numberOfActiveAdminUsers,
37
39
  numberOfAdminUsers
38
- });
40
+ };
39
41
  strapi1.telemetry.send('didUpdateProjectInformation', {
40
42
  groupProperties
41
43
  });
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.mjs","sources":["../../../../../../ee/server/src/services/metrics.ts"],"sourcesContent":["import { assign } from 'lodash/fp';\nimport type { Core } from '@strapi/types';\nimport { getService } from '../utils';\n\nconst getSSOProvidersList = async () => {\n const { providerRegistry } = strapi.service('admin::passport');\n\n return providerRegistry.getAll().map(({ uid }: { uid: string }) => uid);\n};\n\nconst sendUpdateProjectInformation = async (strapi: Core.Strapi) => {\n let groupProperties = {};\n\n const numberOfActiveAdminUsers = await getService('user').count({ isActive: true });\n const numberOfAdminUsers = await getService('user').count();\n\n if (strapi.ee.features.isEnabled('sso')) {\n const SSOProviders = await getSSOProvidersList();\n\n groupProperties = assign(groupProperties, {\n SSOProviders,\n isSSOConfigured: SSOProviders.length !== 0,\n });\n }\n\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n const numberOfContentReleases = await strapi\n .db!.query('plugin::content-releases.release')\n .count();\n\n const numberOfPublishedContentReleases = await strapi\n .db!.query('plugin::content-releases.release')\n .count({\n filters: { releasedAt: { $notNull: true } },\n });\n\n groupProperties = assign(groupProperties, {\n numberOfContentReleases,\n numberOfPublishedContentReleases,\n });\n }\n\n groupProperties = assign(groupProperties, { numberOfActiveAdminUsers, numberOfAdminUsers });\n\n strapi.telemetry.send('didUpdateProjectInformation', {\n groupProperties,\n });\n};\n\nconst startCron = (strapi: Core.Strapi) => {\n strapi.cron.add({\n sendProjectInformation: {\n task: () => sendUpdateProjectInformation(strapi),\n options: '0 0 0 * * *',\n },\n });\n};\n\nexport default { startCron, getSSOProvidersList, sendUpdateProjectInformation };\n"],"names":["getSSOProvidersList","providerRegistry","strapi","service","getAll","map","uid","sendUpdateProjectInformation","groupProperties","numberOfActiveAdminUsers","getService","count","isActive","numberOfAdminUsers","ee","features","isEnabled","SSOProviders","assign","isSSOConfigured","length","numberOfContentReleases","db","query","numberOfPublishedContentReleases","filters","releasedAt","$notNull","telemetry","send","startCron","cron","add","sendProjectInformation","task","options"],"mappings":";;;AAIA,MAAMA,mBAAAA,GAAsB,UAAA;AAC1B,IAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;IAE5C,OAAOF,gBAAAA,CAAiBG,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAC,EAAEC,GAAG,EAAmB,GAAKA,GAAAA,CAAAA;AACrE,CAAA;AAEA,MAAMC,+BAA+B,OAAOL,OAAAA,GAAAA;AAC1C,IAAA,IAAIM,kBAAkB,EAAC;AAEvB,IAAA,MAAMC,wBAAAA,GAA2B,MAAMC,UAAAA,CAAW,MAAA,CAAA,CAAQC,KAAK,CAAC;QAAEC,QAAAA,EAAU;AAAK,KAAA,CAAA;AACjF,IAAA,MAAMC,kBAAAA,GAAqB,MAAMH,UAAAA,CAAW,MAAA,CAAA,CAAQC,KAAK,EAAA;AAEzD,IAAA,IAAIT,QAAOY,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,KAAA,CAAA,EAAQ;AACvC,QAAA,MAAMC,eAAe,MAAMjB,mBAAAA,EAAAA;AAE3BQ,QAAAA,eAAAA,GAAkBU,OAAOV,eAAAA,EAAiB;AACxCS,YAAAA,YAAAA;YACAE,eAAAA,EAAiBF,YAAAA,CAAaG,MAAM,KAAK;AAC3C,SAAA,CAAA;AACF,IAAA;AAEA,IAAA,IAAIlB,QAAOY,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA,EAAyB;QACxD,MAAMK,uBAAAA,GAA0B,MAAMnB,OAAAA,CACnCoB,EAAE,CAAEC,KAAK,CAAC,oCACVZ,KAAK,EAAA;QAER,MAAMa,gCAAAA,GAAmC,MAAMtB,OAAAA,CAC5CoB,EAAE,CAAEC,KAAK,CAAC,kCAAA,CAAA,CACVZ,KAAK,CAAC;YACLc,OAAAA,EAAS;gBAAEC,UAAAA,EAAY;oBAAEC,QAAAA,EAAU;AAAK;AAAE;AAC5C,SAAA,CAAA;AAEFnB,QAAAA,eAAAA,GAAkBU,OAAOV,eAAAA,EAAiB;AACxCa,YAAAA,uBAAAA;AACAG,YAAAA;AACF,SAAA,CAAA;AACF,IAAA;AAEAhB,IAAAA,eAAAA,GAAkBU,OAAOV,eAAAA,EAAiB;AAAEC,QAAAA,wBAAAA;AAA0BI,QAAAA;AAAmB,KAAA,CAAA;AAEzFX,IAAAA,OAAAA,CAAO0B,SAAS,CAACC,IAAI,CAAC,6BAAA,EAA+B;AACnDrB,QAAAA;AACF,KAAA,CAAA;AACF,CAAA;AAEA,MAAMsB,YAAY,CAAC5B,OAAAA,GAAAA;IACjBA,OAAAA,CAAO6B,IAAI,CAACC,GAAG,CAAC;QACdC,sBAAAA,EAAwB;AACtBC,YAAAA,IAAAA,EAAM,IAAM3B,4BAAAA,CAA6BL,OAAAA,CAAAA;YACzCiC,OAAAA,EAAS;AACX;AACF,KAAA,CAAA;AACF,CAAA;AAEA,cAAe;AAAEL,IAAAA,SAAAA;AAAW9B,IAAAA,mBAAAA;AAAqBO,IAAAA;AAA6B,CAAA;;;;"}
1
+ {"version":3,"file":"metrics.mjs","sources":["../../../../../../ee/server/src/services/metrics.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { getService } from '../utils';\n\nconst getSSOProvidersList = async () => {\n const { providerRegistry } = strapi.service('admin::passport');\n\n return providerRegistry.getAll().map(({ uid }: { uid: string }) => uid);\n};\n\nconst sendUpdateProjectInformation = async (strapi: Core.Strapi) => {\n let groupProperties = {};\n\n const numberOfActiveAdminUsers = await getService('user').count({ isActive: true });\n const numberOfAdminUsers = await getService('user').count();\n\n if (strapi.ee.features.isEnabled('sso')) {\n const SSOProviders = await getSSOProvidersList();\n\n groupProperties = {\n ...groupProperties,\n SSOProviders,\n isSSOConfigured: SSOProviders.length !== 0,\n };\n }\n\n if (strapi.ee.features.isEnabled('cms-content-releases')) {\n const numberOfContentReleases = await strapi\n .db!.query('plugin::content-releases.release')\n .count();\n\n const numberOfPublishedContentReleases = await strapi\n .db!.query('plugin::content-releases.release')\n .count({\n filters: { releasedAt: { $notNull: true } },\n });\n\n groupProperties = {\n ...groupProperties,\n numberOfContentReleases,\n numberOfPublishedContentReleases,\n };\n }\n\n groupProperties = { ...groupProperties, numberOfActiveAdminUsers, numberOfAdminUsers };\n\n strapi.telemetry.send('didUpdateProjectInformation', {\n groupProperties,\n });\n};\n\nconst startCron = (strapi: Core.Strapi) => {\n strapi.cron.add({\n sendProjectInformation: {\n task: () => sendUpdateProjectInformation(strapi),\n options: '0 0 0 * * *',\n },\n });\n};\n\nexport default { startCron, getSSOProvidersList, sendUpdateProjectInformation };\n"],"names":["getSSOProvidersList","providerRegistry","strapi","service","getAll","map","uid","sendUpdateProjectInformation","groupProperties","numberOfActiveAdminUsers","getService","count","isActive","numberOfAdminUsers","ee","features","isEnabled","SSOProviders","isSSOConfigured","length","numberOfContentReleases","db","query","numberOfPublishedContentReleases","filters","releasedAt","$notNull","telemetry","send","startCron","cron","add","sendProjectInformation","task","options"],"mappings":";;AAGA,MAAMA,mBAAAA,GAAsB,UAAA;AAC1B,IAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;IAE5C,OAAOF,gBAAAA,CAAiBG,MAAM,EAAA,CAAGC,GAAG,CAAC,CAAC,EAAEC,GAAG,EAAmB,GAAKA,GAAAA,CAAAA;AACrE,CAAA;AAEA,MAAMC,+BAA+B,OAAOL,OAAAA,GAAAA;AAC1C,IAAA,IAAIM,kBAAkB,EAAC;AAEvB,IAAA,MAAMC,wBAAAA,GAA2B,MAAMC,UAAAA,CAAW,MAAA,CAAA,CAAQC,KAAK,CAAC;QAAEC,QAAAA,EAAU;AAAK,KAAA,CAAA;AACjF,IAAA,MAAMC,kBAAAA,GAAqB,MAAMH,UAAAA,CAAW,MAAA,CAAA,CAAQC,KAAK,EAAA;AAEzD,IAAA,IAAIT,QAAOY,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,KAAA,CAAA,EAAQ;AACvC,QAAA,MAAMC,eAAe,MAAMjB,mBAAAA,EAAAA;QAE3BQ,eAAAA,GAAkB;AAChB,YAAA,GAAGA,eAAe;AAClBS,YAAAA,YAAAA;YACAC,eAAAA,EAAiBD,YAAAA,CAAaE,MAAM,KAAK;AAC3C,SAAA;AACF,IAAA;AAEA,IAAA,IAAIjB,QAAOY,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA,EAAyB;QACxD,MAAMI,uBAAAA,GAA0B,MAAMlB,OAAAA,CACnCmB,EAAE,CAAEC,KAAK,CAAC,oCACVX,KAAK,EAAA;QAER,MAAMY,gCAAAA,GAAmC,MAAMrB,OAAAA,CAC5CmB,EAAE,CAAEC,KAAK,CAAC,kCAAA,CAAA,CACVX,KAAK,CAAC;YACLa,OAAAA,EAAS;gBAAEC,UAAAA,EAAY;oBAAEC,QAAAA,EAAU;AAAK;AAAE;AAC5C,SAAA,CAAA;QAEFlB,eAAAA,GAAkB;AAChB,YAAA,GAAGA,eAAe;AAClBY,YAAAA,uBAAAA;AACAG,YAAAA;AACF,SAAA;AACF,IAAA;IAEAf,eAAAA,GAAkB;AAAE,QAAA,GAAGA,eAAe;AAAEC,QAAAA,wBAAAA;AAA0BI,QAAAA;AAAmB,KAAA;AAErFX,IAAAA,OAAAA,CAAOyB,SAAS,CAACC,IAAI,CAAC,6BAAA,EAA+B;AACnDpB,QAAAA;AACF,KAAA,CAAA;AACF,CAAA;AAEA,MAAMqB,YAAY,CAAC3B,OAAAA,GAAAA;IACjBA,OAAAA,CAAO4B,IAAI,CAACC,GAAG,CAAC;QACdC,sBAAAA,EAAwB;AACtBC,YAAAA,IAAAA,EAAM,IAAM1B,4BAAAA,CAA6BL,OAAAA,CAAAA;YACzCgC,OAAAA,EAAS;AACX;AACF,KAAA,CAAA;AACF,CAAA;AAEA,cAAe;AAAEL,IAAAA,SAAAA;AAAW7B,IAAAA,mBAAAA;AAAqBO,IAAAA;AAA6B,CAAA;;;;"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var fp = require('lodash/fp');
5
+ var _ = require('lodash');
6
6
 
7
7
  /**
8
8
  * Transform table name to the object format
@@ -32,13 +32,12 @@ var fp = require('lodash/fp');
32
32
  });
33
33
  const tables = tableNames.map(transformTableName);
34
34
  // Get new tables to be persisted, remove tables if they already were persisted
35
- const notPersistedTableNames = fp.differenceWith(fp.isEqual, tables, persistedTables);
35
+ const notPersistedTableNames = _.differenceWith(tables, persistedTables, _.isEqual);
36
36
  // Remove tables that are going to be changed
37
- const tablesToPersist = fp.differenceWith((t1, t2)=>t1.name === t2.name, persistedTables, notPersistedTableNames);
37
+ const tablesToPersist = _.differenceWith(persistedTables, notPersistedTableNames, (t1, t2)=>t1.name === t2.name);
38
38
  if (!notPersistedTableNames.length) {
39
39
  return;
40
40
  }
41
- // @ts-expect-error lodash types
42
41
  tablesToPersist.push(...notPersistedTableNames);
43
42
  await strapi1.store.set({
44
43
  type: 'core',
@@ -1 +1 @@
1
- {"version":3,"file":"persist-tables.js","sources":["../../../../../../ee/server/src/services/persist-tables.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { differenceWith, isEqual } from 'lodash/fp';\n\nexport interface PersistedTable {\n name: string;\n dependsOn?: Array<{ name: string }>;\n}\n\n/**\n * Transform table name to the object format\n */\nconst transformTableName = (table: string | PersistedTable) => {\n if (typeof table === 'string') {\n return { name: table };\n }\n return table;\n};\n\n/**\n * Finds all tables in the database matching the regular expression\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\nexport async function findTables({ strapi }: { strapi: Core.Strapi }, regex: any) {\n const tables = await strapi.db.dialect.schemaInspector.getTables();\n return tables.filter((tableName: string) => regex.test(tableName));\n}\n\n/**\n * Add tables name to the reserved tables in core store\n */\nasync function addPersistTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n const persistedTables = await getPersistedTables({ strapi });\n const tables = tableNames.map(transformTableName);\n\n // Get new tables to be persisted, remove tables if they already were persisted\n const notPersistedTableNames = differenceWith(isEqual, tables, persistedTables);\n // Remove tables that are going to be changed\n const tablesToPersist = differenceWith(\n (t1: any, t2: any) => t1.name === t2.name,\n persistedTables,\n notPersistedTableNames\n );\n\n if (!notPersistedTableNames.length) {\n return;\n }\n\n // @ts-expect-error lodash types\n tablesToPersist.push(...notPersistedTableNames);\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tablesToPersist,\n });\n}\n\n/**\n * Get all reserved table names from the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\n\nasync function getPersistedTables({ strapi }: { strapi: Core.Strapi }) {\n const persistedTables: any = await strapi.store.get({\n type: 'core',\n key: 'persisted_tables',\n });\n\n return (persistedTables || []).map(transformTableName);\n}\n\n/**\n * Set all reserved table names in the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {Array<string|{ table: string; dependsOn?: Array<{ table: string;}> }>} tableNames\n * @returns {Promise<void>}\n */\nasync function setPersistedTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tableNames,\n });\n}\n/**\n * Add all table names that start with a prefix to the reserved tables in\n * core store\n * @param {string} tableNamePrefix\n * @return {Promise<void>}\n */\n\nexport const persistTablesWithPrefix = async (tableNamePrefix: string) => {\n const tableNameRegex = new RegExp(`^${tableNamePrefix}.*`);\n const tableNames = await findTables({ strapi }, tableNameRegex);\n\n await addPersistTables({ strapi }, tableNames);\n};\n\n/**\n * Remove all table names that end with a suffix from the reserved tables in core store\n * @param {string} tableNameSuffix\n * @return {Promise<void>}\n */\nexport const removePersistedTablesWithSuffix = async (tableNameSuffix: string) => {\n const tableNameRegex = new RegExp(`.*${tableNameSuffix}$`);\n const persistedTables = await getPersistedTables({ strapi });\n\n const filteredPersistedTables = persistedTables.filter((table: any) => {\n return !tableNameRegex.test(table.name);\n });\n\n if (filteredPersistedTables.length === persistedTables.length) {\n return;\n }\n\n await setPersistedTables({ strapi }, filteredPersistedTables);\n};\n\n/**\n * Add tables to the reserved tables in core store\n */\nexport const persistTables = async (tables: Array<string | PersistedTable>) => {\n await addPersistTables({ strapi }, tables);\n};\n\nexport default {\n persistTablesWithPrefix,\n removePersistedTablesWithSuffix,\n persistTables,\n findTables,\n};\n"],"names":["transformTableName","table","name","findTables","strapi","regex","tables","db","dialect","schemaInspector","getTables","filter","tableName","test","addPersistTables","tableNames","persistedTables","getPersistedTables","map","notPersistedTableNames","differenceWith","isEqual","tablesToPersist","t1","t2","length","push","store","set","type","key","value","get","setPersistedTables","persistTablesWithPrefix","tableNamePrefix","tableNameRegex","RegExp","removePersistedTablesWithSuffix","tableNameSuffix","filteredPersistedTables","persistTables"],"mappings":"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"}
1
+ {"version":3,"file":"persist-tables.js","sources":["../../../../../../ee/server/src/services/persist-tables.ts"],"sourcesContent":["import { isEqual, differenceWith } from 'lodash';\nimport type { Core } from '@strapi/types';\n\nexport interface PersistedTable {\n name: string;\n dependsOn?: Array<{ name: string }>;\n}\n\n/**\n * Transform table name to the object format\n */\nconst transformTableName = (table: string | PersistedTable) => {\n if (typeof table === 'string') {\n return { name: table };\n }\n return table;\n};\n\n/**\n * Finds all tables in the database matching the regular expression\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\nexport async function findTables({ strapi }: { strapi: Core.Strapi }, regex: any) {\n const tables = await strapi.db.dialect.schemaInspector.getTables();\n return tables.filter((tableName: string) => regex.test(tableName));\n}\n\n/**\n * Add tables name to the reserved tables in core store\n */\nasync function addPersistTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n const persistedTables = await getPersistedTables({ strapi });\n const tables = tableNames.map(transformTableName);\n\n // Get new tables to be persisted, remove tables if they already were persisted\n const notPersistedTableNames = differenceWith(tables, persistedTables, isEqual);\n // Remove tables that are going to be changed\n const tablesToPersist = differenceWith(\n persistedTables,\n notPersistedTableNames,\n (t1: any, t2: any) => t1.name === t2.name\n );\n\n if (!notPersistedTableNames.length) {\n return;\n }\n\n tablesToPersist.push(...notPersistedTableNames);\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tablesToPersist,\n });\n}\n\n/**\n * Get all reserved table names from the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\n\nasync function getPersistedTables({ strapi }: { strapi: Core.Strapi }) {\n const persistedTables: any = await strapi.store.get({\n type: 'core',\n key: 'persisted_tables',\n });\n\n return (persistedTables || []).map(transformTableName);\n}\n\n/**\n * Set all reserved table names in the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {Array<string|{ table: string; dependsOn?: Array<{ table: string;}> }>} tableNames\n * @returns {Promise<void>}\n */\nasync function setPersistedTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tableNames,\n });\n}\n/**\n * Add all table names that start with a prefix to the reserved tables in\n * core store\n * @param {string} tableNamePrefix\n * @return {Promise<void>}\n */\n\nexport const persistTablesWithPrefix = async (tableNamePrefix: string) => {\n const tableNameRegex = new RegExp(`^${tableNamePrefix}.*`);\n const tableNames = await findTables({ strapi }, tableNameRegex);\n\n await addPersistTables({ strapi }, tableNames);\n};\n\n/**\n * Remove all table names that end with a suffix from the reserved tables in core store\n * @param {string} tableNameSuffix\n * @return {Promise<void>}\n */\nexport const removePersistedTablesWithSuffix = async (tableNameSuffix: string) => {\n const tableNameRegex = new RegExp(`.*${tableNameSuffix}$`);\n const persistedTables = await getPersistedTables({ strapi });\n\n const filteredPersistedTables = persistedTables.filter((table: any) => {\n return !tableNameRegex.test(table.name);\n });\n\n if (filteredPersistedTables.length === persistedTables.length) {\n return;\n }\n\n await setPersistedTables({ strapi }, filteredPersistedTables);\n};\n\n/**\n * Add tables to the reserved tables in core store\n */\nexport const persistTables = async (tables: Array<string | PersistedTable>) => {\n await addPersistTables({ strapi }, tables);\n};\n\nexport default {\n persistTablesWithPrefix,\n removePersistedTablesWithSuffix,\n persistTables,\n findTables,\n};\n"],"names":["transformTableName","table","name","findTables","strapi","regex","tables","db","dialect","schemaInspector","getTables","filter","tableName","test","addPersistTables","tableNames","persistedTables","getPersistedTables","map","notPersistedTableNames","differenceWith","isEqual","tablesToPersist","t1","t2","length","push","store","set","type","key","value","get","setPersistedTables","persistTablesWithPrefix","tableNamePrefix","tableNameRegex","RegExp","removePersistedTablesWithSuffix","tableNameSuffix","filteredPersistedTables","persistTables"],"mappings":";;;;;;AAQA;;IAGA,MAAMA,qBAAqB,CAACC,KAAAA,GAAAA;IAC1B,IAAI,OAAOA,UAAU,QAAA,EAAU;QAC7B,OAAO;YAAEC,IAAAA,EAAMD;AAAM,SAAA;AACvB,IAAA;IACA,OAAOA,KAAAA;AACT,CAAA;AAEA;;;;;;IAOO,eAAeE,UAAAA,CAAW,EAAEC,QAAAA,OAAM,EAA2B,EAAEC,KAAU,EAAA;IAC9E,MAAMC,MAAAA,GAAS,MAAMF,OAAAA,CAAOG,EAAE,CAACC,OAAO,CAACC,eAAe,CAACC,SAAS,EAAA;AAChE,IAAA,OAAOJ,OAAOK,MAAM,CAAC,CAACC,SAAAA,GAAsBP,KAAAA,CAAMQ,IAAI,CAACD,SAAAA,CAAAA,CAAAA;AACzD;AAEA;;AAEC,IACD,eAAeE,gBAAAA,CACb,EAAEV,QAAAA,OAAM,EAA2B,EACnCW,UAA0C,EAAA;IAE1C,MAAMC,eAAAA,GAAkB,MAAMC,kBAAAA,CAAmB;QAAEb,MAAAA,EAAAA;AAAO,KAAA,CAAA;IAC1D,MAAME,MAAAA,GAASS,UAAAA,CAAWG,GAAG,CAAClB,kBAAAA,CAAAA;;IAG9B,MAAMmB,sBAAAA,GAAyBC,gBAAAA,CAAed,MAAAA,EAAQU,eAAAA,EAAiBK,SAAAA,CAAAA;;IAEvE,MAAMC,eAAAA,GAAkBF,gBAAAA,CACtBJ,eAAAA,EACAG,sBAAAA,EACA,CAACI,EAAAA,EAASC,EAAAA,GAAYD,EAAAA,CAAGrB,IAAI,KAAKsB,EAAAA,CAAGtB,IAAI,CAAA;IAG3C,IAAI,CAACiB,sBAAAA,CAAuBM,MAAM,EAAE;AAClC,QAAA;AACF,IAAA;AAEAH,IAAAA,eAAAA,CAAgBI,IAAI,CAAA,GAAIP,sBAAAA,CAAAA;AACxB,IAAA,MAAMf,OAAAA,CAAOuB,KAAK,CAACC,GAAG,CAAC;QACrBC,IAAAA,EAAM,MAAA;QACNC,GAAAA,EAAK,kBAAA;QACLC,KAAAA,EAAOT;AACT,KAAA,CAAA;AACF;AAEA;;;;;;AAMC,IAED,eAAeL,kBAAAA,CAAmB,EAAEb,MAAAA,EAAAA,OAAM,EAA2B,EAAA;AACnE,IAAA,MAAMY,kBAAuB,MAAMZ,OAAAA,CAAOuB,KAAK,CAACK,GAAG,CAAC;QAClDH,IAAAA,EAAM,MAAA;QACNC,GAAAA,EAAK;AACP,KAAA,CAAA;AAEA,IAAA,OAAO,CAACd,eAAAA,IAAmB,EAAE,EAAEE,GAAG,CAAClB,kBAAAA,CAAAA;AACrC;AAEA;;;;;;AAMC,IACD,eAAeiC,kBAAAA,CACb,EAAE7B,QAAAA,OAAM,EAA2B,EACnCW,UAA0C,EAAA;AAE1C,IAAA,MAAMX,OAAAA,CAAOuB,KAAK,CAACC,GAAG,CAAC;QACrBC,IAAAA,EAAM,MAAA;QACNC,GAAAA,EAAK,kBAAA;QACLC,KAAAA,EAAOhB;AACT,KAAA,CAAA;AACF;AACA;;;;;IAOO,MAAMmB,uBAAAA,GAA0B,OAAOC,eAAAA,GAAAA;IAC5C,MAAMC,cAAAA,GAAiB,IAAIC,MAAAA,CAAO,CAAC,CAAC,EAAEF,eAAAA,CAAgB,EAAE,CAAC,CAAA;IACzD,MAAMpB,UAAAA,GAAa,MAAMZ,UAAAA,CAAW;AAAEC,QAAAA;KAAO,EAAGgC,cAAAA,CAAAA;AAEhD,IAAA,MAAMtB,gBAAAA,CAAiB;AAAEV,QAAAA;KAAO,EAAGW,UAAAA,CAAAA;AACrC;AAEA;;;;IAKO,MAAMuB,+BAAAA,GAAkC,OAAOC,eAAAA,GAAAA;IACpD,MAAMH,cAAAA,GAAiB,IAAIC,MAAAA,CAAO,CAAC,EAAE,EAAEE,eAAAA,CAAgB,CAAC,CAAC,CAAA;IACzD,MAAMvB,eAAAA,GAAkB,MAAMC,kBAAAA,CAAmB;AAAEb,QAAAA;AAAO,KAAA,CAAA;AAE1D,IAAA,MAAMoC,uBAAAA,GAA0BxB,eAAAA,CAAgBL,MAAM,CAAC,CAACV,KAAAA,GAAAA;AACtD,QAAA,OAAO,CAACmC,cAAAA,CAAevB,IAAI,CAACZ,MAAMC,IAAI,CAAA;AACxC,IAAA,CAAA,CAAA;AAEA,IAAA,IAAIsC,uBAAAA,CAAwBf,MAAM,KAAKT,eAAAA,CAAgBS,MAAM,EAAE;AAC7D,QAAA;AACF,IAAA;AAEA,IAAA,MAAMQ,kBAAAA,CAAmB;AAAE7B,QAAAA;KAAO,EAAGoC,uBAAAA,CAAAA;AACvC;AAEA;;IAGO,MAAMC,aAAAA,GAAgB,OAAOnC,MAAAA,GAAAA;AAClC,IAAA,MAAMQ,gBAAAA,CAAiB;AAAEV,QAAAA;KAAO,EAAGE,MAAAA,CAAAA;AACrC;AAEA,2BAAe;AACb4B,IAAAA,uBAAAA;AACAI,IAAAA,+BAAAA;AACAG,IAAAA,aAAAA;AACAtC,IAAAA;AACF,CAAA;;;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { differenceWith, isEqual } from 'lodash/fp';
1
+ import { differenceWith, isEqual } from 'lodash';
2
2
 
3
3
  /**
4
4
  * Transform table name to the object format
@@ -28,13 +28,12 @@ import { differenceWith, isEqual } from 'lodash/fp';
28
28
  });
29
29
  const tables = tableNames.map(transformTableName);
30
30
  // Get new tables to be persisted, remove tables if they already were persisted
31
- const notPersistedTableNames = differenceWith(isEqual, tables, persistedTables);
31
+ const notPersistedTableNames = differenceWith(tables, persistedTables, isEqual);
32
32
  // Remove tables that are going to be changed
33
- const tablesToPersist = differenceWith((t1, t2)=>t1.name === t2.name, persistedTables, notPersistedTableNames);
33
+ const tablesToPersist = differenceWith(persistedTables, notPersistedTableNames, (t1, t2)=>t1.name === t2.name);
34
34
  if (!notPersistedTableNames.length) {
35
35
  return;
36
36
  }
37
- // @ts-expect-error lodash types
38
37
  tablesToPersist.push(...notPersistedTableNames);
39
38
  await strapi1.store.set({
40
39
  type: 'core',
@@ -1 +1 @@
1
- {"version":3,"file":"persist-tables.mjs","sources":["../../../../../../ee/server/src/services/persist-tables.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport { differenceWith, isEqual } from 'lodash/fp';\n\nexport interface PersistedTable {\n name: string;\n dependsOn?: Array<{ name: string }>;\n}\n\n/**\n * Transform table name to the object format\n */\nconst transformTableName = (table: string | PersistedTable) => {\n if (typeof table === 'string') {\n return { name: table };\n }\n return table;\n};\n\n/**\n * Finds all tables in the database matching the regular expression\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\nexport async function findTables({ strapi }: { strapi: Core.Strapi }, regex: any) {\n const tables = await strapi.db.dialect.schemaInspector.getTables();\n return tables.filter((tableName: string) => regex.test(tableName));\n}\n\n/**\n * Add tables name to the reserved tables in core store\n */\nasync function addPersistTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n const persistedTables = await getPersistedTables({ strapi });\n const tables = tableNames.map(transformTableName);\n\n // Get new tables to be persisted, remove tables if they already were persisted\n const notPersistedTableNames = differenceWith(isEqual, tables, persistedTables);\n // Remove tables that are going to be changed\n const tablesToPersist = differenceWith(\n (t1: any, t2: any) => t1.name === t2.name,\n persistedTables,\n notPersistedTableNames\n );\n\n if (!notPersistedTableNames.length) {\n return;\n }\n\n // @ts-expect-error lodash types\n tablesToPersist.push(...notPersistedTableNames);\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tablesToPersist,\n });\n}\n\n/**\n * Get all reserved table names from the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\n\nasync function getPersistedTables({ strapi }: { strapi: Core.Strapi }) {\n const persistedTables: any = await strapi.store.get({\n type: 'core',\n key: 'persisted_tables',\n });\n\n return (persistedTables || []).map(transformTableName);\n}\n\n/**\n * Set all reserved table names in the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {Array<string|{ table: string; dependsOn?: Array<{ table: string;}> }>} tableNames\n * @returns {Promise<void>}\n */\nasync function setPersistedTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tableNames,\n });\n}\n/**\n * Add all table names that start with a prefix to the reserved tables in\n * core store\n * @param {string} tableNamePrefix\n * @return {Promise<void>}\n */\n\nexport const persistTablesWithPrefix = async (tableNamePrefix: string) => {\n const tableNameRegex = new RegExp(`^${tableNamePrefix}.*`);\n const tableNames = await findTables({ strapi }, tableNameRegex);\n\n await addPersistTables({ strapi }, tableNames);\n};\n\n/**\n * Remove all table names that end with a suffix from the reserved tables in core store\n * @param {string} tableNameSuffix\n * @return {Promise<void>}\n */\nexport const removePersistedTablesWithSuffix = async (tableNameSuffix: string) => {\n const tableNameRegex = new RegExp(`.*${tableNameSuffix}$`);\n const persistedTables = await getPersistedTables({ strapi });\n\n const filteredPersistedTables = persistedTables.filter((table: any) => {\n return !tableNameRegex.test(table.name);\n });\n\n if (filteredPersistedTables.length === persistedTables.length) {\n return;\n }\n\n await setPersistedTables({ strapi }, filteredPersistedTables);\n};\n\n/**\n * Add tables to the reserved tables in core store\n */\nexport const persistTables = async (tables: Array<string | PersistedTable>) => {\n await addPersistTables({ strapi }, tables);\n};\n\nexport default {\n persistTablesWithPrefix,\n removePersistedTablesWithSuffix,\n persistTables,\n findTables,\n};\n"],"names":["transformTableName","table","name","findTables","strapi","regex","tables","db","dialect","schemaInspector","getTables","filter","tableName","test","addPersistTables","tableNames","persistedTables","getPersistedTables","map","notPersistedTableNames","differenceWith","isEqual","tablesToPersist","t1","t2","length","push","store","set","type","key","value","get","setPersistedTables","persistTablesWithPrefix","tableNamePrefix","tableNameRegex","RegExp","removePersistedTablesWithSuffix","tableNameSuffix","filteredPersistedTables","persistTables"],"mappings":"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"}
1
+ {"version":3,"file":"persist-tables.mjs","sources":["../../../../../../ee/server/src/services/persist-tables.ts"],"sourcesContent":["import { isEqual, differenceWith } from 'lodash';\nimport type { Core } from '@strapi/types';\n\nexport interface PersistedTable {\n name: string;\n dependsOn?: Array<{ name: string }>;\n}\n\n/**\n * Transform table name to the object format\n */\nconst transformTableName = (table: string | PersistedTable) => {\n if (typeof table === 'string') {\n return { name: table };\n }\n return table;\n};\n\n/**\n * Finds all tables in the database matching the regular expression\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\nexport async function findTables({ strapi }: { strapi: Core.Strapi }, regex: any) {\n const tables = await strapi.db.dialect.schemaInspector.getTables();\n return tables.filter((tableName: string) => regex.test(tableName));\n}\n\n/**\n * Add tables name to the reserved tables in core store\n */\nasync function addPersistTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n const persistedTables = await getPersistedTables({ strapi });\n const tables = tableNames.map(transformTableName);\n\n // Get new tables to be persisted, remove tables if they already were persisted\n const notPersistedTableNames = differenceWith(tables, persistedTables, isEqual);\n // Remove tables that are going to be changed\n const tablesToPersist = differenceWith(\n persistedTables,\n notPersistedTableNames,\n (t1: any, t2: any) => t1.name === t2.name\n );\n\n if (!notPersistedTableNames.length) {\n return;\n }\n\n tablesToPersist.push(...notPersistedTableNames);\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tablesToPersist,\n });\n}\n\n/**\n * Get all reserved table names from the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {RegExp} regex\n * @returns {Promise<string[]>}\n */\n\nasync function getPersistedTables({ strapi }: { strapi: Core.Strapi }) {\n const persistedTables: any = await strapi.store.get({\n type: 'core',\n key: 'persisted_tables',\n });\n\n return (persistedTables || []).map(transformTableName);\n}\n\n/**\n * Set all reserved table names in the core store\n * @param {Object} ctx\n * @param {Strapi} ctx.strapi\n * @param {Array<string|{ table: string; dependsOn?: Array<{ table: string;}> }>} tableNames\n * @returns {Promise<void>}\n */\nasync function setPersistedTables(\n { strapi }: { strapi: Core.Strapi },\n tableNames: Array<string | PersistedTable>\n) {\n await strapi.store.set({\n type: 'core',\n key: 'persisted_tables',\n value: tableNames,\n });\n}\n/**\n * Add all table names that start with a prefix to the reserved tables in\n * core store\n * @param {string} tableNamePrefix\n * @return {Promise<void>}\n */\n\nexport const persistTablesWithPrefix = async (tableNamePrefix: string) => {\n const tableNameRegex = new RegExp(`^${tableNamePrefix}.*`);\n const tableNames = await findTables({ strapi }, tableNameRegex);\n\n await addPersistTables({ strapi }, tableNames);\n};\n\n/**\n * Remove all table names that end with a suffix from the reserved tables in core store\n * @param {string} tableNameSuffix\n * @return {Promise<void>}\n */\nexport const removePersistedTablesWithSuffix = async (tableNameSuffix: string) => {\n const tableNameRegex = new RegExp(`.*${tableNameSuffix}$`);\n const persistedTables = await getPersistedTables({ strapi });\n\n const filteredPersistedTables = persistedTables.filter((table: any) => {\n return !tableNameRegex.test(table.name);\n });\n\n if (filteredPersistedTables.length === persistedTables.length) {\n return;\n }\n\n await setPersistedTables({ strapi }, filteredPersistedTables);\n};\n\n/**\n * Add tables to the reserved tables in core store\n */\nexport const persistTables = async (tables: Array<string | PersistedTable>) => {\n await addPersistTables({ strapi }, tables);\n};\n\nexport default {\n persistTablesWithPrefix,\n removePersistedTablesWithSuffix,\n persistTables,\n findTables,\n};\n"],"names":["transformTableName","table","name","findTables","strapi","regex","tables","db","dialect","schemaInspector","getTables","filter","tableName","test","addPersistTables","tableNames","persistedTables","getPersistedTables","map","notPersistedTableNames","differenceWith","isEqual","tablesToPersist","t1","t2","length","push","store","set","type","key","value","get","setPersistedTables","persistTablesWithPrefix","tableNamePrefix","tableNameRegex","RegExp","removePersistedTablesWithSuffix","tableNameSuffix","filteredPersistedTables","persistTables"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var utils = require('@strapi/utils');
5
5
 
6
6
  const { ApplicationError } = utils.errors;
@@ -13,7 +13,7 @@ const ssoCheckRolesIdForDeletion = async (ids)=>{
13
13
  key: 'auth'
14
14
  });
15
15
  for (const roleId of ids){
16
- if (defaultRole && fp.toString(defaultRole) === fp.toString(roleId)) {
16
+ if (defaultRole && _.toString(defaultRole) === _.toString(roleId)) {
17
17
  throw new ApplicationError('This role is used as the default SSO role. Make sure to change this configuration before deleting the role');
18
18
  }
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"role.js","sources":["../../../../../../ee/server/src/services/role.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nconst { ApplicationError } = errors;\n\nconst ssoCheckRolesIdForDeletion = async (ids: any) => {\n const adminStore = await strapi.store({ type: 'core', name: 'admin' });\n\n const {\n providers: { defaultRole },\n } = (await adminStore.get({ key: 'auth' })) as any;\n\n for (const roleId of ids) {\n if (defaultRole && toString(defaultRole) === toString(roleId)) {\n throw new ApplicationError(\n 'This role is used as the default SSO role. Make sure to change this configuration before deleting the role'\n );\n }\n }\n};\n\nexport default {\n ssoCheckRolesIdForDeletion,\n};\n"],"names":["ApplicationError","errors","ssoCheckRolesIdForDeletion","ids","adminStore","strapi","store","type","name","providers","defaultRole","get","key","roleId","toString"],"mappings":";;;;;AAGA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,YAAAA;AAE7B,MAAMC,6BAA6B,OAAOC,GAAAA,GAAAA;AACxC,IAAA,MAAMC,UAAAA,GAAa,MAAMC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,MAAA;QAAQC,IAAAA,EAAM;AAAQ,KAAA,CAAA;IAEpE,MAAM,EACJC,SAAAA,EAAW,EAAEC,WAAW,EAAE,EAC3B,GAAI,MAAMN,UAAAA,CAAWO,GAAG,CAAC;QAAEC,GAAAA,EAAK;AAAO,KAAA,CAAA;IAExC,KAAK,MAAMC,UAAUV,GAAAA,CAAK;AACxB,QAAA,IAAIO,WAAAA,IAAeI,WAAAA,CAASJ,WAAAA,CAAAA,KAAiBI,WAAAA,CAASD,MAAAA,CAAAA,EAAS;AAC7D,YAAA,MAAM,IAAIb,gBAAAA,CACR,4GAAA,CAAA;AAEJ,QAAA;AACF,IAAA;AACF,CAAA;AAEA,WAAe;AACbE,IAAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"role.js","sources":["../../../../../../ee/server/src/services/role.ts"],"sourcesContent":["import { toString } from 'lodash';\nimport { errors } from '@strapi/utils';\n\nconst { ApplicationError } = errors;\n\nconst ssoCheckRolesIdForDeletion = async (ids: any) => {\n const adminStore = await strapi.store({ type: 'core', name: 'admin' });\n\n const {\n providers: { defaultRole },\n } = (await adminStore.get({ key: 'auth' })) as any;\n\n for (const roleId of ids) {\n if (defaultRole && toString(defaultRole) === toString(roleId)) {\n throw new ApplicationError(\n 'This role is used as the default SSO role. Make sure to change this configuration before deleting the role'\n );\n }\n }\n};\n\nexport default {\n ssoCheckRolesIdForDeletion,\n};\n"],"names":["ApplicationError","errors","ssoCheckRolesIdForDeletion","ids","adminStore","strapi","store","type","name","providers","defaultRole","get","key","roleId","toString"],"mappings":";;;;;AAGA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,YAAAA;AAE7B,MAAMC,6BAA6B,OAAOC,GAAAA,GAAAA;AACxC,IAAA,MAAMC,UAAAA,GAAa,MAAMC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,MAAA;QAAQC,IAAAA,EAAM;AAAQ,KAAA,CAAA;IAEpE,MAAM,EACJC,SAAAA,EAAW,EAAEC,WAAW,EAAE,EAC3B,GAAI,MAAMN,UAAAA,CAAWO,GAAG,CAAC;QAAEC,GAAAA,EAAK;AAAO,KAAA,CAAA;IAExC,KAAK,MAAMC,UAAUV,GAAAA,CAAK;AACxB,QAAA,IAAIO,WAAAA,IAAeI,UAAAA,CAASJ,WAAAA,CAAAA,KAAiBI,UAAAA,CAASD,MAAAA,CAAAA,EAAS;AAC7D,YAAA,MAAM,IAAIb,gBAAAA,CACR,4GAAA,CAAA;AAEJ,QAAA;AACF,IAAA;AACF,CAAA;AAEA,WAAe;AACbE,IAAAA;AACF,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { toString } from 'lodash/fp';
1
+ import { toString } from 'lodash';
2
2
  import { errors } from '@strapi/utils';
3
3
 
4
4
  const { ApplicationError } = errors;
@@ -1 +1 @@
1
- {"version":3,"file":"role.mjs","sources":["../../../../../../ee/server/src/services/role.ts"],"sourcesContent":["import { toString } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\n\nconst { ApplicationError } = errors;\n\nconst ssoCheckRolesIdForDeletion = async (ids: any) => {\n const adminStore = await strapi.store({ type: 'core', name: 'admin' });\n\n const {\n providers: { defaultRole },\n } = (await adminStore.get({ key: 'auth' })) as any;\n\n for (const roleId of ids) {\n if (defaultRole && toString(defaultRole) === toString(roleId)) {\n throw new ApplicationError(\n 'This role is used as the default SSO role. Make sure to change this configuration before deleting the role'\n );\n }\n }\n};\n\nexport default {\n ssoCheckRolesIdForDeletion,\n};\n"],"names":["ApplicationError","errors","ssoCheckRolesIdForDeletion","ids","adminStore","strapi","store","type","name","providers","defaultRole","get","key","roleId","toString"],"mappings":";;;AAGA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAE7B,MAAMC,6BAA6B,OAAOC,GAAAA,GAAAA;AACxC,IAAA,MAAMC,UAAAA,GAAa,MAAMC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,MAAA;QAAQC,IAAAA,EAAM;AAAQ,KAAA,CAAA;IAEpE,MAAM,EACJC,SAAAA,EAAW,EAAEC,WAAW,EAAE,EAC3B,GAAI,MAAMN,UAAAA,CAAWO,GAAG,CAAC;QAAEC,GAAAA,EAAK;AAAO,KAAA,CAAA;IAExC,KAAK,MAAMC,UAAUV,GAAAA,CAAK;AACxB,QAAA,IAAIO,WAAAA,IAAeI,QAAAA,CAASJ,WAAAA,CAAAA,KAAiBI,QAAAA,CAASD,MAAAA,CAAAA,EAAS;AAC7D,YAAA,MAAM,IAAIb,gBAAAA,CACR,4GAAA,CAAA;AAEJ,QAAA;AACF,IAAA;AACF,CAAA;AAEA,WAAe;AACbE,IAAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"role.mjs","sources":["../../../../../../ee/server/src/services/role.ts"],"sourcesContent":["import { toString } from 'lodash';\nimport { errors } from '@strapi/utils';\n\nconst { ApplicationError } = errors;\n\nconst ssoCheckRolesIdForDeletion = async (ids: any) => {\n const adminStore = await strapi.store({ type: 'core', name: 'admin' });\n\n const {\n providers: { defaultRole },\n } = (await adminStore.get({ key: 'auth' })) as any;\n\n for (const roleId of ids) {\n if (defaultRole && toString(defaultRole) === toString(roleId)) {\n throw new ApplicationError(\n 'This role is used as the default SSO role. Make sure to change this configuration before deleting the role'\n );\n }\n }\n};\n\nexport default {\n ssoCheckRolesIdForDeletion,\n};\n"],"names":["ApplicationError","errors","ssoCheckRolesIdForDeletion","ids","adminStore","strapi","store","type","name","providers","defaultRole","get","key","roleId","toString"],"mappings":";;;AAGA,MAAM,EAAEA,gBAAgB,EAAE,GAAGC,MAAAA;AAE7B,MAAMC,6BAA6B,OAAOC,GAAAA,GAAAA;AACxC,IAAA,MAAMC,UAAAA,GAAa,MAAMC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,MAAA;QAAQC,IAAAA,EAAM;AAAQ,KAAA,CAAA;IAEpE,MAAM,EACJC,SAAAA,EAAW,EAAEC,WAAW,EAAE,EAC3B,GAAI,MAAMN,UAAAA,CAAWO,GAAG,CAAC;QAAEC,GAAAA,EAAK;AAAO,KAAA,CAAA;IAExC,KAAK,MAAMC,UAAUV,GAAAA,CAAK;AACxB,QAAA,IAAIO,WAAAA,IAAeI,QAAAA,CAASJ,WAAAA,CAAAA,KAAiBI,QAAAA,CAASD,MAAAA,CAAAA,EAAS;AAC7D,YAAA,MAAM,IAAIb,gBAAAA,CACR,4GAAA,CAAA;AAEJ,QAAA;AACF,IAAA;AACF,CAAA;AAEA,WAAe;AACbE,IAAAA;AACF,CAAA;;;;"}
@@ -1,31 +1,34 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var index = require('../utils/index.js');
5
5
  var constants = require('../../../../server/src/services/constants.js');
6
6
 
7
7
  const { SUPER_ADMIN_CODE } = constants;
8
8
  /**
9
- * Keeps the list of users disabled by the seat enforcement service
9
+ * Returns users disabled by seat enforcement, or an empty list when none are stored.
10
10
  */ const getDisabledUserList = async ()=>{
11
- return strapi.store.get({
11
+ const disabledUsers = await strapi.store.get({
12
12
  type: 'ee',
13
13
  key: 'disabled_users'
14
14
  });
15
+ return disabledUsers ?? [];
15
16
  };
16
17
  const enableMaximumUserCount = async (numberOfUsersToEnable)=>{
17
18
  const disabledUsers = await getDisabledUserList();
18
- const orderedDisabledUsers = fp.reverse(disabledUsers);
19
- const usersToEnable = fp.take(numberOfUsersToEnable, orderedDisabledUsers);
19
+ const orderedDisabledUsers = [
20
+ ...disabledUsers
21
+ ].reverse();
22
+ const usersToEnable = _.take(orderedDisabledUsers, numberOfUsersToEnable);
20
23
  await strapi.db.query('admin::user').updateMany({
21
24
  where: {
22
- id: fp.map(fp.prop('id'), usersToEnable)
25
+ id: usersToEnable.map((user)=>user?.id)
23
26
  },
24
27
  data: {
25
28
  isActive: true
26
29
  }
27
30
  });
28
- const remainingDisabledUsers = fp.drop(numberOfUsersToEnable, orderedDisabledUsers);
31
+ const remainingDisabledUsers = _.drop(orderedDisabledUsers, numberOfUsersToEnable);
29
32
  await strapi.store.set({
30
33
  type: 'ee',
31
34
  key: 'disabled_users',
@@ -33,7 +36,7 @@ const enableMaximumUserCount = async (numberOfUsersToEnable)=>{
33
36
  });
34
37
  };
35
38
  const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
36
- const currentlyDisabledUsers = await getDisabledUserList() ?? [];
39
+ const currentlyDisabledUsers = await getDisabledUserList();
37
40
  const usersToDisable = [];
38
41
  const nonSuperAdminUsersToDisable = await strapi.db.query('admin::user').findMany({
39
42
  where: {
@@ -67,7 +70,7 @@ const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
67
70
  }
68
71
  await strapi.db.query('admin::user').updateMany({
69
72
  where: {
70
- id: fp.map(fp.prop('id'), usersToDisable)
73
+ id: usersToDisable.map((user)=>user?.id)
71
74
  },
72
75
  data: {
73
76
  isActive: false
@@ -76,23 +79,20 @@ const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
76
79
  await strapi.store.set({
77
80
  type: 'ee',
78
81
  key: 'disabled_users',
79
- value: currentlyDisabledUsers.concat(fp.map(fp.pick([
80
- 'id',
81
- 'isActive'
82
- ]), usersToDisable))
82
+ value: currentlyDisabledUsers.concat(usersToDisable.map((user)=>_.pick(user, [
83
+ 'id',
84
+ 'isActive'
85
+ ])))
83
86
  });
84
87
  };
85
88
  const syncDisabledUserRecords = async ()=>{
86
- const disabledUsers = await strapi.store.get({
87
- type: 'ee',
88
- key: 'disabled_users'
89
- });
90
- if (!disabledUsers) {
89
+ const disabledUsers = await getDisabledUserList();
90
+ if (disabledUsers.length === 0) {
91
91
  return;
92
92
  }
93
93
  await strapi.db.query('admin::user').updateMany({
94
94
  where: {
95
- id: fp.map(fp.prop('id'), disabledUsers)
95
+ id: Array.from(disabledUsers, (user)=>user?.id)
96
96
  },
97
97
  data: {
98
98
  isActive: false
@@ -101,7 +101,7 @@ const syncDisabledUserRecords = async ()=>{
101
101
  };
102
102
  const seatEnforcementWorkflow = async ()=>{
103
103
  const adminSeats = strapi.ee.seats;
104
- if (fp.isNil(adminSeats)) {
104
+ if (adminSeats == null) {
105
105
  return;
106
106
  }
107
107
  // TODO: we need to make sure an admin can decide to disable specific user and reactivate others
@@ -1 +1 @@
1
- {"version":3,"file":"seat-enforcement.js","sources":["../../../../../../ee/server/src/services/seat-enforcement.ts"],"sourcesContent":["import { take, drop, map, prop, pick, reverse, isNil } from 'lodash/fp';\nimport { getService } from '../utils';\nimport constants from '../../../../server/src/services/constants';\n\nconst { SUPER_ADMIN_CODE } = constants;\n\n/**\n * Keeps the list of users disabled by the seat enforcement service\n */\nconst getDisabledUserList = async () => {\n return strapi.store.get({ type: 'ee', key: 'disabled_users' });\n};\n\nconst enableMaximumUserCount = async (numberOfUsersToEnable: number) => {\n const disabledUsers = (await getDisabledUserList()) as any;\n const orderedDisabledUsers = reverse(disabledUsers);\n\n const usersToEnable = take(numberOfUsersToEnable, orderedDisabledUsers);\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: map(prop('id'), usersToEnable) },\n data: { isActive: true },\n });\n\n const remainingDisabledUsers = drop(numberOfUsersToEnable, orderedDisabledUsers);\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: remainingDisabledUsers,\n });\n};\n\nconst disableUsersAboveLicenseLimit = async (numberOfUsersToDisable: number) => {\n const currentlyDisabledUsers: any = (await getDisabledUserList()) ?? [];\n\n const usersToDisable = [];\n const nonSuperAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: {\n code: { $ne: SUPER_ADMIN_CODE },\n },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable,\n });\n\n usersToDisable.push(...nonSuperAdminUsersToDisable);\n\n if (nonSuperAdminUsersToDisable.length < numberOfUsersToDisable) {\n const superAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: { code: SUPER_ADMIN_CODE },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable - nonSuperAdminUsersToDisable.length,\n });\n\n usersToDisable.push(...superAdminUsersToDisable);\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: map(prop('id'), usersToDisable) },\n data: { isActive: false },\n });\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: currentlyDisabledUsers.concat(map(pick(['id', 'isActive']), usersToDisable)),\n });\n};\n\nconst syncDisabledUserRecords = async () => {\n const disabledUsers = await strapi.store.get({ type: 'ee', key: 'disabled_users' });\n\n if (!disabledUsers) {\n return;\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: map(prop('id'), disabledUsers) },\n data: { isActive: false },\n });\n};\n\nconst seatEnforcementWorkflow = async () => {\n const adminSeats = strapi.ee.seats;\n if (isNil(adminSeats)) {\n return;\n }\n\n // TODO: we need to make sure an admin can decide to disable specific user and reactivate others\n await syncDisabledUserRecords();\n\n const currentActiveUserCount = await getService('user').getCurrentActiveUserCount();\n\n const adminSeatsLeft = adminSeats - currentActiveUserCount;\n\n if (adminSeatsLeft > 0) {\n await enableMaximumUserCount(adminSeatsLeft);\n } else if (adminSeatsLeft < 0) {\n await disableUsersAboveLicenseLimit(-adminSeatsLeft);\n }\n};\n\nexport default {\n seatEnforcementWorkflow,\n getDisabledUserList,\n};\n"],"names":["SUPER_ADMIN_CODE","constants","getDisabledUserList","strapi","store","get","type","key","enableMaximumUserCount","numberOfUsersToEnable","disabledUsers","orderedDisabledUsers","reverse","usersToEnable","take","db","query","updateMany","where","id","map","prop","data","isActive","remainingDisabledUsers","drop","set","value","disableUsersAboveLicenseLimit","numberOfUsersToDisable","currentlyDisabledUsers","usersToDisable","nonSuperAdminUsersToDisable","findMany","roles","code","$ne","orderBy","createdAt","limit","push","length","superAdminUsersToDisable","concat","pick","syncDisabledUserRecords","seatEnforcementWorkflow","adminSeats","ee","seats","isNil","currentActiveUserCount","getService","getCurrentActiveUserCount","adminSeatsLeft"],"mappings":"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"}
1
+ {"version":3,"file":"seat-enforcement.js","sources":["../../../../../../ee/server/src/services/seat-enforcement.ts"],"sourcesContent":["import { pick, take, drop } from 'lodash';\n\nimport { getService } from '../utils';\nimport constants from '../../../../server/src/services/constants';\nimport type { AdminUser } from '../../../../shared/contracts/shared';\n\nconst { SUPER_ADMIN_CODE } = constants;\n\ntype DisabledUser = Pick<AdminUser, 'id' | 'isActive'>;\n\n/**\n * Returns users disabled by seat enforcement, or an empty list when none are stored.\n */\nconst getDisabledUserList = async (): Promise<DisabledUser[]> => {\n const disabledUsers = (await strapi.store.get({ type: 'ee', key: 'disabled_users' })) as\n | DisabledUser[]\n | null\n | undefined;\n\n return disabledUsers ?? [];\n};\n\nconst enableMaximumUserCount = async (numberOfUsersToEnable: number) => {\n const disabledUsers = await getDisabledUserList();\n const orderedDisabledUsers = [...disabledUsers].reverse();\n\n const usersToEnable = take(orderedDisabledUsers, numberOfUsersToEnable);\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: usersToEnable.map((user) => user?.id) },\n data: { isActive: true },\n });\n\n const remainingDisabledUsers = drop(orderedDisabledUsers, numberOfUsersToEnable);\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: remainingDisabledUsers,\n });\n};\n\nconst disableUsersAboveLicenseLimit = async (numberOfUsersToDisable: number) => {\n const currentlyDisabledUsers = await getDisabledUserList();\n\n const usersToDisable = [];\n const nonSuperAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: {\n code: { $ne: SUPER_ADMIN_CODE },\n },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable,\n });\n\n usersToDisable.push(...nonSuperAdminUsersToDisable);\n\n if (nonSuperAdminUsersToDisable.length < numberOfUsersToDisable) {\n const superAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: { code: SUPER_ADMIN_CODE },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable - nonSuperAdminUsersToDisable.length,\n });\n\n usersToDisable.push(...superAdminUsersToDisable);\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: usersToDisable.map((user) => user?.id) },\n data: { isActive: false },\n });\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: currentlyDisabledUsers.concat(\n usersToDisable.map((user) => pick(user, ['id', 'isActive']))\n ),\n });\n};\n\nconst syncDisabledUserRecords = async () => {\n const disabledUsers = await getDisabledUserList();\n\n if (disabledUsers.length === 0) {\n return;\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: Array.from(disabledUsers, (user) => user?.id) },\n data: { isActive: false },\n });\n};\n\nconst seatEnforcementWorkflow = async () => {\n const adminSeats = strapi.ee.seats;\n if (adminSeats == null) {\n return;\n }\n\n // TODO: we need to make sure an admin can decide to disable specific user and reactivate others\n await syncDisabledUserRecords();\n\n const currentActiveUserCount = await getService('user').getCurrentActiveUserCount();\n\n const adminSeatsLeft = adminSeats - currentActiveUserCount;\n\n if (adminSeatsLeft > 0) {\n await enableMaximumUserCount(adminSeatsLeft);\n } else if (adminSeatsLeft < 0) {\n await disableUsersAboveLicenseLimit(-adminSeatsLeft);\n }\n};\n\nexport default {\n seatEnforcementWorkflow,\n getDisabledUserList,\n};\n"],"names":["SUPER_ADMIN_CODE","constants","getDisabledUserList","disabledUsers","strapi","store","get","type","key","enableMaximumUserCount","numberOfUsersToEnable","orderedDisabledUsers","reverse","usersToEnable","take","db","query","updateMany","where","id","map","user","data","isActive","remainingDisabledUsers","drop","set","value","disableUsersAboveLicenseLimit","numberOfUsersToDisable","currentlyDisabledUsers","usersToDisable","nonSuperAdminUsersToDisable","findMany","roles","code","$ne","orderBy","createdAt","limit","push","length","superAdminUsersToDisable","concat","pick","syncDisabledUserRecords","Array","from","seatEnforcementWorkflow","adminSeats","ee","seats","currentActiveUserCount","getService","getCurrentActiveUserCount","adminSeatsLeft"],"mappings":"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"}
@@ -1,29 +1,32 @@
1
- import { isNil, map, prop, reverse, take, drop, pick } from 'lodash/fp';
1
+ import { take, drop, pick } from 'lodash';
2
2
  import { getService } from '../utils/index.mjs';
3
3
  import constants from '../../../../server/src/services/constants.mjs';
4
4
 
5
5
  const { SUPER_ADMIN_CODE } = constants;
6
6
  /**
7
- * Keeps the list of users disabled by the seat enforcement service
7
+ * Returns users disabled by seat enforcement, or an empty list when none are stored.
8
8
  */ const getDisabledUserList = async ()=>{
9
- return strapi.store.get({
9
+ const disabledUsers = await strapi.store.get({
10
10
  type: 'ee',
11
11
  key: 'disabled_users'
12
12
  });
13
+ return disabledUsers ?? [];
13
14
  };
14
15
  const enableMaximumUserCount = async (numberOfUsersToEnable)=>{
15
16
  const disabledUsers = await getDisabledUserList();
16
- const orderedDisabledUsers = reverse(disabledUsers);
17
- const usersToEnable = take(numberOfUsersToEnable, orderedDisabledUsers);
17
+ const orderedDisabledUsers = [
18
+ ...disabledUsers
19
+ ].reverse();
20
+ const usersToEnable = take(orderedDisabledUsers, numberOfUsersToEnable);
18
21
  await strapi.db.query('admin::user').updateMany({
19
22
  where: {
20
- id: map(prop('id'), usersToEnable)
23
+ id: usersToEnable.map((user)=>user?.id)
21
24
  },
22
25
  data: {
23
26
  isActive: true
24
27
  }
25
28
  });
26
- const remainingDisabledUsers = drop(numberOfUsersToEnable, orderedDisabledUsers);
29
+ const remainingDisabledUsers = drop(orderedDisabledUsers, numberOfUsersToEnable);
27
30
  await strapi.store.set({
28
31
  type: 'ee',
29
32
  key: 'disabled_users',
@@ -31,7 +34,7 @@ const enableMaximumUserCount = async (numberOfUsersToEnable)=>{
31
34
  });
32
35
  };
33
36
  const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
34
- const currentlyDisabledUsers = await getDisabledUserList() ?? [];
37
+ const currentlyDisabledUsers = await getDisabledUserList();
35
38
  const usersToDisable = [];
36
39
  const nonSuperAdminUsersToDisable = await strapi.db.query('admin::user').findMany({
37
40
  where: {
@@ -65,7 +68,7 @@ const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
65
68
  }
66
69
  await strapi.db.query('admin::user').updateMany({
67
70
  where: {
68
- id: map(prop('id'), usersToDisable)
71
+ id: usersToDisable.map((user)=>user?.id)
69
72
  },
70
73
  data: {
71
74
  isActive: false
@@ -74,23 +77,20 @@ const disableUsersAboveLicenseLimit = async (numberOfUsersToDisable)=>{
74
77
  await strapi.store.set({
75
78
  type: 'ee',
76
79
  key: 'disabled_users',
77
- value: currentlyDisabledUsers.concat(map(pick([
78
- 'id',
79
- 'isActive'
80
- ]), usersToDisable))
80
+ value: currentlyDisabledUsers.concat(usersToDisable.map((user)=>pick(user, [
81
+ 'id',
82
+ 'isActive'
83
+ ])))
81
84
  });
82
85
  };
83
86
  const syncDisabledUserRecords = async ()=>{
84
- const disabledUsers = await strapi.store.get({
85
- type: 'ee',
86
- key: 'disabled_users'
87
- });
88
- if (!disabledUsers) {
87
+ const disabledUsers = await getDisabledUserList();
88
+ if (disabledUsers.length === 0) {
89
89
  return;
90
90
  }
91
91
  await strapi.db.query('admin::user').updateMany({
92
92
  where: {
93
- id: map(prop('id'), disabledUsers)
93
+ id: Array.from(disabledUsers, (user)=>user?.id)
94
94
  },
95
95
  data: {
96
96
  isActive: false
@@ -99,7 +99,7 @@ const syncDisabledUserRecords = async ()=>{
99
99
  };
100
100
  const seatEnforcementWorkflow = async ()=>{
101
101
  const adminSeats = strapi.ee.seats;
102
- if (isNil(adminSeats)) {
102
+ if (adminSeats == null) {
103
103
  return;
104
104
  }
105
105
  // TODO: we need to make sure an admin can decide to disable specific user and reactivate others
@@ -1 +1 @@
1
- {"version":3,"file":"seat-enforcement.mjs","sources":["../../../../../../ee/server/src/services/seat-enforcement.ts"],"sourcesContent":["import { take, drop, map, prop, pick, reverse, isNil } from 'lodash/fp';\nimport { getService } from '../utils';\nimport constants from '../../../../server/src/services/constants';\n\nconst { SUPER_ADMIN_CODE } = constants;\n\n/**\n * Keeps the list of users disabled by the seat enforcement service\n */\nconst getDisabledUserList = async () => {\n return strapi.store.get({ type: 'ee', key: 'disabled_users' });\n};\n\nconst enableMaximumUserCount = async (numberOfUsersToEnable: number) => {\n const disabledUsers = (await getDisabledUserList()) as any;\n const orderedDisabledUsers = reverse(disabledUsers);\n\n const usersToEnable = take(numberOfUsersToEnable, orderedDisabledUsers);\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: map(prop('id'), usersToEnable) },\n data: { isActive: true },\n });\n\n const remainingDisabledUsers = drop(numberOfUsersToEnable, orderedDisabledUsers);\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: remainingDisabledUsers,\n });\n};\n\nconst disableUsersAboveLicenseLimit = async (numberOfUsersToDisable: number) => {\n const currentlyDisabledUsers: any = (await getDisabledUserList()) ?? [];\n\n const usersToDisable = [];\n const nonSuperAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: {\n code: { $ne: SUPER_ADMIN_CODE },\n },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable,\n });\n\n usersToDisable.push(...nonSuperAdminUsersToDisable);\n\n if (nonSuperAdminUsersToDisable.length < numberOfUsersToDisable) {\n const superAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: { code: SUPER_ADMIN_CODE },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable - nonSuperAdminUsersToDisable.length,\n });\n\n usersToDisable.push(...superAdminUsersToDisable);\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: map(prop('id'), usersToDisable) },\n data: { isActive: false },\n });\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: currentlyDisabledUsers.concat(map(pick(['id', 'isActive']), usersToDisable)),\n });\n};\n\nconst syncDisabledUserRecords = async () => {\n const disabledUsers = await strapi.store.get({ type: 'ee', key: 'disabled_users' });\n\n if (!disabledUsers) {\n return;\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: map(prop('id'), disabledUsers) },\n data: { isActive: false },\n });\n};\n\nconst seatEnforcementWorkflow = async () => {\n const adminSeats = strapi.ee.seats;\n if (isNil(adminSeats)) {\n return;\n }\n\n // TODO: we need to make sure an admin can decide to disable specific user and reactivate others\n await syncDisabledUserRecords();\n\n const currentActiveUserCount = await getService('user').getCurrentActiveUserCount();\n\n const adminSeatsLeft = adminSeats - currentActiveUserCount;\n\n if (adminSeatsLeft > 0) {\n await enableMaximumUserCount(adminSeatsLeft);\n } else if (adminSeatsLeft < 0) {\n await disableUsersAboveLicenseLimit(-adminSeatsLeft);\n }\n};\n\nexport default {\n seatEnforcementWorkflow,\n getDisabledUserList,\n};\n"],"names":["SUPER_ADMIN_CODE","constants","getDisabledUserList","strapi","store","get","type","key","enableMaximumUserCount","numberOfUsersToEnable","disabledUsers","orderedDisabledUsers","reverse","usersToEnable","take","db","query","updateMany","where","id","map","prop","data","isActive","remainingDisabledUsers","drop","set","value","disableUsersAboveLicenseLimit","numberOfUsersToDisable","currentlyDisabledUsers","usersToDisable","nonSuperAdminUsersToDisable","findMany","roles","code","$ne","orderBy","createdAt","limit","push","length","superAdminUsersToDisable","concat","pick","syncDisabledUserRecords","seatEnforcementWorkflow","adminSeats","ee","seats","isNil","currentActiveUserCount","getService","getCurrentActiveUserCount","adminSeatsLeft"],"mappings":"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"}
1
+ {"version":3,"file":"seat-enforcement.mjs","sources":["../../../../../../ee/server/src/services/seat-enforcement.ts"],"sourcesContent":["import { pick, take, drop } from 'lodash';\n\nimport { getService } from '../utils';\nimport constants from '../../../../server/src/services/constants';\nimport type { AdminUser } from '../../../../shared/contracts/shared';\n\nconst { SUPER_ADMIN_CODE } = constants;\n\ntype DisabledUser = Pick<AdminUser, 'id' | 'isActive'>;\n\n/**\n * Returns users disabled by seat enforcement, or an empty list when none are stored.\n */\nconst getDisabledUserList = async (): Promise<DisabledUser[]> => {\n const disabledUsers = (await strapi.store.get({ type: 'ee', key: 'disabled_users' })) as\n | DisabledUser[]\n | null\n | undefined;\n\n return disabledUsers ?? [];\n};\n\nconst enableMaximumUserCount = async (numberOfUsersToEnable: number) => {\n const disabledUsers = await getDisabledUserList();\n const orderedDisabledUsers = [...disabledUsers].reverse();\n\n const usersToEnable = take(orderedDisabledUsers, numberOfUsersToEnable);\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: usersToEnable.map((user) => user?.id) },\n data: { isActive: true },\n });\n\n const remainingDisabledUsers = drop(orderedDisabledUsers, numberOfUsersToEnable);\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: remainingDisabledUsers,\n });\n};\n\nconst disableUsersAboveLicenseLimit = async (numberOfUsersToDisable: number) => {\n const currentlyDisabledUsers = await getDisabledUserList();\n\n const usersToDisable = [];\n const nonSuperAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: {\n code: { $ne: SUPER_ADMIN_CODE },\n },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable,\n });\n\n usersToDisable.push(...nonSuperAdminUsersToDisable);\n\n if (nonSuperAdminUsersToDisable.length < numberOfUsersToDisable) {\n const superAdminUsersToDisable = await strapi.db.query('admin::user').findMany({\n where: {\n isActive: true,\n roles: { code: SUPER_ADMIN_CODE },\n },\n orderBy: { createdAt: 'DESC' },\n limit: numberOfUsersToDisable - nonSuperAdminUsersToDisable.length,\n });\n\n usersToDisable.push(...superAdminUsersToDisable);\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: usersToDisable.map((user) => user?.id) },\n data: { isActive: false },\n });\n\n await strapi.store.set({\n type: 'ee',\n key: 'disabled_users',\n value: currentlyDisabledUsers.concat(\n usersToDisable.map((user) => pick(user, ['id', 'isActive']))\n ),\n });\n};\n\nconst syncDisabledUserRecords = async () => {\n const disabledUsers = await getDisabledUserList();\n\n if (disabledUsers.length === 0) {\n return;\n }\n\n await strapi.db.query('admin::user').updateMany({\n where: { id: Array.from(disabledUsers, (user) => user?.id) },\n data: { isActive: false },\n });\n};\n\nconst seatEnforcementWorkflow = async () => {\n const adminSeats = strapi.ee.seats;\n if (adminSeats == null) {\n return;\n }\n\n // TODO: we need to make sure an admin can decide to disable specific user and reactivate others\n await syncDisabledUserRecords();\n\n const currentActiveUserCount = await getService('user').getCurrentActiveUserCount();\n\n const adminSeatsLeft = adminSeats - currentActiveUserCount;\n\n if (adminSeatsLeft > 0) {\n await enableMaximumUserCount(adminSeatsLeft);\n } else if (adminSeatsLeft < 0) {\n await disableUsersAboveLicenseLimit(-adminSeatsLeft);\n }\n};\n\nexport default {\n seatEnforcementWorkflow,\n getDisabledUserList,\n};\n"],"names":["SUPER_ADMIN_CODE","constants","getDisabledUserList","disabledUsers","strapi","store","get","type","key","enableMaximumUserCount","numberOfUsersToEnable","orderedDisabledUsers","reverse","usersToEnable","take","db","query","updateMany","where","id","map","user","data","isActive","remainingDisabledUsers","drop","set","value","disableUsersAboveLicenseLimit","numberOfUsersToDisable","currentlyDisabledUsers","usersToDisable","nonSuperAdminUsersToDisable","findMany","roles","code","$ne","orderBy","createdAt","limit","push","length","superAdminUsersToDisable","concat","pick","syncDisabledUserRecords","Array","from","seatEnforcementWorkflow","adminSeats","ee","seats","currentActiveUserCount","getService","getCurrentActiveUserCount","adminSeatsLeft"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var _ = require('lodash');
4
- var fp = require('lodash/fp');
5
4
  var utils = require('@strapi/utils');
6
5
  var user$1 = require('../../../../server/src/domain/user.js');
7
6
  var constants = require('../../../../server/src/services/constants.js');
@@ -39,7 +38,7 @@ const getSessionManager = ()=>{
39
38
  });
40
39
  }
41
40
  };
42
- const castNumberArray = fp.pipe(fp.castArray, fp.map(fp.toNumber));
41
+ const castNumberArray = (ids)=>_.castArray(ids).map((id)=>_.toNumber(id));
43
42
  const removeFromEEDisabledUsersList = async (ids)=>{
44
43
  let idsToCheck;
45
44
  if (typeof ids === 'object') {