@strapi/admin 5.52.3 → 5.53.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.
- package/dist/admin/admin/src/translations/en.json.js +18 -0
- package/dist/admin/admin/src/translations/en.json.js.map +1 -1
- package/dist/admin/admin/src/translations/en.json.mjs +18 -0
- package/dist/admin/admin/src/translations/en.json.mjs.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.js +118 -43
- package/dist/admin/admin/src/utils/getFetchClient.js.map +1 -1
- package/dist/admin/admin/src/utils/getFetchClient.mjs +118 -45
- package/dist/admin/admin/src/utils/getFetchClient.mjs.map +1 -1
- package/dist/admin/ee/admin/src/constants.js +6 -0
- package/dist/admin/ee/admin/src/constants.js.map +1 -1
- package/dist/admin/ee/admin/src/constants.mjs +6 -0
- package/dist/admin/ee/admin/src/constants.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js +31 -3
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs +33 -5
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/ListPage.mjs.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ExportCard.js +177 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ExportCard.js.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ExportCard.mjs +175 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ExportCard.mjs.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.js +173 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.js.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.mjs +151 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.mjs.map +1 -0
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js +10 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.js.map +1 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs +10 -1
- package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.mjs.map +1 -1
- package/dist/admin/index.js +2 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/shared/utils/audit-log-export.js +16 -0
- package/dist/admin/shared/utils/audit-log-export.js.map +1 -0
- package/dist/admin/shared/utils/audit-log-export.mjs +9 -0
- package/dist/admin/shared/utils/audit-log-export.mjs.map +1 -0
- package/dist/admin/src/utils/getFetchClient.d.ts +9 -2
- package/dist/admin/tests/store.d.ts +4 -0
- package/dist/admin/tests/utils.d.ts +4 -0
- package/dist/ee/admin/src/constants.d.ts +4 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/components/ExportCard.d.ts +10 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.d.ts +18 -0
- package/dist/ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.d.ts +9 -0
- package/dist/ee/server/src/audit-logs/controllers/audit-logs.d.ts +1 -0
- package/dist/ee/server/src/audit-logs/controllers/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/routes/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts +24 -3
- package/dist/ee/server/src/audit-logs/services/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts +8 -2
- package/dist/ee/server/src/audit-logs/services/lifecycles.d.ts.map +1 -1
- package/dist/ee/server/src/audit-logs/utils/csv.d.ts +5 -0
- package/dist/ee/server/src/audit-logs/utils/csv.d.ts.map +1 -0
- package/dist/ee/server/src/audit-logs/utils/export-token.d.ts +5 -0
- package/dist/ee/server/src/audit-logs/utils/export-token.d.ts.map +1 -0
- package/dist/ee/server/src/audit-logs/utils.d.ts +10 -0
- package/dist/ee/server/src/audit-logs/utils.d.ts.map +1 -0
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts +2 -0
- package/dist/ee/server/src/audit-logs/validation/audit-logs.d.ts.map +1 -1
- package/dist/ee/server/src/config/admin-actions.d.ts.map +1 -1
- package/dist/ee/server/src/index.d.ts +1 -0
- package/dist/ee/server/src/index.d.ts.map +1 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.js +50 -0
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.mjs +51 -1
- package/dist/server/ee/server/src/audit-logs/controllers/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.js +13 -4
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.mjs +13 -4
- package/dist/server/ee/server/src/audit-logs/routes/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.js +201 -7
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs +201 -8
- package/dist/server/ee/server/src/audit-logs/services/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js +119 -34
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs +119 -34
- package/dist/server/ee/server/src/audit-logs/services/lifecycles.mjs.map +1 -1
- package/dist/server/ee/server/src/audit-logs/utils/csv.js +33 -0
- package/dist/server/ee/server/src/audit-logs/utils/csv.js.map +1 -0
- package/dist/server/ee/server/src/audit-logs/utils/csv.mjs +29 -0
- package/dist/server/ee/server/src/audit-logs/utils/csv.mjs.map +1 -0
- package/dist/server/ee/server/src/audit-logs/utils/export-token.js +33 -0
- package/dist/server/ee/server/src/audit-logs/utils/export-token.js.map +1 -0
- package/dist/server/ee/server/src/audit-logs/utils/export-token.mjs +29 -0
- package/dist/server/ee/server/src/audit-logs/utils/export-token.mjs.map +1 -0
- package/dist/server/ee/server/src/audit-logs/utils.js +14 -0
- package/dist/server/ee/server/src/audit-logs/utils.js.map +1 -0
- package/dist/server/ee/server/src/audit-logs/utils.mjs +12 -0
- package/dist/server/ee/server/src/audit-logs/utils.mjs.map +1 -0
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.js +11 -0
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.js.map +1 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.mjs +11 -1
- package/dist/server/ee/server/src/audit-logs/validation/audit-logs.mjs.map +1 -1
- package/dist/server/ee/server/src/config/admin-actions.js +8 -0
- package/dist/server/ee/server/src/config/admin-actions.js.map +1 -1
- package/dist/server/ee/server/src/config/admin-actions.mjs +8 -0
- package/dist/server/ee/server/src/config/admin-actions.mjs.map +1 -1
- package/dist/server/ee/server/src/index.js +10 -0
- package/dist/server/ee/server/src/index.js.map +1 -1
- package/dist/server/ee/server/src/index.mjs +10 -0
- package/dist/server/ee/server/src/index.mjs.map +1 -1
- package/dist/server/shared/utils/audit-log-export.js +22 -0
- package/dist/server/shared/utils/audit-log-export.js.map +1 -0
- package/dist/server/shared/utils/audit-log-export.mjs +12 -0
- package/dist/server/shared/utils/audit-log-export.mjs.map +1 -0
- package/dist/shared/contracts/audit-logs.d.ts +15 -1
- package/dist/shared/contracts/audit-logs.d.ts.map +1 -1
- package/dist/shared/utils/audit-log-export.d.ts +9 -0
- package/dist/shared/utils/audit-log-export.d.ts.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const CSV_LINE_SEPARATOR = '\r\n';
|
|
4
|
+
const CSV_BOM = '\uFEFF';
|
|
5
|
+
const FORMULA_TRIGGER_CHARACTERS = [
|
|
6
|
+
'=',
|
|
7
|
+
'+',
|
|
8
|
+
'-',
|
|
9
|
+
'@',
|
|
10
|
+
'\t',
|
|
11
|
+
'\r'
|
|
12
|
+
];
|
|
13
|
+
const escapeCsvValue = (value)=>{
|
|
14
|
+
if (value === null || value === undefined) {
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
17
|
+
let stringValue = typeof value === 'string' ? value : String(value);
|
|
18
|
+
if (typeof value === 'string' && FORMULA_TRIGGER_CHARACTERS.includes(stringValue.charAt(0))) {
|
|
19
|
+
stringValue = `'${stringValue}`;
|
|
20
|
+
}
|
|
21
|
+
if (/[",\r\n]/.test(stringValue)) {
|
|
22
|
+
return `"${stringValue.replace(/"/g, '""')}"`;
|
|
23
|
+
}
|
|
24
|
+
return stringValue;
|
|
25
|
+
};
|
|
26
|
+
const serializeCsvLine = (values)=>{
|
|
27
|
+
return values.map(escapeCsvValue).join(',') + CSV_LINE_SEPARATOR;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
exports.CSV_BOM = CSV_BOM;
|
|
31
|
+
exports.escapeCsvValue = escapeCsvValue;
|
|
32
|
+
exports.serializeCsvLine = serializeCsvLine;
|
|
33
|
+
//# sourceMappingURL=csv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.js","sources":["../../../../../../../ee/server/src/audit-logs/utils/csv.ts"],"sourcesContent":["const CSV_LINE_SEPARATOR = '\\r\\n';\nconst CSV_BOM = '\\uFEFF';\nconst FORMULA_TRIGGER_CHARACTERS = ['=', '+', '-', '@', '\\t', '\\r'];\n\nconst escapeCsvValue = (value: unknown): string => {\n if (value === null || value === undefined) {\n return '';\n }\n\n let stringValue = typeof value === 'string' ? value : String(value);\n\n if (typeof value === 'string' && FORMULA_TRIGGER_CHARACTERS.includes(stringValue.charAt(0))) {\n stringValue = `'${stringValue}`;\n }\n\n if (/[\",\\r\\n]/.test(stringValue)) {\n return `\"${stringValue.replace(/\"/g, '\"\"')}\"`;\n }\n\n return stringValue;\n};\n\nconst serializeCsvLine = (values: unknown[]): string => {\n return values.map(escapeCsvValue).join(',') + CSV_LINE_SEPARATOR;\n};\n\nexport { escapeCsvValue, serializeCsvLine, CSV_BOM };\n"],"names":["CSV_LINE_SEPARATOR","CSV_BOM","FORMULA_TRIGGER_CHARACTERS","escapeCsvValue","value","undefined","stringValue","String","includes","charAt","test","replace","serializeCsvLine","values","map","join"],"mappings":";;AAAA,MAAMA,kBAAAA,GAAqB,MAAA;AAC3B,MAAMC,OAAAA,GAAU;AAChB,MAAMC,0BAAAA,GAA6B;AAAC,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,IAAA;AAAM,IAAA;AAAK,CAAA;AAEnE,MAAMC,iBAAiB,CAACC,KAAAA,GAAAA;IACtB,IAAIA,KAAAA,KAAU,IAAA,IAAQA,KAAAA,KAAUC,SAAAA,EAAW;QACzC,OAAO,EAAA;AACT,IAAA;AAEA,IAAA,IAAIC,WAAAA,GAAc,OAAOF,KAAAA,KAAU,QAAA,GAAWA,QAAQG,MAAAA,CAAOH,KAAAA,CAAAA;IAE7D,IAAI,OAAOA,UAAU,QAAA,IAAYF,0BAAAA,CAA2BM,QAAQ,CAACF,WAAAA,CAAYG,MAAM,CAAC,CAAA,CAAA,CAAA,EAAK;QAC3FH,WAAAA,GAAc,CAAC,CAAC,EAAEA,WAAAA,CAAAA,CAAa;AACjC,IAAA;IAEA,IAAI,UAAA,CAAWI,IAAI,CAACJ,WAAAA,CAAAA,EAAc;QAChC,OAAO,CAAC,CAAC,EAAEA,WAAAA,CAAYK,OAAO,CAAC,IAAA,EAAM,IAAA,CAAA,CAAM,CAAC,CAAC;AAC/C,IAAA;IAEA,OAAOL,WAAAA;AACT;AAEA,MAAMM,mBAAmB,CAACC,MAAAA,GAAAA;AACxB,IAAA,OAAOA,OAAOC,GAAG,CAACX,cAAAA,CAAAA,CAAgBY,IAAI,CAAC,GAAA,CAAA,GAAOf,kBAAAA;AAChD;;;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const CSV_LINE_SEPARATOR = '\r\n';
|
|
2
|
+
const CSV_BOM = '\uFEFF';
|
|
3
|
+
const FORMULA_TRIGGER_CHARACTERS = [
|
|
4
|
+
'=',
|
|
5
|
+
'+',
|
|
6
|
+
'-',
|
|
7
|
+
'@',
|
|
8
|
+
'\t',
|
|
9
|
+
'\r'
|
|
10
|
+
];
|
|
11
|
+
const escapeCsvValue = (value)=>{
|
|
12
|
+
if (value === null || value === undefined) {
|
|
13
|
+
return '';
|
|
14
|
+
}
|
|
15
|
+
let stringValue = typeof value === 'string' ? value : String(value);
|
|
16
|
+
if (typeof value === 'string' && FORMULA_TRIGGER_CHARACTERS.includes(stringValue.charAt(0))) {
|
|
17
|
+
stringValue = `'${stringValue}`;
|
|
18
|
+
}
|
|
19
|
+
if (/[",\r\n]/.test(stringValue)) {
|
|
20
|
+
return `"${stringValue.replace(/"/g, '""')}"`;
|
|
21
|
+
}
|
|
22
|
+
return stringValue;
|
|
23
|
+
};
|
|
24
|
+
const serializeCsvLine = (values)=>{
|
|
25
|
+
return values.map(escapeCsvValue).join(',') + CSV_LINE_SEPARATOR;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { CSV_BOM, escapeCsvValue, serializeCsvLine };
|
|
29
|
+
//# sourceMappingURL=csv.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.mjs","sources":["../../../../../../../ee/server/src/audit-logs/utils/csv.ts"],"sourcesContent":["const CSV_LINE_SEPARATOR = '\\r\\n';\nconst CSV_BOM = '\\uFEFF';\nconst FORMULA_TRIGGER_CHARACTERS = ['=', '+', '-', '@', '\\t', '\\r'];\n\nconst escapeCsvValue = (value: unknown): string => {\n if (value === null || value === undefined) {\n return '';\n }\n\n let stringValue = typeof value === 'string' ? value : String(value);\n\n if (typeof value === 'string' && FORMULA_TRIGGER_CHARACTERS.includes(stringValue.charAt(0))) {\n stringValue = `'${stringValue}`;\n }\n\n if (/[\",\\r\\n]/.test(stringValue)) {\n return `\"${stringValue.replace(/\"/g, '\"\"')}\"`;\n }\n\n return stringValue;\n};\n\nconst serializeCsvLine = (values: unknown[]): string => {\n return values.map(escapeCsvValue).join(',') + CSV_LINE_SEPARATOR;\n};\n\nexport { escapeCsvValue, serializeCsvLine, CSV_BOM };\n"],"names":["CSV_LINE_SEPARATOR","CSV_BOM","FORMULA_TRIGGER_CHARACTERS","escapeCsvValue","value","undefined","stringValue","String","includes","charAt","test","replace","serializeCsvLine","values","map","join"],"mappings":"AAAA,MAAMA,kBAAAA,GAAqB,MAAA;AAC3B,MAAMC,OAAAA,GAAU;AAChB,MAAMC,0BAAAA,GAA6B;AAAC,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,GAAA;AAAK,IAAA,IAAA;AAAM,IAAA;AAAK,CAAA;AAEnE,MAAMC,iBAAiB,CAACC,KAAAA,GAAAA;IACtB,IAAIA,KAAAA,KAAU,IAAA,IAAQA,KAAAA,KAAUC,SAAAA,EAAW;QACzC,OAAO,EAAA;AACT,IAAA;AAEA,IAAA,IAAIC,WAAAA,GAAc,OAAOF,KAAAA,KAAU,QAAA,GAAWA,QAAQG,MAAAA,CAAOH,KAAAA,CAAAA;IAE7D,IAAI,OAAOA,UAAU,QAAA,IAAYF,0BAAAA,CAA2BM,QAAQ,CAACF,WAAAA,CAAYG,MAAM,CAAC,CAAA,CAAA,CAAA,EAAK;QAC3FH,WAAAA,GAAc,CAAC,CAAC,EAAEA,WAAAA,CAAAA,CAAa;AACjC,IAAA;IAEA,IAAI,UAAA,CAAWI,IAAI,CAACJ,WAAAA,CAAAA,EAAc;QAChC,OAAO,CAAC,CAAC,EAAEA,WAAAA,CAAYK,OAAO,CAAC,IAAA,EAAM,IAAA,CAAA,CAAM,CAAC,CAAC;AAC/C,IAAA;IAEA,OAAOL,WAAAA;AACT;AAEA,MAAMM,mBAAmB,CAACC,MAAAA,GAAAA;AACxB,IAAA,OAAOA,OAAOC,GAAG,CAACX,cAAAA,CAAAA,CAAgBY,IAAI,CAAC,GAAA,CAAA,GAAOf,kBAAAA;AAChD;;;;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var crypto = require('crypto');
|
|
4
|
+
|
|
5
|
+
const EXPORT_TOKEN_TTL_MS = 60 * 60 * 1000;
|
|
6
|
+
const serializeExportClaims = (until, issuedAt, filters)=>`${until}:${issuedAt}:${JSON.stringify(filters ?? null)}`;
|
|
7
|
+
const computeSignature = (secret, until, issuedAt, filters)=>crypto.createHmac('sha256', secret).update(serializeExportClaims(until, issuedAt, filters)).digest('hex');
|
|
8
|
+
const signExportToken = (secret, until, filters, issuedAt = Date.now())=>`${issuedAt}.${computeSignature(secret, until, issuedAt, filters)}`;
|
|
9
|
+
const verifyExportToken = (secret, token, until, filters, now = Date.now())=>{
|
|
10
|
+
if (typeof token !== 'string' || token.length === 0) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
const separator = token.indexOf('.');
|
|
14
|
+
if (separator <= 0) {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
const issuedAt = Number(token.slice(0, separator));
|
|
18
|
+
if (!Number.isInteger(issuedAt)) {
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
const expected = Buffer.from(computeSignature(secret, until, issuedAt, filters));
|
|
22
|
+
const provided = Buffer.from(token.slice(separator + 1));
|
|
23
|
+
if (provided.length !== expected.length || !crypto.timingSafeEqual(provided, expected)) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const age = now - issuedAt;
|
|
27
|
+
return age >= -6e4 && age <= EXPORT_TOKEN_TTL_MS;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
exports.EXPORT_TOKEN_TTL_MS = EXPORT_TOKEN_TTL_MS;
|
|
31
|
+
exports.signExportToken = signExportToken;
|
|
32
|
+
exports.verifyExportToken = verifyExportToken;
|
|
33
|
+
//# sourceMappingURL=export-token.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-token.js","sources":["../../../../../../../ee/server/src/audit-logs/utils/export-token.ts"],"sourcesContent":["import { createHmac, timingSafeEqual } from 'crypto';\n\nconst EXPORT_TOKEN_TTL_MS = 60 * 60 * 1000;\nconst EXPORT_TOKEN_CLOCK_SKEW_MS = 60 * 1000;\n\nconst serializeExportClaims = (until: number, issuedAt: number, filters: unknown) =>\n `${until}:${issuedAt}:${JSON.stringify(filters ?? null)}`;\n\nconst computeSignature = (secret: string, until: number, issuedAt: number, filters: unknown) =>\n createHmac('sha256', secret)\n .update(serializeExportClaims(until, issuedAt, filters))\n .digest('hex');\n\nconst signExportToken = (\n secret: string,\n until: number,\n filters: unknown,\n issuedAt = Date.now()\n): string => `${issuedAt}.${computeSignature(secret, until, issuedAt, filters)}`;\n\nconst verifyExportToken = (\n secret: string,\n token: unknown,\n until: number,\n filters: unknown,\n now = Date.now()\n): boolean => {\n if (typeof token !== 'string' || token.length === 0) {\n return false;\n }\n\n const separator = token.indexOf('.');\n if (separator <= 0) {\n return false;\n }\n\n const issuedAt = Number(token.slice(0, separator));\n if (!Number.isInteger(issuedAt)) {\n return false;\n }\n\n const expected = Buffer.from(computeSignature(secret, until, issuedAt, filters));\n const provided = Buffer.from(token.slice(separator + 1));\n\n if (provided.length !== expected.length || !timingSafeEqual(provided, expected)) {\n return false;\n }\n\n const age = now - issuedAt;\n\n return age >= -EXPORT_TOKEN_CLOCK_SKEW_MS && age <= EXPORT_TOKEN_TTL_MS;\n};\n\nexport { signExportToken, verifyExportToken, EXPORT_TOKEN_TTL_MS };\n"],"names":["EXPORT_TOKEN_TTL_MS","serializeExportClaims","until","issuedAt","filters","JSON","stringify","computeSignature","secret","createHmac","update","digest","signExportToken","Date","now","verifyExportToken","token","length","separator","indexOf","Number","slice","isInteger","expected","Buffer","from","provided","timingSafeEqual","age","EXPORT_TOKEN_CLOCK_SKEW_MS"],"mappings":";;;;AAEA,MAAMA,mBAAAA,GAAsB,KAAK,EAAA,GAAK;AAGtC,MAAMC,wBAAwB,CAACC,KAAAA,EAAeC,QAAAA,EAAkBC,OAAAA,GAC9D,GAAGF,KAAAA,CAAM,CAAC,EAAEC,QAAAA,CAAS,CAAC,EAAEE,IAAAA,CAAKC,SAAS,CAACF,WAAW,IAAA,CAAA,CAAA,CAAO;AAE3D,MAAMG,mBAAmB,CAACC,MAAAA,EAAgBN,KAAAA,EAAeC,QAAAA,EAAkBC,UACzEK,iBAAAA,CAAW,QAAA,EAAUD,MAAAA,CAAAA,CAClBE,MAAM,CAACT,qBAAAA,CAAsBC,KAAAA,EAAOC,QAAAA,EAAUC,OAAAA,CAAAA,CAAAA,CAC9CO,MAAM,CAAC,KAAA,CAAA;AAEZ,MAAMC,kBAAkB,CACtBJ,MAAAA,EACAN,OACAE,OAAAA,EACAD,QAAAA,GAAWU,KAAKC,GAAG,EAAE,GACV,CAAA,EAAGX,SAAS,CAAC,EAAEI,iBAAiBC,MAAAA,EAAQN,KAAAA,EAAOC,UAAUC,OAAAA,CAAAA,CAAAA;AAEtE,MAAMW,iBAAAA,GAAoB,CACxBP,MAAAA,EACAQ,KAAAA,EACAd,OACAE,OAAAA,EACAU,GAAAA,GAAMD,IAAAA,CAAKC,GAAG,EAAE,GAAA;AAEhB,IAAA,IAAI,OAAOE,KAAAA,KAAU,QAAA,IAAYA,KAAAA,CAAMC,MAAM,KAAK,CAAA,EAAG;QACnD,OAAO,KAAA;AACT,IAAA;IAEA,MAAMC,SAAAA,GAAYF,KAAAA,CAAMG,OAAO,CAAC,GAAA,CAAA;AAChC,IAAA,IAAID,aAAa,CAAA,EAAG;QAClB,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,MAAMf,QAAAA,GAAWiB,MAAAA,CAAOJ,KAAAA,CAAMK,KAAK,CAAC,CAAA,EAAGH,SAAAA,CAAAA,CAAAA;AACvC,IAAA,IAAI,CAACE,MAAAA,CAAOE,SAAS,CAACnB,QAAAA,CAAAA,EAAW;QAC/B,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,MAAMoB,WAAWC,MAAAA,CAAOC,IAAI,CAAClB,gBAAAA,CAAiBC,MAAAA,EAAQN,OAAOC,QAAAA,EAAUC,OAAAA,CAAAA,CAAAA;AACvE,IAAA,MAAMsB,WAAWF,MAAAA,CAAOC,IAAI,CAACT,KAAAA,CAAMK,KAAK,CAACH,SAAAA,GAAY,CAAA,CAAA,CAAA;IAErD,IAAIQ,QAAAA,CAAST,MAAM,KAAKM,QAAAA,CAASN,MAAM,IAAI,CAACU,sBAAAA,CAAgBD,QAAAA,EAAUH,QAAAA,CAAAA,EAAW;QAC/E,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,MAAMK,MAAMd,GAAAA,GAAMX,QAAAA;IAElB,OAAOyB,GAAAA,IAAO,IAACC,IAA8BD,GAAAA,IAAO5B,mBAAAA;AACtD;;;;;;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { timingSafeEqual, createHmac } from 'crypto';
|
|
2
|
+
|
|
3
|
+
const EXPORT_TOKEN_TTL_MS = 60 * 60 * 1000;
|
|
4
|
+
const serializeExportClaims = (until, issuedAt, filters)=>`${until}:${issuedAt}:${JSON.stringify(filters ?? null)}`;
|
|
5
|
+
const computeSignature = (secret, until, issuedAt, filters)=>createHmac('sha256', secret).update(serializeExportClaims(until, issuedAt, filters)).digest('hex');
|
|
6
|
+
const signExportToken = (secret, until, filters, issuedAt = Date.now())=>`${issuedAt}.${computeSignature(secret, until, issuedAt, filters)}`;
|
|
7
|
+
const verifyExportToken = (secret, token, until, filters, now = Date.now())=>{
|
|
8
|
+
if (typeof token !== 'string' || token.length === 0) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
const separator = token.indexOf('.');
|
|
12
|
+
if (separator <= 0) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
const issuedAt = Number(token.slice(0, separator));
|
|
16
|
+
if (!Number.isInteger(issuedAt)) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
const expected = Buffer.from(computeSignature(secret, until, issuedAt, filters));
|
|
20
|
+
const provided = Buffer.from(token.slice(separator + 1));
|
|
21
|
+
if (provided.length !== expected.length || !timingSafeEqual(provided, expected)) {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
const age = now - issuedAt;
|
|
25
|
+
return age >= -6e4 && age <= EXPORT_TOKEN_TTL_MS;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { EXPORT_TOKEN_TTL_MS, signExportToken, verifyExportToken };
|
|
29
|
+
//# sourceMappingURL=export-token.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-token.mjs","sources":["../../../../../../../ee/server/src/audit-logs/utils/export-token.ts"],"sourcesContent":["import { createHmac, timingSafeEqual } from 'crypto';\n\nconst EXPORT_TOKEN_TTL_MS = 60 * 60 * 1000;\nconst EXPORT_TOKEN_CLOCK_SKEW_MS = 60 * 1000;\n\nconst serializeExportClaims = (until: number, issuedAt: number, filters: unknown) =>\n `${until}:${issuedAt}:${JSON.stringify(filters ?? null)}`;\n\nconst computeSignature = (secret: string, until: number, issuedAt: number, filters: unknown) =>\n createHmac('sha256', secret)\n .update(serializeExportClaims(until, issuedAt, filters))\n .digest('hex');\n\nconst signExportToken = (\n secret: string,\n until: number,\n filters: unknown,\n issuedAt = Date.now()\n): string => `${issuedAt}.${computeSignature(secret, until, issuedAt, filters)}`;\n\nconst verifyExportToken = (\n secret: string,\n token: unknown,\n until: number,\n filters: unknown,\n now = Date.now()\n): boolean => {\n if (typeof token !== 'string' || token.length === 0) {\n return false;\n }\n\n const separator = token.indexOf('.');\n if (separator <= 0) {\n return false;\n }\n\n const issuedAt = Number(token.slice(0, separator));\n if (!Number.isInteger(issuedAt)) {\n return false;\n }\n\n const expected = Buffer.from(computeSignature(secret, until, issuedAt, filters));\n const provided = Buffer.from(token.slice(separator + 1));\n\n if (provided.length !== expected.length || !timingSafeEqual(provided, expected)) {\n return false;\n }\n\n const age = now - issuedAt;\n\n return age >= -EXPORT_TOKEN_CLOCK_SKEW_MS && age <= EXPORT_TOKEN_TTL_MS;\n};\n\nexport { signExportToken, verifyExportToken, EXPORT_TOKEN_TTL_MS };\n"],"names":["EXPORT_TOKEN_TTL_MS","serializeExportClaims","until","issuedAt","filters","JSON","stringify","computeSignature","secret","createHmac","update","digest","signExportToken","Date","now","verifyExportToken","token","length","separator","indexOf","Number","slice","isInteger","expected","Buffer","from","provided","timingSafeEqual","age","EXPORT_TOKEN_CLOCK_SKEW_MS"],"mappings":";;AAEA,MAAMA,mBAAAA,GAAsB,KAAK,EAAA,GAAK;AAGtC,MAAMC,wBAAwB,CAACC,KAAAA,EAAeC,QAAAA,EAAkBC,OAAAA,GAC9D,GAAGF,KAAAA,CAAM,CAAC,EAAEC,QAAAA,CAAS,CAAC,EAAEE,IAAAA,CAAKC,SAAS,CAACF,WAAW,IAAA,CAAA,CAAA,CAAO;AAE3D,MAAMG,mBAAmB,CAACC,MAAAA,EAAgBN,KAAAA,EAAeC,QAAAA,EAAkBC,UACzEK,UAAAA,CAAW,QAAA,EAAUD,MAAAA,CAAAA,CAClBE,MAAM,CAACT,qBAAAA,CAAsBC,KAAAA,EAAOC,QAAAA,EAAUC,OAAAA,CAAAA,CAAAA,CAC9CO,MAAM,CAAC,KAAA,CAAA;AAEZ,MAAMC,kBAAkB,CACtBJ,MAAAA,EACAN,OACAE,OAAAA,EACAD,QAAAA,GAAWU,KAAKC,GAAG,EAAE,GACV,CAAA,EAAGX,SAAS,CAAC,EAAEI,iBAAiBC,MAAAA,EAAQN,KAAAA,EAAOC,UAAUC,OAAAA,CAAAA,CAAAA;AAEtE,MAAMW,iBAAAA,GAAoB,CACxBP,MAAAA,EACAQ,KAAAA,EACAd,OACAE,OAAAA,EACAU,GAAAA,GAAMD,IAAAA,CAAKC,GAAG,EAAE,GAAA;AAEhB,IAAA,IAAI,OAAOE,KAAAA,KAAU,QAAA,IAAYA,KAAAA,CAAMC,MAAM,KAAK,CAAA,EAAG;QACnD,OAAO,KAAA;AACT,IAAA;IAEA,MAAMC,SAAAA,GAAYF,KAAAA,CAAMG,OAAO,CAAC,GAAA,CAAA;AAChC,IAAA,IAAID,aAAa,CAAA,EAAG;QAClB,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,MAAMf,QAAAA,GAAWiB,MAAAA,CAAOJ,KAAAA,CAAMK,KAAK,CAAC,CAAA,EAAGH,SAAAA,CAAAA,CAAAA;AACvC,IAAA,IAAI,CAACE,MAAAA,CAAOE,SAAS,CAACnB,QAAAA,CAAAA,EAAW;QAC/B,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,MAAMoB,WAAWC,MAAAA,CAAOC,IAAI,CAAClB,gBAAAA,CAAiBC,MAAAA,EAAQN,OAAOC,QAAAA,EAAUC,OAAAA,CAAAA,CAAAA;AACvE,IAAA,MAAMsB,WAAWF,MAAAA,CAAOC,IAAI,CAACT,KAAAA,CAAMK,KAAK,CAACH,SAAAA,GAAY,CAAA,CAAA,CAAA;IAErD,IAAIQ,QAAAA,CAAST,MAAM,KAAKM,QAAAA,CAASN,MAAM,IAAI,CAACU,eAAAA,CAAgBD,QAAAA,EAAUH,QAAAA,CAAAA,EAAW;QAC/E,OAAO,KAAA;AACT,IAAA;AAEA,IAAA,MAAMK,MAAMd,GAAAA,GAAMX,QAAAA;IAElB,OAAOyB,GAAAA,IAAO,IAACC,IAA8BD,GAAAA,IAAO5B,mBAAAA;AACtD;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/** How an admin user is named across audit logs */ const getDisplayName = (user)=>{
|
|
4
|
+
if (user.username) {
|
|
5
|
+
return user.username;
|
|
6
|
+
}
|
|
7
|
+
if (user.firstname && user.lastname) {
|
|
8
|
+
return `${user.firstname} ${user.lastname}`;
|
|
9
|
+
}
|
|
10
|
+
return user.email;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
exports.getDisplayName = getDisplayName;
|
|
14
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../../../ee/server/src/audit-logs/utils.ts"],"sourcesContent":["interface AdminUserLike {\n username?: string | null;\n firstname?: string | null;\n lastname?: string | null;\n email: string;\n}\n\n/** How an admin user is named across audit logs */\nconst getDisplayName = (user: AdminUserLike): string => {\n if (user.username) {\n return user.username;\n }\n\n if (user.firstname && user.lastname) {\n return `${user.firstname} ${user.lastname}`;\n }\n\n return user.email;\n};\n\nexport { getDisplayName };\n"],"names":["getDisplayName","user","username","firstname","lastname","email"],"mappings":";;AAOA,oDACA,MAAMA,cAAAA,GAAiB,CAACC,IAAAA,GAAAA;IACtB,IAAIA,IAAAA,CAAKC,QAAQ,EAAE;AACjB,QAAA,OAAOD,KAAKC,QAAQ;AACtB,IAAA;AAEA,IAAA,IAAID,IAAAA,CAAKE,SAAS,IAAIF,IAAAA,CAAKG,QAAQ,EAAE;QACnC,OAAO,CAAA,EAAGH,KAAKE,SAAS,CAAC,CAAC,EAAEF,IAAAA,CAAKG,QAAQ,CAAA,CAAE;AAC7C,IAAA;AAEA,IAAA,OAAOH,KAAKI,KAAK;AACnB;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** How an admin user is named across audit logs */ const getDisplayName = (user)=>{
|
|
2
|
+
if (user.username) {
|
|
3
|
+
return user.username;
|
|
4
|
+
}
|
|
5
|
+
if (user.firstname && user.lastname) {
|
|
6
|
+
return `${user.firstname} ${user.lastname}`;
|
|
7
|
+
}
|
|
8
|
+
return user.email;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export { getDisplayName };
|
|
12
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../../../../../../ee/server/src/audit-logs/utils.ts"],"sourcesContent":["interface AdminUserLike {\n username?: string | null;\n firstname?: string | null;\n lastname?: string | null;\n email: string;\n}\n\n/** How an admin user is named across audit logs */\nconst getDisplayName = (user: AdminUserLike): string => {\n if (user.username) {\n return user.username;\n }\n\n if (user.firstname && user.lastname) {\n return `${user.firstname} ${user.lastname}`;\n }\n\n return user.email;\n};\n\nexport { getDisplayName };\n"],"names":["getDisplayName","user","username","firstname","lastname","email"],"mappings":"AAOA,oDACA,MAAMA,cAAAA,GAAiB,CAACC,IAAAA,GAAAA;IACtB,IAAIA,IAAAA,CAAKC,QAAQ,EAAE;AACjB,QAAA,OAAOD,KAAKC,QAAQ;AACtB,IAAA;AAEA,IAAA,IAAID,IAAAA,CAAKE,SAAS,IAAIF,IAAAA,CAAKG,QAAQ,EAAE;QACnC,OAAO,CAAA,EAAGH,KAAKE,SAAS,CAAC,CAAC,EAAEF,IAAAA,CAAKG,QAAQ,CAAA,CAAE;AAC7C,IAAA;AAEA,IAAA,OAAOH,KAAKI,KAAK;AACnB;;;;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var utils = require('@strapi/utils');
|
|
4
|
+
var auditLogExport = require('../../../../../shared/utils/audit-log-export.js');
|
|
4
5
|
|
|
5
6
|
const ALLOWED_SORT_STRINGS = [
|
|
6
7
|
'action:ASC',
|
|
@@ -17,13 +18,23 @@ const validateFindManyUsersSchema = utils.yup.object().shape({
|
|
|
17
18
|
page: utils.yup.number().integer().min(1),
|
|
18
19
|
pageSize: utils.yup.number().integer().min(1).max(100)
|
|
19
20
|
}).required();
|
|
21
|
+
const validateExportSchema = utils.yup.object().shape({
|
|
22
|
+
cursor: utils.yup.number().integer().min(1),
|
|
23
|
+
pageSize: utils.yup.number().integer().min(1).max(auditLogExport.AUDIT_LOGS_EXPORT_PART_MAX_ROWS),
|
|
24
|
+
until: utils.yup.number().integer().min(0),
|
|
25
|
+
token: utils.yup.string()
|
|
26
|
+
}).required();
|
|
20
27
|
const validateFindMany = utils.validateYupSchema(validateFindManySchema, {
|
|
21
28
|
strict: false
|
|
22
29
|
});
|
|
23
30
|
const validateFindManyUsers = utils.validateYupSchema(validateFindManyUsersSchema, {
|
|
24
31
|
strict: false
|
|
25
32
|
});
|
|
33
|
+
const validateExport = utils.validateYupSchema(validateExportSchema, {
|
|
34
|
+
strict: false
|
|
35
|
+
});
|
|
26
36
|
|
|
37
|
+
exports.validateExport = validateExport;
|
|
27
38
|
exports.validateFindMany = validateFindMany;
|
|
28
39
|
exports.validateFindManyUsers = validateFindManyUsers;
|
|
29
40
|
//# sourceMappingURL=audit-logs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-logs.js","sources":["../../../../../../../ee/server/src/audit-logs/validation/audit-logs.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nconst ALLOWED_SORT_STRINGS = ['action:ASC', 'action:DESC', 'date:ASC', 'date:DESC'];\n\nconst validateFindManySchema = yup\n .object()\n .shape({\n page: yup.number().integer().min(1),\n pageSize: yup.number().integer().min(1).max(100),\n sort: yup.mixed().oneOf(ALLOWED_SORT_STRINGS),\n })\n .required();\n\nconst validateFindManyUsersSchema = yup\n .object()\n .shape({\n page: yup.number().integer().min(1),\n pageSize: yup.number().integer().min(1).max(100),\n })\n .required();\n\nexport const validateFindMany = validateYupSchema(validateFindManySchema, { strict: false });\nexport const validateFindManyUsers = validateYupSchema(validateFindManyUsersSchema, {\n strict: false,\n});\n\nexport default {\n validateFindMany,\n validateFindManyUsers,\n};\n"],"names":["ALLOWED_SORT_STRINGS","validateFindManySchema","yup","object","shape","page","number","integer","min","pageSize","max","sort","mixed","oneOf","required","validateFindManyUsersSchema","validateFindMany","validateYupSchema","strict","validateFindManyUsers"],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit-logs.js","sources":["../../../../../../../ee/server/src/audit-logs/validation/audit-logs.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nimport { AUDIT_LOGS_EXPORT_PART_MAX_ROWS } from '../../../../../shared/utils/audit-log-export';\n\nconst ALLOWED_SORT_STRINGS = ['action:ASC', 'action:DESC', 'date:ASC', 'date:DESC'];\n\nconst validateFindManySchema = yup\n .object()\n .shape({\n page: yup.number().integer().min(1),\n pageSize: yup.number().integer().min(1).max(100),\n sort: yup.mixed().oneOf(ALLOWED_SORT_STRINGS),\n })\n .required();\n\nconst validateFindManyUsersSchema = yup\n .object()\n .shape({\n page: yup.number().integer().min(1),\n pageSize: yup.number().integer().min(1).max(100),\n })\n .required();\n\nconst validateExportSchema = yup\n .object()\n .shape({\n cursor: yup.number().integer().min(1),\n pageSize: yup.number().integer().min(1).max(AUDIT_LOGS_EXPORT_PART_MAX_ROWS),\n until: yup.number().integer().min(0),\n token: yup.string(),\n })\n .required();\n\nexport const validateFindMany = validateYupSchema(validateFindManySchema, { strict: false });\nexport const validateFindManyUsers = validateYupSchema(validateFindManyUsersSchema, {\n strict: false,\n});\nexport const validateExport = validateYupSchema(validateExportSchema, { strict: false });\n\nexport default {\n validateFindMany,\n validateFindManyUsers,\n validateExport,\n};\n"],"names":["ALLOWED_SORT_STRINGS","validateFindManySchema","yup","object","shape","page","number","integer","min","pageSize","max","sort","mixed","oneOf","required","validateFindManyUsersSchema","validateExportSchema","cursor","AUDIT_LOGS_EXPORT_PART_MAX_ROWS","until","token","string","validateFindMany","validateYupSchema","strict","validateFindManyUsers","validateExport"],"mappings":";;;;;AAIA,MAAMA,oBAAAA,GAAuB;AAAC,IAAA,YAAA;AAAc,IAAA,aAAA;AAAe,IAAA,UAAA;AAAY,IAAA;AAAY,CAAA;AAEnF,MAAMC,sBAAAA,GAAyBC,SAAAA,CAC5BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,UAAII,MAAM,EAAA,CAAGC,OAAO,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;IACjCC,QAAAA,EAAUP,SAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGC,GAAG,CAAC,CAAA,CAAA,CAAGE,GAAG,CAAC,GAAA,CAAA;AAC5CC,IAAAA,IAAAA,EAAMT,SAAAA,CAAIU,KAAK,EAAA,CAAGC,KAAK,CAACb,oBAAAA;AAC1B,CAAA,CAAA,CACCc,QAAQ,EAAA;AAEX,MAAMC,2BAAAA,GAA8Bb,SAAAA,CACjCC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,UAAII,MAAM,EAAA,CAAGC,OAAO,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;IACjCC,QAAAA,EAAUP,SAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGC,GAAG,CAAC,CAAA,CAAA,CAAGE,GAAG,CAAC,GAAA;AAC9C,CAAA,CAAA,CACCI,QAAQ,EAAA;AAEX,MAAME,oBAAAA,GAAuBd,SAAAA,CAC1BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLa,IAAAA,MAAAA,EAAQf,UAAII,MAAM,EAAA,CAAGC,OAAO,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;IACnCC,QAAAA,EAAUP,SAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGC,GAAG,CAAC,CAAA,CAAA,CAAGE,GAAG,CAACQ,8CAAAA,CAAAA;AAC5CC,IAAAA,KAAAA,EAAOjB,UAAII,MAAM,EAAA,CAAGC,OAAO,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;AAClCY,IAAAA,KAAAA,EAAOlB,UAAImB,MAAM;AACnB,CAAA,CAAA,CACCP,QAAQ,EAAA;AAEJ,MAAMQ,gBAAAA,GAAmBC,uBAAAA,CAAkBtB,sBAAAA,EAAwB;IAAEuB,MAAAA,EAAQ;AAAM,CAAA;AACnF,MAAMC,qBAAAA,GAAwBF,uBAAAA,CAAkBR,2BAAAA,EAA6B;IAClFS,MAAAA,EAAQ;AACV,CAAA;AACO,MAAME,cAAAA,GAAiBH,uBAAAA,CAAkBP,oBAAAA,EAAsB;IAAEQ,MAAAA,EAAQ;AAAM,CAAA;;;;;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { yup, validateYupSchema } from '@strapi/utils';
|
|
2
|
+
import { AUDIT_LOGS_EXPORT_PART_MAX_ROWS } from '../../../../../shared/utils/audit-log-export.mjs';
|
|
2
3
|
|
|
3
4
|
const ALLOWED_SORT_STRINGS = [
|
|
4
5
|
'action:ASC',
|
|
@@ -15,12 +16,21 @@ const validateFindManyUsersSchema = yup.object().shape({
|
|
|
15
16
|
page: yup.number().integer().min(1),
|
|
16
17
|
pageSize: yup.number().integer().min(1).max(100)
|
|
17
18
|
}).required();
|
|
19
|
+
const validateExportSchema = yup.object().shape({
|
|
20
|
+
cursor: yup.number().integer().min(1),
|
|
21
|
+
pageSize: yup.number().integer().min(1).max(AUDIT_LOGS_EXPORT_PART_MAX_ROWS),
|
|
22
|
+
until: yup.number().integer().min(0),
|
|
23
|
+
token: yup.string()
|
|
24
|
+
}).required();
|
|
18
25
|
const validateFindMany = validateYupSchema(validateFindManySchema, {
|
|
19
26
|
strict: false
|
|
20
27
|
});
|
|
21
28
|
const validateFindManyUsers = validateYupSchema(validateFindManyUsersSchema, {
|
|
22
29
|
strict: false
|
|
23
30
|
});
|
|
31
|
+
const validateExport = validateYupSchema(validateExportSchema, {
|
|
32
|
+
strict: false
|
|
33
|
+
});
|
|
24
34
|
|
|
25
|
-
export { validateFindMany, validateFindManyUsers };
|
|
35
|
+
export { validateExport, validateFindMany, validateFindManyUsers };
|
|
26
36
|
//# sourceMappingURL=audit-logs.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-logs.mjs","sources":["../../../../../../../ee/server/src/audit-logs/validation/audit-logs.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nconst ALLOWED_SORT_STRINGS = ['action:ASC', 'action:DESC', 'date:ASC', 'date:DESC'];\n\nconst validateFindManySchema = yup\n .object()\n .shape({\n page: yup.number().integer().min(1),\n pageSize: yup.number().integer().min(1).max(100),\n sort: yup.mixed().oneOf(ALLOWED_SORT_STRINGS),\n })\n .required();\n\nconst validateFindManyUsersSchema = yup\n .object()\n .shape({\n page: yup.number().integer().min(1),\n pageSize: yup.number().integer().min(1).max(100),\n })\n .required();\n\nexport const validateFindMany = validateYupSchema(validateFindManySchema, { strict: false });\nexport const validateFindManyUsers = validateYupSchema(validateFindManyUsersSchema, {\n strict: false,\n});\n\nexport default {\n validateFindMany,\n validateFindManyUsers,\n};\n"],"names":["ALLOWED_SORT_STRINGS","validateFindManySchema","yup","object","shape","page","number","integer","min","pageSize","max","sort","mixed","oneOf","required","validateFindManyUsersSchema","validateFindMany","validateYupSchema","strict","validateFindManyUsers"],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit-logs.mjs","sources":["../../../../../../../ee/server/src/audit-logs/validation/audit-logs.ts"],"sourcesContent":["import { yup, validateYupSchema } from '@strapi/utils';\n\nimport { AUDIT_LOGS_EXPORT_PART_MAX_ROWS } from '../../../../../shared/utils/audit-log-export';\n\nconst ALLOWED_SORT_STRINGS = ['action:ASC', 'action:DESC', 'date:ASC', 'date:DESC'];\n\nconst validateFindManySchema = yup\n .object()\n .shape({\n page: yup.number().integer().min(1),\n pageSize: yup.number().integer().min(1).max(100),\n sort: yup.mixed().oneOf(ALLOWED_SORT_STRINGS),\n })\n .required();\n\nconst validateFindManyUsersSchema = yup\n .object()\n .shape({\n page: yup.number().integer().min(1),\n pageSize: yup.number().integer().min(1).max(100),\n })\n .required();\n\nconst validateExportSchema = yup\n .object()\n .shape({\n cursor: yup.number().integer().min(1),\n pageSize: yup.number().integer().min(1).max(AUDIT_LOGS_EXPORT_PART_MAX_ROWS),\n until: yup.number().integer().min(0),\n token: yup.string(),\n })\n .required();\n\nexport const validateFindMany = validateYupSchema(validateFindManySchema, { strict: false });\nexport const validateFindManyUsers = validateYupSchema(validateFindManyUsersSchema, {\n strict: false,\n});\nexport const validateExport = validateYupSchema(validateExportSchema, { strict: false });\n\nexport default {\n validateFindMany,\n validateFindManyUsers,\n validateExport,\n};\n"],"names":["ALLOWED_SORT_STRINGS","validateFindManySchema","yup","object","shape","page","number","integer","min","pageSize","max","sort","mixed","oneOf","required","validateFindManyUsersSchema","validateExportSchema","cursor","AUDIT_LOGS_EXPORT_PART_MAX_ROWS","until","token","string","validateFindMany","validateYupSchema","strict","validateFindManyUsers","validateExport"],"mappings":";;;AAIA,MAAMA,oBAAAA,GAAuB;AAAC,IAAA,YAAA;AAAc,IAAA,aAAA;AAAe,IAAA,UAAA;AAAY,IAAA;AAAY,CAAA;AAEnF,MAAMC,sBAAAA,GAAyBC,GAAAA,CAC5BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,IAAII,MAAM,EAAA,CAAGC,OAAO,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;IACjCC,QAAAA,EAAUP,GAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGC,GAAG,CAAC,CAAA,CAAA,CAAGE,GAAG,CAAC,GAAA,CAAA;AAC5CC,IAAAA,IAAAA,EAAMT,GAAAA,CAAIU,KAAK,EAAA,CAAGC,KAAK,CAACb,oBAAAA;AAC1B,CAAA,CAAA,CACCc,QAAQ,EAAA;AAEX,MAAMC,2BAAAA,GAA8Bb,GAAAA,CACjCC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLC,IAAAA,IAAAA,EAAMH,IAAII,MAAM,EAAA,CAAGC,OAAO,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;IACjCC,QAAAA,EAAUP,GAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGC,GAAG,CAAC,CAAA,CAAA,CAAGE,GAAG,CAAC,GAAA;AAC9C,CAAA,CAAA,CACCI,QAAQ,EAAA;AAEX,MAAME,oBAAAA,GAAuBd,GAAAA,CAC1BC,MAAM,EAAA,CACNC,KAAK,CAAC;AACLa,IAAAA,MAAAA,EAAQf,IAAII,MAAM,EAAA,CAAGC,OAAO,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;IACnCC,QAAAA,EAAUP,GAAAA,CAAII,MAAM,EAAA,CAAGC,OAAO,GAAGC,GAAG,CAAC,CAAA,CAAA,CAAGE,GAAG,CAACQ,+BAAAA,CAAAA;AAC5CC,IAAAA,KAAAA,EAAOjB,IAAII,MAAM,EAAA,CAAGC,OAAO,EAAA,CAAGC,GAAG,CAAC,CAAA,CAAA;AAClCY,IAAAA,KAAAA,EAAOlB,IAAImB,MAAM;AACnB,CAAA,CAAA,CACCP,QAAQ,EAAA;AAEJ,MAAMQ,gBAAAA,GAAmBC,iBAAAA,CAAkBtB,sBAAAA,EAAwB;IAAEuB,MAAAA,EAAQ;AAAM,CAAA;AACnF,MAAMC,qBAAAA,GAAwBF,iBAAAA,CAAkBR,2BAAAA,EAA6B;IAClFS,MAAAA,EAAQ;AACV,CAAA;AACO,MAAME,cAAAA,GAAiBH,iBAAAA,CAAkBP,oBAAAA,EAAsB;IAAEQ,MAAAA,EAAQ;AAAM,CAAA;;;;"}
|
|
@@ -27,6 +27,14 @@ var actions = {
|
|
|
27
27
|
section: 'settings',
|
|
28
28
|
category: 'audit logs',
|
|
29
29
|
subCategory: 'options'
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
uid: 'audit-logs.export',
|
|
33
|
+
displayName: 'Export',
|
|
34
|
+
pluginName: 'admin',
|
|
35
|
+
section: 'settings',
|
|
36
|
+
category: 'audit logs',
|
|
37
|
+
subCategory: 'options'
|
|
30
38
|
}
|
|
31
39
|
]
|
|
32
40
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-actions.js","sources":["../../../../../../ee/server/src/config/admin-actions.ts"],"sourcesContent":["export default {\n sso: [\n {\n uid: 'provider-login.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'single sign on',\n subCategory: 'options',\n },\n {\n uid: 'provider-login.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'single sign on',\n subCategory: 'options',\n },\n ],\n auditLogs: [\n {\n uid: 'audit-logs.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'audit logs',\n subCategory: 'options',\n },\n ],\n};\n"],"names":["sso","uid","displayName","pluginName","section","category","subCategory","auditLogs"],"mappings":";;AAAA,cAAe;IACbA,GAAAA,EAAK;AACH,QAAA;YACEC,GAAAA,EAAK,qBAAA;YACLC,WAAAA,EAAa,MAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,gBAAA;YACVC,WAAAA,EAAa;AACf,SAAA;AACA,QAAA;YACEL,GAAAA,EAAK,uBAAA;YACLC,WAAAA,EAAa,QAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,gBAAA;YACVC,WAAAA,EAAa;AACf;AACD,KAAA;IACDC,SAAAA,EAAW;AACT,QAAA;YACEN,GAAAA,EAAK,iBAAA;YACLC,WAAAA,EAAa,MAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,YAAA;YACVC,WAAAA,EAAa;AACf;AACD;AACH,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"admin-actions.js","sources":["../../../../../../ee/server/src/config/admin-actions.ts"],"sourcesContent":["export default {\n sso: [\n {\n uid: 'provider-login.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'single sign on',\n subCategory: 'options',\n },\n {\n uid: 'provider-login.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'single sign on',\n subCategory: 'options',\n },\n ],\n auditLogs: [\n {\n uid: 'audit-logs.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'audit logs',\n subCategory: 'options',\n },\n {\n uid: 'audit-logs.export',\n displayName: 'Export',\n pluginName: 'admin',\n section: 'settings',\n category: 'audit logs',\n subCategory: 'options',\n },\n ],\n};\n"],"names":["sso","uid","displayName","pluginName","section","category","subCategory","auditLogs"],"mappings":";;AAAA,cAAe;IACbA,GAAAA,EAAK;AACH,QAAA;YACEC,GAAAA,EAAK,qBAAA;YACLC,WAAAA,EAAa,MAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,gBAAA;YACVC,WAAAA,EAAa;AACf,SAAA;AACA,QAAA;YACEL,GAAAA,EAAK,uBAAA;YACLC,WAAAA,EAAa,QAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,gBAAA;YACVC,WAAAA,EAAa;AACf;AACD,KAAA;IACDC,SAAAA,EAAW;AACT,QAAA;YACEN,GAAAA,EAAK,iBAAA;YACLC,WAAAA,EAAa,MAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,YAAA;YACVC,WAAAA,EAAa;AACf,SAAA;AACA,QAAA;YACEL,GAAAA,EAAK,mBAAA;YACLC,WAAAA,EAAa,QAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,YAAA;YACVC,WAAAA,EAAa;AACf;AACD;AACH,CAAA;;;;"}
|
|
@@ -25,6 +25,14 @@ var actions = {
|
|
|
25
25
|
section: 'settings',
|
|
26
26
|
category: 'audit logs',
|
|
27
27
|
subCategory: 'options'
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
uid: 'audit-logs.export',
|
|
31
|
+
displayName: 'Export',
|
|
32
|
+
pluginName: 'admin',
|
|
33
|
+
section: 'settings',
|
|
34
|
+
category: 'audit logs',
|
|
35
|
+
subCategory: 'options'
|
|
28
36
|
}
|
|
29
37
|
]
|
|
30
38
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-actions.mjs","sources":["../../../../../../ee/server/src/config/admin-actions.ts"],"sourcesContent":["export default {\n sso: [\n {\n uid: 'provider-login.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'single sign on',\n subCategory: 'options',\n },\n {\n uid: 'provider-login.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'single sign on',\n subCategory: 'options',\n },\n ],\n auditLogs: [\n {\n uid: 'audit-logs.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'audit logs',\n subCategory: 'options',\n },\n ],\n};\n"],"names":["sso","uid","displayName","pluginName","section","category","subCategory","auditLogs"],"mappings":"AAAA,cAAe;IACbA,GAAAA,EAAK;AACH,QAAA;YACEC,GAAAA,EAAK,qBAAA;YACLC,WAAAA,EAAa,MAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,gBAAA;YACVC,WAAAA,EAAa;AACf,SAAA;AACA,QAAA;YACEL,GAAAA,EAAK,uBAAA;YACLC,WAAAA,EAAa,QAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,gBAAA;YACVC,WAAAA,EAAa;AACf;AACD,KAAA;IACDC,SAAAA,EAAW;AACT,QAAA;YACEN,GAAAA,EAAK,iBAAA;YACLC,WAAAA,EAAa,MAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,YAAA;YACVC,WAAAA,EAAa;AACf;AACD;AACH,CAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"admin-actions.mjs","sources":["../../../../../../ee/server/src/config/admin-actions.ts"],"sourcesContent":["export default {\n sso: [\n {\n uid: 'provider-login.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'single sign on',\n subCategory: 'options',\n },\n {\n uid: 'provider-login.update',\n displayName: 'Update',\n pluginName: 'admin',\n section: 'settings',\n category: 'single sign on',\n subCategory: 'options',\n },\n ],\n auditLogs: [\n {\n uid: 'audit-logs.read',\n displayName: 'Read',\n pluginName: 'admin',\n section: 'settings',\n category: 'audit logs',\n subCategory: 'options',\n },\n {\n uid: 'audit-logs.export',\n displayName: 'Export',\n pluginName: 'admin',\n section: 'settings',\n category: 'audit logs',\n subCategory: 'options',\n },\n ],\n};\n"],"names":["sso","uid","displayName","pluginName","section","category","subCategory","auditLogs"],"mappings":"AAAA,cAAe;IACbA,GAAAA,EAAK;AACH,QAAA;YACEC,GAAAA,EAAK,qBAAA;YACLC,WAAAA,EAAa,MAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,gBAAA;YACVC,WAAAA,EAAa;AACf,SAAA;AACA,QAAA;YACEL,GAAAA,EAAK,uBAAA;YACLC,WAAAA,EAAa,QAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,gBAAA;YACVC,WAAAA,EAAa;AACf;AACD,KAAA;IACDC,SAAAA,EAAW;AACT,QAAA;YACEN,GAAAA,EAAK,iBAAA;YACLC,WAAAA,EAAa,MAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,YAAA;YACVC,WAAAA,EAAa;AACf,SAAA;AACA,QAAA;YACEL,GAAAA,EAAK,mBAAA;YACLC,WAAAA,EAAa,QAAA;YACbC,UAAAA,EAAY,OAAA;YACZC,OAAAA,EAAS,UAAA;YACTC,QAAAA,EAAU,YAAA;YACVC,WAAAA,EAAa;AACf;AACD;AACH,CAAA;;;;"}
|
|
@@ -12,6 +12,7 @@ var auditLogs$1 = require('./audit-logs/controllers/audit-logs.js');
|
|
|
12
12
|
var auditLogs$2 = require('./audit-logs/services/audit-logs.js');
|
|
13
13
|
var lifecycles = require('./audit-logs/services/lifecycles.js');
|
|
14
14
|
var auditLog = require('./audit-logs/content-types/audit-log.js');
|
|
15
|
+
var auditLogExport = require('../../../shared/utils/audit-log-export.js');
|
|
15
16
|
|
|
16
17
|
const getAdminEE = ()=>{
|
|
17
18
|
const eeAdmin = {
|
|
@@ -53,6 +54,15 @@ const getAdminEE = ()=>{
|
|
|
53
54
|
// Register an internal audit logs lifecycle service
|
|
54
55
|
const auditLogsLifecycle = lifecycles.createAuditLogsLifecycleService(strapi1);
|
|
55
56
|
strapi1.add('audit-logs-lifecycle', auditLogsLifecycle);
|
|
57
|
+
auditLogsLifecycle.registerEvent(auditLogExport.AUDIT_LOG_EXPORT_EVENT, (event)=>({
|
|
58
|
+
resource: {
|
|
59
|
+
type: 'audit-log'
|
|
60
|
+
},
|
|
61
|
+
details: {
|
|
62
|
+
format: 'csv',
|
|
63
|
+
filters: event?.filters ?? null
|
|
64
|
+
}
|
|
65
|
+
}));
|
|
56
66
|
await auditLogsLifecycle.register();
|
|
57
67
|
}
|
|
58
68
|
},
|
|
@@ -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';\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 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"],"mappings":"
|
|
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';\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 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"],"mappings":";;;;;;;;;;;;;;;;AAeA,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;AAGF,gBAAA,MAAMT,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;;;;"}
|
|
@@ -10,6 +10,7 @@ import auditLogsController from './audit-logs/controllers/audit-logs.mjs';
|
|
|
10
10
|
import { createAuditLogsService } from './audit-logs/services/audit-logs.mjs';
|
|
11
11
|
import { createAuditLogsLifecycleService } from './audit-logs/services/lifecycles.mjs';
|
|
12
12
|
import { auditLog } from './audit-logs/content-types/audit-log.mjs';
|
|
13
|
+
import { AUDIT_LOG_EXPORT_EVENT } from '../../../shared/utils/audit-log-export.mjs';
|
|
13
14
|
|
|
14
15
|
const getAdminEE = ()=>{
|
|
15
16
|
const eeAdmin = {
|
|
@@ -51,6 +52,15 @@ const getAdminEE = ()=>{
|
|
|
51
52
|
// Register an internal audit logs lifecycle service
|
|
52
53
|
const auditLogsLifecycle = createAuditLogsLifecycleService(strapi1);
|
|
53
54
|
strapi1.add('audit-logs-lifecycle', auditLogsLifecycle);
|
|
55
|
+
auditLogsLifecycle.registerEvent(AUDIT_LOG_EXPORT_EVENT, (event)=>({
|
|
56
|
+
resource: {
|
|
57
|
+
type: 'audit-log'
|
|
58
|
+
},
|
|
59
|
+
details: {
|
|
60
|
+
format: 'csv',
|
|
61
|
+
filters: event?.filters ?? null
|
|
62
|
+
}
|
|
63
|
+
}));
|
|
54
64
|
await auditLogsLifecycle.register();
|
|
55
65
|
}
|
|
56
66
|
},
|
|
@@ -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';\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 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"],"mappings":"
|
|
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';\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 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"],"mappings":";;;;;;;;;;;;;;AAeA,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;AAGF,gBAAA,MAAMT,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;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const AUDIT_LOG_EXPORT_EVENT = 'audit-log.export';
|
|
4
|
+
const AUDIT_LOGS_EXPORT_UNTIL_HEADER = 'X-Audit-Logs-Export-Until';
|
|
5
|
+
const AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER = 'X-Audit-Logs-Export-Next-Cursor';
|
|
6
|
+
const AUDIT_LOGS_EXPORT_PART_SIZE_HEADER = 'X-Audit-Logs-Export-Part-Size';
|
|
7
|
+
const AUDIT_LOGS_EXPORT_TOKEN_HEADER = 'X-Audit-Logs-Export-Token';
|
|
8
|
+
const AUDIT_LOGS_EXPORT_CURSOR_DONE = 'none';
|
|
9
|
+
const AUDIT_LOGS_EXPORT_PART_ROWS = 50000;
|
|
10
|
+
const AUDIT_LOGS_EXPORT_PART_MAX_ROWS = 100000;
|
|
11
|
+
const AUDIT_LOGS_EXPORT_DEFAULT_MAX_ROWS = 1000000;
|
|
12
|
+
|
|
13
|
+
exports.AUDIT_LOGS_EXPORT_CURSOR_DONE = AUDIT_LOGS_EXPORT_CURSOR_DONE;
|
|
14
|
+
exports.AUDIT_LOGS_EXPORT_DEFAULT_MAX_ROWS = AUDIT_LOGS_EXPORT_DEFAULT_MAX_ROWS;
|
|
15
|
+
exports.AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER = AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER;
|
|
16
|
+
exports.AUDIT_LOGS_EXPORT_PART_MAX_ROWS = AUDIT_LOGS_EXPORT_PART_MAX_ROWS;
|
|
17
|
+
exports.AUDIT_LOGS_EXPORT_PART_ROWS = AUDIT_LOGS_EXPORT_PART_ROWS;
|
|
18
|
+
exports.AUDIT_LOGS_EXPORT_PART_SIZE_HEADER = AUDIT_LOGS_EXPORT_PART_SIZE_HEADER;
|
|
19
|
+
exports.AUDIT_LOGS_EXPORT_TOKEN_HEADER = AUDIT_LOGS_EXPORT_TOKEN_HEADER;
|
|
20
|
+
exports.AUDIT_LOGS_EXPORT_UNTIL_HEADER = AUDIT_LOGS_EXPORT_UNTIL_HEADER;
|
|
21
|
+
exports.AUDIT_LOG_EXPORT_EVENT = AUDIT_LOG_EXPORT_EVENT;
|
|
22
|
+
//# sourceMappingURL=audit-log-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log-export.js","sources":["../../../../shared/utils/audit-log-export.ts"],"sourcesContent":["export const AUDIT_LOG_EXPORT_EVENT = 'audit-log.export';\n\nexport const AUDIT_LOGS_EXPORT_UNTIL_HEADER = 'X-Audit-Logs-Export-Until';\nexport const AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER = 'X-Audit-Logs-Export-Next-Cursor';\nexport const AUDIT_LOGS_EXPORT_PART_SIZE_HEADER = 'X-Audit-Logs-Export-Part-Size';\nexport const AUDIT_LOGS_EXPORT_TOKEN_HEADER = 'X-Audit-Logs-Export-Token';\nexport const AUDIT_LOGS_EXPORT_CURSOR_DONE = 'none';\nexport const AUDIT_LOGS_EXPORT_PART_ROWS = 50000;\nexport const AUDIT_LOGS_EXPORT_PART_MAX_ROWS = 100000;\nexport const AUDIT_LOGS_EXPORT_DEFAULT_MAX_ROWS = 1_000_000;\n"],"names":["AUDIT_LOG_EXPORT_EVENT","AUDIT_LOGS_EXPORT_UNTIL_HEADER","AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER","AUDIT_LOGS_EXPORT_PART_SIZE_HEADER","AUDIT_LOGS_EXPORT_TOKEN_HEADER","AUDIT_LOGS_EXPORT_CURSOR_DONE","AUDIT_LOGS_EXPORT_PART_ROWS","AUDIT_LOGS_EXPORT_PART_MAX_ROWS","AUDIT_LOGS_EXPORT_DEFAULT_MAX_ROWS"],"mappings":";;AAAO,MAAMA,yBAAyB;AAE/B,MAAMC,iCAAiC;AACvC,MAAMC,uCAAuC;AAC7C,MAAMC,qCAAqC;AAC3C,MAAMC,iCAAiC;AACvC,MAAMC,gCAAgC;AACtC,MAAMC,8BAA8B;AACpC,MAAMC,kCAAkC;AACxC,MAAMC,qCAAqC;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const AUDIT_LOG_EXPORT_EVENT = 'audit-log.export';
|
|
2
|
+
const AUDIT_LOGS_EXPORT_UNTIL_HEADER = 'X-Audit-Logs-Export-Until';
|
|
3
|
+
const AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER = 'X-Audit-Logs-Export-Next-Cursor';
|
|
4
|
+
const AUDIT_LOGS_EXPORT_PART_SIZE_HEADER = 'X-Audit-Logs-Export-Part-Size';
|
|
5
|
+
const AUDIT_LOGS_EXPORT_TOKEN_HEADER = 'X-Audit-Logs-Export-Token';
|
|
6
|
+
const AUDIT_LOGS_EXPORT_CURSOR_DONE = 'none';
|
|
7
|
+
const AUDIT_LOGS_EXPORT_PART_ROWS = 50000;
|
|
8
|
+
const AUDIT_LOGS_EXPORT_PART_MAX_ROWS = 100000;
|
|
9
|
+
const AUDIT_LOGS_EXPORT_DEFAULT_MAX_ROWS = 1000000;
|
|
10
|
+
|
|
11
|
+
export { AUDIT_LOGS_EXPORT_CURSOR_DONE, AUDIT_LOGS_EXPORT_DEFAULT_MAX_ROWS, AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER, AUDIT_LOGS_EXPORT_PART_MAX_ROWS, AUDIT_LOGS_EXPORT_PART_ROWS, AUDIT_LOGS_EXPORT_PART_SIZE_HEADER, AUDIT_LOGS_EXPORT_TOKEN_HEADER, AUDIT_LOGS_EXPORT_UNTIL_HEADER, AUDIT_LOG_EXPORT_EVENT };
|
|
12
|
+
//# sourceMappingURL=audit-log-export.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log-export.mjs","sources":["../../../../shared/utils/audit-log-export.ts"],"sourcesContent":["export const AUDIT_LOG_EXPORT_EVENT = 'audit-log.export';\n\nexport const AUDIT_LOGS_EXPORT_UNTIL_HEADER = 'X-Audit-Logs-Export-Until';\nexport const AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER = 'X-Audit-Logs-Export-Next-Cursor';\nexport const AUDIT_LOGS_EXPORT_PART_SIZE_HEADER = 'X-Audit-Logs-Export-Part-Size';\nexport const AUDIT_LOGS_EXPORT_TOKEN_HEADER = 'X-Audit-Logs-Export-Token';\nexport const AUDIT_LOGS_EXPORT_CURSOR_DONE = 'none';\nexport const AUDIT_LOGS_EXPORT_PART_ROWS = 50000;\nexport const AUDIT_LOGS_EXPORT_PART_MAX_ROWS = 100000;\nexport const AUDIT_LOGS_EXPORT_DEFAULT_MAX_ROWS = 1_000_000;\n"],"names":["AUDIT_LOG_EXPORT_EVENT","AUDIT_LOGS_EXPORT_UNTIL_HEADER","AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER","AUDIT_LOGS_EXPORT_PART_SIZE_HEADER","AUDIT_LOGS_EXPORT_TOKEN_HEADER","AUDIT_LOGS_EXPORT_CURSOR_DONE","AUDIT_LOGS_EXPORT_PART_ROWS","AUDIT_LOGS_EXPORT_PART_MAX_ROWS","AUDIT_LOGS_EXPORT_DEFAULT_MAX_ROWS"],"mappings":"AAAO,MAAMA,yBAAyB;AAE/B,MAAMC,iCAAiC;AACvC,MAAMC,uCAAuC;AAC7C,MAAMC,qCAAqC;AAC3C,MAAMC,iCAAiC;AACvC,MAAMC,gCAAgC;AACtC,MAAMC,8BAA8B;AACpC,MAAMC,kCAAkC;AACxC,MAAMC,qCAAqC;;;;"}
|
|
@@ -58,4 +58,18 @@ declare namespace GetUsers {
|
|
|
58
58
|
error?: errors.ApplicationError;
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
declare namespace Export {
|
|
62
|
+
interface Request {
|
|
63
|
+
body: {};
|
|
64
|
+
query: {
|
|
65
|
+
cursor?: number;
|
|
66
|
+
pageSize?: number;
|
|
67
|
+
until?: number;
|
|
68
|
+
filters?: unknown;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
type Response = string | {
|
|
72
|
+
error?: errors.ApplicationError;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export { AuditLog, GetAll, Get, GetUsers, Export };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-logs.d.ts","sourceRoot":"","sources":["../../../shared/contracts/audit-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGlE,MAAM,WAAW,8BAA+B,SAAQ,kBAAkB;IACxE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,QAAS,SAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,8BAA8B,CAAC;CACvC;AAED,kBAAU,MAAM,CAAC;IACf,UAAiB,OAAO;QACtB,IAAI,EAAE,EAAE,CAAC;QACT,KAAK,EAAE,EAAE,CAAC;KACX;IAED,KAAY,QAAQ,GAChB;QACE,UAAU,EAAE,UAAU,CAAC;QACvB,OAAO,EAAE,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,GACD;QACE,UAAU,CAAC,EAAE,KAAK,CAAC;QACnB,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;KACjC,CAAC;CACP;AAED,kBAAU,GAAG,CAAC;IACZ,UAAiB,OAAO;QACtB,IAAI,EAAE,EAAE,CAAC;QACT,KAAK,EAAE,EAAE,CAAC;KACX;IAED,UAAiB,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;KAClB;IAED,KAAY,QAAQ,GAChB,QAAQ,GACR;QACE,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;KACjC,CAAC;CACP;AAED,kBAAU,QAAQ,CAAC;IACjB,UAAiB,OAAO;QACtB,IAAI,EAAE,EAAE,CAAC;QACT,KAAK,EAAE;YACL,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH;IAED,KAAY,QAAQ,GAChB;QACE,UAAU,EAAE,UAAU,CAAC;QACvB,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE,IAAI,GAAG,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC;QAChF,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,GACD;QACE,UAAU,CAAC,EAAE,KAAK,CAAC;QACnB,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;KACjC,CAAC;CACP;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"audit-logs.d.ts","sourceRoot":"","sources":["../../../shared/contracts/audit-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGlE,MAAM,WAAW,8BAA+B,SAAQ,kBAAkB;IACxE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,QAAS,SAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,8BAA8B,CAAC;CACvC;AAED,kBAAU,MAAM,CAAC;IACf,UAAiB,OAAO;QACtB,IAAI,EAAE,EAAE,CAAC;QACT,KAAK,EAAE,EAAE,CAAC;KACX;IAED,KAAY,QAAQ,GAChB;QACE,UAAU,EAAE,UAAU,CAAC;QACvB,OAAO,EAAE,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,GACD;QACE,UAAU,CAAC,EAAE,KAAK,CAAC;QACnB,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;KACjC,CAAC;CACP;AAED,kBAAU,GAAG,CAAC;IACZ,UAAiB,OAAO;QACtB,IAAI,EAAE,EAAE,CAAC;QACT,KAAK,EAAE,EAAE,CAAC;KACX;IAED,UAAiB,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;KAClB;IAED,KAAY,QAAQ,GAChB,QAAQ,GACR;QACE,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;KACjC,CAAC;CACP;AAED,kBAAU,QAAQ,CAAC;IACjB,UAAiB,OAAO;QACtB,IAAI,EAAE,EAAE,CAAC;QACT,KAAK,EAAE;YACL,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE,MAAM,CAAC;SACnB,CAAC;KACH;IAED,KAAY,QAAQ,GAChB;QACE,UAAU,EAAE,UAAU,CAAC;QACvB,OAAO,EAAE,IAAI,CAAC,8BAA8B,EAAE,IAAI,GAAG,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC;QAChF,KAAK,CAAC,EAAE,KAAK,CAAC;KACf,GACD;QACE,UAAU,CAAC,EAAE,KAAK,CAAC;QACnB,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;KACjC,CAAC;CACP;AAED,kBAAU,MAAM,CAAC;IACf,UAAiB,OAAO;QACtB,IAAI,EAAE,EAAE,CAAC;QACT,KAAK,EAAE;YACL,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,OAAO,CAAC,EAAE,OAAO,CAAC;SACnB,CAAC;KACH;IAED,KAAY,QAAQ,GAChB,MAAM,GACN;QACE,KAAK,CAAC,EAAE,MAAM,CAAC,gBAAgB,CAAC;KACjC,CAAC;CACP;AAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const AUDIT_LOG_EXPORT_EVENT = "audit-log.export";
|
|
2
|
+
export declare const AUDIT_LOGS_EXPORT_UNTIL_HEADER = "X-Audit-Logs-Export-Until";
|
|
3
|
+
export declare const AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER = "X-Audit-Logs-Export-Next-Cursor";
|
|
4
|
+
export declare const AUDIT_LOGS_EXPORT_PART_SIZE_HEADER = "X-Audit-Logs-Export-Part-Size";
|
|
5
|
+
export declare const AUDIT_LOGS_EXPORT_TOKEN_HEADER = "X-Audit-Logs-Export-Token";
|
|
6
|
+
export declare const AUDIT_LOGS_EXPORT_CURSOR_DONE = "none";
|
|
7
|
+
export declare const AUDIT_LOGS_EXPORT_PART_ROWS = 50000;
|
|
8
|
+
export declare const AUDIT_LOGS_EXPORT_PART_MAX_ROWS = 100000;
|
|
9
|
+
export declare const AUDIT_LOGS_EXPORT_DEFAULT_MAX_ROWS = 1000000;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log-export.d.ts","sourceRoot":"","sources":["../../../shared/utils/audit-log-export.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,qBAAqB,CAAC;AAEzD,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,oCAAoC,oCAAoC,CAAC;AACtF,eAAO,MAAM,kCAAkC,kCAAkC,CAAC;AAClF,eAAO,MAAM,8BAA8B,8BAA8B,CAAC;AAC1E,eAAO,MAAM,6BAA6B,SAAS,CAAC;AACpD,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AACjD,eAAO,MAAM,+BAA+B,SAAS,CAAC;AACtD,eAAO,MAAM,kCAAkC,UAAY,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strapi/admin",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.53.0",
|
|
4
4
|
"description": "Strapi Admin",
|
|
5
5
|
"homepage": "https://strapi.io",
|
|
6
6
|
"bugs": {
|
|
@@ -91,10 +91,10 @@
|
|
|
91
91
|
"@reduxjs/toolkit": "1.9.7",
|
|
92
92
|
"@strapi/design-system": "2.2.4",
|
|
93
93
|
"@strapi/icons": "2.2.4",
|
|
94
|
-
"@strapi/permissions": "5.
|
|
95
|
-
"@strapi/types": "5.
|
|
96
|
-
"@strapi/typescript-utils": "5.
|
|
97
|
-
"@strapi/utils": "5.
|
|
94
|
+
"@strapi/permissions": "5.53.0",
|
|
95
|
+
"@strapi/types": "5.53.0",
|
|
96
|
+
"@strapi/typescript-utils": "5.53.0",
|
|
97
|
+
"@strapi/utils": "5.53.0",
|
|
98
98
|
"@testing-library/dom": "10.4.1",
|
|
99
99
|
"@testing-library/react": "16.3.2",
|
|
100
100
|
"@testing-library/user-event": "14.6.1",
|
|
@@ -148,8 +148,8 @@
|
|
|
148
148
|
"zod": "4.4.3"
|
|
149
149
|
},
|
|
150
150
|
"devDependencies": {
|
|
151
|
-
"@strapi/admin-test-utils": "5.
|
|
152
|
-
"@strapi/data-transfer": "5.
|
|
151
|
+
"@strapi/admin-test-utils": "5.53.0",
|
|
152
|
+
"@strapi/data-transfer": "5.53.0",
|
|
153
153
|
"@testing-library/jest-dom": "6.9.1",
|
|
154
154
|
"@types/codemirror5": "npm:@types/codemirror@^5.60.15",
|
|
155
155
|
"@types/fs-extra": "11.0.4",
|