@strapi/admin 5.56.0 → 5.58.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 (465) 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/Boolean.js +3 -2
  6. package/dist/admin/admin/src/components/FormInputs/Boolean.js.map +1 -1
  7. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs +3 -2
  8. package/dist/admin/admin/src/components/FormInputs/Boolean.mjs.map +1 -1
  9. package/dist/admin/admin/src/components/FormInputs/Enumeration.js +2 -2
  10. package/dist/admin/admin/src/components/FormInputs/Enumeration.js.map +1 -1
  11. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs +2 -2
  12. package/dist/admin/admin/src/components/FormInputs/Enumeration.mjs.map +1 -1
  13. package/dist/admin/admin/src/components/MediaLibraryBanner.js +38 -2
  14. package/dist/admin/admin/src/components/MediaLibraryBanner.js.map +1 -1
  15. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs +18 -2
  16. package/dist/admin/admin/src/components/MediaLibraryBanner.mjs.map +1 -1
  17. package/dist/admin/admin/src/components/RelativeTime.js +9 -0
  18. package/dist/admin/admin/src/components/RelativeTime.js.map +1 -1
  19. package/dist/admin/admin/src/components/RelativeTime.mjs +10 -1
  20. package/dist/admin/admin/src/components/RelativeTime.mjs.map +1 -1
  21. package/dist/admin/admin/src/components/TopBanners.js +52 -0
  22. package/dist/admin/admin/src/components/TopBanners.js.map +1 -0
  23. package/dist/admin/admin/src/components/TopBanners.mjs +30 -0
  24. package/dist/admin/admin/src/components/TopBanners.mjs.map +1 -0
  25. package/dist/admin/admin/src/constants.js +14 -0
  26. package/dist/admin/admin/src/constants.js.map +1 -1
  27. package/dist/admin/admin/src/constants.mjs +14 -0
  28. package/dist/admin/admin/src/constants.mjs.map +1 -1
  29. package/dist/admin/admin/src/features/Tracking.js +28 -8
  30. package/dist/admin/admin/src/features/Tracking.js.map +1 -1
  31. package/dist/admin/admin/src/features/Tracking.mjs +29 -10
  32. package/dist/admin/admin/src/features/Tracking.mjs.map +1 -1
  33. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js +4 -20
  34. package/dist/admin/admin/src/layouts/AuthenticatedLayout.js.map +1 -1
  35. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs +4 -20
  36. package/dist/admin/admin/src/layouts/AuthenticatedLayout.mjs.map +1 -1
  37. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js +59 -0
  38. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.js.map +1 -0
  39. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs +37 -0
  40. package/dist/admin/admin/src/layouts/useAuthenticatedAccessTracking.mjs.map +1 -0
  41. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js +6 -12
  42. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.js.map +1 -1
  43. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs +6 -12
  44. package/dist/admin/admin/src/pages/Auth/components/ResetPassword.mjs.map +1 -1
  45. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js +10 -2
  46. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.js.map +1 -1
  47. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs +10 -2
  48. package/dist/admin/admin/src/pages/Settings/components/SettingsNav.mjs.map +1 -1
  49. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js +6 -56
  50. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.js.map +1 -1
  51. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs +6 -56
  52. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.mjs.map +1 -1
  53. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js +217 -0
  54. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.js.map +1 -0
  55. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs +195 -0
  56. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.mjs.map +1 -0
  57. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js +185 -0
  58. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.js.map +1 -0
  59. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs +162 -0
  60. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.mjs.map +1 -0
  61. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js +342 -0
  62. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.js.map +1 -0
  63. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs +320 -0
  64. package/dist/admin/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.mjs.map +1 -0
  65. package/dist/admin/admin/src/services/admin.js +11 -1
  66. package/dist/admin/admin/src/services/admin.js.map +1 -1
  67. package/dist/admin/admin/src/services/admin.mjs +11 -2
  68. package/dist/admin/admin/src/services/admin.mjs.map +1 -1
  69. package/dist/admin/admin/src/translations/en.json.js +76 -4
  70. package/dist/admin/admin/src/translations/en.json.js.map +1 -1
  71. package/dist/admin/admin/src/translations/en.json.mjs +76 -4
  72. package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
  73. package/dist/admin/admin/src/utils/browserStrapi.js +1 -1
  74. package/dist/admin/admin/src/utils/browserStrapi.js.map +1 -1
  75. package/dist/admin/admin/src/utils/browserStrapi.mjs +1 -1
  76. package/dist/admin/admin/src/utils/browserStrapi.mjs.map +1 -1
  77. package/dist/admin/admin/src/utils/getFetchClient.js +27 -3
  78. package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
  79. package/dist/admin/admin/src/utils/getFetchClient.mjs +26 -3
  80. package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
  81. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js +52 -22
  82. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.js.map +1 -1
  83. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs +53 -23
  84. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.mjs.map +1 -1
  85. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js +16 -29
  86. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.js.map +1 -1
  87. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs +18 -31
  88. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AdminSeatInfo.mjs.map +1 -1
  89. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js +473 -0
  90. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.js.map +1 -0
  91. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs +471 -0
  92. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.mjs.map +1 -0
  93. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +8 -1
  94. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
  95. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +8 -1
  96. package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
  97. package/dist/admin/index.js +1 -0
  98. package/dist/admin/index.js.map +1 -1
  99. package/dist/admin/index.mjs +1 -1
  100. package/dist/admin/shared/utils/get-project-type.js +49 -0
  101. package/dist/admin/shared/utils/get-project-type.js.map +1 -0
  102. package/dist/admin/shared/utils/get-project-type.mjs +46 -0
  103. package/dist/admin/shared/utils/get-project-type.mjs.map +1 -0
  104. package/dist/admin/src/components/MediaLibraryBanner.d.ts +10 -1
  105. package/dist/admin/src/components/TopBanners.d.ts +8 -0
  106. package/dist/admin/src/constants.d.ts +10 -0
  107. package/dist/admin/src/features/Tracking.d.ts +12 -1
  108. package/dist/admin/src/layouts/useAuthenticatedAccessTracking.d.ts +6 -0
  109. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/ApplicationInfoPage.d.ts +1 -1
  110. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/DiagnosticSnapshotModal.d.ts +12 -0
  111. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/PlanCard.d.ts +14 -0
  112. package/dist/admin/src/pages/Settings/pages/ApplicationInfo/components/SupportCard.d.ts +2 -0
  113. package/dist/admin/src/services/admin.d.ts +2 -2
  114. package/dist/admin/src/types/permissions.d.ts +1 -0
  115. package/dist/admin/src/utils/getFetchClient.d.ts +25 -0
  116. package/dist/ee/admin/src/hooks/useLicenseLimits.d.ts +29 -0
  117. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/AIUsage.d.ts +6 -1
  118. package/dist/ee/admin/src/pages/SettingsPage/pages/ApplicationInfoPage/components/LicenseInfo.d.ts +2 -0
  119. package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +7 -0
  120. package/dist/ee/server/src/audit-logs/entitlements.d.ts +8 -0
  121. package/dist/ee/server/src/audit-logs/entitlements.d.ts.map +1 -0
  122. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +16 -0
  123. package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
  124. package/dist/ee/server/src/controllers/admin.d.ts +36 -10
  125. package/dist/ee/server/src/controllers/admin.d.ts.map +1 -1
  126. package/dist/ee/server/src/controllers/authentication-utils/middlewares.d.ts.map +1 -1
  127. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts +8 -2
  128. package/dist/ee/server/src/controllers/authentication-utils/utils.d.ts.map +1 -1
  129. package/dist/ee/server/src/controllers/authentication.d.ts.map +1 -1
  130. package/dist/ee/server/src/controllers/index.d.ts +36 -10
  131. package/dist/ee/server/src/controllers/index.d.ts.map +1 -1
  132. package/dist/ee/server/src/controllers/user.d.ts.map +1 -1
  133. package/dist/ee/server/src/index.d.ts +40 -11
  134. package/dist/ee/server/src/index.d.ts.map +1 -1
  135. package/dist/ee/server/src/services/index.d.ts +4 -1
  136. package/dist/ee/server/src/services/index.d.ts.map +1 -1
  137. package/dist/ee/server/src/services/metrics.d.ts.map +1 -1
  138. package/dist/ee/server/src/services/persist-tables.d.ts.map +1 -1
  139. package/dist/ee/server/src/services/seat-enforcement.d.ts +3 -1
  140. package/dist/ee/server/src/services/seat-enforcement.d.ts.map +1 -1
  141. package/dist/server/ee/server/src/audit-logs/entitlements.js +25 -0
  142. package/dist/server/ee/server/src/audit-logs/entitlements.js.map +1 -0
  143. package/dist/server/ee/server/src/audit-logs/entitlements.mjs +23 -0
  144. package/dist/server/ee/server/src/audit-logs/entitlements.mjs.map +1 -0
  145. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +20 -8
  146. package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
  147. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +19 -9
  148. package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
  149. package/dist/server/ee/server/src/controllers/admin.js +79 -7
  150. package/dist/server/ee/server/src/controllers/admin.js.map +1 -1
  151. package/dist/server/ee/server/src/controllers/admin.mjs +79 -7
  152. package/dist/server/ee/server/src/controllers/admin.mjs.map +1 -1
  153. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js +28 -10
  154. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.js.map +1 -1
  155. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs +28 -10
  156. package/dist/server/ee/server/src/controllers/authentication-utils/middlewares.mjs.map +1 -1
  157. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js +2 -2
  158. package/dist/server/ee/server/src/controllers/authentication-utils/utils.js.map +1 -1
  159. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs +2 -2
  160. package/dist/server/ee/server/src/controllers/authentication-utils/utils.mjs.map +1 -1
  161. package/dist/server/ee/server/src/controllers/authentication.js +11 -11
  162. package/dist/server/ee/server/src/controllers/authentication.js.map +1 -1
  163. package/dist/server/ee/server/src/controllers/authentication.mjs +11 -11
  164. package/dist/server/ee/server/src/controllers/authentication.mjs.map +1 -1
  165. package/dist/server/ee/server/src/controllers/user.js +7 -8
  166. package/dist/server/ee/server/src/controllers/user.js.map +1 -1
  167. package/dist/server/ee/server/src/controllers/user.mjs +8 -9
  168. package/dist/server/ee/server/src/controllers/user.mjs.map +1 -1
  169. package/dist/server/ee/server/src/index.js +2 -0
  170. package/dist/server/ee/server/src/index.js.map +1 -1
  171. package/dist/server/ee/server/src/index.mjs +2 -0
  172. package/dist/server/ee/server/src/index.mjs.map +1 -1
  173. package/dist/server/ee/server/src/services/metrics.js +9 -7
  174. package/dist/server/ee/server/src/services/metrics.js.map +1 -1
  175. package/dist/server/ee/server/src/services/metrics.mjs +9 -7
  176. package/dist/server/ee/server/src/services/metrics.mjs.map +1 -1
  177. package/dist/server/ee/server/src/services/persist-tables.js +3 -4
  178. package/dist/server/ee/server/src/services/persist-tables.js.map +1 -1
  179. package/dist/server/ee/server/src/services/persist-tables.mjs +3 -4
  180. package/dist/server/ee/server/src/services/persist-tables.mjs.map +1 -1
  181. package/dist/server/ee/server/src/services/role.js +2 -2
  182. package/dist/server/ee/server/src/services/role.js.map +1 -1
  183. package/dist/server/ee/server/src/services/role.mjs +1 -1
  184. package/dist/server/ee/server/src/services/role.mjs.map +1 -1
  185. package/dist/server/ee/server/src/services/seat-enforcement.js +20 -20
  186. package/dist/server/ee/server/src/services/seat-enforcement.js.map +1 -1
  187. package/dist/server/ee/server/src/services/seat-enforcement.mjs +20 -20
  188. package/dist/server/ee/server/src/services/seat-enforcement.mjs.map +1 -1
  189. package/dist/server/ee/server/src/services/user.js +1 -2
  190. package/dist/server/ee/server/src/services/user.js.map +1 -1
  191. package/dist/server/ee/server/src/services/user.mjs +2 -3
  192. package/dist/server/ee/server/src/services/user.mjs.map +1 -1
  193. package/dist/server/ee/server/src/utils/sso-lock.js +2 -2
  194. package/dist/server/ee/server/src/utils/sso-lock.js.map +1 -1
  195. package/dist/server/ee/server/src/utils/sso-lock.mjs +1 -1
  196. package/dist/server/ee/server/src/utils/sso-lock.mjs.map +1 -1
  197. package/dist/server/server/src/audit-logs/admin-users.js +3 -3
  198. package/dist/server/server/src/audit-logs/admin-users.js.map +1 -1
  199. package/dist/server/server/src/audit-logs/admin-users.mjs +2 -2
  200. package/dist/server/server/src/audit-logs/admin-users.mjs.map +1 -1
  201. package/dist/server/server/src/audit-logs/auth.js +72 -0
  202. package/dist/server/server/src/audit-logs/auth.js.map +1 -0
  203. package/dist/server/server/src/audit-logs/auth.mjs +67 -0
  204. package/dist/server/server/src/audit-logs/auth.mjs.map +1 -0
  205. package/dist/server/server/src/audit-logs/tokens.js +3 -3
  206. package/dist/server/server/src/audit-logs/tokens.js.map +1 -1
  207. package/dist/server/server/src/audit-logs/tokens.mjs +2 -2
  208. package/dist/server/server/src/audit-logs/tokens.mjs.map +1 -1
  209. package/dist/server/server/src/audit-logs/webhooks.js +2 -2
  210. package/dist/server/server/src/audit-logs/webhooks.js.map +1 -1
  211. package/dist/server/server/src/audit-logs/webhooks.mjs +1 -1
  212. package/dist/server/server/src/audit-logs/webhooks.mjs.map +1 -1
  213. package/dist/server/server/src/bootstrap.js +6 -4
  214. package/dist/server/server/src/bootstrap.js.map +1 -1
  215. package/dist/server/server/src/bootstrap.mjs +6 -4
  216. package/dist/server/server/src/bootstrap.mjs.map +1 -1
  217. package/dist/server/server/src/config/admin-actions.js +7 -0
  218. package/dist/server/server/src/config/admin-actions.js.map +1 -1
  219. package/dist/server/server/src/config/admin-actions.mjs +7 -0
  220. package/dist/server/server/src/config/admin-actions.mjs.map +1 -1
  221. package/dist/server/server/src/controllers/admin-token.js +8 -8
  222. package/dist/server/server/src/controllers/admin-token.js.map +1 -1
  223. package/dist/server/server/src/controllers/admin-token.mjs +4 -4
  224. package/dist/server/server/src/controllers/admin-token.mjs.map +1 -1
  225. package/dist/server/server/src/controllers/admin.js +9 -5
  226. package/dist/server/server/src/controllers/admin.js.map +1 -1
  227. package/dist/server/server/src/controllers/admin.mjs +8 -4
  228. package/dist/server/server/src/controllers/admin.mjs.map +1 -1
  229. package/dist/server/server/src/controllers/api-token.js +8 -8
  230. package/dist/server/server/src/controllers/api-token.js.map +1 -1
  231. package/dist/server/server/src/controllers/api-token.mjs +4 -4
  232. package/dist/server/server/src/controllers/api-token.mjs.map +1 -1
  233. package/dist/server/server/src/controllers/authentication.js +34 -8
  234. package/dist/server/server/src/controllers/authentication.js.map +1 -1
  235. package/dist/server/server/src/controllers/authentication.mjs +34 -8
  236. package/dist/server/server/src/controllers/authentication.mjs.map +1 -1
  237. package/dist/server/server/src/controllers/formatters/conditions.js +2 -2
  238. package/dist/server/server/src/controllers/formatters/conditions.js.map +1 -1
  239. package/dist/server/server/src/controllers/formatters/conditions.mjs +2 -2
  240. package/dist/server/server/src/controllers/formatters/conditions.mjs.map +1 -1
  241. package/dist/server/server/src/controllers/transfer/index.js +2 -2
  242. package/dist/server/server/src/controllers/transfer/index.js.map +1 -1
  243. package/dist/server/server/src/controllers/transfer/index.mjs +2 -2
  244. package/dist/server/server/src/controllers/transfer/index.mjs.map +1 -1
  245. package/dist/server/server/src/controllers/transfer/token.js +8 -8
  246. package/dist/server/server/src/controllers/transfer/token.js.map +1 -1
  247. package/dist/server/server/src/controllers/transfer/token.mjs +4 -4
  248. package/dist/server/server/src/controllers/transfer/token.mjs.map +1 -1
  249. package/dist/server/server/src/domain/action/index.js +18 -16
  250. package/dist/server/server/src/domain/action/index.js.map +1 -1
  251. package/dist/server/server/src/domain/action/index.mjs +16 -14
  252. package/dist/server/server/src/domain/action/index.mjs.map +1 -1
  253. package/dist/server/server/src/domain/action/provider.mjs +4 -4
  254. package/dist/server/server/src/domain/action/provider.mjs.map +1 -1
  255. package/dist/server/server/src/domain/condition/index.js +7 -4
  256. package/dist/server/server/src/domain/condition/index.js.map +1 -1
  257. package/dist/server/server/src/domain/condition/index.mjs +7 -4
  258. package/dist/server/server/src/domain/condition/index.mjs.map +1 -1
  259. package/dist/server/server/src/domain/permission/index.js +24 -15
  260. package/dist/server/server/src/domain/permission/index.js.map +1 -1
  261. package/dist/server/server/src/domain/permission/index.mjs +21 -12
  262. package/dist/server/server/src/domain/permission/index.mjs.map +1 -1
  263. package/dist/server/server/src/middlewares/rateLimit.js +5 -5
  264. package/dist/server/server/src/middlewares/rateLimit.js.map +1 -1
  265. package/dist/server/server/src/middlewares/rateLimit.mjs +4 -4
  266. package/dist/server/server/src/middlewares/rateLimit.mjs.map +1 -1
  267. package/dist/server/server/src/register.js +10 -0
  268. package/dist/server/server/src/register.js.map +1 -1
  269. package/dist/server/server/src/register.mjs +10 -0
  270. package/dist/server/server/src/register.mjs.map +1 -1
  271. package/dist/server/server/src/routes/admin.js +18 -0
  272. package/dist/server/server/src/routes/admin.js.map +1 -1
  273. package/dist/server/server/src/routes/admin.mjs +18 -0
  274. package/dist/server/server/src/routes/admin.mjs.map +1 -1
  275. package/dist/server/server/src/services/action.js +1 -2
  276. package/dist/server/server/src/services/action.js.map +1 -1
  277. package/dist/server/server/src/services/action.mjs +1 -2
  278. package/dist/server/server/src/services/action.mjs.map +1 -1
  279. package/dist/server/server/src/services/api-token.js +61 -49
  280. package/dist/server/server/src/services/api-token.js.map +1 -1
  281. package/dist/server/server/src/services/api-token.mjs +53 -41
  282. package/dist/server/server/src/services/api-token.mjs.map +1 -1
  283. package/dist/server/server/src/services/auth.js +4 -2
  284. package/dist/server/server/src/services/auth.js.map +1 -1
  285. package/dist/server/server/src/services/auth.mjs +4 -3
  286. package/dist/server/server/src/services/auth.mjs.map +1 -1
  287. package/dist/server/server/src/services/condition.js +2 -2
  288. package/dist/server/server/src/services/condition.js.map +1 -1
  289. package/dist/server/server/src/services/condition.mjs +1 -1
  290. package/dist/server/server/src/services/condition.mjs.map +1 -1
  291. package/dist/server/server/src/services/content-type.js +5 -4
  292. package/dist/server/server/src/services/content-type.js.map +1 -1
  293. package/dist/server/server/src/services/content-type.mjs +8 -7
  294. package/dist/server/server/src/services/content-type.mjs.map +1 -1
  295. package/dist/server/server/src/services/debug-dump.js +173 -0
  296. package/dist/server/server/src/services/debug-dump.js.map +1 -0
  297. package/dist/server/server/src/services/debug-dump.mjs +166 -0
  298. package/dist/server/server/src/services/debug-dump.mjs.map +1 -0
  299. package/dist/server/server/src/services/homepage.js +2 -1
  300. package/dist/server/server/src/services/homepage.js.map +1 -1
  301. package/dist/server/server/src/services/homepage.mjs +2 -1
  302. package/dist/server/server/src/services/homepage.mjs.map +1 -1
  303. package/dist/server/server/src/services/index.js +3 -1
  304. package/dist/server/server/src/services/index.js.map +1 -1
  305. package/dist/server/server/src/services/index.mjs +3 -1
  306. package/dist/server/server/src/services/index.mjs.map +1 -1
  307. package/dist/server/server/src/services/passport/local-strategy.js +2 -2
  308. package/dist/server/server/src/services/passport/local-strategy.js.map +1 -1
  309. package/dist/server/server/src/services/passport/local-strategy.mjs +1 -1
  310. package/dist/server/server/src/services/passport/local-strategy.mjs.map +1 -1
  311. package/dist/server/server/src/services/passport.js +1 -2
  312. package/dist/server/server/src/services/passport.js.map +1 -1
  313. package/dist/server/server/src/services/passport.mjs +1 -2
  314. package/dist/server/server/src/services/passport.mjs.map +1 -1
  315. package/dist/server/server/src/services/permission/engine.js +4 -4
  316. package/dist/server/server/src/services/permission/engine.js.map +1 -1
  317. package/dist/server/server/src/services/permission/engine.mjs +2 -2
  318. package/dist/server/server/src/services/permission/engine.mjs.map +1 -1
  319. package/dist/server/server/src/services/permission/permissions-manager/index.js +2 -3
  320. package/dist/server/server/src/services/permission/permissions-manager/index.js.map +1 -1
  321. package/dist/server/server/src/services/permission/permissions-manager/index.mjs +1 -2
  322. package/dist/server/server/src/services/permission/permissions-manager/index.mjs.map +1 -1
  323. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js +6 -6
  324. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.js.map +1 -1
  325. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs +4 -4
  326. package/dist/server/server/src/services/permission/permissions-manager/permission-fields.mjs.map +1 -1
  327. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js +47 -41
  328. package/dist/server/server/src/services/permission/permissions-manager/sanitize.js.map +1 -1
  329. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs +44 -38
  330. package/dist/server/server/src/services/permission/permissions-manager/sanitize.mjs.map +1 -1
  331. package/dist/server/server/src/services/permission/permissions-manager/validate.js +30 -26
  332. package/dist/server/server/src/services/permission/permissions-manager/validate.js.map +1 -1
  333. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs +28 -24
  334. package/dist/server/server/src/services/permission/permissions-manager/validate.mjs.map +1 -1
  335. package/dist/server/server/src/services/permission/queries.js +9 -9
  336. package/dist/server/server/src/services/permission/queries.js.map +1 -1
  337. package/dist/server/server/src/services/permission/queries.mjs +9 -9
  338. package/dist/server/server/src/services/permission/queries.mjs.map +1 -1
  339. package/dist/server/server/src/services/permission/rename-fields.js +118 -0
  340. package/dist/server/server/src/services/permission/rename-fields.js.map +1 -0
  341. package/dist/server/server/src/services/permission/rename-fields.mjs +116 -0
  342. package/dist/server/server/src/services/permission/rename-fields.mjs.map +1 -0
  343. package/dist/server/server/src/services/permission/sections-builder/index.js +2 -2
  344. package/dist/server/server/src/services/permission/sections-builder/index.js.map +1 -1
  345. package/dist/server/server/src/services/permission/sections-builder/index.mjs +2 -2
  346. package/dist/server/server/src/services/permission/sections-builder/index.mjs.map +1 -1
  347. package/dist/server/server/src/services/permission/sections-builder/section.js +1 -2
  348. package/dist/server/server/src/services/permission/sections-builder/section.js.map +1 -1
  349. package/dist/server/server/src/services/permission/sections-builder/section.mjs +1 -2
  350. package/dist/server/server/src/services/permission/sections-builder/section.mjs.map +1 -1
  351. package/dist/server/server/src/services/permission/sections-builder/utils.js +6 -6
  352. package/dist/server/server/src/services/permission/sections-builder/utils.js.map +1 -1
  353. package/dist/server/server/src/services/permission/sections-builder/utils.mjs +4 -4
  354. package/dist/server/server/src/services/permission/sections-builder/utils.mjs.map +1 -1
  355. package/dist/server/server/src/services/role.js +20 -19
  356. package/dist/server/server/src/services/role.js.map +1 -1
  357. package/dist/server/server/src/services/role.mjs +20 -19
  358. package/dist/server/server/src/services/role.mjs.map +1 -1
  359. package/dist/server/server/src/services/transfer/token.js +20 -16
  360. package/dist/server/server/src/services/transfer/token.js.map +1 -1
  361. package/dist/server/server/src/services/transfer/token.mjs +14 -10
  362. package/dist/server/server/src/services/transfer/token.mjs.map +1 -1
  363. package/dist/server/server/src/services/user.js +2 -3
  364. package/dist/server/server/src/services/user.js.map +1 -1
  365. package/dist/server/server/src/services/user.mjs +3 -4
  366. package/dist/server/server/src/services/user.mjs.map +1 -1
  367. package/dist/server/server/src/strategies/api-token-utils.js +2 -3
  368. package/dist/server/server/src/strategies/api-token-utils.js.map +1 -1
  369. package/dist/server/server/src/strategies/api-token-utils.mjs +2 -3
  370. package/dist/server/server/src/strategies/api-token-utils.mjs.map +1 -1
  371. package/dist/server/server/src/strategies/content-api-token.js +3 -3
  372. package/dist/server/server/src/strategies/content-api-token.js.map +1 -1
  373. package/dist/server/server/src/strategies/content-api-token.mjs +1 -1
  374. package/dist/server/server/src/strategies/content-api-token.mjs.map +1 -1
  375. package/dist/server/server/src/strategies/data-transfer.js +4 -4
  376. package/dist/server/server/src/strategies/data-transfer.js.map +1 -1
  377. package/dist/server/server/src/strategies/data-transfer.mjs +3 -3
  378. package/dist/server/server/src/strategies/data-transfer.mjs.map +1 -1
  379. package/dist/server/server/src/utils/debug-dump/redact.js +197 -0
  380. package/dist/server/server/src/utils/debug-dump/redact.js.map +1 -0
  381. package/dist/server/server/src/utils/debug-dump/redact.mjs +194 -0
  382. package/dist/server/server/src/utils/debug-dump/redact.mjs.map +1 -0
  383. package/dist/server/server/src/validation/common-validators.js +9 -10
  384. package/dist/server/server/src/validation/common-validators.js.map +1 -1
  385. package/dist/server/server/src/validation/common-validators.mjs +13 -14
  386. package/dist/server/server/src/validation/common-validators.mjs.map +1 -1
  387. package/dist/server/server/src/validation/user.js +1 -2
  388. package/dist/server/server/src/validation/user.js.map +1 -1
  389. package/dist/server/server/src/validation/user.mjs +1 -2
  390. package/dist/server/server/src/validation/user.mjs.map +1 -1
  391. package/dist/server/shared/utils/get-project-type.js +49 -0
  392. package/dist/server/shared/utils/get-project-type.js.map +1 -0
  393. package/dist/server/shared/utils/get-project-type.mjs +46 -0
  394. package/dist/server/shared/utils/get-project-type.mjs.map +1 -0
  395. package/dist/server/src/audit-logs/auth.d.ts +72 -0
  396. package/dist/server/src/audit-logs/auth.d.ts.map +1 -0
  397. package/dist/server/src/audit-logs/tokens.d.ts.map +1 -1
  398. package/dist/server/src/bootstrap.d.ts.map +1 -1
  399. package/dist/server/src/config/admin-actions.d.ts.map +1 -1
  400. package/dist/server/src/controllers/admin-token.d.ts.map +1 -1
  401. package/dist/server/src/controllers/admin.d.ts +3 -0
  402. package/dist/server/src/controllers/admin.d.ts.map +1 -1
  403. package/dist/server/src/controllers/api-token.d.ts.map +1 -1
  404. package/dist/server/src/controllers/authentication.d.ts.map +1 -1
  405. package/dist/server/src/controllers/formatters/conditions.d.ts +1 -1
  406. package/dist/server/src/controllers/formatters/conditions.d.ts.map +1 -1
  407. package/dist/server/src/controllers/homepage.d.ts +1 -1
  408. package/dist/server/src/controllers/index.d.ts +4 -1
  409. package/dist/server/src/controllers/index.d.ts.map +1 -1
  410. package/dist/server/src/controllers/transfer/index.d.ts.map +1 -1
  411. package/dist/server/src/controllers/transfer/token.d.ts.map +1 -1
  412. package/dist/server/src/domain/action/index.d.ts +1 -0
  413. package/dist/server/src/domain/action/index.d.ts.map +1 -1
  414. package/dist/server/src/domain/condition/index.d.ts +2 -2
  415. package/dist/server/src/domain/condition/index.d.ts.map +1 -1
  416. package/dist/server/src/domain/permission/index.d.ts.map +1 -1
  417. package/dist/server/src/index.d.ts +11 -3
  418. package/dist/server/src/index.d.ts.map +1 -1
  419. package/dist/server/src/middlewares/index.d.ts.map +1 -1
  420. package/dist/server/src/middlewares/rateLimit.d.ts.map +1 -1
  421. package/dist/server/src/register.d.ts.map +1 -1
  422. package/dist/server/src/routes/admin.d.ts.map +1 -1
  423. package/dist/server/src/services/action.d.ts.map +1 -1
  424. package/dist/server/src/services/api-token.d.ts.map +1 -1
  425. package/dist/server/src/services/auth.d.ts +6 -0
  426. package/dist/server/src/services/auth.d.ts.map +1 -1
  427. package/dist/server/src/services/condition.d.ts.map +1 -1
  428. package/dist/server/src/services/content-type.d.ts.map +1 -1
  429. package/dist/server/src/services/debug-dump.d.ts +9 -0
  430. package/dist/server/src/services/debug-dump.d.ts.map +1 -0
  431. package/dist/server/src/services/homepage.d.ts +1 -1
  432. package/dist/server/src/services/homepage.d.ts.map +1 -1
  433. package/dist/server/src/services/index.d.ts +7 -2
  434. package/dist/server/src/services/index.d.ts.map +1 -1
  435. package/dist/server/src/services/passport/local-strategy.d.ts.map +1 -1
  436. package/dist/server/src/services/passport.d.ts.map +1 -1
  437. package/dist/server/src/services/permission/engine.d.ts.map +1 -1
  438. package/dist/server/src/services/permission/permissions-manager/permission-fields.d.ts.map +1 -1
  439. package/dist/server/src/services/permission/permissions-manager/sanitize.d.ts.map +1 -1
  440. package/dist/server/src/services/permission/permissions-manager/validate.d.ts.map +1 -1
  441. package/dist/server/src/services/permission/queries.d.ts.map +1 -1
  442. package/dist/server/src/services/permission/rename-fields.d.ts +21 -0
  443. package/dist/server/src/services/permission/rename-fields.d.ts.map +1 -0
  444. package/dist/server/src/services/permission/sections-builder/section.d.ts.map +1 -1
  445. package/dist/server/src/services/permission/sections-builder/utils.d.ts +1 -1
  446. package/dist/server/src/services/permission/sections-builder/utils.d.ts.map +1 -1
  447. package/dist/server/src/services/role.d.ts +1 -1
  448. package/dist/server/src/services/role.d.ts.map +1 -1
  449. package/dist/server/src/services/transfer/token.d.ts.map +1 -1
  450. package/dist/server/src/strategies/content-api-token.d.ts.map +1 -1
  451. package/dist/server/src/utils/debug-dump/redact.d.ts +8 -0
  452. package/dist/server/src/utils/debug-dump/redact.d.ts.map +1 -0
  453. package/dist/server/src/validation/user.d.ts.map +1 -1
  454. package/dist/shared/contracts/admin.d.ts +106 -0
  455. package/dist/shared/contracts/admin.d.ts.map +1 -1
  456. package/dist/shared/utils/__tests__/get-project-type.test.d.ts +1 -0
  457. package/dist/shared/utils/__tests__/get-project-type.test.d.ts.map +1 -0
  458. package/dist/shared/utils/get-project-type.d.ts +37 -0
  459. package/dist/shared/utils/get-project-type.d.ts.map +1 -0
  460. package/package.json +10 -10
  461. package/dist/admin/admin/src/utils/getProjectType.js +0 -22
  462. package/dist/admin/admin/src/utils/getProjectType.js.map +0 -1
  463. package/dist/admin/admin/src/utils/getProjectType.mjs +0 -20
  464. package/dist/admin/admin/src/utils/getProjectType.mjs.map +0 -1
  465. package/dist/admin/src/utils/getProjectType.d.ts +0 -16
@@ -1 +1 @@
1
- {"version":3,"file":"middlewares.mjs","sources":["../../../../../../../ee/server/src/controllers/authentication-utils/middlewares.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport passport from 'koa-passport';\nimport { getService } from '../../utils';\nimport utils from './utils';\nimport {\n REFRESH_COOKIE_NAME,\n buildCookieOptionsWithExpiry,\n buildSessionMetadataFromContext,\n getAccessCookieName,\n getAccessCookiePath,\n getAccessCookieDomain,\n getSessionManager,\n generateDeviceId,\n} from '../../../../../shared/utils/session-auth';\n\nconst defaultConnectionError = () => new Error('Invalid connection payload');\n\nexport const authenticate: Core.MiddlewareHandler = async (ctx, next) => {\n const {\n params: { provider },\n } = ctx;\n const redirectUrls = utils.getPrefixedRedirectUrls();\n\n // @ts-expect-error - can not use null to authenticate\n return passport.authenticate(provider, null, async (error, profile) => {\n if (error || !profile || !profile.email) {\n if (error) {\n strapi.log.error(error);\n }\n\n strapi.eventHub.emit('admin.auth.error', {\n error: error || defaultConnectionError(),\n provider,\n });\n\n return ctx.redirect(redirectUrls.error);\n }\n\n const user = await getService('user').findOneByEmail(profile.email);\n const scenario = user ? existingUserScenario : nonExistingUserScenario;\n\n return scenario(ctx, next)(user || profile, provider);\n })(ctx, next);\n};\n\nconst existingUserScenario: Core.MiddlewareHandler =\n (ctx, next) => async (user: any, provider: any) => {\n const redirectUrls = utils.getPrefixedRedirectUrls();\n\n if (!user.isActive) {\n strapi.eventHub.emit('admin.auth.error', {\n error: new Error(`Deactivated user tried to login (${user.id})`),\n provider,\n });\n return ctx.redirect(redirectUrls.error);\n }\n\n ctx.state.user = user;\n return next();\n };\n\nconst nonExistingUserScenario: Core.MiddlewareHandler =\n (ctx, next) => async (profile: any, provider: any) => {\n const { email, firstname, lastname, username } = profile;\n const redirectUrls = utils.getPrefixedRedirectUrls();\n const adminStore = await utils.getAdminStore();\n const { providers } = (await adminStore.get({ key: 'auth' })) as any;\n\n // We need at least the username or the firstname/lastname combination to register a new user\n const isMissingRegisterFields = !username && (!firstname || !lastname);\n\n if (!providers.autoRegister || !providers.defaultRole || isMissingRegisterFields) {\n strapi.eventHub.emit('admin.auth.error', { error: defaultConnectionError(), provider });\n return ctx.redirect(redirectUrls.error);\n }\n\n const defaultRole = await getService('role').findOne({ id: providers.defaultRole });\n\n // If the default role has been misconfigured, redirect with an error\n if (!defaultRole) {\n strapi.eventHub.emit('admin.auth.error', { error: defaultConnectionError(), provider });\n return ctx.redirect(redirectUrls.error);\n }\n\n // Register a new user with the information given by the provider and login with it\n ctx.state.user = await getService('user').create({\n email,\n username,\n firstname,\n lastname,\n roles: [defaultRole.id],\n isActive: true,\n registrationToken: null,\n });\n\n strapi.eventHub.emit('admin.auth.autoRegistration', {\n user: ctx.state.user,\n provider,\n });\n\n return next();\n };\n\nexport const redirectWithAuth: Core.MiddlewareHandler = async (ctx) => {\n const {\n params: { provider },\n } = ctx;\n const redirectUrls = utils.getPrefixedRedirectUrls();\n const { user } = ctx.state;\n\n try {\n const sessionManager = getSessionManager();\n if (!sessionManager) {\n strapi.log.error('SessionManager not available for SSO authentication');\n return ctx.redirect(redirectUrls.error);\n }\n\n const userId = String(user.id);\n const deviceId = generateDeviceId();\n\n const { token: refreshToken, absoluteExpiresAt } = await sessionManager(\n 'admin'\n ).generateRefreshToken(userId, deviceId, {\n type: 'refresh',\n metadata: buildSessionMetadataFromContext(ctx),\n });\n\n const cookieOptions = buildCookieOptionsWithExpiry('refresh', absoluteExpiresAt);\n ctx.cookies.set(REFRESH_COOKIE_NAME, refreshToken, cookieOptions);\n\n const accessResult = await sessionManager('admin').generateAccessToken(refreshToken);\n if ('error' in accessResult) {\n strapi.log.error('Failed to generate access token for SSO user');\n return ctx.redirect(redirectUrls.error);\n }\n\n const { token: accessToken } = accessResult;\n\n const configuredSecure = strapi.config.get('admin.auth.cookie.secure');\n const isProduction = process.env.NODE_ENV === 'production';\n const isSecure = typeof configuredSecure === 'boolean' ? configuredSecure : isProduction;\n\n // Resolve through the shared helpers so the server write agrees with the\n // client set/delete (which read the same config inlined at build time);\n // any divergence leaves a cookie the admin panel cannot clear on logout.\n const domain = getAccessCookieDomain();\n const path = getAccessCookiePath();\n\n ctx.cookies.set(getAccessCookieName(), accessToken, {\n httpOnly: false,\n secure: isSecure,\n overwrite: true,\n domain,\n path,\n });\n\n const sanitizedUser = getService('user').sanitizeUser(user);\n strapi.eventHub.emit('admin.auth.success', { user: sanitizedUser, provider });\n\n ctx.redirect(redirectUrls.success);\n } catch (error) {\n strapi.log.error('SSO authentication failed during token generation', error);\n strapi.eventHub.emit('admin.auth.error', {\n error: error instanceof Error ? error : new Error('Unknown SSO error'),\n provider,\n });\n return ctx.redirect(redirectUrls.error);\n }\n};\n\nexport default {\n authenticate,\n redirectWithAuth,\n};\n"],"names":["defaultConnectionError","Error","authenticate","ctx","next","params","provider","redirectUrls","utils","getPrefixedRedirectUrls","passport","error","profile","email","strapi","log","eventHub","emit","redirect","user","getService","findOneByEmail","scenario","existingUserScenario","nonExistingUserScenario","isActive","id","state","firstname","lastname","username","adminStore","getAdminStore","providers","get","key","isMissingRegisterFields","autoRegister","defaultRole","findOne","create","roles","registrationToken","redirectWithAuth","sessionManager","getSessionManager","userId","String","deviceId","generateDeviceId","token","refreshToken","absoluteExpiresAt","generateRefreshToken","type","metadata","buildSessionMetadataFromContext","cookieOptions","buildCookieOptionsWithExpiry","cookies","set","REFRESH_COOKIE_NAME","accessResult","generateAccessToken","accessToken","configuredSecure","config","isProduction","process","env","NODE_ENV","isSecure","domain","getAccessCookieDomain","path","getAccessCookiePath","getAccessCookieName","httpOnly","secure","overwrite","sanitizedUser","sanitizeUser","success"],"mappings":"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"}
1
+ {"version":3,"file":"middlewares.mjs","sources":["../../../../../../../ee/server/src/controllers/authentication-utils/middlewares.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport passport from 'koa-passport';\nimport { getService } from '../../utils';\nimport utils from './utils';\nimport { emitLoginFailure } from '../../../../../server/src/audit-logs/auth';\nimport {\n REFRESH_COOKIE_NAME,\n buildCookieOptionsWithExpiry,\n buildSessionMetadataFromContext,\n getAccessCookieName,\n getAccessCookiePath,\n getAccessCookieDomain,\n getSessionManager,\n generateDeviceId,\n} from '../../../../../shared/utils/session-auth';\n\nconst defaultConnectionError = () => new Error('Invalid connection payload');\n\nexport const authenticate: Core.MiddlewareHandler = async (ctx, next) => {\n const {\n params: { provider },\n } = ctx;\n const redirectUrls = utils.getPrefixedRedirectUrls();\n\n // @ts-expect-error - can not use null to authenticate\n return passport.authenticate(provider, null, async (error, profile) => {\n if (error || !profile || !profile.email) {\n if (error) {\n strapi.log.error(error);\n }\n\n emitLoginFailure(\n { strapi },\n { error: error || defaultConnectionError(), provider, reason: 'sso_connection_error' }\n );\n\n return ctx.redirect(redirectUrls.error);\n }\n\n const user = await getService('user').findOneByEmail(profile.email);\n const scenario = user ? existingUserScenario : nonExistingUserScenario;\n\n return scenario(ctx, next)(user || profile, provider);\n })(ctx, next);\n};\n\nconst existingUserScenario: Core.MiddlewareHandler =\n (ctx, next) => async (user: any, provider: any) => {\n const redirectUrls = utils.getPrefixedRedirectUrls();\n\n if (!user.isActive) {\n emitLoginFailure(\n { strapi },\n {\n error: new Error(`Deactivated user tried to login (${user.id})`),\n provider,\n reason: 'account_inactive',\n user,\n }\n );\n return ctx.redirect(redirectUrls.error);\n }\n\n ctx.state.user = user;\n return next();\n };\n\nconst nonExistingUserScenario: Core.MiddlewareHandler =\n (ctx, next) => async (profile: any, provider: any) => {\n const { email, firstname, lastname, username } = profile;\n const redirectUrls = utils.getPrefixedRedirectUrls();\n const adminStore = await utils.getAdminStore();\n const { providers } = (await adminStore.get({ key: 'auth' })) as any;\n\n // We need at least the username or the firstname/lastname combination to register a new user\n const isMissingRegisterFields = !username && (!firstname || !lastname);\n\n if (!providers.autoRegister || !providers.defaultRole || isMissingRegisterFields) {\n emitLoginFailure(\n { strapi },\n { error: defaultConnectionError(), provider, reason: 'sso_registration_disabled' }\n );\n return ctx.redirect(redirectUrls.error);\n }\n\n const defaultRole = await getService('role').findOne({ id: providers.defaultRole });\n\n // If the default role has been misconfigured, redirect with an error\n if (!defaultRole) {\n emitLoginFailure(\n { strapi },\n { error: defaultConnectionError(), provider, reason: 'sso_role_misconfigured' }\n );\n return ctx.redirect(redirectUrls.error);\n }\n\n // Register a new user with the information given by the provider and login with it\n ctx.state.user = await getService('user').create({\n email,\n username,\n firstname,\n lastname,\n roles: [defaultRole.id],\n isActive: true,\n registrationToken: null,\n });\n\n strapi.eventHub.emit('admin.auth.autoRegistration', {\n user: ctx.state.user,\n provider,\n });\n\n return next();\n };\n\nexport const redirectWithAuth: Core.MiddlewareHandler = async (ctx) => {\n const {\n params: { provider },\n } = ctx;\n const redirectUrls = utils.getPrefixedRedirectUrls();\n const { user } = ctx.state;\n\n try {\n const sessionManager = getSessionManager();\n if (!sessionManager) {\n strapi.log.error('SessionManager not available for SSO authentication');\n return ctx.redirect(redirectUrls.error);\n }\n\n const userId = String(user.id);\n const deviceId = generateDeviceId();\n\n const { token: refreshToken, absoluteExpiresAt } = await sessionManager(\n 'admin'\n ).generateRefreshToken(userId, deviceId, {\n type: 'refresh',\n metadata: buildSessionMetadataFromContext(ctx),\n });\n\n const cookieOptions = buildCookieOptionsWithExpiry('refresh', absoluteExpiresAt);\n ctx.cookies.set(REFRESH_COOKIE_NAME, refreshToken, cookieOptions);\n\n const accessResult = await sessionManager('admin').generateAccessToken(refreshToken);\n if ('error' in accessResult) {\n strapi.log.error('Failed to generate access token for SSO user');\n return ctx.redirect(redirectUrls.error);\n }\n\n const { token: accessToken } = accessResult;\n\n const configuredSecure = strapi.config.get('admin.auth.cookie.secure');\n const isProduction = process.env.NODE_ENV === 'production';\n const isSecure = typeof configuredSecure === 'boolean' ? configuredSecure : isProduction;\n\n // Resolve through the shared helpers so the server write agrees with the\n // client set/delete (which read the same config inlined at build time);\n // any divergence leaves a cookie the admin panel cannot clear on logout.\n const domain = getAccessCookieDomain();\n const path = getAccessCookiePath();\n\n ctx.cookies.set(getAccessCookieName(), accessToken, {\n httpOnly: false,\n secure: isSecure,\n overwrite: true,\n domain,\n path,\n });\n\n const sanitizedUser = getService('user').sanitizeUser(user);\n strapi.eventHub.emit('admin.auth.success', { user: sanitizedUser, provider });\n\n ctx.redirect(redirectUrls.success);\n } catch (error) {\n strapi.log.error('SSO authentication failed during token generation', error);\n emitLoginFailure(\n { strapi },\n {\n error: error instanceof Error ? error : new Error('Unknown SSO error'),\n provider,\n reason: 'unexpected_error',\n user,\n }\n );\n return ctx.redirect(redirectUrls.error);\n }\n};\n\nexport default {\n authenticate,\n redirectWithAuth,\n};\n"],"names":["defaultConnectionError","Error","authenticate","ctx","next","params","provider","redirectUrls","utils","getPrefixedRedirectUrls","passport","error","profile","email","strapi","log","emitLoginFailure","reason","redirect","user","getService","findOneByEmail","scenario","existingUserScenario","nonExistingUserScenario","isActive","id","state","firstname","lastname","username","adminStore","getAdminStore","providers","get","key","isMissingRegisterFields","autoRegister","defaultRole","findOne","create","roles","registrationToken","eventHub","emit","redirectWithAuth","sessionManager","getSessionManager","userId","String","deviceId","generateDeviceId","token","refreshToken","absoluteExpiresAt","generateRefreshToken","type","metadata","buildSessionMetadataFromContext","cookieOptions","buildCookieOptionsWithExpiry","cookies","set","REFRESH_COOKIE_NAME","accessResult","generateAccessToken","accessToken","configuredSecure","config","isProduction","process","env","NODE_ENV","isSecure","domain","getAccessCookieDomain","path","getAccessCookiePath","getAccessCookieName","httpOnly","secure","overwrite","sanitizedUser","sanitizeUser","success"],"mappings":"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"}
@@ -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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"}
@@ -16,6 +16,7 @@ var auditLogExport = require('../../../shared/utils/audit-log-export.js');
16
16
  var tokens = require('../../../server/src/audit-logs/tokens.js');
17
17
  var adminUsers = require('../../../server/src/audit-logs/admin-users.js');
18
18
  var webhooks = require('../../../server/src/audit-logs/webhooks.js');
19
+ var auth = require('../../../server/src/audit-logs/auth.js');
19
20
 
20
21
  const getAdminEE = ()=>{
21
22
  const eeAdmin = {
@@ -69,6 +70,7 @@ const getAdminEE = ()=>{
69
70
  tokens.registerTokenAuditEvents(auditLogsLifecycle);
70
71
  adminUsers.registerAdminUserAuditEvents(auditLogsLifecycle);
71
72
  webhooks.registerWebhookAuditEvents(auditLogsLifecycle);
73
+ auth.registerAuthAuditEvents(auditLogsLifecycle);
72
74
  await auditLogsLifecycle.register();
73
75
  }
74
76
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../ee/server/src/index.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport register from './register';\nimport bootstrap from './bootstrap';\nimport destroy from './destroy';\nimport adminContentTypes from './content-types';\nimport services from './services';\nimport controllers from './controllers';\nimport routes from './routes';\nimport auditLogsRoutes from './audit-logs/routes/audit-logs';\nimport auditLogsController from './audit-logs/controllers/audit-logs';\nimport { createAuditLogsService } from './audit-logs/services/audit-logs';\nimport { createAuditLogsLifecycleService } from './audit-logs/services/lifecycles';\nimport { auditLog } from './audit-logs/content-types/audit-log';\nimport { AUDIT_LOG_EXPORT_EVENT } from '../../../shared/utils/audit-log-export';\nimport { registerTokenAuditEvents } from '../../../server/src/audit-logs/tokens';\nimport { registerAdminUserAuditEvents } from '../../../server/src/audit-logs/admin-users';\nimport { registerWebhookAuditEvents } from '../../../server/src/audit-logs/webhooks';\n\nconst getAdminEE = () => {\n const eeAdmin = {\n register,\n bootstrap,\n destroy,\n contentTypes: {\n // Always register the audit-log content type to prevent data loss\n 'audit-log': auditLog,\n ...adminContentTypes,\n },\n services,\n controllers,\n routes,\n };\n\n const isAuditLogsEnabled =\n strapi.config.get('admin.auditLogs.enabled', true) &&\n strapi.ee.features.isEnabled('audit-logs');\n return {\n ...eeAdmin,\n controllers: {\n ...eeAdmin.controllers,\n ...(isAuditLogsEnabled ? { 'audit-logs': auditLogsController } : {}),\n },\n routes: {\n ...eeAdmin.routes,\n ...(isAuditLogsEnabled ? { 'audit-logs': auditLogsRoutes } : {}),\n },\n async register({ strapi }: { strapi: Core.Strapi }) {\n // Run the default registration\n await eeAdmin.register({ strapi });\n\n if (isAuditLogsEnabled) {\n // Register an internal audit logs service\n strapi.add('audit-logs', createAuditLogsService(strapi));\n // Register an internal audit logs lifecycle service\n const auditLogsLifecycle = createAuditLogsLifecycleService(strapi);\n strapi.add('audit-logs-lifecycle', auditLogsLifecycle);\n\n auditLogsLifecycle.registerEvent(\n AUDIT_LOG_EXPORT_EVENT,\n (event: { filters?: unknown }) => ({\n resource: { type: 'audit-log' },\n details: { format: 'csv', filters: event?.filters ?? null },\n })\n );\n\n registerTokenAuditEvents(auditLogsLifecycle);\n registerAdminUserAuditEvents(auditLogsLifecycle);\n registerWebhookAuditEvents(auditLogsLifecycle);\n\n await auditLogsLifecycle.register();\n }\n },\n async destroy({ strapi }: { strapi: Core.Strapi }) {\n if (isAuditLogsEnabled) {\n strapi.get('audit-logs-lifecycle').destroy();\n }\n await eeAdmin.destroy();\n },\n };\n};\n\nexport default getAdminEE;\n"],"names":["getAdminEE","eeAdmin","register","bootstrap","destroy","contentTypes","auditLog","adminContentTypes","services","controllers","routes","isAuditLogsEnabled","strapi","config","get","ee","features","isEnabled","auditLogsController","auditLogsRoutes","add","createAuditLogsService","auditLogsLifecycle","createAuditLogsLifecycleService","registerEvent","AUDIT_LOG_EXPORT_EVENT","event","resource","type","details","format","filters","registerTokenAuditEvents","registerAdminUserAuditEvents","registerWebhookAuditEvents"],"mappings":";;;;;;;;;;;;;;;;;;;AAkBA,MAAMA,UAAAA,GAAa,IAAA;AACjB,IAAA,MAAMC,OAAAA,GAAU;AACdC,QAAAA,QAAAA;AACAC,QAAAA,SAAAA;AACAC,QAAAA,OAAAA;QACAC,YAAAA,EAAc;;YAEZ,WAAA,EAAaC,iBAAAA;AACb,YAAA,GAAGC;AACL,SAAA;AACAC,kBAAAA,OAAAA;AACAC,qBAAAA,OAAAA;AACAC,gBAAAA;AACF,KAAA;AAEA,IAAA,MAAMC,kBAAAA,GACJC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,yBAAA,EAA2B,IAAA,CAAA,IAC7CF,MAAAA,CAAOG,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,YAAA,CAAA;IAC/B,OAAO;AACL,QAAA,GAAGhB,OAAO;QACVQ,WAAAA,EAAa;AACX,YAAA,GAAGR,QAAQQ,WAAW;AACtB,YAAA,GAAIE,kBAAAA,GAAqB;gBAAE,YAAA,EAAcO;AAAoB,aAAA,GAAI;AACnE,SAAA;QACAR,MAAAA,EAAQ;AACN,YAAA,GAAGT,QAAQS,MAAM;AACjB,YAAA,GAAIC,kBAAAA,GAAqB;gBAAE,YAAA,EAAcQ;AAAgB,aAAA,GAAI;AAC/D,SAAA;AACA,QAAA,MAAMjB,QAAAA,CAAAA,CAAS,EAAEU,MAAAA,EAAAA,OAAM,EAA2B,EAAA;;YAEhD,MAAMX,OAAAA,CAAQC,QAAQ,CAAC;gBAAEU,MAAAA,EAAAA;AAAO,aAAA,CAAA;AAEhC,YAAA,IAAID,kBAAAA,EAAoB;;gBAEtBC,OAAAA,CAAOQ,GAAG,CAAC,YAAA,EAAcC,kCAAAA,CAAuBT,OAAAA,CAAAA,CAAAA;;AAEhD,gBAAA,MAAMU,qBAAqBC,0CAAAA,CAAgCX,OAAAA,CAAAA;gBAC3DA,OAAAA,CAAOQ,GAAG,CAAC,sBAAA,EAAwBE,kBAAAA,CAAAA;AAEnCA,gBAAAA,kBAAAA,CAAmBE,aAAa,CAC9BC,qCAAAA,EACA,CAACC,SAAkC;wBACjCC,QAAAA,EAAU;4BAAEC,IAAAA,EAAM;AAAY,yBAAA;wBAC9BC,OAAAA,EAAS;4BAAEC,MAAAA,EAAQ,KAAA;AAAOC,4BAAAA,OAAAA,EAASL,OAAOK,OAAAA,IAAW;AAAK;qBAC5D,CAAA,CAAA;gBAGFC,+BAAAA,CAAyBV,kBAAAA,CAAAA;gBACzBW,uCAAAA,CAA6BX,kBAAAA,CAAAA;gBAC7BY,mCAAAA,CAA2BZ,kBAAAA,CAAAA;AAE3B,gBAAA,MAAMA,mBAAmBpB,QAAQ,EAAA;AACnC,YAAA;AACF,QAAA,CAAA;AACA,QAAA,MAAME,OAAAA,CAAAA,CAAQ,EAAEQ,MAAAA,EAAAA,OAAM,EAA2B,EAAA;AAC/C,YAAA,IAAID,kBAAAA,EAAoB;gBACtBC,OAAAA,CAAOE,GAAG,CAAC,sBAAA,CAAA,CAAwBV,OAAO,EAAA;AAC5C,YAAA;AACA,YAAA,MAAMH,QAAQG,OAAO,EAAA;AACvB,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../ee/server/src/index.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport register from './register';\nimport bootstrap from './bootstrap';\nimport destroy from './destroy';\nimport adminContentTypes from './content-types';\nimport services from './services';\nimport controllers from './controllers';\nimport routes from './routes';\nimport auditLogsRoutes from './audit-logs/routes/audit-logs';\nimport auditLogsController from './audit-logs/controllers/audit-logs';\nimport { createAuditLogsService } from './audit-logs/services/audit-logs';\nimport { createAuditLogsLifecycleService } from './audit-logs/services/lifecycles';\nimport { auditLog } from './audit-logs/content-types/audit-log';\nimport { AUDIT_LOG_EXPORT_EVENT } from '../../../shared/utils/audit-log-export';\nimport { registerTokenAuditEvents } from '../../../server/src/audit-logs/tokens';\nimport { registerAdminUserAuditEvents } from '../../../server/src/audit-logs/admin-users';\nimport { registerWebhookAuditEvents } from '../../../server/src/audit-logs/webhooks';\nimport { registerAuthAuditEvents } from '../../../server/src/audit-logs/auth';\n\nconst getAdminEE = () => {\n const eeAdmin = {\n register,\n bootstrap,\n destroy,\n contentTypes: {\n // Always register the audit-log content type to prevent data loss\n 'audit-log': auditLog,\n ...adminContentTypes,\n },\n services,\n controllers,\n routes,\n };\n\n const isAuditLogsEnabled =\n strapi.config.get('admin.auditLogs.enabled', true) &&\n strapi.ee.features.isEnabled('audit-logs');\n return {\n ...eeAdmin,\n controllers: {\n ...eeAdmin.controllers,\n ...(isAuditLogsEnabled ? { 'audit-logs': auditLogsController } : {}),\n },\n routes: {\n ...eeAdmin.routes,\n ...(isAuditLogsEnabled ? { 'audit-logs': auditLogsRoutes } : {}),\n },\n async register({ strapi }: { strapi: Core.Strapi }) {\n // Run the default registration\n await eeAdmin.register({ strapi });\n\n if (isAuditLogsEnabled) {\n // Register an internal audit logs service\n strapi.add('audit-logs', createAuditLogsService(strapi));\n // Register an internal audit logs lifecycle service\n const auditLogsLifecycle = createAuditLogsLifecycleService(strapi);\n strapi.add('audit-logs-lifecycle', auditLogsLifecycle);\n\n auditLogsLifecycle.registerEvent(\n AUDIT_LOG_EXPORT_EVENT,\n (event: { filters?: unknown }) => ({\n resource: { type: 'audit-log' },\n details: { format: 'csv', filters: event?.filters ?? null },\n })\n );\n\n registerTokenAuditEvents(auditLogsLifecycle);\n registerAdminUserAuditEvents(auditLogsLifecycle);\n registerWebhookAuditEvents(auditLogsLifecycle);\n registerAuthAuditEvents(auditLogsLifecycle);\n\n await auditLogsLifecycle.register();\n }\n },\n async destroy({ strapi }: { strapi: Core.Strapi }) {\n if (isAuditLogsEnabled) {\n strapi.get('audit-logs-lifecycle').destroy();\n }\n await eeAdmin.destroy();\n },\n };\n};\n\nexport default getAdminEE;\n"],"names":["getAdminEE","eeAdmin","register","bootstrap","destroy","contentTypes","auditLog","adminContentTypes","services","controllers","routes","isAuditLogsEnabled","strapi","config","get","ee","features","isEnabled","auditLogsController","auditLogsRoutes","add","createAuditLogsService","auditLogsLifecycle","createAuditLogsLifecycleService","registerEvent","AUDIT_LOG_EXPORT_EVENT","event","resource","type","details","format","filters","registerTokenAuditEvents","registerAdminUserAuditEvents","registerWebhookAuditEvents","registerAuthAuditEvents"],"mappings":";;;;;;;;;;;;;;;;;;;;AAmBA,MAAMA,UAAAA,GAAa,IAAA;AACjB,IAAA,MAAMC,OAAAA,GAAU;AACdC,QAAAA,QAAAA;AACAC,QAAAA,SAAAA;AACAC,QAAAA,OAAAA;QACAC,YAAAA,EAAc;;YAEZ,WAAA,EAAaC,iBAAAA;AACb,YAAA,GAAGC;AACL,SAAA;AACAC,kBAAAA,OAAAA;AACAC,qBAAAA,OAAAA;AACAC,gBAAAA;AACF,KAAA;AAEA,IAAA,MAAMC,kBAAAA,GACJC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,yBAAA,EAA2B,IAAA,CAAA,IAC7CF,MAAAA,CAAOG,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,YAAA,CAAA;IAC/B,OAAO;AACL,QAAA,GAAGhB,OAAO;QACVQ,WAAAA,EAAa;AACX,YAAA,GAAGR,QAAQQ,WAAW;AACtB,YAAA,GAAIE,kBAAAA,GAAqB;gBAAE,YAAA,EAAcO;AAAoB,aAAA,GAAI;AACnE,SAAA;QACAR,MAAAA,EAAQ;AACN,YAAA,GAAGT,QAAQS,MAAM;AACjB,YAAA,GAAIC,kBAAAA,GAAqB;gBAAE,YAAA,EAAcQ;AAAgB,aAAA,GAAI;AAC/D,SAAA;AACA,QAAA,MAAMjB,QAAAA,CAAAA,CAAS,EAAEU,MAAAA,EAAAA,OAAM,EAA2B,EAAA;;YAEhD,MAAMX,OAAAA,CAAQC,QAAQ,CAAC;gBAAEU,MAAAA,EAAAA;AAAO,aAAA,CAAA;AAEhC,YAAA,IAAID,kBAAAA,EAAoB;;gBAEtBC,OAAAA,CAAOQ,GAAG,CAAC,YAAA,EAAcC,kCAAAA,CAAuBT,OAAAA,CAAAA,CAAAA;;AAEhD,gBAAA,MAAMU,qBAAqBC,0CAAAA,CAAgCX,OAAAA,CAAAA;gBAC3DA,OAAAA,CAAOQ,GAAG,CAAC,sBAAA,EAAwBE,kBAAAA,CAAAA;AAEnCA,gBAAAA,kBAAAA,CAAmBE,aAAa,CAC9BC,qCAAAA,EACA,CAACC,SAAkC;wBACjCC,QAAAA,EAAU;4BAAEC,IAAAA,EAAM;AAAY,yBAAA;wBAC9BC,OAAAA,EAAS;4BAAEC,MAAAA,EAAQ,KAAA;AAAOC,4BAAAA,OAAAA,EAASL,OAAOK,OAAAA,IAAW;AAAK;qBAC5D,CAAA,CAAA;gBAGFC,+BAAAA,CAAyBV,kBAAAA,CAAAA;gBACzBW,uCAAAA,CAA6BX,kBAAAA,CAAAA;gBAC7BY,mCAAAA,CAA2BZ,kBAAAA,CAAAA;gBAC3Ba,4BAAAA,CAAwBb,kBAAAA,CAAAA;AAExB,gBAAA,MAAMA,mBAAmBpB,QAAQ,EAAA;AACnC,YAAA;AACF,QAAA,CAAA;AACA,QAAA,MAAME,OAAAA,CAAAA,CAAQ,EAAEQ,MAAAA,EAAAA,OAAM,EAA2B,EAAA;AAC/C,YAAA,IAAID,kBAAAA,EAAoB;gBACtBC,OAAAA,CAAOE,GAAG,CAAC,sBAAA,CAAA,CAAwBV,OAAO,EAAA;AAC5C,YAAA;AACA,YAAA,MAAMH,QAAQG,OAAO,EAAA;AACvB,QAAA;AACF,KAAA;AACF;;;;"}
@@ -14,6 +14,7 @@ import { AUDIT_LOG_EXPORT_EVENT } from '../../../shared/utils/audit-log-export.m
14
14
  import { registerTokenAuditEvents } from '../../../server/src/audit-logs/tokens.mjs';
15
15
  import { registerAdminUserAuditEvents } from '../../../server/src/audit-logs/admin-users.mjs';
16
16
  import { registerWebhookAuditEvents } from '../../../server/src/audit-logs/webhooks.mjs';
17
+ import { registerAuthAuditEvents } from '../../../server/src/audit-logs/auth.mjs';
17
18
 
18
19
  const getAdminEE = ()=>{
19
20
  const eeAdmin = {
@@ -67,6 +68,7 @@ const getAdminEE = ()=>{
67
68
  registerTokenAuditEvents(auditLogsLifecycle);
68
69
  registerAdminUserAuditEvents(auditLogsLifecycle);
69
70
  registerWebhookAuditEvents(auditLogsLifecycle);
71
+ registerAuthAuditEvents(auditLogsLifecycle);
70
72
  await auditLogsLifecycle.register();
71
73
  }
72
74
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../../../ee/server/src/index.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport register from './register';\nimport bootstrap from './bootstrap';\nimport destroy from './destroy';\nimport adminContentTypes from './content-types';\nimport services from './services';\nimport controllers from './controllers';\nimport routes from './routes';\nimport auditLogsRoutes from './audit-logs/routes/audit-logs';\nimport auditLogsController from './audit-logs/controllers/audit-logs';\nimport { createAuditLogsService } from './audit-logs/services/audit-logs';\nimport { createAuditLogsLifecycleService } from './audit-logs/services/lifecycles';\nimport { auditLog } from './audit-logs/content-types/audit-log';\nimport { AUDIT_LOG_EXPORT_EVENT } from '../../../shared/utils/audit-log-export';\nimport { registerTokenAuditEvents } from '../../../server/src/audit-logs/tokens';\nimport { registerAdminUserAuditEvents } from '../../../server/src/audit-logs/admin-users';\nimport { registerWebhookAuditEvents } from '../../../server/src/audit-logs/webhooks';\n\nconst getAdminEE = () => {\n const eeAdmin = {\n register,\n bootstrap,\n destroy,\n contentTypes: {\n // Always register the audit-log content type to prevent data loss\n 'audit-log': auditLog,\n ...adminContentTypes,\n },\n services,\n controllers,\n routes,\n };\n\n const isAuditLogsEnabled =\n strapi.config.get('admin.auditLogs.enabled', true) &&\n strapi.ee.features.isEnabled('audit-logs');\n return {\n ...eeAdmin,\n controllers: {\n ...eeAdmin.controllers,\n ...(isAuditLogsEnabled ? { 'audit-logs': auditLogsController } : {}),\n },\n routes: {\n ...eeAdmin.routes,\n ...(isAuditLogsEnabled ? { 'audit-logs': auditLogsRoutes } : {}),\n },\n async register({ strapi }: { strapi: Core.Strapi }) {\n // Run the default registration\n await eeAdmin.register({ strapi });\n\n if (isAuditLogsEnabled) {\n // Register an internal audit logs service\n strapi.add('audit-logs', createAuditLogsService(strapi));\n // Register an internal audit logs lifecycle service\n const auditLogsLifecycle = createAuditLogsLifecycleService(strapi);\n strapi.add('audit-logs-lifecycle', auditLogsLifecycle);\n\n auditLogsLifecycle.registerEvent(\n AUDIT_LOG_EXPORT_EVENT,\n (event: { filters?: unknown }) => ({\n resource: { type: 'audit-log' },\n details: { format: 'csv', filters: event?.filters ?? null },\n })\n );\n\n registerTokenAuditEvents(auditLogsLifecycle);\n registerAdminUserAuditEvents(auditLogsLifecycle);\n registerWebhookAuditEvents(auditLogsLifecycle);\n\n await auditLogsLifecycle.register();\n }\n },\n async destroy({ strapi }: { strapi: Core.Strapi }) {\n if (isAuditLogsEnabled) {\n strapi.get('audit-logs-lifecycle').destroy();\n }\n await eeAdmin.destroy();\n },\n };\n};\n\nexport default getAdminEE;\n"],"names":["getAdminEE","eeAdmin","register","bootstrap","destroy","contentTypes","auditLog","adminContentTypes","services","controllers","routes","isAuditLogsEnabled","strapi","config","get","ee","features","isEnabled","auditLogsController","auditLogsRoutes","add","createAuditLogsService","auditLogsLifecycle","createAuditLogsLifecycleService","registerEvent","AUDIT_LOG_EXPORT_EVENT","event","resource","type","details","format","filters","registerTokenAuditEvents","registerAdminUserAuditEvents","registerWebhookAuditEvents"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,MAAMA,UAAAA,GAAa,IAAA;AACjB,IAAA,MAAMC,OAAAA,GAAU;AACdC,QAAAA,QAAAA;AACAC,QAAAA,SAAAA;AACAC,QAAAA,OAAAA;QACAC,YAAAA,EAAc;;YAEZ,WAAA,EAAaC,QAAAA;AACb,YAAA,GAAGC;AACL,SAAA;AACAC,QAAAA,QAAAA;AACAC,QAAAA,WAAAA;AACAC,QAAAA;AACF,KAAA;AAEA,IAAA,MAAMC,kBAAAA,GACJC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,yBAAA,EAA2B,IAAA,CAAA,IAC7CF,MAAAA,CAAOG,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,YAAA,CAAA;IAC/B,OAAO;AACL,QAAA,GAAGhB,OAAO;QACVQ,WAAAA,EAAa;AACX,YAAA,GAAGR,QAAQQ,WAAW;AACtB,YAAA,GAAIE,kBAAAA,GAAqB;gBAAE,YAAA,EAAcO;AAAoB,aAAA,GAAI;AACnE,SAAA;QACAR,MAAAA,EAAQ;AACN,YAAA,GAAGT,QAAQS,MAAM;AACjB,YAAA,GAAIC,kBAAAA,GAAqB;gBAAE,YAAA,EAAcQ;AAAgB,aAAA,GAAI;AAC/D,SAAA;AACA,QAAA,MAAMjB,QAAAA,CAAAA,CAAS,EAAEU,MAAAA,EAAAA,OAAM,EAA2B,EAAA;;YAEhD,MAAMX,OAAAA,CAAQC,QAAQ,CAAC;gBAAEU,MAAAA,EAAAA;AAAO,aAAA,CAAA;AAEhC,YAAA,IAAID,kBAAAA,EAAoB;;gBAEtBC,OAAAA,CAAOQ,GAAG,CAAC,YAAA,EAAcC,sBAAAA,CAAuBT,OAAAA,CAAAA,CAAAA;;AAEhD,gBAAA,MAAMU,qBAAqBC,+BAAAA,CAAgCX,OAAAA,CAAAA;gBAC3DA,OAAAA,CAAOQ,GAAG,CAAC,sBAAA,EAAwBE,kBAAAA,CAAAA;AAEnCA,gBAAAA,kBAAAA,CAAmBE,aAAa,CAC9BC,sBAAAA,EACA,CAACC,SAAkC;wBACjCC,QAAAA,EAAU;4BAAEC,IAAAA,EAAM;AAAY,yBAAA;wBAC9BC,OAAAA,EAAS;4BAAEC,MAAAA,EAAQ,KAAA;AAAOC,4BAAAA,OAAAA,EAASL,OAAOK,OAAAA,IAAW;AAAK;qBAC5D,CAAA,CAAA;gBAGFC,wBAAAA,CAAyBV,kBAAAA,CAAAA;gBACzBW,4BAAAA,CAA6BX,kBAAAA,CAAAA;gBAC7BY,0BAAAA,CAA2BZ,kBAAAA,CAAAA;AAE3B,gBAAA,MAAMA,mBAAmBpB,QAAQ,EAAA;AACnC,YAAA;AACF,QAAA,CAAA;AACA,QAAA,MAAME,OAAAA,CAAAA,CAAQ,EAAEQ,MAAAA,EAAAA,OAAM,EAA2B,EAAA;AAC/C,YAAA,IAAID,kBAAAA,EAAoB;gBACtBC,OAAAA,CAAOE,GAAG,CAAC,sBAAA,CAAA,CAAwBV,OAAO,EAAA;AAC5C,YAAA;AACA,YAAA,MAAMH,QAAQG,OAAO,EAAA;AACvB,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../../../ee/server/src/index.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\nimport register from './register';\nimport bootstrap from './bootstrap';\nimport destroy from './destroy';\nimport adminContentTypes from './content-types';\nimport services from './services';\nimport controllers from './controllers';\nimport routes from './routes';\nimport auditLogsRoutes from './audit-logs/routes/audit-logs';\nimport auditLogsController from './audit-logs/controllers/audit-logs';\nimport { createAuditLogsService } from './audit-logs/services/audit-logs';\nimport { createAuditLogsLifecycleService } from './audit-logs/services/lifecycles';\nimport { auditLog } from './audit-logs/content-types/audit-log';\nimport { AUDIT_LOG_EXPORT_EVENT } from '../../../shared/utils/audit-log-export';\nimport { registerTokenAuditEvents } from '../../../server/src/audit-logs/tokens';\nimport { registerAdminUserAuditEvents } from '../../../server/src/audit-logs/admin-users';\nimport { registerWebhookAuditEvents } from '../../../server/src/audit-logs/webhooks';\nimport { registerAuthAuditEvents } from '../../../server/src/audit-logs/auth';\n\nconst getAdminEE = () => {\n const eeAdmin = {\n register,\n bootstrap,\n destroy,\n contentTypes: {\n // Always register the audit-log content type to prevent data loss\n 'audit-log': auditLog,\n ...adminContentTypes,\n },\n services,\n controllers,\n routes,\n };\n\n const isAuditLogsEnabled =\n strapi.config.get('admin.auditLogs.enabled', true) &&\n strapi.ee.features.isEnabled('audit-logs');\n return {\n ...eeAdmin,\n controllers: {\n ...eeAdmin.controllers,\n ...(isAuditLogsEnabled ? { 'audit-logs': auditLogsController } : {}),\n },\n routes: {\n ...eeAdmin.routes,\n ...(isAuditLogsEnabled ? { 'audit-logs': auditLogsRoutes } : {}),\n },\n async register({ strapi }: { strapi: Core.Strapi }) {\n // Run the default registration\n await eeAdmin.register({ strapi });\n\n if (isAuditLogsEnabled) {\n // Register an internal audit logs service\n strapi.add('audit-logs', createAuditLogsService(strapi));\n // Register an internal audit logs lifecycle service\n const auditLogsLifecycle = createAuditLogsLifecycleService(strapi);\n strapi.add('audit-logs-lifecycle', auditLogsLifecycle);\n\n auditLogsLifecycle.registerEvent(\n AUDIT_LOG_EXPORT_EVENT,\n (event: { filters?: unknown }) => ({\n resource: { type: 'audit-log' },\n details: { format: 'csv', filters: event?.filters ?? null },\n })\n );\n\n registerTokenAuditEvents(auditLogsLifecycle);\n registerAdminUserAuditEvents(auditLogsLifecycle);\n registerWebhookAuditEvents(auditLogsLifecycle);\n registerAuthAuditEvents(auditLogsLifecycle);\n\n await auditLogsLifecycle.register();\n }\n },\n async destroy({ strapi }: { strapi: Core.Strapi }) {\n if (isAuditLogsEnabled) {\n strapi.get('audit-logs-lifecycle').destroy();\n }\n await eeAdmin.destroy();\n },\n };\n};\n\nexport default getAdminEE;\n"],"names":["getAdminEE","eeAdmin","register","bootstrap","destroy","contentTypes","auditLog","adminContentTypes","services","controllers","routes","isAuditLogsEnabled","strapi","config","get","ee","features","isEnabled","auditLogsController","auditLogsRoutes","add","createAuditLogsService","auditLogsLifecycle","createAuditLogsLifecycleService","registerEvent","AUDIT_LOG_EXPORT_EVENT","event","resource","type","details","format","filters","registerTokenAuditEvents","registerAdminUserAuditEvents","registerWebhookAuditEvents","registerAuthAuditEvents"],"mappings":";;;;;;;;;;;;;;;;;;AAmBA,MAAMA,UAAAA,GAAa,IAAA;AACjB,IAAA,MAAMC,OAAAA,GAAU;AACdC,QAAAA,QAAAA;AACAC,QAAAA,SAAAA;AACAC,QAAAA,OAAAA;QACAC,YAAAA,EAAc;;YAEZ,WAAA,EAAaC,QAAAA;AACb,YAAA,GAAGC;AACL,SAAA;AACAC,QAAAA,QAAAA;AACAC,QAAAA,WAAAA;AACAC,QAAAA;AACF,KAAA;AAEA,IAAA,MAAMC,kBAAAA,GACJC,MAAAA,CAAOC,MAAM,CAACC,GAAG,CAAC,yBAAA,EAA2B,IAAA,CAAA,IAC7CF,MAAAA,CAAOG,EAAE,CAACC,QAAQ,CAACC,SAAS,CAAC,YAAA,CAAA;IAC/B,OAAO;AACL,QAAA,GAAGhB,OAAO;QACVQ,WAAAA,EAAa;AACX,YAAA,GAAGR,QAAQQ,WAAW;AACtB,YAAA,GAAIE,kBAAAA,GAAqB;gBAAE,YAAA,EAAcO;AAAoB,aAAA,GAAI;AACnE,SAAA;QACAR,MAAAA,EAAQ;AACN,YAAA,GAAGT,QAAQS,MAAM;AACjB,YAAA,GAAIC,kBAAAA,GAAqB;gBAAE,YAAA,EAAcQ;AAAgB,aAAA,GAAI;AAC/D,SAAA;AACA,QAAA,MAAMjB,QAAAA,CAAAA,CAAS,EAAEU,MAAAA,EAAAA,OAAM,EAA2B,EAAA;;YAEhD,MAAMX,OAAAA,CAAQC,QAAQ,CAAC;gBAAEU,MAAAA,EAAAA;AAAO,aAAA,CAAA;AAEhC,YAAA,IAAID,kBAAAA,EAAoB;;gBAEtBC,OAAAA,CAAOQ,GAAG,CAAC,YAAA,EAAcC,sBAAAA,CAAuBT,OAAAA,CAAAA,CAAAA;;AAEhD,gBAAA,MAAMU,qBAAqBC,+BAAAA,CAAgCX,OAAAA,CAAAA;gBAC3DA,OAAAA,CAAOQ,GAAG,CAAC,sBAAA,EAAwBE,kBAAAA,CAAAA;AAEnCA,gBAAAA,kBAAAA,CAAmBE,aAAa,CAC9BC,sBAAAA,EACA,CAACC,SAAkC;wBACjCC,QAAAA,EAAU;4BAAEC,IAAAA,EAAM;AAAY,yBAAA;wBAC9BC,OAAAA,EAAS;4BAAEC,MAAAA,EAAQ,KAAA;AAAOC,4BAAAA,OAAAA,EAASL,OAAOK,OAAAA,IAAW;AAAK;qBAC5D,CAAA,CAAA;gBAGFC,wBAAAA,CAAyBV,kBAAAA,CAAAA;gBACzBW,4BAAAA,CAA6BX,kBAAAA,CAAAA;gBAC7BY,0BAAAA,CAA2BZ,kBAAAA,CAAAA;gBAC3Ba,uBAAAA,CAAwBb,kBAAAA,CAAAA;AAExB,gBAAA,MAAMA,mBAAmBpB,QAAQ,EAAA;AACnC,YAAA;AACF,QAAA,CAAA;AACA,QAAA,MAAME,OAAAA,CAAAA,CAAQ,EAAEQ,MAAAA,EAAAA,OAAM,EAA2B,EAAA;AAC/C,YAAA,IAAID,kBAAAA,EAAoB;gBACtBC,OAAAA,CAAOE,GAAG,CAAC,sBAAA,CAAA,CAAwBV,OAAO,EAAA;AAC5C,YAAA;AACA,YAAA,MAAMH,QAAQG,OAAO,EAAA;AACvB,QAAA;AACF,KAAA;AACF;;;;"}
@@ -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;;;;"}