@strapi/admin 5.0.0-beta.8 → 5.0.0-beta.9
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.
- package/dist/admin/{ApplicationInfoPage-y-FX7oPO.mjs → ApplicationInfoPage-6PD2owY8.mjs} +2 -2
- package/dist/admin/{ApplicationInfoPage-y-FX7oPO.mjs.map → ApplicationInfoPage-6PD2owY8.mjs.map} +1 -1
- package/dist/admin/{ApplicationInfoPage-FlIVu3WL.js → ApplicationInfoPage-S18loXTF.js} +2 -2
- package/dist/admin/{ApplicationInfoPage-FlIVu3WL.js.map → ApplicationInfoPage-S18loXTF.js.map} +1 -1
- package/dist/admin/{AuthResponse-6oCac46I.js → AuthResponse-EiDRhJY8.js} +2 -2
- package/dist/admin/AuthResponse-EiDRhJY8.js.map +1 -0
- package/dist/admin/{AuthResponse-TKtSIvEM.mjs → AuthResponse-Y4lblDuD.mjs} +2 -2
- package/dist/admin/AuthResponse-Y4lblDuD.mjs.map +1 -0
- package/dist/admin/{AuthenticatedLayout-QwEem8GL.js → AuthenticatedLayout-MDNNJRPg.js} +10 -10
- package/dist/admin/{AuthenticatedLayout-QwEem8GL.js.map → AuthenticatedLayout-MDNNJRPg.js.map} +1 -1
- package/dist/admin/{AuthenticatedLayout-qx1Lyy4q.mjs → AuthenticatedLayout-gOaUXjO8.mjs} +10 -10
- package/dist/admin/{AuthenticatedLayout-qx1Lyy4q.mjs.map → AuthenticatedLayout-gOaUXjO8.mjs.map} +1 -1
- package/dist/admin/{CreatePage-peOfskFg.js → CreatePage-5V60DKB0.js} +3 -3
- package/dist/admin/{CreatePage-peOfskFg.js.map → CreatePage-5V60DKB0.js.map} +1 -1
- package/dist/admin/{CreatePage-4tMY0ik1.mjs → CreatePage-GD7KENsP.mjs} +2 -2
- package/dist/admin/{CreatePage-4tMY0ik1.mjs.map → CreatePage-GD7KENsP.mjs.map} +1 -1
- package/dist/admin/{CreatePage-4TW2khkB.js → CreatePage-Z_y-A5xj.js} +2 -2
- package/dist/admin/{CreatePage-4TW2khkB.js.map → CreatePage-Z_y-A5xj.js.map} +1 -1
- package/dist/admin/{CreatePage-537fJDEU.mjs → CreatePage-puzZjQXr.mjs} +3 -3
- package/dist/admin/{CreatePage-537fJDEU.mjs.map → CreatePage-puzZjQXr.mjs.map} +1 -1
- package/dist/admin/{CreateView-Ni2CgUVr.js → CreateView-5V271zBl.js} +2 -2
- package/dist/admin/{CreateView-Ni2CgUVr.js.map → CreateView-5V271zBl.js.map} +1 -1
- package/dist/admin/{CreateView-AaD01TxO.mjs → CreateView-EjqRVjU_.mjs} +2 -2
- package/dist/admin/{CreateView-AaD01TxO.mjs.map → CreateView-EjqRVjU_.mjs.map} +1 -1
- package/dist/admin/{CreateView-uK14O_jU.js → CreateView-VYprogwB.js} +2 -2
- package/dist/admin/{CreateView-uK14O_jU.js.map → CreateView-VYprogwB.js.map} +1 -1
- package/dist/admin/{CreateView-EfGicMHg.mjs → CreateView-jM_w7R83.mjs} +2 -2
- package/dist/admin/{CreateView-EfGicMHg.mjs.map → CreateView-jM_w7R83.mjs.map} +1 -1
- package/dist/admin/{EditPage-g0VOXyKS.mjs → EditPage-8_dXc9y1.mjs} +4 -4
- package/dist/admin/{EditPage-g0VOXyKS.mjs.map → EditPage-8_dXc9y1.mjs.map} +1 -1
- package/dist/admin/{EditPage-15aToLph.mjs → EditPage-8fk5JEO7.mjs} +4 -4
- package/dist/admin/{EditPage-15aToLph.mjs.map → EditPage-8fk5JEO7.mjs.map} +1 -1
- package/dist/admin/{EditPage-z7pM9PD2.js → EditPage-HsLjcfgK.js} +4 -4
- package/dist/admin/{EditPage-z7pM9PD2.js.map → EditPage-HsLjcfgK.js.map} +1 -1
- package/dist/admin/{EditPage-Il4eROQZ.mjs → EditPage-W_qlhF-2.mjs} +5 -5
- package/dist/admin/{EditPage-Il4eROQZ.mjs.map → EditPage-W_qlhF-2.mjs.map} +1 -1
- package/dist/admin/{EditPage-cmzfgdc5.js → EditPage-WuJtih1X.js} +4 -4
- package/dist/admin/{EditPage-cmzfgdc5.js.map → EditPage-WuJtih1X.js.map} +1 -1
- package/dist/admin/{EditPage-SrUqHo-J.js → EditPage-vRwS2OJZ.js} +5 -5
- package/dist/admin/{EditPage-SrUqHo-J.js.map → EditPage-vRwS2OJZ.js.map} +1 -1
- package/dist/admin/{EditView-NOjzvG4n.mjs → EditView-Cac025JW.mjs} +3 -3
- package/dist/admin/{EditView-NOjzvG4n.mjs.map → EditView-Cac025JW.mjs.map} +1 -1
- package/dist/admin/{EditView-gJfIIjvG.js → EditView-lhhZAQtN.js} +3 -3
- package/dist/admin/{EditView-gJfIIjvG.js.map → EditView-lhhZAQtN.js.map} +1 -1
- package/dist/admin/{EditViewPage-KEF7ROrG.js → EditViewPage-Q7N1TLU9.js} +3 -3
- package/dist/admin/{EditViewPage-KEF7ROrG.js.map → EditViewPage-Q7N1TLU9.js.map} +1 -1
- package/dist/admin/{EditViewPage-c3QrE1Hr.mjs → EditViewPage-f56oKqQ-.mjs} +3 -3
- package/dist/admin/{EditViewPage-c3QrE1Hr.mjs.map → EditViewPage-f56oKqQ-.mjs.map} +1 -1
- package/dist/admin/{EventsTable-x0tiLQ21.mjs → EventsTable-duSraBTj.mjs} +2 -2
- package/dist/admin/{EventsTable-x0tiLQ21.mjs.map → EventsTable-duSraBTj.mjs.map} +1 -1
- package/dist/admin/{EventsTable-WB2pMyjf.js → EventsTable-y6XT7dVi.js} +2 -2
- package/dist/admin/{EventsTable-WB2pMyjf.js.map → EventsTable-y6XT7dVi.js.map} +1 -1
- package/dist/admin/{HomePage-eU782NVl.js → HomePage-4Hk9puW_.js} +3 -3
- package/dist/admin/{HomePage-eU782NVl.js.map → HomePage-4Hk9puW_.js.map} +1 -1
- package/dist/admin/{HomePage-t-i4SXRB.mjs → HomePage-UTLFs-4n.mjs} +2 -2
- package/dist/admin/{HomePage-t-i4SXRB.mjs.map → HomePage-UTLFs-4n.mjs.map} +1 -1
- package/dist/admin/{HomePage-uzU2Sfu_.mjs → HomePage-d4h0KEnw.mjs} +3 -3
- package/dist/admin/{HomePage-uzU2Sfu_.mjs.map → HomePage-d4h0KEnw.mjs.map} +1 -1
- package/dist/admin/{HomePage-_HRMXYSc.js → HomePage-vTms2gld.js} +2 -2
- package/dist/admin/{HomePage-_HRMXYSc.js.map → HomePage-vTms2gld.js.map} +1 -1
- package/dist/admin/{InstalledPluginsPage-gga_OMMI.js → InstalledPluginsPage-9ooKCsS7.js} +2 -2
- package/dist/admin/{InstalledPluginsPage-gga_OMMI.js.map → InstalledPluginsPage-9ooKCsS7.js.map} +1 -1
- package/dist/admin/{InstalledPluginsPage-j8w6fibY.mjs → InstalledPluginsPage-nCdAsAAu.mjs} +2 -2
- package/dist/admin/{InstalledPluginsPage-j8w6fibY.mjs.map → InstalledPluginsPage-nCdAsAAu.mjs.map} +1 -1
- package/dist/admin/{Layout-mm5FttWk.mjs → Layout-Ax9QtxH1.mjs} +3 -3
- package/dist/admin/{Layout-mm5FttWk.mjs.map → Layout-Ax9QtxH1.mjs.map} +1 -1
- package/dist/admin/{Layout-6QqRGC19.js → Layout-Bmmqv9h6.js} +3 -3
- package/dist/admin/{Layout-6QqRGC19.js.map → Layout-Bmmqv9h6.js.map} +1 -1
- package/dist/admin/{ListPage-Id9VZhfe.js → ListPage-10_h7FUt.js} +5 -5
- package/dist/admin/{ListPage-Id9VZhfe.js.map → ListPage-10_h7FUt.js.map} +1 -1
- package/dist/admin/{ListPage-hJ6Ynuzs.mjs → ListPage-4kGSO2Ri.mjs} +5 -5
- package/dist/admin/{ListPage-hJ6Ynuzs.mjs.map → ListPage-4kGSO2Ri.mjs.map} +1 -1
- package/dist/admin/{ListPage-R1VIjb_K.js → ListPage-4n-Xb2aE.js} +2 -2
- package/dist/admin/{ListPage-R1VIjb_K.js.map → ListPage-4n-Xb2aE.js.map} +1 -1
- package/dist/admin/{ListPage-kdascM3g.js → ListPage-4nzagne8.js} +3 -3
- package/dist/admin/{ListPage-kdascM3g.js.map → ListPage-4nzagne8.js.map} +1 -1
- package/dist/admin/{ListPage-91B_ZBgU.mjs → ListPage-EPIYY3Uf.mjs} +3 -3
- package/dist/admin/{ListPage-91B_ZBgU.mjs.map → ListPage-EPIYY3Uf.mjs.map} +1 -1
- package/dist/admin/{ListPage-qccI1KJZ.js → ListPage-IgkmnCSY.js} +3 -3
- package/dist/admin/{ListPage-qccI1KJZ.js.map → ListPage-IgkmnCSY.js.map} +1 -1
- package/dist/admin/{ListPage-ver_Z86B.mjs → ListPage-OE9xQffQ.mjs} +2 -2
- package/dist/admin/{ListPage-ver_Z86B.mjs.map → ListPage-OE9xQffQ.mjs.map} +1 -1
- package/dist/admin/{ListPage-qnRnNdZB.js → ListPage-TWLqkRt6.js} +2 -2
- package/dist/admin/{ListPage-qnRnNdZB.js.map → ListPage-TWLqkRt6.js.map} +1 -1
- package/dist/admin/{ListPage--SLZfVEu.mjs → ListPage-VGqEsiEA.mjs} +3 -3
- package/dist/admin/{ListPage--SLZfVEu.mjs.map → ListPage-VGqEsiEA.mjs.map} +1 -1
- package/dist/admin/{ListPage-COfc9Nb2.mjs → ListPage-gbCO5Otz.mjs} +2 -2
- package/dist/admin/{ListPage-COfc9Nb2.mjs.map → ListPage-gbCO5Otz.mjs.map} +1 -1
- package/dist/admin/{ListView-PXoWtVRs.mjs → ListView-Zvs5X2St.mjs} +3 -3
- package/dist/admin/{ListView-PXoWtVRs.mjs.map → ListView-Zvs5X2St.mjs.map} +1 -1
- package/dist/admin/{ListView-HFV67l_w.mjs → ListView-gKrpPLEM.mjs} +3 -3
- package/dist/admin/{ListView-HFV67l_w.mjs.map → ListView-gKrpPLEM.mjs.map} +1 -1
- package/dist/admin/{ListView-Tdz585_r.js → ListView-pT2a-fdi.js} +3 -3
- package/dist/admin/{ListView-Tdz585_r.js.map → ListView-pT2a-fdi.js.map} +1 -1
- package/dist/admin/{ListView-gOdn2Qwi.js → ListView-uHb_Hgib.js} +3 -3
- package/dist/admin/{ListView-gOdn2Qwi.js.map → ListView-uHb_Hgib.js.map} +1 -1
- package/dist/admin/{Login-uUFgaGQO.js → Login-EcSP4AMG.js} +2 -2
- package/dist/admin/{Login-uUFgaGQO.js.map → Login-EcSP4AMG.js.map} +1 -1
- package/dist/admin/{Login-227oY0SP.mjs → Login-w4BUlNaE.mjs} +2 -2
- package/dist/admin/{Login-227oY0SP.mjs.map → Login-w4BUlNaE.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-1cdMwO4L.mjs → MagicLinkEE-b9NK8XXY.mjs} +3 -3
- package/dist/admin/{MagicLinkEE-1cdMwO4L.mjs.map → MagicLinkEE-b9NK8XXY.mjs.map} +1 -1
- package/dist/admin/{MagicLinkEE-SU6DdTGf.js → MagicLinkEE-qT5OE9Pm.js} +3 -3
- package/dist/admin/{MagicLinkEE-SU6DdTGf.js.map → MagicLinkEE-qT5OE9Pm.js.map} +1 -1
- package/dist/admin/{MarketplacePage-UfmJkfaS.js → MarketplacePage-MVRrpUSk.js} +2 -2
- package/dist/admin/{MarketplacePage-UfmJkfaS.js.map → MarketplacePage-MVRrpUSk.js.map} +1 -1
- package/dist/admin/{MarketplacePage-HcA4KrZ1.mjs → MarketplacePage-oGhZBKgX.mjs} +2 -2
- package/dist/admin/{MarketplacePage-HcA4KrZ1.mjs.map → MarketplacePage-oGhZBKgX.mjs.map} +1 -1
- package/dist/admin/{Permissions-kWoGUyLH.js → Permissions-kNVZVLmu.js} +2 -2
- package/dist/admin/{Permissions-kWoGUyLH.js.map → Permissions-kNVZVLmu.js.map} +1 -1
- package/dist/admin/{Permissions-ujqtV7GK.mjs → Permissions-lf6dNG4S.mjs} +2 -2
- package/dist/admin/{Permissions-ujqtV7GK.mjs.map → Permissions-lf6dNG4S.mjs.map} +1 -1
- package/dist/admin/{ProfilePage-lpqTZIyh.js → ProfilePage-ZlpnTKEF.js} +3 -3
- package/dist/admin/{ProfilePage-lpqTZIyh.js.map → ProfilePage-ZlpnTKEF.js.map} +1 -1
- package/dist/admin/{ProfilePage-s8Kfhq6I.mjs → ProfilePage-zk-Py9wt.mjs} +3 -3
- package/dist/admin/{ProfilePage-s8Kfhq6I.mjs.map → ProfilePage-zk-Py9wt.mjs.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-uu0_PoKP.js → PurchaseAuditLogs-9reb0oGz.js} +2 -2
- package/dist/admin/{PurchaseAuditLogs-uu0_PoKP.js.map → PurchaseAuditLogs-9reb0oGz.js.map} +1 -1
- package/dist/admin/{PurchaseAuditLogs-iXSAELjJ.mjs → PurchaseAuditLogs-iOYsTJA-.mjs} +2 -2
- package/dist/admin/{PurchaseAuditLogs-iXSAELjJ.mjs.map → PurchaseAuditLogs-iOYsTJA-.mjs.map} +1 -1
- package/dist/admin/{PurchaseSingleSignOn-I0AAcpBZ.js → PurchaseSingleSignOn-S3xLiiv7.js} +2 -2
- package/dist/admin/{PurchaseSingleSignOn-I0AAcpBZ.js.map → PurchaseSingleSignOn-S3xLiiv7.js.map} +1 -1
- package/dist/admin/{PurchaseSingleSignOn-A_9ts2Q3.mjs → PurchaseSingleSignOn-X629iA7K.mjs} +2 -2
- package/dist/admin/{PurchaseSingleSignOn-A_9ts2Q3.mjs.map → PurchaseSingleSignOn-X629iA7K.mjs.map} +1 -1
- package/dist/admin/{SelectRoles-7QbQhIi4.js → SelectRoles-hyiyvsCG.js} +3 -3
- package/dist/admin/{SelectRoles-7QbQhIi4.js.map → SelectRoles-hyiyvsCG.js.map} +1 -1
- package/dist/admin/{SelectRoles-neYrKAlL.mjs → SelectRoles-yM-LT458.mjs} +3 -3
- package/dist/admin/{SelectRoles-neYrKAlL.mjs.map → SelectRoles-yM-LT458.mjs.map} +1 -1
- package/dist/admin/{SingleSignOnPage-NRBGwvMB.js → SingleSignOnPage-3Mfu4dgn.js} +3 -3
- package/dist/admin/{SingleSignOnPage-NRBGwvMB.js.map → SingleSignOnPage-3Mfu4dgn.js.map} +1 -1
- package/dist/admin/{SingleSignOnPage-rOuB5fpN.mjs → SingleSignOnPage-wPZ1tqEk.mjs} +3 -3
- package/dist/admin/{SingleSignOnPage-rOuB5fpN.mjs.map → SingleSignOnPage-wPZ1tqEk.mjs.map} +1 -1
- package/dist/admin/{Table-5EMXAhBX.js → Table-N9PZc6xL.js} +2 -2
- package/dist/admin/{Table-5EMXAhBX.js.map → Table-N9PZc6xL.js.map} +1 -1
- package/dist/admin/{Table-07CnEMJB.mjs → Table-OcYvBab7.mjs} +2 -2
- package/dist/admin/{Table-07CnEMJB.mjs.map → Table-OcYvBab7.mjs.map} +1 -1
- package/dist/admin/{TokenTypeSelect-j99COf2u.js → TokenTypeSelect-dWn05yGP.js} +2 -2
- package/dist/admin/{TokenTypeSelect-j99COf2u.js.map → TokenTypeSelect-dWn05yGP.js.map} +1 -1
- package/dist/admin/{TokenTypeSelect-XHNUoyhJ.mjs → TokenTypeSelect-v6IYPaBF.mjs} +2 -2
- package/dist/admin/{TokenTypeSelect-XHNUoyhJ.mjs.map → TokenTypeSelect-v6IYPaBF.mjs.map} +1 -1
- package/dist/admin/{UseCasePage-yZtkKM9d.mjs → UseCasePage-P4AFdcDQ.mjs} +2 -2
- package/dist/admin/{UseCasePage-yZtkKM9d.mjs.map → UseCasePage-P4AFdcDQ.mjs.map} +1 -1
- package/dist/admin/{UseCasePage-g9nN8RuC.js → UseCasePage-ijq-Bur_.js} +2 -2
- package/dist/admin/{UseCasePage-g9nN8RuC.js.map → UseCasePage-ijq-Bur_.js.map} +1 -1
- package/dist/admin/{constants-N0AWjcMN.mjs → constants-Z-zrJ7Zs.mjs} +2 -2
- package/dist/admin/{constants-N0AWjcMN.mjs.map → constants-Z-zrJ7Zs.mjs.map} +1 -1
- package/dist/admin/{constants-MTKkA8PE.js → constants-sfZ2gFzJ.js} +2 -2
- package/dist/admin/{constants-MTKkA8PE.js.map → constants-sfZ2gFzJ.js.map} +1 -1
- package/dist/admin/{index-69WUS0qJ.mjs → index-EQL2s09p.mjs} +43 -40
- package/dist/admin/index-EQL2s09p.mjs.map +1 -0
- package/dist/admin/{index-UrJZyInv.js → index-duYn5r8_.js} +43 -40
- package/dist/admin/index-duYn5r8_.js.map +1 -0
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/rbac-5b9ylhpa.js.map +1 -1
- package/dist/admin/rbac-oJEkQdXG.mjs.map +1 -1
- package/dist/admin/src/features/Tracking.d.ts +1 -1
- package/dist/admin/src/index.d.ts +2 -1
- package/dist/admin/src/types/adminConfiguration.d.ts +90 -0
- package/dist/admin/{useAdminRoles-8RoYtgXn.js → useAdminRoles-2VDDweuC.js} +2 -2
- package/dist/admin/{useAdminRoles-8RoYtgXn.js.map → useAdminRoles-2VDDweuC.js.map} +1 -1
- package/dist/admin/{useAdminRoles-0epUuJHP.mjs → useAdminRoles-cq3ZckdQ.mjs} +2 -2
- package/dist/admin/{useAdminRoles-0epUuJHP.mjs.map → useAdminRoles-cq3ZckdQ.mjs.map} +1 -1
- package/dist/admin/{validation-wyU5bqks.js → validation-6PUPWFkz.js} +2 -2
- package/dist/admin/{validation-wyU5bqks.js.map → validation-6PUPWFkz.js.map} +1 -1
- package/dist/admin/{validation-TWt09i2x.mjs → validation-qUTUIssJ.mjs} +2 -2
- package/dist/admin/{validation-TWt09i2x.mjs.map → validation-qUTUIssJ.mjs.map} +1 -1
- package/dist/ee/server/index.js +514 -446
- package/dist/ee/server/index.js.map +1 -1
- package/dist/ee/server/index.mjs +514 -444
- package/dist/ee/server/index.mjs.map +1 -1
- package/dist/package.json.d.ts +8 -8
- package/dist/server/index.js +34 -35
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +34 -35
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/src/services/index.d.ts +7 -2
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/metrics.d.ts +8 -6
- package/dist/server/src/services/metrics.d.ts.map +1 -1
- package/dist/shared/contracts/webhooks.d.ts +5 -5
- package/dist/shared/contracts/webhooks.d.ts.map +1 -1
- package/package.json +8 -8
- package/strapi-server.js +1 -0
- package/dist/admin/AuthResponse-6oCac46I.js.map +0 -1
- package/dist/admin/AuthResponse-TKtSIvEM.mjs.map +0 -1
- package/dist/admin/index-69WUS0qJ.mjs.map +0 -1
- package/dist/admin/index-UrJZyInv.js.map +0 -1
package/dist/ee/server/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
const path = require("path");
|
|
4
3
|
const fse = require("fs-extra");
|
|
5
4
|
const koaStatic = require("koa-static");
|
|
@@ -7,16 +6,14 @@ const fp = require("lodash/fp");
|
|
|
7
6
|
const dateFns = require("date-fns");
|
|
8
7
|
const utils$1 = require("@strapi/utils");
|
|
9
8
|
require("@strapi/types");
|
|
10
|
-
const localProvider = require("@strapi/provider-audit-logs-local");
|
|
11
|
-
const nodeSchedule = require("node-schedule");
|
|
12
9
|
const _ = require("lodash");
|
|
13
10
|
const passportLocal = require("passport-local");
|
|
14
11
|
const passport$2 = require("koa-passport");
|
|
15
12
|
const compose = require("koa-compose");
|
|
13
|
+
const nodeSchedule = require("node-schedule");
|
|
16
14
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
17
15
|
const fse__default = /* @__PURE__ */ _interopDefault(fse);
|
|
18
16
|
const koaStatic__default = /* @__PURE__ */ _interopDefault(koaStatic);
|
|
19
|
-
const localProvider__default = /* @__PURE__ */ _interopDefault(localProvider);
|
|
20
17
|
const ___default = /* @__PURE__ */ _interopDefault(_);
|
|
21
18
|
const passport__default = /* @__PURE__ */ _interopDefault(passport$2);
|
|
22
19
|
const compose__default = /* @__PURE__ */ _interopDefault(compose);
|
|
@@ -233,203 +230,9 @@ const executeCERegister = ({ strapi: strapi2 }) => {
|
|
|
233
230
|
registerAdminPanelRoute({ strapi: strapi2 });
|
|
234
231
|
}
|
|
235
232
|
};
|
|
236
|
-
async function migrateAuditLogsTable({ oldContentTypes, contentTypes }) {
|
|
237
|
-
const oldName = oldContentTypes?.["admin::audit-log"]?.collectionName;
|
|
238
|
-
const newName = contentTypes["admin::audit-log"]?.collectionName;
|
|
239
|
-
const hasRenamedAuditLogsTable = oldName === "audit_logs" && newName === "strapi_audit_logs";
|
|
240
|
-
if (!hasRenamedAuditLogsTable) {
|
|
241
|
-
return;
|
|
242
|
-
}
|
|
243
|
-
const hasAuditLogsTable = await strapi.db.getSchemaConnection().hasTable("audit_logs");
|
|
244
|
-
const hasLinkTable = await strapi.db.getSchemaConnection().hasTable("audit_logs_user_links");
|
|
245
|
-
if (!hasAuditLogsTable || !hasLinkTable) {
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
const auditLogsColumnInfo = await strapi.db.connection("audit_logs").columnInfo();
|
|
249
|
-
const linkColumnInfo = await strapi.db.connection("audit_logs_user_links").columnInfo();
|
|
250
|
-
if (!auditLogsColumnInfo.action || !auditLogsColumnInfo.date || !auditLogsColumnInfo.payload || !linkColumnInfo.audit_log_id || !linkColumnInfo.user_id) {
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
await strapi.db.getSchemaConnection().renameTable("audit_logs", "strapi_audit_logs");
|
|
254
|
-
await strapi.db.getSchemaConnection().renameTable("audit_logs_user_links", "strapi_audit_logs_user_links");
|
|
255
|
-
}
|
|
256
|
-
const DEFAULT_RETENTION_DAYS = 90;
|
|
257
|
-
const defaultEvents = [
|
|
258
|
-
"entry.create",
|
|
259
|
-
"entry.update",
|
|
260
|
-
"entry.delete",
|
|
261
|
-
"entry.publish",
|
|
262
|
-
"entry.unpublish",
|
|
263
|
-
"media.create",
|
|
264
|
-
"media.update",
|
|
265
|
-
"media.delete",
|
|
266
|
-
"media-folder.create",
|
|
267
|
-
"media-folder.update",
|
|
268
|
-
"media-folder.delete",
|
|
269
|
-
"user.create",
|
|
270
|
-
"user.update",
|
|
271
|
-
"user.delete",
|
|
272
|
-
"admin.auth.success",
|
|
273
|
-
"admin.logout",
|
|
274
|
-
"content-type.create",
|
|
275
|
-
"content-type.update",
|
|
276
|
-
"content-type.delete",
|
|
277
|
-
"component.create",
|
|
278
|
-
"component.update",
|
|
279
|
-
"component.delete",
|
|
280
|
-
"role.create",
|
|
281
|
-
"role.update",
|
|
282
|
-
"role.delete",
|
|
283
|
-
"permission.create",
|
|
284
|
-
"permission.update",
|
|
285
|
-
"permission.delete"
|
|
286
|
-
];
|
|
287
|
-
const getSanitizedUser = (user2) => {
|
|
288
|
-
let displayName = user2.email;
|
|
289
|
-
if (user2.username) {
|
|
290
|
-
displayName = user2.username;
|
|
291
|
-
} else if (user2.firstname && user2.lastname) {
|
|
292
|
-
displayName = `${user2.firstname} ${user2.lastname}`;
|
|
293
|
-
}
|
|
294
|
-
return {
|
|
295
|
-
id: user2.id,
|
|
296
|
-
email: user2.email,
|
|
297
|
-
displayName
|
|
298
|
-
};
|
|
299
|
-
};
|
|
300
|
-
const getEventMap = (defaultEvents2) => {
|
|
301
|
-
const getDefaultPayload = (...args) => args[0];
|
|
302
|
-
return defaultEvents2.reduce((acc, event) => {
|
|
303
|
-
acc[event] = getDefaultPayload;
|
|
304
|
-
return acc;
|
|
305
|
-
}, {});
|
|
306
|
-
};
|
|
307
|
-
const getRetentionDays = (strapi2) => {
|
|
308
|
-
const licenseRetentionDays = strapi2.ee.features.get("audit-logs")?.options.retentionDays;
|
|
309
|
-
const userRetentionDays = strapi2.config.get("admin.auditLogs.retentionDays");
|
|
310
|
-
if (licenseRetentionDays == null) {
|
|
311
|
-
return userRetentionDays ?? DEFAULT_RETENTION_DAYS;
|
|
312
|
-
}
|
|
313
|
-
if (userRetentionDays && userRetentionDays < licenseRetentionDays) {
|
|
314
|
-
return userRetentionDays;
|
|
315
|
-
}
|
|
316
|
-
return licenseRetentionDays;
|
|
317
|
-
};
|
|
318
|
-
const createAuditLogsService = (strapi2) => {
|
|
319
|
-
const state = {};
|
|
320
|
-
const eventMap = getEventMap(defaultEvents);
|
|
321
|
-
const processEvent = (name2, ...args) => {
|
|
322
|
-
const requestState = strapi2.requestContext.get()?.state;
|
|
323
|
-
const isUsingAdminAuth = requestState?.auth?.strategy.name === "admin";
|
|
324
|
-
const user2 = requestState?.user;
|
|
325
|
-
if (!isUsingAdminAuth || !user2) {
|
|
326
|
-
return null;
|
|
327
|
-
}
|
|
328
|
-
const getPayload = eventMap[name2];
|
|
329
|
-
if (!getPayload) {
|
|
330
|
-
return null;
|
|
331
|
-
}
|
|
332
|
-
const ignoredUids = ["plugin::upload.file", "plugin::upload.folder"];
|
|
333
|
-
if (ignoredUids.includes(args[0]?.uid)) {
|
|
334
|
-
return null;
|
|
335
|
-
}
|
|
336
|
-
return {
|
|
337
|
-
action: name2,
|
|
338
|
-
date: (/* @__PURE__ */ new Date()).toISOString(),
|
|
339
|
-
payload: getPayload(...args) || {},
|
|
340
|
-
userId: user2.id
|
|
341
|
-
};
|
|
342
|
-
};
|
|
343
|
-
async function handleEvent(name2, ...args) {
|
|
344
|
-
const processedEvent = processEvent(name2, ...args);
|
|
345
|
-
if (processedEvent) {
|
|
346
|
-
await strapi2.db.transaction(({ onCommit }) => {
|
|
347
|
-
onCommit(() => state.provider.saveEvent(processedEvent));
|
|
348
|
-
});
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
return {
|
|
352
|
-
async register() {
|
|
353
|
-
if (!state.eeEnableUnsubscribe) {
|
|
354
|
-
state.eeEnableUnsubscribe = strapi2.eventHub.on("ee.enable", () => {
|
|
355
|
-
this.destroy();
|
|
356
|
-
this.register();
|
|
357
|
-
});
|
|
358
|
-
}
|
|
359
|
-
if (!state.eeUpdateUnsubscribe) {
|
|
360
|
-
state.eeUpdateUnsubscribe = strapi2.eventHub.on("ee.update", () => {
|
|
361
|
-
this.destroy();
|
|
362
|
-
this.register();
|
|
363
|
-
});
|
|
364
|
-
}
|
|
365
|
-
state.eeDisableUnsubscribe = strapi2.eventHub.on("ee.disable", () => {
|
|
366
|
-
this.destroy();
|
|
367
|
-
});
|
|
368
|
-
state.provider = await localProvider__default.default.register({ strapi: strapi2 });
|
|
369
|
-
if (!strapi2.ee.features.isEnabled("audit-logs")) {
|
|
370
|
-
return this;
|
|
371
|
-
}
|
|
372
|
-
state.eventHubUnsubscribe = strapi2.eventHub.subscribe(handleEvent.bind(this));
|
|
373
|
-
const retentionDays = getRetentionDays(strapi2);
|
|
374
|
-
state.deleteExpiredJob = nodeSchedule.scheduleJob("0 0 * * *", () => {
|
|
375
|
-
const expirationDate = new Date(Date.now() - retentionDays * 24 * 60 * 60 * 1e3);
|
|
376
|
-
state.provider.deleteExpiredEvents(expirationDate);
|
|
377
|
-
});
|
|
378
|
-
return this;
|
|
379
|
-
},
|
|
380
|
-
async findMany(query) {
|
|
381
|
-
const { results, pagination } = await state.provider.findMany(query);
|
|
382
|
-
const sanitizedResults = results.map((result) => {
|
|
383
|
-
const { user: user2, ...rest } = result;
|
|
384
|
-
return {
|
|
385
|
-
...rest,
|
|
386
|
-
user: user2 ? getSanitizedUser(user2) : null
|
|
387
|
-
};
|
|
388
|
-
});
|
|
389
|
-
return {
|
|
390
|
-
results: sanitizedResults,
|
|
391
|
-
pagination
|
|
392
|
-
};
|
|
393
|
-
},
|
|
394
|
-
async findOne(id) {
|
|
395
|
-
const result = await state.provider.findOne(id);
|
|
396
|
-
if (!result) {
|
|
397
|
-
return null;
|
|
398
|
-
}
|
|
399
|
-
const { user: user2, ...rest } = result;
|
|
400
|
-
return {
|
|
401
|
-
...rest,
|
|
402
|
-
user: user2 ? getSanitizedUser(user2) : null
|
|
403
|
-
};
|
|
404
|
-
},
|
|
405
|
-
unsubscribe() {
|
|
406
|
-
if (state.eeDisableUnsubscribe) {
|
|
407
|
-
state.eeDisableUnsubscribe();
|
|
408
|
-
}
|
|
409
|
-
if (state.eventHubUnsubscribe) {
|
|
410
|
-
state.eventHubUnsubscribe();
|
|
411
|
-
}
|
|
412
|
-
if (state.deleteExpiredJob) {
|
|
413
|
-
state.deleteExpiredJob.cancel();
|
|
414
|
-
}
|
|
415
|
-
return this;
|
|
416
|
-
},
|
|
417
|
-
destroy() {
|
|
418
|
-
return this.unsubscribe();
|
|
419
|
-
}
|
|
420
|
-
};
|
|
421
|
-
};
|
|
422
233
|
const register = async ({ strapi: strapi2 }) => {
|
|
423
|
-
const auditLogsIsEnabled = strapi2.config.get("admin.auditLogs.enabled", true);
|
|
424
|
-
if (auditLogsIsEnabled) {
|
|
425
|
-
strapi2.hook("strapi::content-types.beforeSync").register(migrateAuditLogsTable);
|
|
426
|
-
const auditLogsService = createAuditLogsService(strapi2);
|
|
427
|
-
strapi2.add("audit-logs", auditLogsService);
|
|
428
|
-
await auditLogsService.register();
|
|
429
|
-
}
|
|
430
234
|
await executeCERegister({ strapi: strapi2 });
|
|
431
235
|
};
|
|
432
|
-
const index$3 = {};
|
|
433
236
|
const actions$1 = [
|
|
434
237
|
{
|
|
435
238
|
uid: "marketplace.read",
|
|
@@ -736,7 +539,7 @@ const executeCEBootstrap = async ({ strapi: strapi2 }) => {
|
|
|
736
539
|
await userService.displayWarningIfUsersDontHaveRole();
|
|
737
540
|
await syncAuthSettings();
|
|
738
541
|
await syncAPITokensPermissions();
|
|
739
|
-
getService$1("metrics").sendUpdateProjectInformation(strapi2);
|
|
542
|
+
await getService$1("metrics").sendUpdateProjectInformation(strapi2);
|
|
740
543
|
getService$1("metrics").startCron(strapi2);
|
|
741
544
|
apiTokenService.checkSaltIsDefined();
|
|
742
545
|
transferService.token.checkSaltIsDefined();
|
|
@@ -834,222 +637,78 @@ const executeCEDestroy = async () => {
|
|
|
834
637
|
await actionProvider.clear();
|
|
835
638
|
};
|
|
836
639
|
const destroy = async ({ strapi: strapi2 }) => {
|
|
837
|
-
if (strapi2.ee.features.isEnabled("audit-logs")) {
|
|
838
|
-
strapi2.get("audit-logs").destroy();
|
|
839
|
-
}
|
|
840
640
|
await executeCEDestroy();
|
|
841
641
|
};
|
|
842
|
-
const
|
|
843
|
-
|
|
844
|
-
|
|
642
|
+
const adminContentTypes = {};
|
|
643
|
+
const isSsoLocked = async (user2) => {
|
|
644
|
+
if (!strapi.ee.features.isEnabled("sso")) {
|
|
645
|
+
return false;
|
|
845
646
|
}
|
|
846
|
-
|
|
647
|
+
if (!user2) {
|
|
648
|
+
throw new Error("Missing user object");
|
|
649
|
+
}
|
|
650
|
+
const adminStore = await strapi.store({ type: "core", name: "admin" });
|
|
651
|
+
const { providers } = await adminStore.get({ key: "auth" });
|
|
652
|
+
const lockedRoles = providers.ssoLockedRoles ?? [];
|
|
653
|
+
if (fp.isEmpty(lockedRoles)) {
|
|
654
|
+
return false;
|
|
655
|
+
}
|
|
656
|
+
const roles2 = (
|
|
657
|
+
// If the roles are pre-loaded for the given user, then use them
|
|
658
|
+
user2.roles ?? // Otherwise, try to load the role based on the given user ID
|
|
659
|
+
await strapi.db.query("admin::user").load(user2, "roles", { roles: { fields: ["id"] } }) ?? // If the query fails somehow, default to an empty array
|
|
660
|
+
[]
|
|
661
|
+
);
|
|
662
|
+
const isLocked = lockedRoles.some(
|
|
663
|
+
(lockedId) => (
|
|
664
|
+
// lockedRoles will be a string to avoid issues with frontend and bigints
|
|
665
|
+
roles2.some((role2) => lockedId === role2.id.toString())
|
|
666
|
+
)
|
|
667
|
+
);
|
|
668
|
+
return isLocked;
|
|
847
669
|
};
|
|
848
|
-
const
|
|
849
|
-
|
|
850
|
-
|
|
670
|
+
const { ApplicationError: ApplicationError$2 } = utils$1.errors;
|
|
671
|
+
const forgotPassword = async ({ email: email2 } = {}) => {
|
|
672
|
+
const user2 = await strapi.db.query("admin::user").findOne({ where: { email: email2, isActive: true } });
|
|
673
|
+
if (!user2 || await isSsoLocked(user2)) {
|
|
674
|
+
return;
|
|
675
|
+
}
|
|
676
|
+
const resetPasswordToken = getService("token").createToken();
|
|
677
|
+
await getService("user").updateById(user2.id, { resetPasswordToken });
|
|
678
|
+
const url = `${strapi.config.get(
|
|
679
|
+
"admin.absoluteUrl"
|
|
680
|
+
)}/auth/reset-password?code=${resetPasswordToken}`;
|
|
681
|
+
return strapi.plugin("email").service("email").sendTemplatedEmail(
|
|
851
682
|
{
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
config: {
|
|
856
|
-
middlewares: [enableFeatureMiddleware("sso")],
|
|
857
|
-
auth: false
|
|
858
|
-
}
|
|
683
|
+
to: user2.email,
|
|
684
|
+
from: strapi.config.get("admin.forgotPassword.from"),
|
|
685
|
+
replyTo: strapi.config.get("admin.forgotPassword.replyTo")
|
|
859
686
|
},
|
|
687
|
+
strapi.config.get("admin.forgotPassword.emailTemplate"),
|
|
860
688
|
{
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
policies: [
|
|
885
|
-
"admin::isAuthenticatedAdmin",
|
|
886
|
-
{ name: "admin::hasPermissions", config: { actions: ["admin::provider-login.read"] } }
|
|
887
|
-
]
|
|
888
|
-
}
|
|
889
|
-
},
|
|
890
|
-
{
|
|
891
|
-
method: "PUT",
|
|
892
|
-
path: "/providers/options",
|
|
893
|
-
handler: "authentication.updateProviderLoginOptions",
|
|
894
|
-
config: {
|
|
895
|
-
middlewares: [enableFeatureMiddleware("sso")],
|
|
896
|
-
policies: [
|
|
897
|
-
"admin::isAuthenticatedAdmin",
|
|
898
|
-
{ name: "admin::hasPermissions", config: { actions: ["admin::provider-login.update"] } }
|
|
899
|
-
]
|
|
900
|
-
}
|
|
901
|
-
},
|
|
902
|
-
{
|
|
903
|
-
method: "GET",
|
|
904
|
-
path: "/providers/isSSOLocked",
|
|
905
|
-
handler: "user.isSSOLocked",
|
|
906
|
-
config: {
|
|
907
|
-
middlewares: [enableFeatureMiddleware("sso")],
|
|
908
|
-
policies: ["admin::isAuthenticatedAdmin"]
|
|
909
|
-
}
|
|
910
|
-
}
|
|
911
|
-
]
|
|
912
|
-
};
|
|
913
|
-
const licenseLimit = {
|
|
914
|
-
type: "admin",
|
|
915
|
-
routes: [
|
|
916
|
-
// License limit infos
|
|
917
|
-
{
|
|
918
|
-
method: "GET",
|
|
919
|
-
path: "/license-limit-information",
|
|
920
|
-
handler: "admin.licenseLimitInformation",
|
|
921
|
-
config: {
|
|
922
|
-
policies: [
|
|
923
|
-
"admin::isAuthenticatedAdmin",
|
|
924
|
-
{
|
|
925
|
-
name: "admin::hasPermissions",
|
|
926
|
-
config: {
|
|
927
|
-
actions: [
|
|
928
|
-
"admin::users.create",
|
|
929
|
-
"admin::users.read",
|
|
930
|
-
"admin::users.update",
|
|
931
|
-
"admin::users.delete"
|
|
932
|
-
]
|
|
933
|
-
}
|
|
934
|
-
}
|
|
935
|
-
]
|
|
936
|
-
}
|
|
937
|
-
}
|
|
938
|
-
]
|
|
939
|
-
};
|
|
940
|
-
const auditLogs$1 = {
|
|
941
|
-
type: "admin",
|
|
942
|
-
routes: [
|
|
943
|
-
{
|
|
944
|
-
method: "GET",
|
|
945
|
-
path: "/audit-logs",
|
|
946
|
-
handler: "auditLogs.findMany",
|
|
947
|
-
config: {
|
|
948
|
-
middlewares: [enableFeatureMiddleware("audit-logs")],
|
|
949
|
-
policies: [
|
|
950
|
-
"admin::isAuthenticatedAdmin",
|
|
951
|
-
{
|
|
952
|
-
name: "admin::hasPermissions",
|
|
953
|
-
config: {
|
|
954
|
-
actions: ["admin::audit-logs.read"]
|
|
955
|
-
}
|
|
956
|
-
}
|
|
957
|
-
]
|
|
958
|
-
}
|
|
959
|
-
},
|
|
960
|
-
{
|
|
961
|
-
method: "GET",
|
|
962
|
-
path: "/audit-logs/:id",
|
|
963
|
-
handler: "auditLogs.findOne",
|
|
964
|
-
config: {
|
|
965
|
-
middlewares: [enableFeatureMiddleware("audit-logs")],
|
|
966
|
-
policies: [
|
|
967
|
-
"admin::isAuthenticatedAdmin",
|
|
968
|
-
{
|
|
969
|
-
name: "admin::hasPermissions",
|
|
970
|
-
config: {
|
|
971
|
-
actions: ["admin::audit-logs.read"]
|
|
972
|
-
}
|
|
973
|
-
}
|
|
974
|
-
]
|
|
975
|
-
}
|
|
976
|
-
}
|
|
977
|
-
]
|
|
978
|
-
};
|
|
979
|
-
const index$2 = {
|
|
980
|
-
sso: sso$1,
|
|
981
|
-
"license-limit": licenseLimit,
|
|
982
|
-
"audit-logs": auditLogs$1
|
|
983
|
-
};
|
|
984
|
-
const isSsoLocked = async (user2) => {
|
|
985
|
-
if (!strapi.ee.features.isEnabled("sso")) {
|
|
986
|
-
return false;
|
|
987
|
-
}
|
|
988
|
-
if (!user2) {
|
|
989
|
-
throw new Error("Missing user object");
|
|
990
|
-
}
|
|
991
|
-
const adminStore = await strapi.store({ type: "core", name: "admin" });
|
|
992
|
-
const { providers } = await adminStore.get({ key: "auth" });
|
|
993
|
-
const lockedRoles = providers.ssoLockedRoles ?? [];
|
|
994
|
-
if (fp.isEmpty(lockedRoles)) {
|
|
995
|
-
return false;
|
|
996
|
-
}
|
|
997
|
-
const roles2 = (
|
|
998
|
-
// If the roles are pre-loaded for the given user, then use them
|
|
999
|
-
user2.roles ?? // Otherwise, try to load the role based on the given user ID
|
|
1000
|
-
await strapi.db.query("admin::user").load(user2, "roles", { roles: { fields: ["id"] } }) ?? // If the query fails somehow, default to an empty array
|
|
1001
|
-
[]
|
|
1002
|
-
);
|
|
1003
|
-
const isLocked = lockedRoles.some(
|
|
1004
|
-
(lockedId) => (
|
|
1005
|
-
// lockedRoles will be a string to avoid issues with frontend and bigints
|
|
1006
|
-
roles2.some((role2) => lockedId === role2.id.toString())
|
|
1007
|
-
)
|
|
1008
|
-
);
|
|
1009
|
-
return isLocked;
|
|
1010
|
-
};
|
|
1011
|
-
const { ApplicationError: ApplicationError$2 } = utils$1.errors;
|
|
1012
|
-
const forgotPassword = async ({ email: email2 } = {}) => {
|
|
1013
|
-
const user2 = await strapi.db.query("admin::user").findOne({ where: { email: email2, isActive: true } });
|
|
1014
|
-
if (!user2 || await isSsoLocked(user2)) {
|
|
1015
|
-
return;
|
|
1016
|
-
}
|
|
1017
|
-
const resetPasswordToken = getService("token").createToken();
|
|
1018
|
-
await getService("user").updateById(user2.id, { resetPasswordToken });
|
|
1019
|
-
const url = `${strapi.config.get(
|
|
1020
|
-
"admin.absoluteUrl"
|
|
1021
|
-
)}/auth/reset-password?code=${resetPasswordToken}`;
|
|
1022
|
-
return strapi.plugin("email").service("email").sendTemplatedEmail(
|
|
1023
|
-
{
|
|
1024
|
-
to: user2.email,
|
|
1025
|
-
from: strapi.config.get("admin.forgotPassword.from"),
|
|
1026
|
-
replyTo: strapi.config.get("admin.forgotPassword.replyTo")
|
|
1027
|
-
},
|
|
1028
|
-
strapi.config.get("admin.forgotPassword.emailTemplate"),
|
|
1029
|
-
{
|
|
1030
|
-
url,
|
|
1031
|
-
user: ___default.default.pick(user2, ["email", "firstname", "lastname", "username"])
|
|
1032
|
-
}
|
|
1033
|
-
).catch((err) => {
|
|
1034
|
-
strapi.log.error(err);
|
|
1035
|
-
});
|
|
1036
|
-
};
|
|
1037
|
-
const resetPassword = async ({ resetPasswordToken, password: password2 } = {}) => {
|
|
1038
|
-
const matchingUser = await strapi.db.query("admin::user").findOne({ where: { resetPasswordToken, isActive: true } });
|
|
1039
|
-
if (!matchingUser || await isSsoLocked(matchingUser)) {
|
|
1040
|
-
throw new ApplicationError$2();
|
|
1041
|
-
}
|
|
1042
|
-
return getService("user").updateById(matchingUser.id, {
|
|
1043
|
-
password: password2,
|
|
1044
|
-
resetPasswordToken: null
|
|
1045
|
-
});
|
|
1046
|
-
};
|
|
1047
|
-
const auth = {
|
|
1048
|
-
forgotPassword,
|
|
1049
|
-
resetPassword
|
|
1050
|
-
};
|
|
1051
|
-
const createLocalStrategy = (strapi2, middleware) => {
|
|
1052
|
-
return new passportLocal.Strategy(
|
|
689
|
+
url,
|
|
690
|
+
user: ___default.default.pick(user2, ["email", "firstname", "lastname", "username"])
|
|
691
|
+
}
|
|
692
|
+
).catch((err) => {
|
|
693
|
+
strapi.log.error(err);
|
|
694
|
+
});
|
|
695
|
+
};
|
|
696
|
+
const resetPassword = async ({ resetPasswordToken, password: password2 } = {}) => {
|
|
697
|
+
const matchingUser = await strapi.db.query("admin::user").findOne({ where: { resetPasswordToken, isActive: true } });
|
|
698
|
+
if (!matchingUser || await isSsoLocked(matchingUser)) {
|
|
699
|
+
throw new ApplicationError$2();
|
|
700
|
+
}
|
|
701
|
+
return getService("user").updateById(matchingUser.id, {
|
|
702
|
+
password: password2,
|
|
703
|
+
resetPasswordToken: null
|
|
704
|
+
});
|
|
705
|
+
};
|
|
706
|
+
const auth = {
|
|
707
|
+
forgotPassword,
|
|
708
|
+
resetPassword
|
|
709
|
+
};
|
|
710
|
+
const createLocalStrategy = (strapi2, middleware) => {
|
|
711
|
+
return new passportLocal.Strategy(
|
|
1053
712
|
{
|
|
1054
713
|
usernameField: "email",
|
|
1055
714
|
passwordField: "password",
|
|
@@ -1126,7 +785,7 @@ const syncProviderRegistryWithConfig = () => {
|
|
|
1126
785
|
const SSOAuthEventsMapper = {
|
|
1127
786
|
onSSOAutoRegistration: "admin.auth.autoRegistration"
|
|
1128
787
|
};
|
|
1129
|
-
const sso = {
|
|
788
|
+
const sso$1 = {
|
|
1130
789
|
providerRegistry,
|
|
1131
790
|
getStrategyCallbackURL,
|
|
1132
791
|
syncProviderRegistryWithConfig,
|
|
@@ -1151,15 +810,15 @@ const getPassportStrategies = () => {
|
|
|
1151
810
|
}
|
|
1152
811
|
const localStrategy = createLocalStrategy(strapi, localStrategyMiddleware);
|
|
1153
812
|
if (!strapi.isLoaded) {
|
|
1154
|
-
sso.syncProviderRegistryWithConfig();
|
|
813
|
+
sso$1.syncProviderRegistryWithConfig();
|
|
1155
814
|
}
|
|
1156
|
-
const providers = sso.providerRegistry.getAll();
|
|
815
|
+
const providers = sso$1.providerRegistry.getAll();
|
|
1157
816
|
const strategies = providers.map((provider) => provider.createStrategy(strapi));
|
|
1158
817
|
return [localStrategy, ...strategies];
|
|
1159
818
|
};
|
|
1160
819
|
const passport = {
|
|
1161
820
|
getPassportStrategies,
|
|
1162
|
-
...sso
|
|
821
|
+
...sso$1
|
|
1163
822
|
};
|
|
1164
823
|
const { ApplicationError: ApplicationError$1 } = utils$1.errors;
|
|
1165
824
|
const ssoCheckRolesIdForDeletion = async (ids) => {
|
|
@@ -1350,7 +1009,7 @@ const sendUpdateProjectInformation = async (strapi2) => {
|
|
|
1350
1009
|
if (strapi2.ee.features.isEnabled("cms-content-releases")) {
|
|
1351
1010
|
const numberOfContentReleases = await strapi2.db.query("plugin::content-releases.release").count();
|
|
1352
1011
|
const numberOfPublishedContentReleases = await strapi2.db.query("plugin::content-releases.release").count({
|
|
1353
|
-
|
|
1012
|
+
filters: { releasedAt: { $notNull: true } }
|
|
1354
1013
|
});
|
|
1355
1014
|
groupProperties = fp.assign(groupProperties, {
|
|
1356
1015
|
numberOfContentReleases,
|
|
@@ -1450,7 +1109,7 @@ const seatEnforcement = {
|
|
|
1450
1109
|
seatEnforcementWorkflow,
|
|
1451
1110
|
getDisabledUserList
|
|
1452
1111
|
};
|
|
1453
|
-
const
|
|
1112
|
+
const services = {
|
|
1454
1113
|
auth,
|
|
1455
1114
|
passport,
|
|
1456
1115
|
role: role$1,
|
|
@@ -2031,29 +1690,6 @@ const user = {
|
|
|
2031
1690
|
};
|
|
2032
1691
|
}
|
|
2033
1692
|
};
|
|
2034
|
-
const ALLOWED_SORT_STRINGS = ["action:ASC", "action:DESC", "date:ASC", "date:DESC"];
|
|
2035
|
-
const validateFindManySchema = utils$1.yup.object().shape({
|
|
2036
|
-
page: utils$1.yup.number().integer().min(1),
|
|
2037
|
-
pageSize: utils$1.yup.number().integer().min(1).max(100),
|
|
2038
|
-
sort: utils$1.yup.mixed().oneOf(ALLOWED_SORT_STRINGS)
|
|
2039
|
-
}).required();
|
|
2040
|
-
const validateFindMany = utils$1.validateYupSchema(validateFindManySchema, { strict: false });
|
|
2041
|
-
const auditLogs = {
|
|
2042
|
-
async findMany(ctx) {
|
|
2043
|
-
const { query } = ctx.request;
|
|
2044
|
-
await validateFindMany(query);
|
|
2045
|
-
const auditLogs2 = strapi.get("audit-logs");
|
|
2046
|
-
const body = await auditLogs2.findMany(query);
|
|
2047
|
-
ctx.body = body;
|
|
2048
|
-
},
|
|
2049
|
-
async findOne(ctx) {
|
|
2050
|
-
const { id } = ctx.params;
|
|
2051
|
-
const auditLogs2 = strapi.get("audit-logs");
|
|
2052
|
-
const body = await auditLogs2.findOne(id);
|
|
2053
|
-
ctx.body = body;
|
|
2054
|
-
strapi.telemetry.send("didWatchAnAuditLog");
|
|
2055
|
-
}
|
|
2056
|
-
};
|
|
2057
1693
|
const admin = {
|
|
2058
1694
|
// NOTE: Overrides CE admin controller
|
|
2059
1695
|
async getProjectType() {
|
|
@@ -2097,18 +1733,450 @@ const admin = {
|
|
|
2097
1733
|
return { data };
|
|
2098
1734
|
}
|
|
2099
1735
|
};
|
|
2100
|
-
const
|
|
1736
|
+
const controllers = {
|
|
2101
1737
|
authentication,
|
|
2102
1738
|
role,
|
|
2103
1739
|
user,
|
|
2104
|
-
auditLogs,
|
|
2105
1740
|
admin
|
|
2106
1741
|
};
|
|
2107
|
-
|
|
2108
|
-
|
|
2109
|
-
|
|
2110
|
-
|
|
2111
|
-
|
|
2112
|
-
|
|
2113
|
-
|
|
1742
|
+
const enableFeatureMiddleware = (featureName) => (ctx, next) => {
|
|
1743
|
+
if (strapi.ee.features.isEnabled(featureName)) {
|
|
1744
|
+
return next();
|
|
1745
|
+
}
|
|
1746
|
+
ctx.status = 404;
|
|
1747
|
+
};
|
|
1748
|
+
const sso = {
|
|
1749
|
+
type: "admin",
|
|
1750
|
+
routes: [
|
|
1751
|
+
{
|
|
1752
|
+
method: "GET",
|
|
1753
|
+
path: "/providers",
|
|
1754
|
+
handler: "authentication.getProviders",
|
|
1755
|
+
config: {
|
|
1756
|
+
middlewares: [enableFeatureMiddleware("sso")],
|
|
1757
|
+
auth: false
|
|
1758
|
+
}
|
|
1759
|
+
},
|
|
1760
|
+
{
|
|
1761
|
+
method: "GET",
|
|
1762
|
+
path: "/connect/:provider",
|
|
1763
|
+
handler: "authentication.providerLogin",
|
|
1764
|
+
config: {
|
|
1765
|
+
middlewares: [enableFeatureMiddleware("sso")],
|
|
1766
|
+
auth: false
|
|
1767
|
+
}
|
|
1768
|
+
},
|
|
1769
|
+
{
|
|
1770
|
+
method: "POST",
|
|
1771
|
+
path: "/connect/:provider",
|
|
1772
|
+
handler: "authentication.providerLogin",
|
|
1773
|
+
config: {
|
|
1774
|
+
middlewares: [enableFeatureMiddleware("sso")],
|
|
1775
|
+
auth: false
|
|
1776
|
+
}
|
|
1777
|
+
},
|
|
1778
|
+
{
|
|
1779
|
+
method: "GET",
|
|
1780
|
+
path: "/providers/options",
|
|
1781
|
+
handler: "authentication.getProviderLoginOptions",
|
|
1782
|
+
config: {
|
|
1783
|
+
middlewares: [enableFeatureMiddleware("sso")],
|
|
1784
|
+
policies: [
|
|
1785
|
+
"admin::isAuthenticatedAdmin",
|
|
1786
|
+
{ name: "admin::hasPermissions", config: { actions: ["admin::provider-login.read"] } }
|
|
1787
|
+
]
|
|
1788
|
+
}
|
|
1789
|
+
},
|
|
1790
|
+
{
|
|
1791
|
+
method: "PUT",
|
|
1792
|
+
path: "/providers/options",
|
|
1793
|
+
handler: "authentication.updateProviderLoginOptions",
|
|
1794
|
+
config: {
|
|
1795
|
+
middlewares: [enableFeatureMiddleware("sso")],
|
|
1796
|
+
policies: [
|
|
1797
|
+
"admin::isAuthenticatedAdmin",
|
|
1798
|
+
{ name: "admin::hasPermissions", config: { actions: ["admin::provider-login.update"] } }
|
|
1799
|
+
]
|
|
1800
|
+
}
|
|
1801
|
+
},
|
|
1802
|
+
{
|
|
1803
|
+
method: "GET",
|
|
1804
|
+
path: "/providers/isSSOLocked",
|
|
1805
|
+
handler: "user.isSSOLocked",
|
|
1806
|
+
config: {
|
|
1807
|
+
middlewares: [enableFeatureMiddleware("sso")],
|
|
1808
|
+
policies: ["admin::isAuthenticatedAdmin"]
|
|
1809
|
+
}
|
|
1810
|
+
}
|
|
1811
|
+
]
|
|
1812
|
+
};
|
|
1813
|
+
const licenseLimit = {
|
|
1814
|
+
type: "admin",
|
|
1815
|
+
routes: [
|
|
1816
|
+
// License limit infos
|
|
1817
|
+
{
|
|
1818
|
+
method: "GET",
|
|
1819
|
+
path: "/license-limit-information",
|
|
1820
|
+
handler: "admin.licenseLimitInformation",
|
|
1821
|
+
config: {
|
|
1822
|
+
policies: [
|
|
1823
|
+
"admin::isAuthenticatedAdmin",
|
|
1824
|
+
{
|
|
1825
|
+
name: "admin::hasPermissions",
|
|
1826
|
+
config: {
|
|
1827
|
+
actions: [
|
|
1828
|
+
"admin::users.create",
|
|
1829
|
+
"admin::users.read",
|
|
1830
|
+
"admin::users.update",
|
|
1831
|
+
"admin::users.delete"
|
|
1832
|
+
]
|
|
1833
|
+
}
|
|
1834
|
+
}
|
|
1835
|
+
]
|
|
1836
|
+
}
|
|
1837
|
+
}
|
|
1838
|
+
]
|
|
1839
|
+
};
|
|
1840
|
+
const routes = {
|
|
1841
|
+
sso,
|
|
1842
|
+
"license-limit": licenseLimit
|
|
1843
|
+
};
|
|
1844
|
+
const auditLogsRoutes = {
|
|
1845
|
+
type: "admin",
|
|
1846
|
+
routes: [
|
|
1847
|
+
{
|
|
1848
|
+
method: "GET",
|
|
1849
|
+
path: "/audit-logs",
|
|
1850
|
+
handler: "audit-logs.findMany",
|
|
1851
|
+
config: {
|
|
1852
|
+
middlewares: [enableFeatureMiddleware("audit-logs")],
|
|
1853
|
+
policies: [
|
|
1854
|
+
"admin::isAuthenticatedAdmin",
|
|
1855
|
+
{
|
|
1856
|
+
name: "admin::hasPermissions",
|
|
1857
|
+
config: {
|
|
1858
|
+
actions: ["admin::audit-logs.read"]
|
|
1859
|
+
}
|
|
1860
|
+
}
|
|
1861
|
+
]
|
|
1862
|
+
}
|
|
1863
|
+
},
|
|
1864
|
+
{
|
|
1865
|
+
method: "GET",
|
|
1866
|
+
path: "/audit-logs/:id",
|
|
1867
|
+
handler: "audit-logs.findOne",
|
|
1868
|
+
config: {
|
|
1869
|
+
middlewares: [enableFeatureMiddleware("audit-logs")],
|
|
1870
|
+
policies: [
|
|
1871
|
+
"admin::isAuthenticatedAdmin",
|
|
1872
|
+
{
|
|
1873
|
+
name: "admin::hasPermissions",
|
|
1874
|
+
config: {
|
|
1875
|
+
actions: ["admin::audit-logs.read"]
|
|
1876
|
+
}
|
|
1877
|
+
}
|
|
1878
|
+
]
|
|
1879
|
+
}
|
|
1880
|
+
}
|
|
1881
|
+
]
|
|
1882
|
+
};
|
|
1883
|
+
const ALLOWED_SORT_STRINGS = ["action:ASC", "action:DESC", "date:ASC", "date:DESC"];
|
|
1884
|
+
const validateFindManySchema = utils$1.yup.object().shape({
|
|
1885
|
+
page: utils$1.yup.number().integer().min(1),
|
|
1886
|
+
pageSize: utils$1.yup.number().integer().min(1).max(100),
|
|
1887
|
+
sort: utils$1.yup.mixed().oneOf(ALLOWED_SORT_STRINGS)
|
|
1888
|
+
}).required();
|
|
1889
|
+
const validateFindMany = utils$1.validateYupSchema(validateFindManySchema, { strict: false });
|
|
1890
|
+
const auditLogsController = {
|
|
1891
|
+
async findMany(ctx) {
|
|
1892
|
+
const { query } = ctx.request;
|
|
1893
|
+
await validateFindMany(query);
|
|
1894
|
+
const auditLogs = strapi.get("audit-logs");
|
|
1895
|
+
const body = await auditLogs.findMany(query);
|
|
1896
|
+
ctx.body = body;
|
|
1897
|
+
},
|
|
1898
|
+
async findOne(ctx) {
|
|
1899
|
+
const { id } = ctx.params;
|
|
1900
|
+
const auditLogs = strapi.get("audit-logs");
|
|
1901
|
+
const body = await auditLogs.findOne(id);
|
|
1902
|
+
ctx.body = body;
|
|
1903
|
+
strapi.telemetry.send("didWatchAnAuditLog");
|
|
1904
|
+
}
|
|
1905
|
+
};
|
|
1906
|
+
const getSanitizedUser = (user2) => {
|
|
1907
|
+
let displayName = user2.email;
|
|
1908
|
+
if (user2.username) {
|
|
1909
|
+
displayName = user2.username;
|
|
1910
|
+
} else if (user2.firstname && user2.lastname) {
|
|
1911
|
+
displayName = `${user2.firstname} ${user2.lastname}`;
|
|
1912
|
+
}
|
|
1913
|
+
return {
|
|
1914
|
+
id: user2.id,
|
|
1915
|
+
email: user2.email,
|
|
1916
|
+
displayName
|
|
1917
|
+
};
|
|
1918
|
+
};
|
|
1919
|
+
const createAuditLogsService = (strapi2) => {
|
|
1920
|
+
return {
|
|
1921
|
+
async saveEvent(event) {
|
|
1922
|
+
const { userId, ...rest } = event;
|
|
1923
|
+
const auditLog2 = { ...rest, user: userId };
|
|
1924
|
+
await strapi2.db?.query("admin::audit-log").create({ data: auditLog2 });
|
|
1925
|
+
return this;
|
|
1926
|
+
},
|
|
1927
|
+
async findMany(query) {
|
|
1928
|
+
const { results, pagination } = await strapi2.db?.query("admin::audit-log").findPage({
|
|
1929
|
+
populate: ["user"],
|
|
1930
|
+
select: ["action", "date", "payload"],
|
|
1931
|
+
...strapi2.get("query-params").transform("admin::audit-log", query)
|
|
1932
|
+
});
|
|
1933
|
+
const sanitizedResults = results.map((result) => {
|
|
1934
|
+
const { user: user2, ...rest } = result;
|
|
1935
|
+
return {
|
|
1936
|
+
...rest,
|
|
1937
|
+
user: user2 ? getSanitizedUser(user2) : null
|
|
1938
|
+
};
|
|
1939
|
+
});
|
|
1940
|
+
return {
|
|
1941
|
+
results: sanitizedResults,
|
|
1942
|
+
pagination
|
|
1943
|
+
};
|
|
1944
|
+
},
|
|
1945
|
+
async findOne(id) {
|
|
1946
|
+
const result = await strapi2.db?.query("admin::audit-log").findOne({
|
|
1947
|
+
where: { id },
|
|
1948
|
+
populate: ["user"],
|
|
1949
|
+
select: ["action", "date", "payload"]
|
|
1950
|
+
});
|
|
1951
|
+
if (!result) {
|
|
1952
|
+
return null;
|
|
1953
|
+
}
|
|
1954
|
+
const { user: user2, ...rest } = result;
|
|
1955
|
+
return {
|
|
1956
|
+
...rest,
|
|
1957
|
+
user: user2 ? getSanitizedUser(user2) : null
|
|
1958
|
+
};
|
|
1959
|
+
},
|
|
1960
|
+
deleteExpiredEvents(expirationDate) {
|
|
1961
|
+
return strapi2.db?.query("admin::audit-log").deleteMany({
|
|
1962
|
+
where: {
|
|
1963
|
+
date: {
|
|
1964
|
+
$lt: expirationDate.toISOString()
|
|
1965
|
+
}
|
|
1966
|
+
}
|
|
1967
|
+
});
|
|
1968
|
+
}
|
|
1969
|
+
};
|
|
1970
|
+
};
|
|
1971
|
+
const DEFAULT_RETENTION_DAYS = 90;
|
|
1972
|
+
const defaultEvents = [
|
|
1973
|
+
"entry.create",
|
|
1974
|
+
"entry.update",
|
|
1975
|
+
"entry.delete",
|
|
1976
|
+
"entry.publish",
|
|
1977
|
+
"entry.unpublish",
|
|
1978
|
+
"media.create",
|
|
1979
|
+
"media.update",
|
|
1980
|
+
"media.delete",
|
|
1981
|
+
"media-folder.create",
|
|
1982
|
+
"media-folder.update",
|
|
1983
|
+
"media-folder.delete",
|
|
1984
|
+
"user.create",
|
|
1985
|
+
"user.update",
|
|
1986
|
+
"user.delete",
|
|
1987
|
+
"admin.auth.success",
|
|
1988
|
+
"admin.logout",
|
|
1989
|
+
"content-type.create",
|
|
1990
|
+
"content-type.update",
|
|
1991
|
+
"content-type.delete",
|
|
1992
|
+
"component.create",
|
|
1993
|
+
"component.update",
|
|
1994
|
+
"component.delete",
|
|
1995
|
+
"role.create",
|
|
1996
|
+
"role.update",
|
|
1997
|
+
"role.delete",
|
|
1998
|
+
"permission.create",
|
|
1999
|
+
"permission.update",
|
|
2000
|
+
"permission.delete"
|
|
2001
|
+
];
|
|
2002
|
+
const getEventMap = (defaultEvents2) => {
|
|
2003
|
+
const getDefaultPayload = (...args) => args[0];
|
|
2004
|
+
return defaultEvents2.reduce((acc, event) => {
|
|
2005
|
+
acc[event] = getDefaultPayload;
|
|
2006
|
+
return acc;
|
|
2007
|
+
}, {});
|
|
2008
|
+
};
|
|
2009
|
+
const getRetentionDays = (strapi2) => {
|
|
2010
|
+
const featureConfig = strapi2.ee.features.get("audit-logs");
|
|
2011
|
+
const licenseRetentionDays = typeof featureConfig === "object" && featureConfig?.options.retentionDays;
|
|
2012
|
+
const userRetentionDays = strapi2.config.get("admin.auditLogs.retentionDays");
|
|
2013
|
+
if (licenseRetentionDays == null) {
|
|
2014
|
+
return userRetentionDays ?? DEFAULT_RETENTION_DAYS;
|
|
2015
|
+
}
|
|
2016
|
+
if (userRetentionDays && userRetentionDays < licenseRetentionDays) {
|
|
2017
|
+
return userRetentionDays;
|
|
2018
|
+
}
|
|
2019
|
+
return licenseRetentionDays;
|
|
2020
|
+
};
|
|
2021
|
+
const createAuditLogsLifecycleService = (strapi2) => {
|
|
2022
|
+
const state = {};
|
|
2023
|
+
const auditLogsService = strapi2.get("audit-logs");
|
|
2024
|
+
const eventMap = getEventMap(defaultEvents);
|
|
2025
|
+
const processEvent = (name2, ...args) => {
|
|
2026
|
+
const requestState = strapi2.requestContext.get()?.state;
|
|
2027
|
+
const isUsingAdminAuth = requestState?.route.info.type === "admin";
|
|
2028
|
+
const user2 = requestState?.user;
|
|
2029
|
+
if (!isUsingAdminAuth || !user2) {
|
|
2030
|
+
return null;
|
|
2031
|
+
}
|
|
2032
|
+
const getPayload = eventMap[name2];
|
|
2033
|
+
if (!getPayload) {
|
|
2034
|
+
return null;
|
|
2035
|
+
}
|
|
2036
|
+
const ignoredUids = ["plugin::upload.file", "plugin::upload.folder"];
|
|
2037
|
+
if (ignoredUids.includes(args[0]?.uid)) {
|
|
2038
|
+
return null;
|
|
2039
|
+
}
|
|
2040
|
+
return {
|
|
2041
|
+
action: name2,
|
|
2042
|
+
date: (/* @__PURE__ */ new Date()).toISOString(),
|
|
2043
|
+
payload: getPayload(...args) || {},
|
|
2044
|
+
userId: user2.id
|
|
2045
|
+
};
|
|
2046
|
+
};
|
|
2047
|
+
const handleEvent = async (name2, ...args) => {
|
|
2048
|
+
const processedEvent = processEvent(name2, ...args);
|
|
2049
|
+
if (processedEvent) {
|
|
2050
|
+
await strapi2.db.transaction(({ onCommit }) => {
|
|
2051
|
+
onCommit(() => auditLogsService.saveEvent(processedEvent));
|
|
2052
|
+
});
|
|
2053
|
+
}
|
|
2054
|
+
};
|
|
2055
|
+
return {
|
|
2056
|
+
async register() {
|
|
2057
|
+
if (!state.eeEnableUnsubscribe) {
|
|
2058
|
+
state.eeEnableUnsubscribe = strapi2.eventHub.on("ee.enable", () => {
|
|
2059
|
+
this.destroy();
|
|
2060
|
+
this.register();
|
|
2061
|
+
});
|
|
2062
|
+
}
|
|
2063
|
+
if (!state.eeUpdateUnsubscribe) {
|
|
2064
|
+
state.eeUpdateUnsubscribe = strapi2.eventHub.on("ee.update", () => {
|
|
2065
|
+
this.destroy();
|
|
2066
|
+
this.register();
|
|
2067
|
+
});
|
|
2068
|
+
}
|
|
2069
|
+
state.eeDisableUnsubscribe = strapi2.eventHub.on("ee.disable", () => {
|
|
2070
|
+
this.destroy();
|
|
2071
|
+
});
|
|
2072
|
+
if (!strapi2.ee.features.isEnabled("audit-logs")) {
|
|
2073
|
+
return this;
|
|
2074
|
+
}
|
|
2075
|
+
state.eventHubUnsubscribe = strapi2.eventHub.subscribe(handleEvent);
|
|
2076
|
+
const retentionDays = getRetentionDays(strapi2);
|
|
2077
|
+
state.deleteExpiredJob = nodeSchedule.scheduleJob("0 0 * * *", () => {
|
|
2078
|
+
const expirationDate = new Date(Date.now() - retentionDays * 24 * 60 * 60 * 1e3);
|
|
2079
|
+
auditLogsService.deleteExpiredEvents(expirationDate);
|
|
2080
|
+
});
|
|
2081
|
+
return this;
|
|
2082
|
+
},
|
|
2083
|
+
unsubscribe() {
|
|
2084
|
+
if (state.eeDisableUnsubscribe) {
|
|
2085
|
+
state.eeDisableUnsubscribe();
|
|
2086
|
+
}
|
|
2087
|
+
if (state.eventHubUnsubscribe) {
|
|
2088
|
+
state.eventHubUnsubscribe();
|
|
2089
|
+
}
|
|
2090
|
+
if (state.deleteExpiredJob) {
|
|
2091
|
+
state.deleteExpiredJob.cancel();
|
|
2092
|
+
}
|
|
2093
|
+
return this;
|
|
2094
|
+
},
|
|
2095
|
+
destroy() {
|
|
2096
|
+
return this.unsubscribe();
|
|
2097
|
+
}
|
|
2098
|
+
};
|
|
2099
|
+
};
|
|
2100
|
+
const auditLog = {
|
|
2101
|
+
schema: {
|
|
2102
|
+
kind: "collectionType",
|
|
2103
|
+
collectionName: "strapi_audit_logs",
|
|
2104
|
+
info: {
|
|
2105
|
+
singularName: "audit-log",
|
|
2106
|
+
pluralName: "audit-logs",
|
|
2107
|
+
displayName: "Audit Log"
|
|
2108
|
+
},
|
|
2109
|
+
options: {
|
|
2110
|
+
timestamps: false
|
|
2111
|
+
},
|
|
2112
|
+
pluginOptions: {
|
|
2113
|
+
"content-manager": {
|
|
2114
|
+
visible: false
|
|
2115
|
+
},
|
|
2116
|
+
"content-type-builder": {
|
|
2117
|
+
visible: false
|
|
2118
|
+
}
|
|
2119
|
+
},
|
|
2120
|
+
attributes: {
|
|
2121
|
+
action: {
|
|
2122
|
+
type: "string",
|
|
2123
|
+
required: true
|
|
2124
|
+
},
|
|
2125
|
+
date: {
|
|
2126
|
+
type: "datetime",
|
|
2127
|
+
required: true
|
|
2128
|
+
},
|
|
2129
|
+
user: {
|
|
2130
|
+
type: "relation",
|
|
2131
|
+
relation: "oneToOne",
|
|
2132
|
+
target: "admin::user"
|
|
2133
|
+
},
|
|
2134
|
+
payload: {
|
|
2135
|
+
type: "json"
|
|
2136
|
+
}
|
|
2137
|
+
}
|
|
2138
|
+
}
|
|
2139
|
+
};
|
|
2140
|
+
const getAdminEE = () => {
|
|
2141
|
+
const eeAdmin = {
|
|
2142
|
+
register,
|
|
2143
|
+
bootstrap,
|
|
2144
|
+
destroy,
|
|
2145
|
+
contentTypes: {
|
|
2146
|
+
// Always register the audit-log content type to prevent data loss
|
|
2147
|
+
"audit-log": auditLog,
|
|
2148
|
+
...adminContentTypes
|
|
2149
|
+
},
|
|
2150
|
+
services,
|
|
2151
|
+
controllers,
|
|
2152
|
+
routes
|
|
2153
|
+
};
|
|
2154
|
+
if (strapi.config.get("admin.auditLogs.enabled", true) && strapi.ee.features.isEnabled("audit-logs")) {
|
|
2155
|
+
return {
|
|
2156
|
+
...eeAdmin,
|
|
2157
|
+
controllers: {
|
|
2158
|
+
...eeAdmin.controllers,
|
|
2159
|
+
"audit-logs": auditLogsController
|
|
2160
|
+
},
|
|
2161
|
+
routes: {
|
|
2162
|
+
...eeAdmin.routes,
|
|
2163
|
+
"audit-logs": auditLogsRoutes
|
|
2164
|
+
},
|
|
2165
|
+
async register({ strapi: strapi2 }) {
|
|
2166
|
+
await eeAdmin.register({ strapi: strapi2 });
|
|
2167
|
+
strapi2.add("audit-logs", createAuditLogsService(strapi2));
|
|
2168
|
+
const auditLogsLifecycle = createAuditLogsLifecycleService(strapi2);
|
|
2169
|
+
strapi2.add("audit-logs-lifecycle", auditLogsLifecycle);
|
|
2170
|
+
await auditLogsLifecycle.register();
|
|
2171
|
+
},
|
|
2172
|
+
async destroy({ strapi: strapi2 }) {
|
|
2173
|
+
strapi2.get("audit-logs-lifecycle").destroy();
|
|
2174
|
+
await eeAdmin.destroy({ strapi: strapi2 });
|
|
2175
|
+
}
|
|
2176
|
+
};
|
|
2177
|
+
}
|
|
2178
|
+
return eeAdmin;
|
|
2179
|
+
};
|
|
2180
|
+
const index = getAdminEE();
|
|
2181
|
+
module.exports = index;
|
|
2114
2182
|
//# sourceMappingURL=index.js.map
|