@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 +1 @@
1
- {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/controllers/user.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;gBAiCf,OAAO;gBAiCP,OAAO;qBAkCF,OAAO;;AApEhC,wBA8EE"}
1
+ {"version":3,"file":"user.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/controllers/user.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;gBAgCf,OAAO;gBAiCP,OAAO;qBAkCF,OAAO;;AApEhC,wBA8EE"}
@@ -184,7 +184,10 @@ declare const getAdminEE: () => {
184
184
  };
185
185
  'seat-enforcement': {
186
186
  seatEnforcementWorkflow: () => Promise<void>;
187
- getDisabledUserList: () => Promise<unknown>;
187
+ getDisabledUserList: () => Promise<{
188
+ isActive: boolean;
189
+ id: import("@strapi/types/dist/data/constants.js").ID;
190
+ }[]>;
188
191
  };
189
192
  'persist-tables': {
190
193
  persistTablesWithPrefix: (tableNamePrefix: string) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../ee/server/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAkB1C,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA4Be;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE;wBA0BxB;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpD,CAAC;AAEF,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../ee/server/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAkB1C,QAAA,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA4Be;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE;wBA0BxB;QAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;KAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOpD,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -32,7 +32,10 @@ declare const _default: {
32
32
  };
33
33
  'seat-enforcement': {
34
34
  seatEnforcementWorkflow: () => Promise<void>;
35
- getDisabledUserList: () => Promise<unknown>;
35
+ getDisabledUserList: () => Promise<{
36
+ isActive: boolean;
37
+ id: import("@strapi/types/dist/data/constants.js").ID;
38
+ }[]>;
36
39
  };
37
40
  'persist-tables': {
38
41
  persistTablesWithPrefix: (tableNamePrefix: string) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,wBAQE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,wBAQE"}
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/services/metrics.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;;wBAgDf,IAAI,CAAC,MAAM;;2CAvCc,IAAI,CAAC,MAAM;;AAgD/D,wBAAgF"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/services/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;;wBAkDf,IAAI,CAAC,MAAM;;2CAzCc,IAAI,CAAC,MAAM;;AAkD/D,wBAAgF"}
@@ -1 +1 @@
1
- {"version":3,"file":"persist-tables.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/services/persist-tables.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAG1C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrC;AAYD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,GAAG,qBAG/E;AAoED;;;;;GAKG;AAEH,eAAO,MAAM,uBAAuB,GAAU,iBAAiB,MAAM,kBAKpE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,GAAU,iBAAiB,MAAM,kBAa5E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAU,QAAQ,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,kBAEzE,CAAC;;+CAhC6D,MAAM;uDAYE,MAAM;4BAkBjC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;;;AAI1E,wBAKE"}
1
+ {"version":3,"file":"persist-tables.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/services/persist-tables.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAE1C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrC;AAYD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,GAAG,qBAG/E;AAmED;;;;;GAKG;AAEH,eAAO,MAAM,uBAAuB,GAAU,iBAAiB,MAAM,kBAKpE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,+BAA+B,GAAU,iBAAiB,MAAM,kBAa5E,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa,GAAU,QAAQ,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC,kBAEzE,CAAC;;+CAhC6D,MAAM;uDAYE,MAAM;4BAkBjC,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;;;AAI1E,wBAKE"}
@@ -1,6 +1,8 @@
1
+ import type { AdminUser } from '../../../../shared/contracts/shared';
2
+ type DisabledUser = Pick<AdminUser, 'id' | 'isActive'>;
1
3
  declare const _default: {
2
4
  seatEnforcementWorkflow: () => Promise<void>;
3
- getDisabledUserList: () => Promise<unknown>;
5
+ getDisabledUserList: () => Promise<DisabledUser[]>;
4
6
  };
5
7
  export default _default;
6
8
  //# sourceMappingURL=seat-enforcement.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"seat-enforcement.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/services/seat-enforcement.ts"],"names":[],"mappings":";;;;AA4GA,wBAGE"}
1
+ {"version":3,"file":"seat-enforcement.d.ts","sourceRoot":"","sources":["../../../../../ee/server/src/services/seat-enforcement.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAIrE,KAAK,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,UAAU,CAAC,CAAC;;;+BAKjB,OAAO,CAAC,YAAY,EAAE,CAAC;;AA0G7D,wBAGE"}
@@ -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
 
@@ -49,11 +48,11 @@ var admin = {
49
48
  } else {
50
49
  enforcementUserCount = currentActiveUserCount;
51
50
  }
52
- if (!fp.isNil(permittedSeats) && enforcementUserCount > permittedSeats) {
51
+ if (permittedSeats != null && enforcementUserCount > permittedSeats) {
53
52
  shouldNotify = true;
54
53
  licenseLimitStatus = 'OVER_LIMIT';
55
54
  }
56
- if (!fp.isNil(permittedSeats) && enforcementUserCount === permittedSeats) {
55
+ if (permittedSeats != null && enforcementUserCount === permittedSeats) {
57
56
  shouldNotify = true;
58
57
  licenseLimitStatus = 'AT_LIMIT';
59
58
  }
@@ -62,7 +61,7 @@ var admin = {
62
61
  currentActiveUserCount,
63
62
  permittedSeats,
64
63
  shouldNotify,
65
- shouldStopCreate: fp.isNil(permittedSeats) ? false : currentActiveUserCount >= permittedSeats,
64
+ shouldStopCreate: permittedSeats == null ? false : currentActiveUserCount >= permittedSeats,
66
65
  licenseLimitStatus,
67
66
  isHostedOnStrapiCloud: utils.env('STRAPI_HOSTING', null) === 'strapi.cloud',
68
67
  type: strapi.ee.type,
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sources":["../../../../../../ee/server/src/controllers/admin.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport { env } from '@strapi/utils';\n\nimport { getService } from '../utils';\n\nimport type { GetProjectType } from '../../../../shared/contracts/admin';\n\nexport default {\n // NOTE: Overrides CE admin controller\n async getProjectType(): Promise<GetProjectType.Response> {\n const flags = strapi.config.get('admin.flags', {});\n\n try {\n return {\n data: {\n // The license fields are nullable internally; the contract is not.\n isEE: Boolean(strapi.EE),\n isTrial: strapi.ee.isTrial,\n features: strapi.ee.features.list(),\n flags,\n type: strapi.ee.type ?? undefined,\n planPriceId: strapi.ee.planPriceId ?? undefined,\n ai: {\n enabled: strapi.ai.admin.isStrapiManagedAiEnabled(),\n },\n },\n };\n } catch {\n return { data: { isEE: false, isTrial: false, features: [], flags, ai: { enabled: false } } };\n }\n },\n\n async licenseLimitInformation() {\n const permittedSeats = strapi.ee.seats;\n\n let shouldNotify = false;\n let licenseLimitStatus = null;\n let enforcementUserCount;\n\n const currentActiveUserCount = await getService('user').getCurrentActiveUserCount();\n\n const eeDisabledUsers = await getService('seat-enforcement').getDisabledUserList();\n\n if (eeDisabledUsers) {\n enforcementUserCount = currentActiveUserCount + eeDisabledUsers.length;\n } else {\n enforcementUserCount = currentActiveUserCount;\n }\n\n if (!isNil(permittedSeats) && enforcementUserCount > permittedSeats) {\n shouldNotify = true;\n licenseLimitStatus = 'OVER_LIMIT';\n }\n\n if (!isNil(permittedSeats) && enforcementUserCount === permittedSeats) {\n shouldNotify = true;\n licenseLimitStatus = 'AT_LIMIT';\n }\n\n const data = {\n enforcementUserCount,\n currentActiveUserCount,\n permittedSeats,\n shouldNotify,\n shouldStopCreate: isNil(permittedSeats) ? false : currentActiveUserCount >= permittedSeats,\n licenseLimitStatus,\n isHostedOnStrapiCloud: env('STRAPI_HOSTING', null) === 'strapi.cloud',\n type: strapi.ee.type,\n isTrial: strapi.ee.isTrial,\n features: strapi.ee.features.list() ?? [],\n };\n\n return { data };\n },\n};\n"],"names":["getProjectType","flags","strapi","config","get","data","isEE","Boolean","EE","isTrial","ee","features","list","type","undefined","planPriceId","ai","enabled","admin","isStrapiManagedAiEnabled","licenseLimitInformation","permittedSeats","seats","shouldNotify","licenseLimitStatus","enforcementUserCount","currentActiveUserCount","getService","getCurrentActiveUserCount","eeDisabledUsers","getDisabledUserList","length","isNil","shouldStopCreate","isHostedOnStrapiCloud","env"],"mappings":"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"}
1
+ {"version":3,"file":"admin.js","sources":["../../../../../../ee/server/src/controllers/admin.ts"],"sourcesContent":["import { env } from '@strapi/utils';\n\nimport { getService } from '../utils';\n\nimport type { GetProjectType } from '../../../../shared/contracts/admin';\n\nexport default {\n // NOTE: Overrides CE admin controller\n async getProjectType(): Promise<GetProjectType.Response> {\n const flags = strapi.config.get('admin.flags', {});\n\n try {\n return {\n data: {\n // The license fields are nullable internally; the contract is not.\n isEE: Boolean(strapi.EE),\n isTrial: strapi.ee.isTrial,\n features: strapi.ee.features.list(),\n flags,\n type: strapi.ee.type ?? undefined,\n planPriceId: strapi.ee.planPriceId ?? undefined,\n ai: {\n enabled: strapi.ai.admin.isStrapiManagedAiEnabled(),\n },\n },\n };\n } catch {\n return { data: { isEE: false, isTrial: false, features: [], flags, ai: { enabled: false } } };\n }\n },\n\n async licenseLimitInformation() {\n const permittedSeats = strapi.ee.seats;\n\n let shouldNotify = false;\n let licenseLimitStatus = null;\n let enforcementUserCount;\n\n const currentActiveUserCount = await getService('user').getCurrentActiveUserCount();\n\n const eeDisabledUsers = await getService('seat-enforcement').getDisabledUserList();\n\n if (eeDisabledUsers) {\n enforcementUserCount = currentActiveUserCount + eeDisabledUsers.length;\n } else {\n enforcementUserCount = currentActiveUserCount;\n }\n\n if (permittedSeats != null && enforcementUserCount > permittedSeats) {\n shouldNotify = true;\n licenseLimitStatus = 'OVER_LIMIT';\n }\n\n if (permittedSeats != null && enforcementUserCount === permittedSeats) {\n shouldNotify = true;\n licenseLimitStatus = 'AT_LIMIT';\n }\n\n const data = {\n enforcementUserCount,\n currentActiveUserCount,\n permittedSeats,\n shouldNotify,\n shouldStopCreate: permittedSeats == null ? false : currentActiveUserCount >= permittedSeats,\n licenseLimitStatus,\n isHostedOnStrapiCloud: env('STRAPI_HOSTING', null) === 'strapi.cloud',\n type: strapi.ee.type,\n isTrial: strapi.ee.isTrial,\n features: strapi.ee.features.list() ?? [],\n };\n\n return { data };\n },\n};\n"],"names":["getProjectType","flags","strapi","config","get","data","isEE","Boolean","EE","isTrial","ee","features","list","type","undefined","planPriceId","ai","enabled","admin","isStrapiManagedAiEnabled","licenseLimitInformation","permittedSeats","seats","shouldNotify","licenseLimitStatus","enforcementUserCount","currentActiveUserCount","getService","getCurrentActiveUserCount","eeDisabledUsers","getDisabledUserList","length","shouldStopCreate","isHostedOnStrapiCloud","env"],"mappings":";;;;;AAMA,YAAe;;IAEb,MAAMA,cAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAMC,QAAQC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAe,EAAC,CAAA;QAEhD,IAAI;YACF,OAAO;gBACLC,IAAAA,EAAM;;oBAEJC,IAAAA,EAAMC,OAAAA,CAAQL,OAAOM,EAAE,CAAA;oBACvBC,OAAAA,EAASP,MAAAA,CAAOQ,EAAE,CAACD,OAAO;AAC1BE,oBAAAA,QAAAA,EAAUT,MAAAA,CAAOQ,EAAE,CAACC,QAAQ,CAACC,IAAI,EAAA;AACjCX,oBAAAA,KAAAA;AACAY,oBAAAA,IAAAA,EAAMX,MAAAA,CAAOQ,EAAE,CAACG,IAAI,IAAIC,SAAAA;AACxBC,oBAAAA,WAAAA,EAAab,MAAAA,CAAOQ,EAAE,CAACK,WAAW,IAAID,SAAAA;oBACtCE,EAAAA,EAAI;AACFC,wBAAAA,OAAAA,EAASf,MAAAA,CAAOc,EAAE,CAACE,KAAK,CAACC,wBAAwB;AACnD;AACF;AACF,aAAA;AACF,QAAA,CAAA,CAAE,OAAM;YACN,OAAO;gBAAEd,IAAAA,EAAM;oBAAEC,IAAAA,EAAM,KAAA;oBAAOG,OAAAA,EAAS,KAAA;AAAOE,oBAAAA,QAAAA,EAAU,EAAE;AAAEV,oBAAAA,KAAAA;oBAAOe,EAAAA,EAAI;wBAAEC,OAAAA,EAAS;AAAM;AAAE;AAAE,aAAA;AAC9F,QAAA;AACF,IAAA,CAAA;IAEA,MAAMG,uBAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAMC,cAAAA,GAAiBnB,MAAAA,CAAOQ,EAAE,CAACY,KAAK;AAEtC,QAAA,IAAIC,YAAAA,GAAe,KAAA;AACnB,QAAA,IAAIC,kBAAAA,GAAqB,IAAA;QACzB,IAAIC,oBAAAA;AAEJ,QAAA,MAAMC,sBAAAA,GAAyB,MAAMC,gBAAAA,CAAW,MAAA,CAAA,CAAQC,yBAAyB,EAAA;AAEjF,QAAA,MAAMC,eAAAA,GAAkB,MAAMF,gBAAAA,CAAW,kBAAA,CAAA,CAAoBG,mBAAmB,EAAA;AAEhF,QAAA,IAAID,eAAAA,EAAiB;YACnBJ,oBAAAA,GAAuBC,sBAAAA,GAAyBG,gBAAgBE,MAAM;QACxE,CAAA,MAAO;YACLN,oBAAAA,GAAuBC,sBAAAA;AACzB,QAAA;QAEA,IAAIL,cAAAA,IAAkB,IAAA,IAAQI,oBAAAA,GAAuBJ,cAAAA,EAAgB;YACnEE,YAAAA,GAAe,IAAA;YACfC,kBAAAA,GAAqB,YAAA;AACvB,QAAA;QAEA,IAAIH,cAAAA,IAAkB,IAAA,IAAQI,oBAAAA,KAAyBJ,cAAAA,EAAgB;YACrEE,YAAAA,GAAe,IAAA;YACfC,kBAAAA,GAAqB,UAAA;AACvB,QAAA;AAEA,QAAA,MAAMnB,IAAAA,GAAO;AACXoB,YAAAA,oBAAAA;AACAC,YAAAA,sBAAAA;AACAL,YAAAA,cAAAA;AACAE,YAAAA,YAAAA;YACAS,gBAAAA,EAAkBX,cAAAA,IAAkB,IAAA,GAAO,KAAA,GAAQK,sBAAAA,IAA0BL,cAAAA;AAC7EG,YAAAA,kBAAAA;YACAS,qBAAAA,EAAuBC,SAAAA,CAAI,kBAAkB,IAAA,CAAA,KAAU,cAAA;YACvDrB,IAAAA,EAAMX,MAAAA,CAAOQ,EAAE,CAACG,IAAI;YACpBJ,OAAAA,EAASP,MAAAA,CAAOQ,EAAE,CAACD,OAAO;AAC1BE,YAAAA,QAAAA,EAAUT,OAAOQ,EAAE,CAACC,QAAQ,CAACC,IAAI,MAAM;AACzC,SAAA;QAEA,OAAO;AAAEP,YAAAA;AAAK,SAAA;AAChB,IAAA;AACF,CAAA;;;;"}
@@ -1,4 +1,3 @@
1
- import { isNil } from 'lodash/fp';
2
1
  import { env } from '@strapi/utils';
3
2
  import { getService } from '../utils/index.mjs';
4
3
 
@@ -47,11 +46,11 @@ var admin = {
47
46
  } else {
48
47
  enforcementUserCount = currentActiveUserCount;
49
48
  }
50
- if (!isNil(permittedSeats) && enforcementUserCount > permittedSeats) {
49
+ if (permittedSeats != null && enforcementUserCount > permittedSeats) {
51
50
  shouldNotify = true;
52
51
  licenseLimitStatus = 'OVER_LIMIT';
53
52
  }
54
- if (!isNil(permittedSeats) && enforcementUserCount === permittedSeats) {
53
+ if (permittedSeats != null && enforcementUserCount === permittedSeats) {
55
54
  shouldNotify = true;
56
55
  licenseLimitStatus = 'AT_LIMIT';
57
56
  }
@@ -60,7 +59,7 @@ var admin = {
60
59
  currentActiveUserCount,
61
60
  permittedSeats,
62
61
  shouldNotify,
63
- shouldStopCreate: isNil(permittedSeats) ? false : currentActiveUserCount >= permittedSeats,
62
+ shouldStopCreate: permittedSeats == null ? false : currentActiveUserCount >= permittedSeats,
64
63
  licenseLimitStatus,
65
64
  isHostedOnStrapiCloud: env('STRAPI_HOSTING', null) === 'strapi.cloud',
66
65
  type: strapi.ee.type,
@@ -1 +1 @@
1
- {"version":3,"file":"admin.mjs","sources":["../../../../../../ee/server/src/controllers/admin.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\nimport { env } from '@strapi/utils';\n\nimport { getService } from '../utils';\n\nimport type { GetProjectType } from '../../../../shared/contracts/admin';\n\nexport default {\n // NOTE: Overrides CE admin controller\n async getProjectType(): Promise<GetProjectType.Response> {\n const flags = strapi.config.get('admin.flags', {});\n\n try {\n return {\n data: {\n // The license fields are nullable internally; the contract is not.\n isEE: Boolean(strapi.EE),\n isTrial: strapi.ee.isTrial,\n features: strapi.ee.features.list(),\n flags,\n type: strapi.ee.type ?? undefined,\n planPriceId: strapi.ee.planPriceId ?? undefined,\n ai: {\n enabled: strapi.ai.admin.isStrapiManagedAiEnabled(),\n },\n },\n };\n } catch {\n return { data: { isEE: false, isTrial: false, features: [], flags, ai: { enabled: false } } };\n }\n },\n\n async licenseLimitInformation() {\n const permittedSeats = strapi.ee.seats;\n\n let shouldNotify = false;\n let licenseLimitStatus = null;\n let enforcementUserCount;\n\n const currentActiveUserCount = await getService('user').getCurrentActiveUserCount();\n\n const eeDisabledUsers = await getService('seat-enforcement').getDisabledUserList();\n\n if (eeDisabledUsers) {\n enforcementUserCount = currentActiveUserCount + eeDisabledUsers.length;\n } else {\n enforcementUserCount = currentActiveUserCount;\n }\n\n if (!isNil(permittedSeats) && enforcementUserCount > permittedSeats) {\n shouldNotify = true;\n licenseLimitStatus = 'OVER_LIMIT';\n }\n\n if (!isNil(permittedSeats) && enforcementUserCount === permittedSeats) {\n shouldNotify = true;\n licenseLimitStatus = 'AT_LIMIT';\n }\n\n const data = {\n enforcementUserCount,\n currentActiveUserCount,\n permittedSeats,\n shouldNotify,\n shouldStopCreate: isNil(permittedSeats) ? false : currentActiveUserCount >= permittedSeats,\n licenseLimitStatus,\n isHostedOnStrapiCloud: env('STRAPI_HOSTING', null) === 'strapi.cloud',\n type: strapi.ee.type,\n isTrial: strapi.ee.isTrial,\n features: strapi.ee.features.list() ?? [],\n };\n\n return { data };\n },\n};\n"],"names":["getProjectType","flags","strapi","config","get","data","isEE","Boolean","EE","isTrial","ee","features","list","type","undefined","planPriceId","ai","enabled","admin","isStrapiManagedAiEnabled","licenseLimitInformation","permittedSeats","seats","shouldNotify","licenseLimitStatus","enforcementUserCount","currentActiveUserCount","getService","getCurrentActiveUserCount","eeDisabledUsers","getDisabledUserList","length","isNil","shouldStopCreate","isHostedOnStrapiCloud","env"],"mappings":"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"}
1
+ {"version":3,"file":"admin.mjs","sources":["../../../../../../ee/server/src/controllers/admin.ts"],"sourcesContent":["import { env } from '@strapi/utils';\n\nimport { getService } from '../utils';\n\nimport type { GetProjectType } from '../../../../shared/contracts/admin';\n\nexport default {\n // NOTE: Overrides CE admin controller\n async getProjectType(): Promise<GetProjectType.Response> {\n const flags = strapi.config.get('admin.flags', {});\n\n try {\n return {\n data: {\n // The license fields are nullable internally; the contract is not.\n isEE: Boolean(strapi.EE),\n isTrial: strapi.ee.isTrial,\n features: strapi.ee.features.list(),\n flags,\n type: strapi.ee.type ?? undefined,\n planPriceId: strapi.ee.planPriceId ?? undefined,\n ai: {\n enabled: strapi.ai.admin.isStrapiManagedAiEnabled(),\n },\n },\n };\n } catch {\n return { data: { isEE: false, isTrial: false, features: [], flags, ai: { enabled: false } } };\n }\n },\n\n async licenseLimitInformation() {\n const permittedSeats = strapi.ee.seats;\n\n let shouldNotify = false;\n let licenseLimitStatus = null;\n let enforcementUserCount;\n\n const currentActiveUserCount = await getService('user').getCurrentActiveUserCount();\n\n const eeDisabledUsers = await getService('seat-enforcement').getDisabledUserList();\n\n if (eeDisabledUsers) {\n enforcementUserCount = currentActiveUserCount + eeDisabledUsers.length;\n } else {\n enforcementUserCount = currentActiveUserCount;\n }\n\n if (permittedSeats != null && enforcementUserCount > permittedSeats) {\n shouldNotify = true;\n licenseLimitStatus = 'OVER_LIMIT';\n }\n\n if (permittedSeats != null && enforcementUserCount === permittedSeats) {\n shouldNotify = true;\n licenseLimitStatus = 'AT_LIMIT';\n }\n\n const data = {\n enforcementUserCount,\n currentActiveUserCount,\n permittedSeats,\n shouldNotify,\n shouldStopCreate: permittedSeats == null ? false : currentActiveUserCount >= permittedSeats,\n licenseLimitStatus,\n isHostedOnStrapiCloud: env('STRAPI_HOSTING', null) === 'strapi.cloud',\n type: strapi.ee.type,\n isTrial: strapi.ee.isTrial,\n features: strapi.ee.features.list() ?? [],\n };\n\n return { data };\n },\n};\n"],"names":["getProjectType","flags","strapi","config","get","data","isEE","Boolean","EE","isTrial","ee","features","list","type","undefined","planPriceId","ai","enabled","admin","isStrapiManagedAiEnabled","licenseLimitInformation","permittedSeats","seats","shouldNotify","licenseLimitStatus","enforcementUserCount","currentActiveUserCount","getService","getCurrentActiveUserCount","eeDisabledUsers","getDisabledUserList","length","shouldStopCreate","isHostedOnStrapiCloud","env"],"mappings":";;;AAMA,YAAe;;IAEb,MAAMA,cAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAMC,QAAQC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,eAAe,EAAC,CAAA;QAEhD,IAAI;YACF,OAAO;gBACLC,IAAAA,EAAM;;oBAEJC,IAAAA,EAAMC,OAAAA,CAAQL,OAAOM,EAAE,CAAA;oBACvBC,OAAAA,EAASP,MAAAA,CAAOQ,EAAE,CAACD,OAAO;AAC1BE,oBAAAA,QAAAA,EAAUT,MAAAA,CAAOQ,EAAE,CAACC,QAAQ,CAACC,IAAI,EAAA;AACjCX,oBAAAA,KAAAA;AACAY,oBAAAA,IAAAA,EAAMX,MAAAA,CAAOQ,EAAE,CAACG,IAAI,IAAIC,SAAAA;AACxBC,oBAAAA,WAAAA,EAAab,MAAAA,CAAOQ,EAAE,CAACK,WAAW,IAAID,SAAAA;oBACtCE,EAAAA,EAAI;AACFC,wBAAAA,OAAAA,EAASf,MAAAA,CAAOc,EAAE,CAACE,KAAK,CAACC,wBAAwB;AACnD;AACF;AACF,aAAA;AACF,QAAA,CAAA,CAAE,OAAM;YACN,OAAO;gBAAEd,IAAAA,EAAM;oBAAEC,IAAAA,EAAM,KAAA;oBAAOG,OAAAA,EAAS,KAAA;AAAOE,oBAAAA,QAAAA,EAAU,EAAE;AAAEV,oBAAAA,KAAAA;oBAAOe,EAAAA,EAAI;wBAAEC,OAAAA,EAAS;AAAM;AAAE;AAAE,aAAA;AAC9F,QAAA;AACF,IAAA,CAAA;IAEA,MAAMG,uBAAAA,CAAAA,GAAAA;AACJ,QAAA,MAAMC,cAAAA,GAAiBnB,MAAAA,CAAOQ,EAAE,CAACY,KAAK;AAEtC,QAAA,IAAIC,YAAAA,GAAe,KAAA;AACnB,QAAA,IAAIC,kBAAAA,GAAqB,IAAA;QACzB,IAAIC,oBAAAA;AAEJ,QAAA,MAAMC,sBAAAA,GAAyB,MAAMC,UAAAA,CAAW,MAAA,CAAA,CAAQC,yBAAyB,EAAA;AAEjF,QAAA,MAAMC,eAAAA,GAAkB,MAAMF,UAAAA,CAAW,kBAAA,CAAA,CAAoBG,mBAAmB,EAAA;AAEhF,QAAA,IAAID,eAAAA,EAAiB;YACnBJ,oBAAAA,GAAuBC,sBAAAA,GAAyBG,gBAAgBE,MAAM;QACxE,CAAA,MAAO;YACLN,oBAAAA,GAAuBC,sBAAAA;AACzB,QAAA;QAEA,IAAIL,cAAAA,IAAkB,IAAA,IAAQI,oBAAAA,GAAuBJ,cAAAA,EAAgB;YACnEE,YAAAA,GAAe,IAAA;YACfC,kBAAAA,GAAqB,YAAA;AACvB,QAAA;QAEA,IAAIH,cAAAA,IAAkB,IAAA,IAAQI,oBAAAA,KAAyBJ,cAAAA,EAAgB;YACrEE,YAAAA,GAAe,IAAA;YACfC,kBAAAA,GAAqB,UAAA;AACvB,QAAA;AAEA,QAAA,MAAMnB,IAAAA,GAAO;AACXoB,YAAAA,oBAAAA;AACAC,YAAAA,sBAAAA;AACAL,YAAAA,cAAAA;AACAE,YAAAA,YAAAA;YACAS,gBAAAA,EAAkBX,cAAAA,IAAkB,IAAA,GAAO,KAAA,GAAQK,sBAAAA,IAA0BL,cAAAA;AAC7EG,YAAAA,kBAAAA;YACAS,qBAAAA,EAAuBC,GAAAA,CAAI,kBAAkB,IAAA,CAAA,KAAU,cAAA;YACvDrB,IAAAA,EAAMX,MAAAA,CAAOQ,EAAE,CAACG,IAAI;YACpBJ,OAAAA,EAASP,MAAAA,CAAOQ,EAAE,CAACD,OAAO;AAC1BE,YAAAA,QAAAA,EAAUT,OAAOQ,EAAE,CAACC,QAAQ,CAACC,IAAI,MAAM;AACzC,SAAA;QAEA,OAAO;AAAEP,YAAAA;AAAK,SAAA;AAChB,IAAA;AACF,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
  var constants = require('./constants.js');
7
7
 
8
8
  const PROVIDER_URLS_MAP = {
@@ -16,7 +16,7 @@ const getAdminStore = async ()=>strapi.store({
16
16
  const getPrefixedRedirectUrls = ()=>{
17
17
  const { url: adminUrl } = strapi.config.get('admin');
18
18
  const prefixUrl = (url)=>`${adminUrl || '/admin'}${url}`;
19
- return fp.mapValues(prefixUrl, PROVIDER_URLS_MAP);
19
+ return _.mapValues(PROVIDER_URLS_MAP, (value)=>prefixUrl(value));
20
20
  };
21
21
  var utils = {
22
22
  getAdminStore,
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../../ee/server/src/controllers/authentication-utils/utils.ts"],"sourcesContent":["import { mapValues } from 'lodash/fp';\nimport { PROVIDER_REDIRECT_ERROR, PROVIDER_REDIRECT_SUCCESS } from './constants';\n\nconst PROVIDER_URLS_MAP = {\n success: PROVIDER_REDIRECT_SUCCESS,\n error: PROVIDER_REDIRECT_ERROR,\n};\n\nexport const getAdminStore = async () => strapi.store({ type: 'core', name: 'admin' });\n\nexport const getPrefixedRedirectUrls = () => {\n const { url: adminUrl } = strapi.config.get('admin') as any;\n const prefixUrl = (url: string) => `${adminUrl || '/admin'}${url}`;\n\n return mapValues(prefixUrl, PROVIDER_URLS_MAP);\n};\n\nexport default {\n getAdminStore,\n getPrefixedRedirectUrls,\n};\n"],"names":["PROVIDER_URLS_MAP","success","PROVIDER_REDIRECT_SUCCESS","error","PROVIDER_REDIRECT_ERROR","getAdminStore","strapi","store","type","name","getPrefixedRedirectUrls","url","adminUrl","config","get","prefixUrl","mapValues"],"mappings":";;;;;;;AAGA,MAAMA,iBAAAA,GAAoB;IACxBC,OAAAA,EAASC,mCAAAA;IACTC,KAAAA,EAAOC;AACT,CAAA;AAEO,MAAMC,aAAAA,GAAgB,UAAYC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,MAAA;QAAQC,IAAAA,EAAM;KAAQ;MAEvEC,uBAAAA,GAA0B,IAAA;IACrC,MAAM,EAAEC,KAAKC,QAAQ,EAAE,GAAGN,MAAAA,CAAOO,MAAM,CAACC,GAAG,CAAC,OAAA,CAAA;AAC5C,IAAA,MAAMC,YAAY,CAACJ,GAAAA,GAAgB,CAAA,EAAGC,QAAAA,IAAY,WAAWD,GAAAA,CAAAA,CAAK;AAElE,IAAA,OAAOK,aAAUD,SAAAA,EAAWf,iBAAAA,CAAAA;AAC9B;AAEA,YAAe;AACbK,IAAAA,aAAAA;AACAK,IAAAA;AACF,CAAA;;;;;;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../../ee/server/src/controllers/authentication-utils/utils.ts"],"sourcesContent":["import { mapValues } from 'lodash';\n\nimport { PROVIDER_REDIRECT_ERROR, PROVIDER_REDIRECT_SUCCESS } from './constants';\n\nconst PROVIDER_URLS_MAP = {\n success: PROVIDER_REDIRECT_SUCCESS,\n error: PROVIDER_REDIRECT_ERROR,\n};\n\nexport const getAdminStore = async () => strapi.store({ type: 'core', name: 'admin' });\n\nexport const getPrefixedRedirectUrls = () => {\n const { url: adminUrl } = strapi.config.get('admin') as any;\n const prefixUrl = (url: string) => `${adminUrl || '/admin'}${url}`;\n\n return mapValues(PROVIDER_URLS_MAP, (value) => prefixUrl(value));\n};\n\nexport default {\n getAdminStore,\n getPrefixedRedirectUrls,\n};\n"],"names":["PROVIDER_URLS_MAP","success","PROVIDER_REDIRECT_SUCCESS","error","PROVIDER_REDIRECT_ERROR","getAdminStore","strapi","store","type","name","getPrefixedRedirectUrls","url","adminUrl","config","get","prefixUrl","mapValues","value"],"mappings":";;;;;;;AAIA,MAAMA,iBAAAA,GAAoB;IACxBC,OAAAA,EAASC,mCAAAA;IACTC,KAAAA,EAAOC;AACT,CAAA;AAEO,MAAMC,aAAAA,GAAgB,UAAYC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,MAAA;QAAQC,IAAAA,EAAM;KAAQ;MAEvEC,uBAAAA,GAA0B,IAAA;IACrC,MAAM,EAAEC,KAAKC,QAAQ,EAAE,GAAGN,MAAAA,CAAOO,MAAM,CAACC,GAAG,CAAC,OAAA,CAAA;AAC5C,IAAA,MAAMC,YAAY,CAACJ,GAAAA,GAAgB,CAAA,EAAGC,QAAAA,IAAY,WAAWD,GAAAA,CAAAA,CAAK;AAElE,IAAA,OAAOK,WAAAA,CAAUhB,iBAAAA,EAAmB,CAACiB,KAAAA,GAAUF,SAAAA,CAAUE,KAAAA,CAAAA,CAAAA;AAC3D;AAEA,YAAe;AACbZ,IAAAA,aAAAA;AACAK,IAAAA;AACF,CAAA;;;;;;"}
@@ -1,4 +1,4 @@
1
- import { mapValues } from 'lodash/fp';
1
+ import { mapValues } from 'lodash';
2
2
  import { PROVIDER_REDIRECT_ERROR, PROVIDER_REDIRECT_SUCCESS } from './constants.mjs';
3
3
 
4
4
  const PROVIDER_URLS_MAP = {
@@ -12,7 +12,7 @@ const getAdminStore = async ()=>strapi.store({
12
12
  const getPrefixedRedirectUrls = ()=>{
13
13
  const { url: adminUrl } = strapi.config.get('admin');
14
14
  const prefixUrl = (url)=>`${adminUrl || '/admin'}${url}`;
15
- return mapValues(prefixUrl, PROVIDER_URLS_MAP);
15
+ return mapValues(PROVIDER_URLS_MAP, (value)=>prefixUrl(value));
16
16
  };
17
17
  var utils = {
18
18
  getAdminStore,
@@ -1 +1 @@
1
- {"version":3,"file":"utils.mjs","sources":["../../../../../../../ee/server/src/controllers/authentication-utils/utils.ts"],"sourcesContent":["import { mapValues } from 'lodash/fp';\nimport { PROVIDER_REDIRECT_ERROR, PROVIDER_REDIRECT_SUCCESS } from './constants';\n\nconst PROVIDER_URLS_MAP = {\n success: PROVIDER_REDIRECT_SUCCESS,\n error: PROVIDER_REDIRECT_ERROR,\n};\n\nexport const getAdminStore = async () => strapi.store({ type: 'core', name: 'admin' });\n\nexport const getPrefixedRedirectUrls = () => {\n const { url: adminUrl } = strapi.config.get('admin') as any;\n const prefixUrl = (url: string) => `${adminUrl || '/admin'}${url}`;\n\n return mapValues(prefixUrl, PROVIDER_URLS_MAP);\n};\n\nexport default {\n getAdminStore,\n getPrefixedRedirectUrls,\n};\n"],"names":["PROVIDER_URLS_MAP","success","PROVIDER_REDIRECT_SUCCESS","error","PROVIDER_REDIRECT_ERROR","getAdminStore","strapi","store","type","name","getPrefixedRedirectUrls","url","adminUrl","config","get","prefixUrl","mapValues"],"mappings":";;;AAGA,MAAMA,iBAAAA,GAAoB;IACxBC,OAAAA,EAASC,yBAAAA;IACTC,KAAAA,EAAOC;AACT,CAAA;AAEO,MAAMC,aAAAA,GAAgB,UAAYC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,MAAA;QAAQC,IAAAA,EAAM;KAAQ;MAEvEC,uBAAAA,GAA0B,IAAA;IACrC,MAAM,EAAEC,KAAKC,QAAQ,EAAE,GAAGN,MAAAA,CAAOO,MAAM,CAACC,GAAG,CAAC,OAAA,CAAA;AAC5C,IAAA,MAAMC,YAAY,CAACJ,GAAAA,GAAgB,CAAA,EAAGC,QAAAA,IAAY,WAAWD,GAAAA,CAAAA,CAAK;AAElE,IAAA,OAAOK,UAAUD,SAAAA,EAAWf,iBAAAA,CAAAA;AAC9B;AAEA,YAAe;AACbK,IAAAA,aAAAA;AACAK,IAAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"utils.mjs","sources":["../../../../../../../ee/server/src/controllers/authentication-utils/utils.ts"],"sourcesContent":["import { mapValues } from 'lodash';\n\nimport { PROVIDER_REDIRECT_ERROR, PROVIDER_REDIRECT_SUCCESS } from './constants';\n\nconst PROVIDER_URLS_MAP = {\n success: PROVIDER_REDIRECT_SUCCESS,\n error: PROVIDER_REDIRECT_ERROR,\n};\n\nexport const getAdminStore = async () => strapi.store({ type: 'core', name: 'admin' });\n\nexport const getPrefixedRedirectUrls = () => {\n const { url: adminUrl } = strapi.config.get('admin') as any;\n const prefixUrl = (url: string) => `${adminUrl || '/admin'}${url}`;\n\n return mapValues(PROVIDER_URLS_MAP, (value) => prefixUrl(value));\n};\n\nexport default {\n getAdminStore,\n getPrefixedRedirectUrls,\n};\n"],"names":["PROVIDER_URLS_MAP","success","PROVIDER_REDIRECT_SUCCESS","error","PROVIDER_REDIRECT_ERROR","getAdminStore","strapi","store","type","name","getPrefixedRedirectUrls","url","adminUrl","config","get","prefixUrl","mapValues","value"],"mappings":";;;AAIA,MAAMA,iBAAAA,GAAoB;IACxBC,OAAAA,EAASC,yBAAAA;IACTC,KAAAA,EAAOC;AACT,CAAA;AAEO,MAAMC,aAAAA,GAAgB,UAAYC,MAAAA,CAAOC,KAAK,CAAC;QAAEC,IAAAA,EAAM,MAAA;QAAQC,IAAAA,EAAM;KAAQ;MAEvEC,uBAAAA,GAA0B,IAAA;IACrC,MAAM,EAAEC,KAAKC,QAAQ,EAAE,GAAGN,MAAAA,CAAOO,MAAM,CAACC,GAAG,CAAC,OAAA,CAAA;AAC5C,IAAA,MAAMC,YAAY,CAACJ,GAAAA,GAAgB,CAAA,EAAGC,QAAAA,IAAY,WAAWD,GAAAA,CAAAA,CAAK;AAElE,IAAA,OAAOK,SAAAA,CAAUhB,iBAAAA,EAAmB,CAACiB,KAAAA,GAAUF,SAAAA,CAAUE,KAAAA,CAAAA,CAAAA;AAC3D;AAEA,YAAe;AACbZ,IAAAA,aAAAA;AACAK,IAAAA;AACF,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var compose = require('koa-compose');
5
5
  var utils = require('@strapi/utils');
6
6
  var authentication$1 = require('../validation/authentication.js');
@@ -11,16 +11,16 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
11
11
 
12
12
  var compose__default = /*#__PURE__*/_interopDefault(compose);
13
13
 
14
- const toProviderDTO = fp.pick([
15
- 'uid',
16
- 'displayName',
17
- 'icon'
18
- ]);
19
- const toProviderLoginOptionsDTO = fp.pick([
20
- 'autoRegister',
21
- 'defaultRole',
22
- 'ssoLockedRoles'
23
- ]);
14
+ const toProviderDTO = (provider)=>_.pick(provider, [
15
+ 'uid',
16
+ 'displayName',
17
+ 'icon'
18
+ ]);
19
+ const toProviderLoginOptionsDTO = (options)=>_.pick(options, [
20
+ 'autoRegister',
21
+ 'defaultRole',
22
+ 'ssoLockedRoles'
23
+ ]);
24
24
  const { ValidationError } = utils.errors;
25
25
  const providerAuthenticationFlow = compose__default.default([
26
26
  middlewares.default.authenticate,
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.js","sources":["../../../../../../ee/server/src/controllers/authentication.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\n\nimport { pick } from 'lodash/fp';\nimport compose from 'koa-compose';\nimport { errors } from '@strapi/utils';\nimport { validateProviderOptionsUpdate } from '../validation/authentication';\nimport { middlewares, utils } from './authentication-utils';\n\nconst toProviderDTO = pick(['uid', 'displayName', 'icon']);\nconst toProviderLoginOptionsDTO = pick(['autoRegister', 'defaultRole', 'ssoLockedRoles']);\n\nconst { ValidationError } = errors;\n\nconst providerAuthenticationFlow = compose([\n middlewares.authenticate,\n middlewares.redirectWithAuth,\n]);\n\nexport default {\n async getProviders(ctx: Context) {\n const { providerRegistry } = strapi.service('admin::passport');\n\n ctx.body = providerRegistry.getAll().map(toProviderDTO);\n },\n\n async getProviderLoginOptions(ctx: Context) {\n const adminStore = await utils.getAdminStore();\n const { providers: providersOptions } = (await adminStore.get({ key: 'auth' })) as any;\n\n ctx.body = {\n data: toProviderLoginOptionsDTO(providersOptions),\n };\n },\n\n async updateProviderLoginOptions(ctx: Context) {\n const {\n request: { body },\n } = ctx;\n\n await validateProviderOptionsUpdate(body);\n\n const adminStore = await utils.getAdminStore();\n const currentAuthOptions = (await adminStore.get({ key: 'auth' })) as any;\n const newAuthOptions = { ...currentAuthOptions, providers: body };\n await adminStore.set({ key: 'auth', value: newAuthOptions });\n\n strapi.telemetry.send('didUpdateSSOSettings');\n\n ctx.body = {\n data: toProviderLoginOptionsDTO(newAuthOptions.providers),\n };\n },\n\n providerLogin(ctx: Context, next: Next) {\n const {\n params: { provider: providerName },\n } = ctx;\n\n const { providerRegistry } = strapi.service('admin::passport');\n\n if (!providerRegistry.has(providerName)) {\n throw new ValidationError(`Invalid provider supplied: ${providerName}`);\n }\n\n return providerAuthenticationFlow(ctx, next);\n },\n};\n"],"names":["toProviderDTO","pick","toProviderLoginOptionsDTO","ValidationError","errors","providerAuthenticationFlow","compose","middlewares","authenticate","redirectWithAuth","getProviders","ctx","providerRegistry","strapi","service","body","getAll","map","getProviderLoginOptions","adminStore","utils","getAdminStore","providers","providersOptions","get","key","data","updateProviderLoginOptions","request","validateProviderOptionsUpdate","currentAuthOptions","newAuthOptions","set","value","telemetry","send","providerLogin","next","params","provider","providerName","has"],"mappings":";;;;;;;;;;;;;AAQA,MAAMA,gBAAgBC,OAAAA,CAAK;AAAC,IAAA,KAAA;AAAO,IAAA,aAAA;AAAe,IAAA;AAAO,CAAA,CAAA;AACzD,MAAMC,4BAA4BD,OAAAA,CAAK;AAAC,IAAA,cAAA;AAAgB,IAAA,aAAA;AAAe,IAAA;AAAiB,CAAA,CAAA;AAExF,MAAM,EAAEE,eAAe,EAAE,GAAGC,YAAAA;AAE5B,MAAMC,6BAA6BC,wBAAAA,CAAQ;AACzCC,IAAAA,mBAAAA,CAAYC,YAAY;AACxBD,IAAAA,mBAAAA,CAAYE;AACb,CAAA,CAAA;AAED,qBAAe;AACb,IAAA,MAAMC,cAAaC,GAAY,EAAA;AAC7B,QAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;AAE5CH,QAAAA,GAAAA,CAAII,IAAI,GAAGH,gBAAAA,CAAiBI,MAAM,EAAA,CAAGC,GAAG,CAACjB,aAAAA,CAAAA;AAC3C,IAAA,CAAA;AAEA,IAAA,MAAMkB,yBAAwBP,GAAY,EAAA;QACxC,MAAMQ,UAAAA,GAAa,MAAMC,eAAAA,CAAMC,aAAa,EAAA;QAC5C,MAAM,EAAEC,WAAWC,gBAAgB,EAAE,GAAI,MAAMJ,UAAAA,CAAWK,GAAG,CAAC;YAAEC,GAAAA,EAAK;AAAO,SAAA,CAAA;AAE5Ed,QAAAA,GAAAA,CAAII,IAAI,GAAG;AACTW,YAAAA,IAAAA,EAAMxB,yBAAAA,CAA0BqB,gBAAAA;AAClC,SAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMI,4BAA2BhB,GAAY,EAAA;AAC3C,QAAA,MAAM,EACJiB,OAAAA,EAAS,EAAEb,IAAI,EAAE,EAClB,GAAGJ,GAAAA;AAEJ,QAAA,MAAMkB,8CAAAA,CAA8Bd,IAAAA,CAAAA;QAEpC,MAAMI,UAAAA,GAAa,MAAMC,eAAAA,CAAMC,aAAa,EAAA;AAC5C,QAAA,MAAMS,kBAAAA,GAAsB,MAAMX,UAAAA,CAAWK,GAAG,CAAC;YAAEC,GAAAA,EAAK;AAAO,SAAA,CAAA;AAC/D,QAAA,MAAMM,cAAAA,GAAiB;AAAE,YAAA,GAAGD,kBAAkB;YAAER,SAAAA,EAAWP;AAAK,SAAA;QAChE,MAAMI,UAAAA,CAAWa,GAAG,CAAC;YAAEP,GAAAA,EAAK,MAAA;YAAQQ,KAAAA,EAAOF;AAAe,SAAA,CAAA;QAE1DlB,MAAAA,CAAOqB,SAAS,CAACC,IAAI,CAAC,sBAAA,CAAA;AAEtBxB,QAAAA,GAAAA,CAAII,IAAI,GAAG;YACTW,IAAAA,EAAMxB,yBAAAA,CAA0B6B,eAAeT,SAAS;AAC1D,SAAA;AACF,IAAA,CAAA;IAEAc,aAAAA,CAAAA,CAAczB,GAAY,EAAE0B,IAAU,EAAA;AACpC,QAAA,MAAM,EACJC,MAAAA,EAAQ,EAAEC,UAAUC,YAAY,EAAE,EACnC,GAAG7B,GAAAA;AAEJ,QAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;AAE5C,QAAA,IAAI,CAACF,gBAAAA,CAAiB6B,GAAG,CAACD,YAAAA,CAAAA,EAAe;AACvC,YAAA,MAAM,IAAIrC,eAAAA,CAAgB,CAAC,2BAA2B,EAAEqC,YAAAA,CAAAA,CAAc,CAAA;AACxE,QAAA;AAEA,QAAA,OAAOnC,2BAA2BM,GAAAA,EAAK0B,IAAAA,CAAAA;AACzC,IAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"authentication.js","sources":["../../../../../../ee/server/src/controllers/authentication.ts"],"sourcesContent":["import { pick } from 'lodash';\nimport type { Context, Next } from 'koa';\n\nimport compose from 'koa-compose';\nimport { errors } from '@strapi/utils';\nimport { validateProviderOptionsUpdate } from '../validation/authentication';\nimport { middlewares, utils } from './authentication-utils';\n\nconst toProviderDTO = (provider: object) => pick(provider, ['uid', 'displayName', 'icon']);\nconst toProviderLoginOptionsDTO = (options: object) =>\n pick(options, ['autoRegister', 'defaultRole', 'ssoLockedRoles']);\n\nconst { ValidationError } = errors;\n\nconst providerAuthenticationFlow = compose([\n middlewares.authenticate,\n middlewares.redirectWithAuth,\n]);\n\nexport default {\n async getProviders(ctx: Context) {\n const { providerRegistry } = strapi.service('admin::passport');\n\n ctx.body = providerRegistry.getAll().map(toProviderDTO);\n },\n\n async getProviderLoginOptions(ctx: Context) {\n const adminStore = await utils.getAdminStore();\n const { providers: providersOptions } = (await adminStore.get({ key: 'auth' })) as any;\n\n ctx.body = {\n data: toProviderLoginOptionsDTO(providersOptions),\n };\n },\n\n async updateProviderLoginOptions(ctx: Context) {\n const {\n request: { body },\n } = ctx;\n\n await validateProviderOptionsUpdate(body);\n\n const adminStore = await utils.getAdminStore();\n const currentAuthOptions = (await adminStore.get({ key: 'auth' })) as any;\n const newAuthOptions = { ...currentAuthOptions, providers: body };\n await adminStore.set({ key: 'auth', value: newAuthOptions });\n\n strapi.telemetry.send('didUpdateSSOSettings');\n\n ctx.body = {\n data: toProviderLoginOptionsDTO(newAuthOptions.providers),\n };\n },\n\n providerLogin(ctx: Context, next: Next) {\n const {\n params: { provider: providerName },\n } = ctx;\n\n const { providerRegistry } = strapi.service('admin::passport');\n\n if (!providerRegistry.has(providerName)) {\n throw new ValidationError(`Invalid provider supplied: ${providerName}`);\n }\n\n return providerAuthenticationFlow(ctx, next);\n },\n};\n"],"names":["toProviderDTO","provider","pick","toProviderLoginOptionsDTO","options","ValidationError","errors","providerAuthenticationFlow","compose","middlewares","authenticate","redirectWithAuth","getProviders","ctx","providerRegistry","strapi","service","body","getAll","map","getProviderLoginOptions","adminStore","utils","getAdminStore","providers","providersOptions","get","key","data","updateProviderLoginOptions","request","validateProviderOptionsUpdate","currentAuthOptions","newAuthOptions","set","value","telemetry","send","providerLogin","next","params","providerName","has"],"mappings":";;;;;;;;;;;;;AAQA,MAAMA,aAAAA,GAAgB,CAACC,QAAAA,GAAqBC,MAAAA,CAAKD,QAAAA,EAAU;AAAC,QAAA,KAAA;AAAO,QAAA,aAAA;AAAe,QAAA;AAAO,KAAA,CAAA;AACzF,MAAME,yBAAAA,GAA4B,CAACC,OAAAA,GACjCF,MAAAA,CAAKE,OAAAA,EAAS;AAAC,QAAA,cAAA;AAAgB,QAAA,aAAA;AAAe,QAAA;AAAiB,KAAA,CAAA;AAEjE,MAAM,EAAEC,eAAe,EAAE,GAAGC,YAAAA;AAE5B,MAAMC,6BAA6BC,wBAAAA,CAAQ;AACzCC,IAAAA,mBAAAA,CAAYC,YAAY;AACxBD,IAAAA,mBAAAA,CAAYE;AACb,CAAA,CAAA;AAED,qBAAe;AACb,IAAA,MAAMC,cAAaC,GAAY,EAAA;AAC7B,QAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;AAE5CH,QAAAA,GAAAA,CAAII,IAAI,GAAGH,gBAAAA,CAAiBI,MAAM,EAAA,CAAGC,GAAG,CAACnB,aAAAA,CAAAA;AAC3C,IAAA,CAAA;AAEA,IAAA,MAAMoB,yBAAwBP,GAAY,EAAA;QACxC,MAAMQ,UAAAA,GAAa,MAAMC,eAAAA,CAAMC,aAAa,EAAA;QAC5C,MAAM,EAAEC,WAAWC,gBAAgB,EAAE,GAAI,MAAMJ,UAAAA,CAAWK,GAAG,CAAC;YAAEC,GAAAA,EAAK;AAAO,SAAA,CAAA;AAE5Ed,QAAAA,GAAAA,CAAII,IAAI,GAAG;AACTW,YAAAA,IAAAA,EAAMzB,yBAAAA,CAA0BsB,gBAAAA;AAClC,SAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMI,4BAA2BhB,GAAY,EAAA;AAC3C,QAAA,MAAM,EACJiB,OAAAA,EAAS,EAAEb,IAAI,EAAE,EAClB,GAAGJ,GAAAA;AAEJ,QAAA,MAAMkB,8CAAAA,CAA8Bd,IAAAA,CAAAA;QAEpC,MAAMI,UAAAA,GAAa,MAAMC,eAAAA,CAAMC,aAAa,EAAA;AAC5C,QAAA,MAAMS,kBAAAA,GAAsB,MAAMX,UAAAA,CAAWK,GAAG,CAAC;YAAEC,GAAAA,EAAK;AAAO,SAAA,CAAA;AAC/D,QAAA,MAAMM,cAAAA,GAAiB;AAAE,YAAA,GAAGD,kBAAkB;YAAER,SAAAA,EAAWP;AAAK,SAAA;QAChE,MAAMI,UAAAA,CAAWa,GAAG,CAAC;YAAEP,GAAAA,EAAK,MAAA;YAAQQ,KAAAA,EAAOF;AAAe,SAAA,CAAA;QAE1DlB,MAAAA,CAAOqB,SAAS,CAACC,IAAI,CAAC,sBAAA,CAAA;AAEtBxB,QAAAA,GAAAA,CAAII,IAAI,GAAG;YACTW,IAAAA,EAAMzB,yBAAAA,CAA0B8B,eAAeT,SAAS;AAC1D,SAAA;AACF,IAAA,CAAA;IAEAc,aAAAA,CAAAA,CAAczB,GAAY,EAAE0B,IAAU,EAAA;AACpC,QAAA,MAAM,EACJC,MAAAA,EAAQ,EAAEvC,UAAUwC,YAAY,EAAE,EACnC,GAAG5B,GAAAA;AAEJ,QAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;AAE5C,QAAA,IAAI,CAACF,gBAAAA,CAAiB4B,GAAG,CAACD,YAAAA,CAAAA,EAAe;AACvC,YAAA,MAAM,IAAIpC,eAAAA,CAAgB,CAAC,2BAA2B,EAAEoC,YAAAA,CAAAA,CAAc,CAAA;AACxE,QAAA;AAEA,QAAA,OAAOlC,2BAA2BM,GAAAA,EAAK0B,IAAAA,CAAAA;AACzC,IAAA;AACF,CAAA;;;;"}
@@ -1,20 +1,20 @@
1
- import { pick } from 'lodash/fp';
1
+ import { pick } from 'lodash';
2
2
  import compose from 'koa-compose';
3
3
  import { errors } from '@strapi/utils';
4
4
  import { validateProviderOptionsUpdate } from '../validation/authentication.mjs';
5
5
  import middlewares from './authentication-utils/middlewares.mjs';
6
6
  import utils from './authentication-utils/utils.mjs';
7
7
 
8
- const toProviderDTO = pick([
9
- 'uid',
10
- 'displayName',
11
- 'icon'
12
- ]);
13
- const toProviderLoginOptionsDTO = pick([
14
- 'autoRegister',
15
- 'defaultRole',
16
- 'ssoLockedRoles'
17
- ]);
8
+ const toProviderDTO = (provider)=>pick(provider, [
9
+ 'uid',
10
+ 'displayName',
11
+ 'icon'
12
+ ]);
13
+ const toProviderLoginOptionsDTO = (options)=>pick(options, [
14
+ 'autoRegister',
15
+ 'defaultRole',
16
+ 'ssoLockedRoles'
17
+ ]);
18
18
  const { ValidationError } = errors;
19
19
  const providerAuthenticationFlow = compose([
20
20
  middlewares.authenticate,
@@ -1 +1 @@
1
- {"version":3,"file":"authentication.mjs","sources":["../../../../../../ee/server/src/controllers/authentication.ts"],"sourcesContent":["import type { Context, Next } from 'koa';\n\nimport { pick } from 'lodash/fp';\nimport compose from 'koa-compose';\nimport { errors } from '@strapi/utils';\nimport { validateProviderOptionsUpdate } from '../validation/authentication';\nimport { middlewares, utils } from './authentication-utils';\n\nconst toProviderDTO = pick(['uid', 'displayName', 'icon']);\nconst toProviderLoginOptionsDTO = pick(['autoRegister', 'defaultRole', 'ssoLockedRoles']);\n\nconst { ValidationError } = errors;\n\nconst providerAuthenticationFlow = compose([\n middlewares.authenticate,\n middlewares.redirectWithAuth,\n]);\n\nexport default {\n async getProviders(ctx: Context) {\n const { providerRegistry } = strapi.service('admin::passport');\n\n ctx.body = providerRegistry.getAll().map(toProviderDTO);\n },\n\n async getProviderLoginOptions(ctx: Context) {\n const adminStore = await utils.getAdminStore();\n const { providers: providersOptions } = (await adminStore.get({ key: 'auth' })) as any;\n\n ctx.body = {\n data: toProviderLoginOptionsDTO(providersOptions),\n };\n },\n\n async updateProviderLoginOptions(ctx: Context) {\n const {\n request: { body },\n } = ctx;\n\n await validateProviderOptionsUpdate(body);\n\n const adminStore = await utils.getAdminStore();\n const currentAuthOptions = (await adminStore.get({ key: 'auth' })) as any;\n const newAuthOptions = { ...currentAuthOptions, providers: body };\n await adminStore.set({ key: 'auth', value: newAuthOptions });\n\n strapi.telemetry.send('didUpdateSSOSettings');\n\n ctx.body = {\n data: toProviderLoginOptionsDTO(newAuthOptions.providers),\n };\n },\n\n providerLogin(ctx: Context, next: Next) {\n const {\n params: { provider: providerName },\n } = ctx;\n\n const { providerRegistry } = strapi.service('admin::passport');\n\n if (!providerRegistry.has(providerName)) {\n throw new ValidationError(`Invalid provider supplied: ${providerName}`);\n }\n\n return providerAuthenticationFlow(ctx, next);\n },\n};\n"],"names":["toProviderDTO","pick","toProviderLoginOptionsDTO","ValidationError","errors","providerAuthenticationFlow","compose","middlewares","authenticate","redirectWithAuth","getProviders","ctx","providerRegistry","strapi","service","body","getAll","map","getProviderLoginOptions","adminStore","utils","getAdminStore","providers","providersOptions","get","key","data","updateProviderLoginOptions","request","validateProviderOptionsUpdate","currentAuthOptions","newAuthOptions","set","value","telemetry","send","providerLogin","next","params","provider","providerName","has"],"mappings":";;;;;;;AAQA,MAAMA,gBAAgBC,IAAAA,CAAK;AAAC,IAAA,KAAA;AAAO,IAAA,aAAA;AAAe,IAAA;AAAO,CAAA,CAAA;AACzD,MAAMC,4BAA4BD,IAAAA,CAAK;AAAC,IAAA,cAAA;AAAgB,IAAA,aAAA;AAAe,IAAA;AAAiB,CAAA,CAAA;AAExF,MAAM,EAAEE,eAAe,EAAE,GAAGC,MAAAA;AAE5B,MAAMC,6BAA6BC,OAAAA,CAAQ;AACzCC,IAAAA,WAAAA,CAAYC,YAAY;AACxBD,IAAAA,WAAAA,CAAYE;AACb,CAAA,CAAA;AAED,qBAAe;AACb,IAAA,MAAMC,cAAaC,GAAY,EAAA;AAC7B,QAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;AAE5CH,QAAAA,GAAAA,CAAII,IAAI,GAAGH,gBAAAA,CAAiBI,MAAM,EAAA,CAAGC,GAAG,CAACjB,aAAAA,CAAAA;AAC3C,IAAA,CAAA;AAEA,IAAA,MAAMkB,yBAAwBP,GAAY,EAAA;QACxC,MAAMQ,UAAAA,GAAa,MAAMC,KAAAA,CAAMC,aAAa,EAAA;QAC5C,MAAM,EAAEC,WAAWC,gBAAgB,EAAE,GAAI,MAAMJ,UAAAA,CAAWK,GAAG,CAAC;YAAEC,GAAAA,EAAK;AAAO,SAAA,CAAA;AAE5Ed,QAAAA,GAAAA,CAAII,IAAI,GAAG;AACTW,YAAAA,IAAAA,EAAMxB,yBAAAA,CAA0BqB,gBAAAA;AAClC,SAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMI,4BAA2BhB,GAAY,EAAA;AAC3C,QAAA,MAAM,EACJiB,OAAAA,EAAS,EAAEb,IAAI,EAAE,EAClB,GAAGJ,GAAAA;AAEJ,QAAA,MAAMkB,6BAAAA,CAA8Bd,IAAAA,CAAAA;QAEpC,MAAMI,UAAAA,GAAa,MAAMC,KAAAA,CAAMC,aAAa,EAAA;AAC5C,QAAA,MAAMS,kBAAAA,GAAsB,MAAMX,UAAAA,CAAWK,GAAG,CAAC;YAAEC,GAAAA,EAAK;AAAO,SAAA,CAAA;AAC/D,QAAA,MAAMM,cAAAA,GAAiB;AAAE,YAAA,GAAGD,kBAAkB;YAAER,SAAAA,EAAWP;AAAK,SAAA;QAChE,MAAMI,UAAAA,CAAWa,GAAG,CAAC;YAAEP,GAAAA,EAAK,MAAA;YAAQQ,KAAAA,EAAOF;AAAe,SAAA,CAAA;QAE1DlB,MAAAA,CAAOqB,SAAS,CAACC,IAAI,CAAC,sBAAA,CAAA;AAEtBxB,QAAAA,GAAAA,CAAII,IAAI,GAAG;YACTW,IAAAA,EAAMxB,yBAAAA,CAA0B6B,eAAeT,SAAS;AAC1D,SAAA;AACF,IAAA,CAAA;IAEAc,aAAAA,CAAAA,CAAczB,GAAY,EAAE0B,IAAU,EAAA;AACpC,QAAA,MAAM,EACJC,MAAAA,EAAQ,EAAEC,UAAUC,YAAY,EAAE,EACnC,GAAG7B,GAAAA;AAEJ,QAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;AAE5C,QAAA,IAAI,CAACF,gBAAAA,CAAiB6B,GAAG,CAACD,YAAAA,CAAAA,EAAe;AACvC,YAAA,MAAM,IAAIrC,eAAAA,CAAgB,CAAC,2BAA2B,EAAEqC,YAAAA,CAAAA,CAAc,CAAA;AACxE,QAAA;AAEA,QAAA,OAAOnC,2BAA2BM,GAAAA,EAAK0B,IAAAA,CAAAA;AACzC,IAAA;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"authentication.mjs","sources":["../../../../../../ee/server/src/controllers/authentication.ts"],"sourcesContent":["import { pick } from 'lodash';\nimport type { Context, Next } from 'koa';\n\nimport compose from 'koa-compose';\nimport { errors } from '@strapi/utils';\nimport { validateProviderOptionsUpdate } from '../validation/authentication';\nimport { middlewares, utils } from './authentication-utils';\n\nconst toProviderDTO = (provider: object) => pick(provider, ['uid', 'displayName', 'icon']);\nconst toProviderLoginOptionsDTO = (options: object) =>\n pick(options, ['autoRegister', 'defaultRole', 'ssoLockedRoles']);\n\nconst { ValidationError } = errors;\n\nconst providerAuthenticationFlow = compose([\n middlewares.authenticate,\n middlewares.redirectWithAuth,\n]);\n\nexport default {\n async getProviders(ctx: Context) {\n const { providerRegistry } = strapi.service('admin::passport');\n\n ctx.body = providerRegistry.getAll().map(toProviderDTO);\n },\n\n async getProviderLoginOptions(ctx: Context) {\n const adminStore = await utils.getAdminStore();\n const { providers: providersOptions } = (await adminStore.get({ key: 'auth' })) as any;\n\n ctx.body = {\n data: toProviderLoginOptionsDTO(providersOptions),\n };\n },\n\n async updateProviderLoginOptions(ctx: Context) {\n const {\n request: { body },\n } = ctx;\n\n await validateProviderOptionsUpdate(body);\n\n const adminStore = await utils.getAdminStore();\n const currentAuthOptions = (await adminStore.get({ key: 'auth' })) as any;\n const newAuthOptions = { ...currentAuthOptions, providers: body };\n await adminStore.set({ key: 'auth', value: newAuthOptions });\n\n strapi.telemetry.send('didUpdateSSOSettings');\n\n ctx.body = {\n data: toProviderLoginOptionsDTO(newAuthOptions.providers),\n };\n },\n\n providerLogin(ctx: Context, next: Next) {\n const {\n params: { provider: providerName },\n } = ctx;\n\n const { providerRegistry } = strapi.service('admin::passport');\n\n if (!providerRegistry.has(providerName)) {\n throw new ValidationError(`Invalid provider supplied: ${providerName}`);\n }\n\n return providerAuthenticationFlow(ctx, next);\n },\n};\n"],"names":["toProviderDTO","provider","pick","toProviderLoginOptionsDTO","options","ValidationError","errors","providerAuthenticationFlow","compose","middlewares","authenticate","redirectWithAuth","getProviders","ctx","providerRegistry","strapi","service","body","getAll","map","getProviderLoginOptions","adminStore","utils","getAdminStore","providers","providersOptions","get","key","data","updateProviderLoginOptions","request","validateProviderOptionsUpdate","currentAuthOptions","newAuthOptions","set","value","telemetry","send","providerLogin","next","params","providerName","has"],"mappings":";;;;;;;AAQA,MAAMA,aAAAA,GAAgB,CAACC,QAAAA,GAAqBC,IAAAA,CAAKD,QAAAA,EAAU;AAAC,QAAA,KAAA;AAAO,QAAA,aAAA;AAAe,QAAA;AAAO,KAAA,CAAA;AACzF,MAAME,yBAAAA,GAA4B,CAACC,OAAAA,GACjCF,IAAAA,CAAKE,OAAAA,EAAS;AAAC,QAAA,cAAA;AAAgB,QAAA,aAAA;AAAe,QAAA;AAAiB,KAAA,CAAA;AAEjE,MAAM,EAAEC,eAAe,EAAE,GAAGC,MAAAA;AAE5B,MAAMC,6BAA6BC,OAAAA,CAAQ;AACzCC,IAAAA,WAAAA,CAAYC,YAAY;AACxBD,IAAAA,WAAAA,CAAYE;AACb,CAAA,CAAA;AAED,qBAAe;AACb,IAAA,MAAMC,cAAaC,GAAY,EAAA;AAC7B,QAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;AAE5CH,QAAAA,GAAAA,CAAII,IAAI,GAAGH,gBAAAA,CAAiBI,MAAM,EAAA,CAAGC,GAAG,CAACnB,aAAAA,CAAAA;AAC3C,IAAA,CAAA;AAEA,IAAA,MAAMoB,yBAAwBP,GAAY,EAAA;QACxC,MAAMQ,UAAAA,GAAa,MAAMC,KAAAA,CAAMC,aAAa,EAAA;QAC5C,MAAM,EAAEC,WAAWC,gBAAgB,EAAE,GAAI,MAAMJ,UAAAA,CAAWK,GAAG,CAAC;YAAEC,GAAAA,EAAK;AAAO,SAAA,CAAA;AAE5Ed,QAAAA,GAAAA,CAAII,IAAI,GAAG;AACTW,YAAAA,IAAAA,EAAMzB,yBAAAA,CAA0BsB,gBAAAA;AAClC,SAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMI,4BAA2BhB,GAAY,EAAA;AAC3C,QAAA,MAAM,EACJiB,OAAAA,EAAS,EAAEb,IAAI,EAAE,EAClB,GAAGJ,GAAAA;AAEJ,QAAA,MAAMkB,6BAAAA,CAA8Bd,IAAAA,CAAAA;QAEpC,MAAMI,UAAAA,GAAa,MAAMC,KAAAA,CAAMC,aAAa,EAAA;AAC5C,QAAA,MAAMS,kBAAAA,GAAsB,MAAMX,UAAAA,CAAWK,GAAG,CAAC;YAAEC,GAAAA,EAAK;AAAO,SAAA,CAAA;AAC/D,QAAA,MAAMM,cAAAA,GAAiB;AAAE,YAAA,GAAGD,kBAAkB;YAAER,SAAAA,EAAWP;AAAK,SAAA;QAChE,MAAMI,UAAAA,CAAWa,GAAG,CAAC;YAAEP,GAAAA,EAAK,MAAA;YAAQQ,KAAAA,EAAOF;AAAe,SAAA,CAAA;QAE1DlB,MAAAA,CAAOqB,SAAS,CAACC,IAAI,CAAC,sBAAA,CAAA;AAEtBxB,QAAAA,GAAAA,CAAII,IAAI,GAAG;YACTW,IAAAA,EAAMzB,yBAAAA,CAA0B8B,eAAeT,SAAS;AAC1D,SAAA;AACF,IAAA,CAAA;IAEAc,aAAAA,CAAAA,CAAczB,GAAY,EAAE0B,IAAU,EAAA;AACpC,QAAA,MAAM,EACJC,MAAAA,EAAQ,EAAEvC,UAAUwC,YAAY,EAAE,EACnC,GAAG5B,GAAAA;AAEJ,QAAA,MAAM,EAAEC,gBAAgB,EAAE,GAAGC,MAAAA,CAAOC,OAAO,CAAC,iBAAA,CAAA;AAE5C,QAAA,IAAI,CAACF,gBAAAA,CAAiB4B,GAAG,CAACD,YAAAA,CAAAA,EAAe;AACvC,YAAA,MAAM,IAAIpC,eAAAA,CAAgB,CAAC,2BAA2B,EAAEoC,YAAAA,CAAAA,CAAc,CAAA;AACxE,QAAA;AAEA,QAAA,OAAOlC,2BAA2BM,GAAAA,EAAK0B,IAAAA,CAAAA;AACzC,IAAA;AACF,CAAA;;;;"}
@@ -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$2 = require('../validation/user.js');
7
6
  var user$1 = require('../../../../server/src/validation/user.js');
@@ -14,18 +13,18 @@ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
13
  var ___default = /*#__PURE__*/_interopDefault(_);
15
14
 
16
15
  const { ApplicationError, ForbiddenError } = utils.errors;
17
- const pickUserCreationAttributes = fp.pick([
18
- 'firstname',
19
- 'lastname',
20
- 'email',
21
- 'roles'
22
- ]);
16
+ const pickUserCreationAttributes = (user)=>_.pick(user, [
17
+ 'firstname',
18
+ 'lastname',
19
+ 'email',
20
+ 'roles'
21
+ ]);
23
22
  const hasAdminSeatsAvaialble = async ()=>{
24
23
  if (!strapi.EE) {
25
24
  return true;
26
25
  }
27
26
  const permittedSeats = strapi.ee.seats;
28
- if (fp.isNil(permittedSeats)) {
27
+ if (permittedSeats == null) {
29
28
  return true;
30
29
  }
31
30
  const userCount = await strapi.service('admin::user').getCurrentActiveUserCount();
@@ -1 +1 @@
1
- {"version":3,"file":"user.js","sources":["../../../../../../ee/server/src/controllers/user.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport _ from 'lodash';\nimport { pick, isNil } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport { validateUserCreationInput } from '../validation/user';\nimport { validateUserUpdateInput } from '../../../../server/src/validation/user';\nimport { normalizeEmail } from '../../../../server/src/utils/normalize-email';\nimport { getService } from '../utils';\nimport { isSsoLocked } from '../utils/sso-lock';\n\nconst { ApplicationError, ForbiddenError } = errors;\n\nconst pickUserCreationAttributes = pick(['firstname', 'lastname', 'email', 'roles']);\n\nconst hasAdminSeatsAvaialble = async () => {\n if (!strapi.EE) {\n return true;\n }\n\n const permittedSeats = strapi.ee.seats as any;\n if (isNil(permittedSeats)) {\n return true;\n }\n\n const userCount = await strapi.service('admin::user').getCurrentActiveUserCount();\n\n if (userCount < permittedSeats) {\n return true;\n }\n};\n\nexport default {\n async create(ctx: Context) {\n if (!(await hasAdminSeatsAvaialble())) {\n throw new ForbiddenError('License seat limit reached. You cannot create a new user');\n }\n\n const { body } = ctx.request;\n const cleanData = { ...body, email: _.get(body, `email`, ``).toLowerCase() };\n\n await validateUserCreationInput(cleanData);\n\n const attributes = pickUserCreationAttributes(cleanData);\n const { useSSORegistration } = cleanData;\n\n const userAlreadyExists = await getService('user').exists({ email: attributes.email });\n\n if (userAlreadyExists) {\n throw new ApplicationError('Email already taken');\n }\n\n if (useSSORegistration) {\n Object.assign(attributes, { registrationToken: null, isActive: true });\n }\n\n const createdUser = await getService('user').create(attributes);\n const userInfo = getService('user').sanitizeUser(createdUser);\n\n // Note: We need to assign manually the registrationToken to the\n // final user payload so that it's not removed in the sanitation process.\n Object.assign(userInfo, { registrationToken: createdUser.registrationToken });\n\n ctx.created({ data: userInfo });\n },\n\n async update(ctx: Context) {\n const { id } = ctx.params;\n const data = normalizeEmail(ctx.request.body);\n\n await validateUserUpdateInput(data);\n\n if (_.has(data, 'email')) {\n const uniqueEmailCheck = await getService('user').exists({\n id: { $ne: id },\n email: data.email,\n });\n\n if (uniqueEmailCheck) {\n throw new ApplicationError('A user with this email address already exists');\n }\n }\n\n const user = await getService('user').findOne(id, null);\n\n if (!(await hasAdminSeatsAvaialble()) && !user.isActive && data.isActive) {\n throw new ForbiddenError('License seat limit reached. You cannot active this user');\n }\n\n const updatedUser = await getService('user').updateById(id, data);\n\n if (!updatedUser) {\n return ctx.notFound('User does not exist');\n }\n\n ctx.body = {\n data: getService('user').sanitizeUser(updatedUser),\n };\n },\n\n async isSSOLocked(ctx: Context) {\n const { user } = ctx.state;\n const isSSOLocked = await isSsoLocked(user);\n\n ctx.body = {\n data: {\n isSSOLocked,\n },\n };\n },\n};\n"],"names":["ApplicationError","ForbiddenError","errors","pickUserCreationAttributes","pick","hasAdminSeatsAvaialble","strapi","EE","permittedSeats","ee","seats","isNil","userCount","service","getCurrentActiveUserCount","create","ctx","body","request","cleanData","email","_","get","toLowerCase","validateUserCreationInput","attributes","useSSORegistration","userAlreadyExists","getService","exists","Object","assign","registrationToken","isActive","createdUser","userInfo","sanitizeUser","created","data","update","id","params","normalizeEmail","validateUserUpdateInput","has","uniqueEmailCheck","$ne","user","findOne","updatedUser","updateById","notFound","isSSOLocked","state","isSsoLocked"],"mappings":"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"}
1
+ {"version":3,"file":"user.js","sources":["../../../../../../ee/server/src/controllers/user.ts"],"sourcesContent":["import _, { pick } from 'lodash';\nimport type { Context } from 'koa';\n\nimport { errors } from '@strapi/utils';\nimport { validateUserCreationInput } from '../validation/user';\nimport { validateUserUpdateInput } from '../../../../server/src/validation/user';\nimport { normalizeEmail } from '../../../../server/src/utils/normalize-email';\nimport { getService } from '../utils';\nimport { isSsoLocked } from '../utils/sso-lock';\n\nconst { ApplicationError, ForbiddenError } = errors;\n\nconst pickUserCreationAttributes = <T extends object>(user: T) =>\n pick(user, ['firstname', 'lastname', 'email', 'roles']);\n\nconst hasAdminSeatsAvaialble = async () => {\n if (!strapi.EE) {\n return true;\n }\n\n const permittedSeats = strapi.ee.seats as any;\n if (permittedSeats == null) {\n return true;\n }\n\n const userCount = await strapi.service('admin::user').getCurrentActiveUserCount();\n\n if (userCount < permittedSeats) {\n return true;\n }\n};\n\nexport default {\n async create(ctx: Context) {\n if (!(await hasAdminSeatsAvaialble())) {\n throw new ForbiddenError('License seat limit reached. You cannot create a new user');\n }\n\n const { body } = ctx.request;\n const cleanData = { ...body, email: _.get(body, `email`, ``).toLowerCase() };\n\n await validateUserCreationInput(cleanData);\n\n const attributes = pickUserCreationAttributes(cleanData);\n const { useSSORegistration } = cleanData;\n\n const userAlreadyExists = await getService('user').exists({ email: attributes.email });\n\n if (userAlreadyExists) {\n throw new ApplicationError('Email already taken');\n }\n\n if (useSSORegistration) {\n Object.assign(attributes, { registrationToken: null, isActive: true });\n }\n\n const createdUser = await getService('user').create(attributes);\n const userInfo = getService('user').sanitizeUser(createdUser);\n\n // Note: We need to assign manually the registrationToken to the\n // final user payload so that it's not removed in the sanitation process.\n Object.assign(userInfo, { registrationToken: createdUser.registrationToken });\n\n ctx.created({ data: userInfo });\n },\n\n async update(ctx: Context) {\n const { id } = ctx.params;\n const data = normalizeEmail(ctx.request.body);\n\n await validateUserUpdateInput(data);\n\n if (_.has(data, 'email')) {\n const uniqueEmailCheck = await getService('user').exists({\n id: { $ne: id },\n email: data.email,\n });\n\n if (uniqueEmailCheck) {\n throw new ApplicationError('A user with this email address already exists');\n }\n }\n\n const user = await getService('user').findOne(id, null);\n\n if (!(await hasAdminSeatsAvaialble()) && !user.isActive && data.isActive) {\n throw new ForbiddenError('License seat limit reached. You cannot active this user');\n }\n\n const updatedUser = await getService('user').updateById(id, data);\n\n if (!updatedUser) {\n return ctx.notFound('User does not exist');\n }\n\n ctx.body = {\n data: getService('user').sanitizeUser(updatedUser),\n };\n },\n\n async isSSOLocked(ctx: Context) {\n const { user } = ctx.state;\n const isSSOLocked = await isSsoLocked(user);\n\n ctx.body = {\n data: {\n isSSOLocked,\n },\n };\n },\n};\n"],"names":["ApplicationError","ForbiddenError","errors","pickUserCreationAttributes","user","pick","hasAdminSeatsAvaialble","strapi","EE","permittedSeats","ee","seats","userCount","service","getCurrentActiveUserCount","create","ctx","body","request","cleanData","email","_","get","toLowerCase","validateUserCreationInput","attributes","useSSORegistration","userAlreadyExists","getService","exists","Object","assign","registrationToken","isActive","createdUser","userInfo","sanitizeUser","created","data","update","id","params","normalizeEmail","validateUserUpdateInput","has","uniqueEmailCheck","$ne","findOne","updatedUser","updateById","notFound","isSSOLocked","state","isSsoLocked"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import ___default from 'lodash';
2
- import { pick, isNil } from 'lodash/fp';
1
+ import ___default, { pick } from 'lodash';
3
2
  import { errors } from '@strapi/utils';
4
3
  import { validateUserCreationInput } from '../validation/user.mjs';
5
4
  import { validateUserUpdateInput } from '../../../../server/src/validation/user.mjs';
@@ -8,18 +7,18 @@ import { getService } from '../utils/index.mjs';
8
7
  import { isSsoLocked } from '../utils/sso-lock.mjs';
9
8
 
10
9
  const { ApplicationError, ForbiddenError } = errors;
11
- const pickUserCreationAttributes = pick([
12
- 'firstname',
13
- 'lastname',
14
- 'email',
15
- 'roles'
16
- ]);
10
+ const pickUserCreationAttributes = (user)=>pick(user, [
11
+ 'firstname',
12
+ 'lastname',
13
+ 'email',
14
+ 'roles'
15
+ ]);
17
16
  const hasAdminSeatsAvaialble = async ()=>{
18
17
  if (!strapi.EE) {
19
18
  return true;
20
19
  }
21
20
  const permittedSeats = strapi.ee.seats;
22
- if (isNil(permittedSeats)) {
21
+ if (permittedSeats == null) {
23
22
  return true;
24
23
  }
25
24
  const userCount = await strapi.service('admin::user').getCurrentActiveUserCount();
@@ -1 +1 @@
1
- {"version":3,"file":"user.mjs","sources":["../../../../../../ee/server/src/controllers/user.ts"],"sourcesContent":["import type { Context } from 'koa';\n\nimport _ from 'lodash';\nimport { pick, isNil } from 'lodash/fp';\nimport { errors } from '@strapi/utils';\nimport { validateUserCreationInput } from '../validation/user';\nimport { validateUserUpdateInput } from '../../../../server/src/validation/user';\nimport { normalizeEmail } from '../../../../server/src/utils/normalize-email';\nimport { getService } from '../utils';\nimport { isSsoLocked } from '../utils/sso-lock';\n\nconst { ApplicationError, ForbiddenError } = errors;\n\nconst pickUserCreationAttributes = pick(['firstname', 'lastname', 'email', 'roles']);\n\nconst hasAdminSeatsAvaialble = async () => {\n if (!strapi.EE) {\n return true;\n }\n\n const permittedSeats = strapi.ee.seats as any;\n if (isNil(permittedSeats)) {\n return true;\n }\n\n const userCount = await strapi.service('admin::user').getCurrentActiveUserCount();\n\n if (userCount < permittedSeats) {\n return true;\n }\n};\n\nexport default {\n async create(ctx: Context) {\n if (!(await hasAdminSeatsAvaialble())) {\n throw new ForbiddenError('License seat limit reached. You cannot create a new user');\n }\n\n const { body } = ctx.request;\n const cleanData = { ...body, email: _.get(body, `email`, ``).toLowerCase() };\n\n await validateUserCreationInput(cleanData);\n\n const attributes = pickUserCreationAttributes(cleanData);\n const { useSSORegistration } = cleanData;\n\n const userAlreadyExists = await getService('user').exists({ email: attributes.email });\n\n if (userAlreadyExists) {\n throw new ApplicationError('Email already taken');\n }\n\n if (useSSORegistration) {\n Object.assign(attributes, { registrationToken: null, isActive: true });\n }\n\n const createdUser = await getService('user').create(attributes);\n const userInfo = getService('user').sanitizeUser(createdUser);\n\n // Note: We need to assign manually the registrationToken to the\n // final user payload so that it's not removed in the sanitation process.\n Object.assign(userInfo, { registrationToken: createdUser.registrationToken });\n\n ctx.created({ data: userInfo });\n },\n\n async update(ctx: Context) {\n const { id } = ctx.params;\n const data = normalizeEmail(ctx.request.body);\n\n await validateUserUpdateInput(data);\n\n if (_.has(data, 'email')) {\n const uniqueEmailCheck = await getService('user').exists({\n id: { $ne: id },\n email: data.email,\n });\n\n if (uniqueEmailCheck) {\n throw new ApplicationError('A user with this email address already exists');\n }\n }\n\n const user = await getService('user').findOne(id, null);\n\n if (!(await hasAdminSeatsAvaialble()) && !user.isActive && data.isActive) {\n throw new ForbiddenError('License seat limit reached. You cannot active this user');\n }\n\n const updatedUser = await getService('user').updateById(id, data);\n\n if (!updatedUser) {\n return ctx.notFound('User does not exist');\n }\n\n ctx.body = {\n data: getService('user').sanitizeUser(updatedUser),\n };\n },\n\n async isSSOLocked(ctx: Context) {\n const { user } = ctx.state;\n const isSSOLocked = await isSsoLocked(user);\n\n ctx.body = {\n data: {\n isSSOLocked,\n },\n };\n },\n};\n"],"names":["ApplicationError","ForbiddenError","errors","pickUserCreationAttributes","pick","hasAdminSeatsAvaialble","strapi","EE","permittedSeats","ee","seats","isNil","userCount","service","getCurrentActiveUserCount","create","ctx","body","request","cleanData","email","_","get","toLowerCase","validateUserCreationInput","attributes","useSSORegistration","userAlreadyExists","getService","exists","Object","assign","registrationToken","isActive","createdUser","userInfo","sanitizeUser","created","data","update","id","params","normalizeEmail","validateUserUpdateInput","has","uniqueEmailCheck","$ne","user","findOne","updatedUser","updateById","notFound","isSSOLocked","state","isSsoLocked"],"mappings":"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"}
1
+ {"version":3,"file":"user.mjs","sources":["../../../../../../ee/server/src/controllers/user.ts"],"sourcesContent":["import _, { pick } from 'lodash';\nimport type { Context } from 'koa';\n\nimport { errors } from '@strapi/utils';\nimport { validateUserCreationInput } from '../validation/user';\nimport { validateUserUpdateInput } from '../../../../server/src/validation/user';\nimport { normalizeEmail } from '../../../../server/src/utils/normalize-email';\nimport { getService } from '../utils';\nimport { isSsoLocked } from '../utils/sso-lock';\n\nconst { ApplicationError, ForbiddenError } = errors;\n\nconst pickUserCreationAttributes = <T extends object>(user: T) =>\n pick(user, ['firstname', 'lastname', 'email', 'roles']);\n\nconst hasAdminSeatsAvaialble = async () => {\n if (!strapi.EE) {\n return true;\n }\n\n const permittedSeats = strapi.ee.seats as any;\n if (permittedSeats == null) {\n return true;\n }\n\n const userCount = await strapi.service('admin::user').getCurrentActiveUserCount();\n\n if (userCount < permittedSeats) {\n return true;\n }\n};\n\nexport default {\n async create(ctx: Context) {\n if (!(await hasAdminSeatsAvaialble())) {\n throw new ForbiddenError('License seat limit reached. You cannot create a new user');\n }\n\n const { body } = ctx.request;\n const cleanData = { ...body, email: _.get(body, `email`, ``).toLowerCase() };\n\n await validateUserCreationInput(cleanData);\n\n const attributes = pickUserCreationAttributes(cleanData);\n const { useSSORegistration } = cleanData;\n\n const userAlreadyExists = await getService('user').exists({ email: attributes.email });\n\n if (userAlreadyExists) {\n throw new ApplicationError('Email already taken');\n }\n\n if (useSSORegistration) {\n Object.assign(attributes, { registrationToken: null, isActive: true });\n }\n\n const createdUser = await getService('user').create(attributes);\n const userInfo = getService('user').sanitizeUser(createdUser);\n\n // Note: We need to assign manually the registrationToken to the\n // final user payload so that it's not removed in the sanitation process.\n Object.assign(userInfo, { registrationToken: createdUser.registrationToken });\n\n ctx.created({ data: userInfo });\n },\n\n async update(ctx: Context) {\n const { id } = ctx.params;\n const data = normalizeEmail(ctx.request.body);\n\n await validateUserUpdateInput(data);\n\n if (_.has(data, 'email')) {\n const uniqueEmailCheck = await getService('user').exists({\n id: { $ne: id },\n email: data.email,\n });\n\n if (uniqueEmailCheck) {\n throw new ApplicationError('A user with this email address already exists');\n }\n }\n\n const user = await getService('user').findOne(id, null);\n\n if (!(await hasAdminSeatsAvaialble()) && !user.isActive && data.isActive) {\n throw new ForbiddenError('License seat limit reached. You cannot active this user');\n }\n\n const updatedUser = await getService('user').updateById(id, data);\n\n if (!updatedUser) {\n return ctx.notFound('User does not exist');\n }\n\n ctx.body = {\n data: getService('user').sanitizeUser(updatedUser),\n };\n },\n\n async isSSOLocked(ctx: Context) {\n const { user } = ctx.state;\n const isSSOLocked = await isSsoLocked(user);\n\n ctx.body = {\n data: {\n isSSOLocked,\n },\n };\n },\n};\n"],"names":["ApplicationError","ForbiddenError","errors","pickUserCreationAttributes","user","pick","hasAdminSeatsAvaialble","strapi","EE","permittedSeats","ee","seats","userCount","service","getCurrentActiveUserCount","create","ctx","body","request","cleanData","email","_","get","toLowerCase","validateUserCreationInput","attributes","useSSORegistration","userAlreadyExists","getService","exists","Object","assign","registrationToken","isActive","createdUser","userInfo","sanitizeUser","created","data","update","id","params","normalizeEmail","validateUserUpdateInput","has","uniqueEmailCheck","$ne","findOne","updatedUser","updateById","notFound","isSSOLocked","state","isSsoLocked"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
4
3
  var index = require('../utils/index.js');
5
4
 
6
5
  const getSSOProvidersList = async ()=>{
@@ -15,10 +14,11 @@ const sendUpdateProjectInformation = async (strapi1)=>{
15
14
  const numberOfAdminUsers = await index.getService('user').count();
16
15
  if (strapi1.ee.features.isEnabled('sso')) {
17
16
  const SSOProviders = await getSSOProvidersList();
18
- groupProperties = fp.assign(groupProperties, {
17
+ groupProperties = {
18
+ ...groupProperties,
19
19
  SSOProviders,
20
20
  isSSOConfigured: SSOProviders.length !== 0
21
- });
21
+ };
22
22
  }
23
23
  if (strapi1.ee.features.isEnabled('cms-content-releases')) {
24
24
  const numberOfContentReleases = await strapi1.db.query('plugin::content-releases.release').count();
@@ -29,15 +29,17 @@ const sendUpdateProjectInformation = async (strapi1)=>{
29
29
  }
30
30
  }
31
31
  });
32
- groupProperties = fp.assign(groupProperties, {
32
+ groupProperties = {
33
+ ...groupProperties,
33
34
  numberOfContentReleases,
34
35
  numberOfPublishedContentReleases
35
- });
36
+ };
36
37
  }
37
- groupProperties = fp.assign(groupProperties, {
38
+ groupProperties = {
39
+ ...groupProperties,
38
40
  numberOfActiveAdminUsers,
39
41
  numberOfAdminUsers
40
- });
42
+ };
41
43
  strapi1.telemetry.send('didUpdateProjectInformation', {
42
44
  groupProperties
43
45
  });
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","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,gBAAAA,CAAW,MAAA,CAAA,CAAQC,KAAK,CAAC;QAAEC,QAAAA,EAAU;AAAK,KAAA,CAAA;AACjF,IAAA,MAAMC,kBAAAA,GAAqB,MAAMH,gBAAAA,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,UAAOV,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,UAAOV,eAAAA,EAAiB;AACxCa,YAAAA,uBAAAA;AACAG,YAAAA;AACF,SAAA,CAAA;AACF,IAAA;AAEAhB,IAAAA,eAAAA,GAAkBU,UAAOV,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.js","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,gBAAAA,CAAW,MAAA,CAAA,CAAQC,KAAK,CAAC;QAAEC,QAAAA,EAAU;AAAK,KAAA,CAAA;AACjF,IAAA,MAAMC,kBAAAA,GAAqB,MAAMH,gBAAAA,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;;;;"}