@strapi/admin 5.52.2 → 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/components/Filters.js +9 -9
- package/dist/admin/admin/src/components/Filters.js.map +1 -1
- package/dist/admin/admin/src/components/Filters.mjs +10 -10
- package/dist/admin/admin/src/components/Filters.mjs.map +1 -1
- package/dist/admin/admin/src/components/Pagination.js +2 -2
- package/dist/admin/admin/src/components/Pagination.js.map +1 -1
- package/dist/admin/admin/src/components/Pagination.mjs +3 -3
- package/dist/admin/admin/src/components/Pagination.mjs.map +1 -1
- package/dist/admin/admin/src/components/SearchInput.js +7 -8
- package/dist/admin/admin/src/components/SearchInput.js.map +1 -1
- package/dist/admin/admin/src/components/SearchInput.mjs +8 -9
- package/dist/admin/admin/src/components/SearchInput.mjs.map +1 -1
- package/dist/admin/admin/src/components/Table.js +2 -2
- package/dist/admin/admin/src/components/Table.js.map +1 -1
- package/dist/admin/admin/src/components/Table.mjs +3 -3
- package/dist/admin/admin/src/components/Table.mjs.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js +35 -1
- package/dist/admin/admin/src/hooks/useQueryParams.js.map +1 -1
- package/dist/admin/admin/src/hooks/useQueryParams.mjs +34 -2
- package/dist/admin/admin/src/hooks/useQueryParams.mjs.map +1 -1
- 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 +40 -12
- 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 +43 -15
- 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 +4 -0
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/index.mjs +2 -2
- 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/components/Filters.d.ts +1 -0
- package/dist/admin/src/hooks/useQueryParams.d.ts +13 -1
- package/dist/admin/src/index.d.ts +1 -1
- 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
package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.mjs
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { useIntl } from 'react-intl';
|
|
3
|
+
import { useNotification } from '../../../../../../../../admin/src/features/Notifications.mjs';
|
|
4
|
+
import { getFetchClient, isFetchError } from '../../../../../../../../admin/src/utils/getFetchClient.mjs';
|
|
5
|
+
import { AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER, AUDIT_LOGS_EXPORT_UNTIL_HEADER, AUDIT_LOGS_EXPORT_TOKEN_HEADER, AUDIT_LOGS_EXPORT_CURSOR_DONE, AUDIT_LOGS_EXPORT_PART_SIZE_HEADER, AUDIT_LOGS_EXPORT_PART_ROWS } from '../../../../../../../../shared/utils/audit-log-export.mjs';
|
|
6
|
+
|
|
7
|
+
const DEFAULT_FILE_NAME = 'audit-logs.csv';
|
|
8
|
+
const getFileName = (contentDisposition)=>{
|
|
9
|
+
const match = contentDisposition?.match(/filename="([^"]+)"/);
|
|
10
|
+
return match?.[1] ?? DEFAULT_FILE_NAME;
|
|
11
|
+
};
|
|
12
|
+
const downloadFile = (blob, fileName)=>{
|
|
13
|
+
const url = URL.createObjectURL(blob);
|
|
14
|
+
const link = document.createElement('a');
|
|
15
|
+
link.href = url;
|
|
16
|
+
link.download = fileName;
|
|
17
|
+
document.body.appendChild(link);
|
|
18
|
+
link.click();
|
|
19
|
+
link.remove();
|
|
20
|
+
// Revoking during a later tick to avoid aborting the download
|
|
21
|
+
setTimeout(()=>URL.revokeObjectURL(url), 60000);
|
|
22
|
+
};
|
|
23
|
+
const useExportAuditLogs = ()=>{
|
|
24
|
+
const [isExporting, setIsExporting] = React.useState(false);
|
|
25
|
+
const [progress, setProgress] = React.useState(null);
|
|
26
|
+
const [exportResult, setExportResult] = React.useState(null);
|
|
27
|
+
const { toggleNotification } = useNotification();
|
|
28
|
+
const { formatMessage } = useIntl();
|
|
29
|
+
const isExportingRef = React.useRef(false);
|
|
30
|
+
const isMountedRef = React.useRef(true);
|
|
31
|
+
React.useEffect(()=>{
|
|
32
|
+
isMountedRef.current = true;
|
|
33
|
+
return ()=>{
|
|
34
|
+
isMountedRef.current = false;
|
|
35
|
+
};
|
|
36
|
+
}, []);
|
|
37
|
+
const exportAuditLogs = async (filters, totalEntries)=>{
|
|
38
|
+
if (isExportingRef.current) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
isExportingRef.current = true;
|
|
42
|
+
setIsExporting(true);
|
|
43
|
+
setExportResult(null);
|
|
44
|
+
setProgress({
|
|
45
|
+
fetched: 0,
|
|
46
|
+
total: totalEntries
|
|
47
|
+
});
|
|
48
|
+
const { get } = getFetchClient();
|
|
49
|
+
let cursor = null;
|
|
50
|
+
let until = null;
|
|
51
|
+
let token = null;
|
|
52
|
+
let fileName = DEFAULT_FILE_NAME;
|
|
53
|
+
const parts = [];
|
|
54
|
+
try {
|
|
55
|
+
do {
|
|
56
|
+
const { data, headers } = await get('/admin/audit-logs/export', {
|
|
57
|
+
params: {
|
|
58
|
+
...filters ? {
|
|
59
|
+
filters
|
|
60
|
+
} : {},
|
|
61
|
+
...cursor ? {
|
|
62
|
+
cursor
|
|
63
|
+
} : {},
|
|
64
|
+
...until ? {
|
|
65
|
+
until
|
|
66
|
+
} : {},
|
|
67
|
+
...token ? {
|
|
68
|
+
token
|
|
69
|
+
} : {}
|
|
70
|
+
},
|
|
71
|
+
responseType: 'blob'
|
|
72
|
+
});
|
|
73
|
+
if (!isMountedRef.current) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const nextCursorHeader = headers?.get(AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER) ?? null;
|
|
77
|
+
const untilHeader = headers?.get(AUDIT_LOGS_EXPORT_UNTIL_HEADER) ?? null;
|
|
78
|
+
const tokenHeader = headers?.get(AUDIT_LOGS_EXPORT_TOKEN_HEADER) ?? null;
|
|
79
|
+
if (!nextCursorHeader || !untilHeader || !tokenHeader) {
|
|
80
|
+
throw new Error('The audit logs export part headers are missing');
|
|
81
|
+
}
|
|
82
|
+
cursor = nextCursorHeader === AUDIT_LOGS_EXPORT_CURSOR_DONE ? null : nextCursorHeader;
|
|
83
|
+
until = untilHeader;
|
|
84
|
+
token = tokenHeader;
|
|
85
|
+
if (parts.length === 0) {
|
|
86
|
+
fileName = getFileName(headers?.get('Content-Disposition') ?? null);
|
|
87
|
+
}
|
|
88
|
+
parts.push(data);
|
|
89
|
+
const partRows = Number(headers?.get(AUDIT_LOGS_EXPORT_PART_SIZE_HEADER)) || AUDIT_LOGS_EXPORT_PART_ROWS;
|
|
90
|
+
setProgress({
|
|
91
|
+
fetched: Math.min(parts.length * partRows, totalEntries),
|
|
92
|
+
total: totalEntries
|
|
93
|
+
});
|
|
94
|
+
}while (cursor)
|
|
95
|
+
setExportResult({
|
|
96
|
+
blob: new Blob(parts, {
|
|
97
|
+
type: 'text/csv;charset=utf-8'
|
|
98
|
+
}),
|
|
99
|
+
fileName
|
|
100
|
+
});
|
|
101
|
+
} catch (error) {
|
|
102
|
+
const message = ()=>{
|
|
103
|
+
if (isFetchError(error) && error.status === 413) {
|
|
104
|
+
return formatMessage({
|
|
105
|
+
id: 'Settings.permissions.auditLogs.listview.export.error.tooLarge',
|
|
106
|
+
defaultMessage: 'Table too large to export. Please add filters and try again.'
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
if (isFetchError(error) && error.status === 403) {
|
|
110
|
+
return formatMessage({
|
|
111
|
+
id: 'Settings.permissions.auditLogs.listview.export.error.forbidden',
|
|
112
|
+
defaultMessage: "You don't have the permissions to export audit logs."
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
return formatMessage({
|
|
116
|
+
id: 'Settings.permissions.auditLogs.listview.export.error',
|
|
117
|
+
defaultMessage: 'The export failed. Please try again.'
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
toggleNotification({
|
|
121
|
+
type: 'danger',
|
|
122
|
+
message: message()
|
|
123
|
+
});
|
|
124
|
+
} finally{
|
|
125
|
+
isExportingRef.current = false;
|
|
126
|
+
setIsExporting(false);
|
|
127
|
+
setProgress(null);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const downloadExport = ()=>{
|
|
131
|
+
if (!exportResult) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
downloadFile(exportResult.blob, exportResult.fileName);
|
|
135
|
+
setExportResult(null);
|
|
136
|
+
};
|
|
137
|
+
const dismissExport = ()=>{
|
|
138
|
+
setExportResult(null);
|
|
139
|
+
};
|
|
140
|
+
return {
|
|
141
|
+
exportAuditLogs,
|
|
142
|
+
downloadExport,
|
|
143
|
+
dismissExport,
|
|
144
|
+
isExporting,
|
|
145
|
+
progress,
|
|
146
|
+
exportResult
|
|
147
|
+
};
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
export { useExportAuditLogs };
|
|
151
|
+
//# sourceMappingURL=useExportAuditLogs.mjs.map
|
package/dist/admin/ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.mjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useExportAuditLogs.mjs","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/hooks/useExportAuditLogs.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useIntl } from 'react-intl';\n\nimport { useNotification } from '../../../../../../../../admin/src/features/Notifications';\nimport {\n getFetchClient,\n isFetchError,\n type FetchResponse,\n} from '../../../../../../../../admin/src/utils/getFetchClient';\nimport {\n AUDIT_LOGS_EXPORT_CURSOR_DONE,\n AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER,\n AUDIT_LOGS_EXPORT_PART_ROWS,\n AUDIT_LOGS_EXPORT_PART_SIZE_HEADER,\n AUDIT_LOGS_EXPORT_TOKEN_HEADER,\n AUDIT_LOGS_EXPORT_UNTIL_HEADER,\n} from '../../../../../../../../shared/utils/audit-log-export';\n\nconst DEFAULT_FILE_NAME = 'audit-logs.csv';\n\ninterface ExportProgress {\n fetched: number;\n total: number;\n}\n\ninterface ExportResult {\n blob: Blob;\n fileName: string;\n}\n\nconst getFileName = (contentDisposition: string | null) => {\n const match = contentDisposition?.match(/filename=\"([^\"]+)\"/);\n\n return match?.[1] ?? DEFAULT_FILE_NAME;\n};\n\nconst downloadFile = (blob: Blob, fileName: string) => {\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = fileName;\n document.body.appendChild(link);\n link.click();\n link.remove();\n\n // Revoking during a later tick to avoid aborting the download\n setTimeout(() => URL.revokeObjectURL(url), 60000);\n};\n\nconst useExportAuditLogs = () => {\n const [isExporting, setIsExporting] = React.useState(false);\n const [progress, setProgress] = React.useState<ExportProgress | null>(null);\n const [exportResult, setExportResult] = React.useState<ExportResult | null>(null);\n const { toggleNotification } = useNotification();\n const { formatMessage } = useIntl();\n\n const isExportingRef = React.useRef(false);\n\n const isMountedRef = React.useRef(true);\n React.useEffect(() => {\n isMountedRef.current = true;\n\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n\n const exportAuditLogs = async (filters: unknown, totalEntries: number) => {\n if (isExportingRef.current) {\n return;\n }\n\n isExportingRef.current = true;\n setIsExporting(true);\n setExportResult(null);\n setProgress({ fetched: 0, total: totalEntries });\n\n const { get } = getFetchClient();\n\n let cursor: string | null = null;\n let until: string | null = null;\n let token: string | null = null;\n let fileName = DEFAULT_FILE_NAME;\n const parts: Blob[] = [];\n\n try {\n do {\n const { data, headers }: FetchResponse<Blob> = await get<Blob>('/admin/audit-logs/export', {\n params: {\n ...(filters ? { filters } : {}),\n ...(cursor ? { cursor } : {}),\n ...(until ? { until } : {}),\n ...(token ? { token } : {}),\n },\n responseType: 'blob',\n });\n\n if (!isMountedRef.current) {\n return;\n }\n\n const nextCursorHeader: string | null =\n headers?.get(AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER) ?? null;\n const untilHeader: string | null = headers?.get(AUDIT_LOGS_EXPORT_UNTIL_HEADER) ?? null;\n const tokenHeader: string | null = headers?.get(AUDIT_LOGS_EXPORT_TOKEN_HEADER) ?? null;\n\n if (!nextCursorHeader || !untilHeader || !tokenHeader) {\n throw new Error('The audit logs export part headers are missing');\n }\n\n cursor = nextCursorHeader === AUDIT_LOGS_EXPORT_CURSOR_DONE ? null : nextCursorHeader;\n until = untilHeader;\n token = tokenHeader;\n\n if (parts.length === 0) {\n fileName = getFileName(headers?.get('Content-Disposition') ?? null);\n }\n\n parts.push(data);\n\n const partRows =\n Number(headers?.get(AUDIT_LOGS_EXPORT_PART_SIZE_HEADER)) || AUDIT_LOGS_EXPORT_PART_ROWS;\n setProgress({\n fetched: Math.min(parts.length * partRows, totalEntries),\n total: totalEntries,\n });\n } while (cursor);\n\n setExportResult({ blob: new Blob(parts, { type: 'text/csv;charset=utf-8' }), fileName });\n } catch (error) {\n const message = () => {\n if (isFetchError(error) && error.status === 413) {\n return formatMessage({\n id: 'Settings.permissions.auditLogs.listview.export.error.tooLarge',\n defaultMessage: 'Table too large to export. Please add filters and try again.',\n });\n }\n\n if (isFetchError(error) && error.status === 403) {\n return formatMessage({\n id: 'Settings.permissions.auditLogs.listview.export.error.forbidden',\n defaultMessage: \"You don't have the permissions to export audit logs.\",\n });\n }\n\n return formatMessage({\n id: 'Settings.permissions.auditLogs.listview.export.error',\n defaultMessage: 'The export failed. Please try again.',\n });\n };\n\n toggleNotification({ type: 'danger', message: message() });\n } finally {\n isExportingRef.current = false;\n setIsExporting(false);\n setProgress(null);\n }\n };\n\n const downloadExport = () => {\n if (!exportResult) {\n return;\n }\n\n downloadFile(exportResult.blob, exportResult.fileName);\n setExportResult(null);\n };\n\n const dismissExport = () => {\n setExportResult(null);\n };\n\n return { exportAuditLogs, downloadExport, dismissExport, isExporting, progress, exportResult };\n};\n\nexport { useExportAuditLogs };\nexport type { ExportProgress, ExportResult };\n"],"names":["DEFAULT_FILE_NAME","getFileName","contentDisposition","match","downloadFile","blob","fileName","url","URL","createObjectURL","link","document","createElement","href","download","body","appendChild","click","remove","setTimeout","revokeObjectURL","useExportAuditLogs","isExporting","setIsExporting","React","useState","progress","setProgress","exportResult","setExportResult","toggleNotification","useNotification","formatMessage","useIntl","isExportingRef","useRef","isMountedRef","useEffect","current","exportAuditLogs","filters","totalEntries","fetched","total","get","getFetchClient","cursor","until","token","parts","data","headers","params","responseType","nextCursorHeader","AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER","untilHeader","AUDIT_LOGS_EXPORT_UNTIL_HEADER","tokenHeader","AUDIT_LOGS_EXPORT_TOKEN_HEADER","Error","AUDIT_LOGS_EXPORT_CURSOR_DONE","length","push","partRows","Number","AUDIT_LOGS_EXPORT_PART_SIZE_HEADER","AUDIT_LOGS_EXPORT_PART_ROWS","Math","min","Blob","type","error","message","isFetchError","status","id","defaultMessage","downloadExport","dismissExport"],"mappings":";;;;;;AAmBA,MAAMA,iBAAAA,GAAoB,gBAAA;AAY1B,MAAMC,cAAc,CAACC,kBAAAA,GAAAA;IACnB,MAAMC,KAAAA,GAAQD,oBAAoBC,KAAAA,CAAM,oBAAA,CAAA;IAExC,OAAOA,KAAAA,GAAQ,CAAA,CAAE,IAAIH,iBAAAA;AACvB,CAAA;AAEA,MAAMI,YAAAA,GAAe,CAACC,IAAAA,EAAYC,QAAAA,GAAAA;IAChC,MAAMC,GAAAA,GAAMC,GAAAA,CAAIC,eAAe,CAACJ,IAAAA,CAAAA;IAChC,MAAMK,IAAAA,GAAOC,QAAAA,CAASC,aAAa,CAAC,GAAA,CAAA;AACpCF,IAAAA,IAAAA,CAAKG,IAAI,GAAGN,GAAAA;AACZG,IAAAA,IAAAA,CAAKI,QAAQ,GAAGR,QAAAA;IAChBK,QAAAA,CAASI,IAAI,CAACC,WAAW,CAACN,IAAAA,CAAAA;AAC1BA,IAAAA,IAAAA,CAAKO,KAAK,EAAA;AACVP,IAAAA,IAAAA,CAAKQ,MAAM,EAAA;;AAGXC,IAAAA,UAAAA,CAAW,IAAMX,GAAAA,CAAIY,eAAe,CAACb,GAAAA,CAAAA,EAAM,KAAA,CAAA;AAC7C,CAAA;AAEA,MAAMc,kBAAAA,GAAqB,IAAA;AACzB,IAAA,MAAM,CAACC,WAAAA,EAAaC,cAAAA,CAAe,GAAGC,KAAAA,CAAMC,QAAQ,CAAC,KAAA,CAAA;AACrD,IAAA,MAAM,CAACC,QAAAA,EAAUC,WAAAA,CAAY,GAAGH,KAAAA,CAAMC,QAAQ,CAAwB,IAAA,CAAA;AACtE,IAAA,MAAM,CAACG,YAAAA,EAAcC,eAAAA,CAAgB,GAAGL,KAAAA,CAAMC,QAAQ,CAAsB,IAAA,CAAA;IAC5E,MAAM,EAAEK,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,MAAMC,cAAAA,GAAiBV,KAAAA,CAAMW,MAAM,CAAC,KAAA,CAAA;IAEpC,MAAMC,YAAAA,GAAeZ,KAAAA,CAAMW,MAAM,CAAC,IAAA,CAAA;AAClCX,IAAAA,KAAAA,CAAMa,SAAS,CAAC,IAAA;AACdD,QAAAA,YAAAA,CAAaE,OAAO,GAAG,IAAA;QAEvB,OAAO,IAAA;AACLF,YAAAA,YAAAA,CAAaE,OAAO,GAAG,KAAA;AACzB,QAAA,CAAA;AACF,IAAA,CAAA,EAAG,EAAE,CAAA;IAEL,MAAMC,eAAAA,GAAkB,OAAOC,OAAAA,EAAkBC,YAAAA,GAAAA;QAC/C,IAAIP,cAAAA,CAAeI,OAAO,EAAE;AAC1B,YAAA;AACF,QAAA;AAEAJ,QAAAA,cAAAA,CAAeI,OAAO,GAAG,IAAA;QACzBf,cAAAA,CAAe,IAAA,CAAA;QACfM,eAAAA,CAAgB,IAAA,CAAA;QAChBF,WAAAA,CAAY;YAAEe,OAAAA,EAAS,CAAA;YAAGC,KAAAA,EAAOF;AAAa,SAAA,CAAA;QAE9C,MAAM,EAAEG,GAAG,EAAE,GAAGC,cAAAA,EAAAA;AAEhB,QAAA,IAAIC,MAAAA,GAAwB,IAAA;AAC5B,QAAA,IAAIC,KAAAA,GAAuB,IAAA;AAC3B,QAAA,IAAIC,KAAAA,GAAuB,IAAA;AAC3B,QAAA,IAAI1C,QAAAA,GAAWN,iBAAAA;AACf,QAAA,MAAMiD,QAAgB,EAAE;QAExB,IAAI;YACF,GAAG;gBACD,MAAM,EAAEC,IAAI,EAAEC,OAAO,EAAE,GAAwB,MAAMP,IAAU,0BAAA,EAA4B;oBACzFQ,MAAAA,EAAQ;AACN,wBAAA,GAAIZ,OAAAA,GAAU;AAAEA,4BAAAA;AAAQ,yBAAA,GAAI,EAAE;AAC9B,wBAAA,GAAIM,MAAAA,GAAS;AAAEA,4BAAAA;AAAO,yBAAA,GAAI,EAAE;AAC5B,wBAAA,GAAIC,KAAAA,GAAQ;AAAEA,4BAAAA;AAAM,yBAAA,GAAI,EAAE;AAC1B,wBAAA,GAAIC,KAAAA,GAAQ;AAAEA,4BAAAA;AAAM,yBAAA,GAAI;AAC1B,qBAAA;oBACAK,YAAAA,EAAc;AAChB,iBAAA,CAAA;gBAEA,IAAI,CAACjB,YAAAA,CAAaE,OAAO,EAAE;AACzB,oBAAA;AACF,gBAAA;gBAEA,MAAMgB,gBAAAA,GACJH,OAAAA,EAASP,GAAAA,CAAIW,oCAAAA,CAAAA,IAAyC,IAAA;gBACxD,MAAMC,WAAAA,GAA6BL,OAAAA,EAASP,GAAAA,CAAIa,8BAAAA,CAAAA,IAAmC,IAAA;gBACnF,MAAMC,WAAAA,GAA6BP,OAAAA,EAASP,GAAAA,CAAIe,8BAAAA,CAAAA,IAAmC,IAAA;AAEnF,gBAAA,IAAI,CAACL,gBAAAA,IAAoB,CAACE,WAAAA,IAAe,CAACE,WAAAA,EAAa;AACrD,oBAAA,MAAM,IAAIE,KAAAA,CAAM,gDAAA,CAAA;AAClB,gBAAA;gBAEAd,MAAAA,GAASQ,gBAAAA,KAAqBO,gCAAgC,IAAA,GAAOP,gBAAAA;gBACrEP,KAAAA,GAAQS,WAAAA;gBACRR,KAAAA,GAAQU,WAAAA;gBAER,IAAIT,KAAAA,CAAMa,MAAM,KAAK,CAAA,EAAG;oBACtBxD,QAAAA,GAAWL,WAAAA,CAAYkD,OAAAA,EAASP,GAAAA,CAAI,qBAAA,CAAA,IAA0B,IAAA,CAAA;AAChE,gBAAA;AAEAK,gBAAAA,KAAAA,CAAMc,IAAI,CAACb,IAAAA,CAAAA;AAEX,gBAAA,MAAMc,QAAAA,GACJC,MAAAA,CAAOd,OAAAA,EAASP,GAAAA,CAAIsB,kCAAAA,CAAAA,CAAAA,IAAwCC,2BAAAA;gBAC9DxC,WAAAA,CAAY;AACVe,oBAAAA,OAAAA,EAAS0B,KAAKC,GAAG,CAACpB,KAAAA,CAAMa,MAAM,GAAGE,QAAAA,EAAUvB,YAAAA,CAAAA;oBAC3CE,KAAAA,EAAOF;AACT,iBAAA,CAAA;AACF,YAAA,CAAA,OAASK,MAAAA;YAETjB,eAAAA,CAAgB;gBAAExB,IAAAA,EAAM,IAAIiE,KAAKrB,KAAAA,EAAO;oBAAEsB,IAAAA,EAAM;AAAyB,iBAAA,CAAA;AAAIjE,gBAAAA;AAAS,aAAA,CAAA;AACxF,QAAA,CAAA,CAAE,OAAOkE,KAAAA,EAAO;AACd,YAAA,MAAMC,OAAAA,GAAU,IAAA;AACd,gBAAA,IAAIC,YAAAA,CAAaF,KAAAA,CAAAA,IAAUA,KAAAA,CAAMG,MAAM,KAAK,GAAA,EAAK;AAC/C,oBAAA,OAAO3C,aAAAA,CAAc;wBACnB4C,EAAAA,EAAI,+DAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA,IAAIH,YAAAA,CAAaF,KAAAA,CAAAA,IAAUA,KAAAA,CAAMG,MAAM,KAAK,GAAA,EAAK;AAC/C,oBAAA,OAAO3C,aAAAA,CAAc;wBACnB4C,EAAAA,EAAI,gEAAA;wBACJC,cAAAA,EAAgB;AAClB,qBAAA,CAAA;AACF,gBAAA;AAEA,gBAAA,OAAO7C,aAAAA,CAAc;oBACnB4C,EAAAA,EAAI,sDAAA;oBACJC,cAAAA,EAAgB;AAClB,iBAAA,CAAA;AACF,YAAA,CAAA;YAEA/C,kBAAAA,CAAmB;gBAAEyC,IAAAA,EAAM,QAAA;gBAAUE,OAAAA,EAASA,OAAAA;AAAU,aAAA,CAAA;QAC1D,CAAA,QAAU;AACRvC,YAAAA,cAAAA,CAAeI,OAAO,GAAG,KAAA;YACzBf,cAAAA,CAAe,KAAA,CAAA;YACfI,WAAAA,CAAY,IAAA,CAAA;AACd,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMmD,cAAAA,GAAiB,IAAA;AACrB,QAAA,IAAI,CAAClD,YAAAA,EAAc;AACjB,YAAA;AACF,QAAA;AAEAxB,QAAAA,YAAAA,CAAawB,YAAAA,CAAavB,IAAI,EAAEuB,YAAAA,CAAatB,QAAQ,CAAA;QACrDuB,eAAAA,CAAgB,IAAA,CAAA;AAClB,IAAA,CAAA;AAEA,IAAA,MAAMkD,aAAAA,GAAgB,IAAA;QACpBlD,eAAAA,CAAgB,IAAA,CAAA;AAClB,IAAA,CAAA;IAEA,OAAO;AAAEU,QAAAA,eAAAA;AAAiBuC,QAAAA,cAAAA;AAAgBC,QAAAA,aAAAA;AAAezD,QAAAA,WAAAA;AAAaI,QAAAA,QAAAA;AAAUE,QAAAA;AAAa,KAAA;AAC/F;;;;"}
|
|
@@ -28,7 +28,16 @@ const actionTypes = {
|
|
|
28
28
|
'role.delete': 'Delete role',
|
|
29
29
|
'permission.create': 'Create permission',
|
|
30
30
|
'permission.update': 'Update permission',
|
|
31
|
-
'permission.delete': 'Delete permission'
|
|
31
|
+
'permission.delete': 'Delete permission',
|
|
32
|
+
'release.create': 'Create release',
|
|
33
|
+
'release.update': 'Update release',
|
|
34
|
+
'release.delete': 'Delete release',
|
|
35
|
+
'release.trigger': 'Trigger release',
|
|
36
|
+
'release.entry.add': 'Add entry to release',
|
|
37
|
+
'release.entry.update': 'Change entry on release',
|
|
38
|
+
'release.entry.remove': 'Remove entry from release',
|
|
39
|
+
'release.settings.update': 'Update release settings',
|
|
40
|
+
'audit-log.export': 'Export audit logs'
|
|
32
41
|
};
|
|
33
42
|
const getDefaultMessage = (value)=>{
|
|
34
43
|
return actionTypes[value] || value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getActionTypesDefaultMessages.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.ts"],"sourcesContent":["export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n};\n\nexport const getDefaultMessage = (value: keyof typeof actionTypes) => {\n return actionTypes[value] || value;\n};\n"],"names":["actionTypes","getDefaultMessage","value"],"mappings":";;MAAaA,WAAAA,GAAc;IACzB,cAAA,EAAgB,8DAAA;IAChB,cAAA,EAAgB,8DAAA;IAChB,cAAA,EAAgB,8DAAA;IAChB,eAAA,EAAiB,+DAAA;IACjB,iBAAA,EAAmB,iEAAA;IACnB,cAAA,EAAgB,cAAA;IAChB,cAAA,EAAgB,cAAA;IAChB,cAAA,EAAgB,cAAA;IAChB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,oBAAA,EAAsB,aAAA;IACtB,cAAA,EAAgB,cAAA;IAChB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,kBAAA,EAAoB,kBAAA;IACpB,kBAAA,EAAoB,kBAAA;IACpB,kBAAA,EAAoB,kBAAA;IACpB,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,mBAAA,EAAqB,mBAAA;IACrB,mBAAA,EAAqB,mBAAA;IACrB,mBAAA,EAAqB;
|
|
1
|
+
{"version":3,"file":"getActionTypesDefaultMessages.js","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.ts"],"sourcesContent":["export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n 'release.create': 'Create release',\n 'release.update': 'Update release',\n 'release.delete': 'Delete release',\n 'release.trigger': 'Trigger release',\n 'release.entry.add': 'Add entry to release',\n 'release.entry.update': 'Change entry on release',\n 'release.entry.remove': 'Remove entry from release',\n 'release.settings.update': 'Update release settings',\n 'audit-log.export': 'Export audit logs',\n};\n\nexport const getDefaultMessage = (value: keyof typeof actionTypes) => {\n return actionTypes[value] || value;\n};\n"],"names":["actionTypes","getDefaultMessage","value"],"mappings":";;MAAaA,WAAAA,GAAc;IACzB,cAAA,EAAgB,8DAAA;IAChB,cAAA,EAAgB,8DAAA;IAChB,cAAA,EAAgB,8DAAA;IAChB,eAAA,EAAiB,+DAAA;IACjB,iBAAA,EAAmB,iEAAA;IACnB,cAAA,EAAgB,cAAA;IAChB,cAAA,EAAgB,cAAA;IAChB,cAAA,EAAgB,cAAA;IAChB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,oBAAA,EAAsB,aAAA;IACtB,cAAA,EAAgB,cAAA;IAChB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,kBAAA,EAAoB,kBAAA;IACpB,kBAAA,EAAoB,kBAAA;IACpB,kBAAA,EAAoB,kBAAA;IACpB,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,mBAAA,EAAqB,mBAAA;IACrB,mBAAA,EAAqB,mBAAA;IACrB,mBAAA,EAAqB,mBAAA;IACrB,gBAAA,EAAkB,gBAAA;IAClB,gBAAA,EAAkB,gBAAA;IAClB,gBAAA,EAAkB,gBAAA;IAClB,iBAAA,EAAmB,iBAAA;IACnB,mBAAA,EAAqB,sBAAA;IACrB,sBAAA,EAAwB,yBAAA;IACxB,sBAAA,EAAwB,2BAAA;IACxB,yBAAA,EAA2B,yBAAA;IAC3B,kBAAA,EAAoB;AACtB;AAEO,MAAMC,oBAAoB,CAACC,KAAAA,GAAAA;IAChC,OAAOF,WAAW,CAACE,KAAAA,CAAM,IAAIA,KAAAA;AAC/B;;;;;"}
|
|
@@ -26,7 +26,16 @@ const actionTypes = {
|
|
|
26
26
|
'role.delete': 'Delete role',
|
|
27
27
|
'permission.create': 'Create permission',
|
|
28
28
|
'permission.update': 'Update permission',
|
|
29
|
-
'permission.delete': 'Delete permission'
|
|
29
|
+
'permission.delete': 'Delete permission',
|
|
30
|
+
'release.create': 'Create release',
|
|
31
|
+
'release.update': 'Update release',
|
|
32
|
+
'release.delete': 'Delete release',
|
|
33
|
+
'release.trigger': 'Trigger release',
|
|
34
|
+
'release.entry.add': 'Add entry to release',
|
|
35
|
+
'release.entry.update': 'Change entry on release',
|
|
36
|
+
'release.entry.remove': 'Remove entry from release',
|
|
37
|
+
'release.settings.update': 'Update release settings',
|
|
38
|
+
'audit-log.export': 'Export audit logs'
|
|
30
39
|
};
|
|
31
40
|
const getDefaultMessage = (value)=>{
|
|
32
41
|
return actionTypes[value] || value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getActionTypesDefaultMessages.mjs","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.ts"],"sourcesContent":["export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n};\n\nexport const getDefaultMessage = (value: keyof typeof actionTypes) => {\n return actionTypes[value] || value;\n};\n"],"names":["actionTypes","getDefaultMessage","value"],"mappings":"MAAaA,WAAAA,GAAc;IACzB,cAAA,EAAgB,8DAAA;IAChB,cAAA,EAAgB,8DAAA;IAChB,cAAA,EAAgB,8DAAA;IAChB,eAAA,EAAiB,+DAAA;IACjB,iBAAA,EAAmB,iEAAA;IACnB,cAAA,EAAgB,cAAA;IAChB,cAAA,EAAgB,cAAA;IAChB,cAAA,EAAgB,cAAA;IAChB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,oBAAA,EAAsB,aAAA;IACtB,cAAA,EAAgB,cAAA;IAChB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,kBAAA,EAAoB,kBAAA;IACpB,kBAAA,EAAoB,kBAAA;IACpB,kBAAA,EAAoB,kBAAA;IACpB,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,mBAAA,EAAqB,mBAAA;IACrB,mBAAA,EAAqB,mBAAA;IACrB,mBAAA,EAAqB;
|
|
1
|
+
{"version":3,"file":"getActionTypesDefaultMessages.mjs","sources":["../../../../../../../../../../ee/admin/src/pages/SettingsPage/pages/AuditLogs/utils/getActionTypesDefaultMessages.ts"],"sourcesContent":["export const actionTypes = {\n 'entry.create': 'Create entry{model, select, undefined {} other { ({model})}}',\n 'entry.update': 'Update entry{model, select, undefined {} other { ({model})}}',\n 'entry.delete': 'Delete entry{model, select, undefined {} other { ({model})}}',\n 'entry.publish': 'Publish entry{model, select, undefined {} other { ({model})}}',\n 'entry.unpublish': 'Unpublish entry{model, select, undefined {} other { ({model})}}',\n 'media.create': 'Create media',\n 'media.update': 'Update media',\n 'media.delete': 'Delete media',\n 'media-folder.create': 'Create media folder',\n 'media-folder.update': 'Update media folder',\n 'media-folder.delete': 'Delete media folder',\n 'user.create': 'Create user',\n 'user.update': 'Update user',\n 'user.delete': 'Delete user',\n 'admin.auth.success': 'Admin login',\n 'admin.logout': 'Admin logout',\n 'content-type.create': 'Create content type',\n 'content-type.update': 'Update content type',\n 'content-type.delete': 'Delete content type',\n 'component.create': 'Create component',\n 'component.update': 'Update component',\n 'component.delete': 'Delete component',\n 'role.create': 'Create role',\n 'role.update': 'Update role',\n 'role.delete': 'Delete role',\n 'permission.create': 'Create permission',\n 'permission.update': 'Update permission',\n 'permission.delete': 'Delete permission',\n 'release.create': 'Create release',\n 'release.update': 'Update release',\n 'release.delete': 'Delete release',\n 'release.trigger': 'Trigger release',\n 'release.entry.add': 'Add entry to release',\n 'release.entry.update': 'Change entry on release',\n 'release.entry.remove': 'Remove entry from release',\n 'release.settings.update': 'Update release settings',\n 'audit-log.export': 'Export audit logs',\n};\n\nexport const getDefaultMessage = (value: keyof typeof actionTypes) => {\n return actionTypes[value] || value;\n};\n"],"names":["actionTypes","getDefaultMessage","value"],"mappings":"MAAaA,WAAAA,GAAc;IACzB,cAAA,EAAgB,8DAAA;IAChB,cAAA,EAAgB,8DAAA;IAChB,cAAA,EAAgB,8DAAA;IAChB,eAAA,EAAiB,+DAAA;IACjB,iBAAA,EAAmB,iEAAA;IACnB,cAAA,EAAgB,cAAA;IAChB,cAAA,EAAgB,cAAA;IAChB,cAAA,EAAgB,cAAA;IAChB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,oBAAA,EAAsB,aAAA;IACtB,cAAA,EAAgB,cAAA;IAChB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,qBAAA,EAAuB,qBAAA;IACvB,kBAAA,EAAoB,kBAAA;IACpB,kBAAA,EAAoB,kBAAA;IACpB,kBAAA,EAAoB,kBAAA;IACpB,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,aAAA,EAAe,aAAA;IACf,mBAAA,EAAqB,mBAAA;IACrB,mBAAA,EAAqB,mBAAA;IACrB,mBAAA,EAAqB,mBAAA;IACrB,gBAAA,EAAkB,gBAAA;IAClB,gBAAA,EAAkB,gBAAA;IAClB,gBAAA,EAAkB,gBAAA;IAClB,iBAAA,EAAmB,iBAAA;IACnB,mBAAA,EAAqB,sBAAA;IACrB,sBAAA,EAAwB,yBAAA;IACxB,sBAAA,EAAwB,2BAAA;IACxB,yBAAA,EAA2B,yBAAA;IAC3B,kBAAA,EAAoB;AACtB;AAEO,MAAMC,oBAAoB,CAACC,KAAAA,GAAAA;IAChC,OAAOF,WAAW,CAACE,KAAAA,CAAM,IAAIA,KAAAA;AAC/B;;;;"}
|
package/dist/admin/index.js
CHANGED
|
@@ -88,7 +88,9 @@ exports.useAppInfo = AppInfo.useAppInfo;
|
|
|
88
88
|
exports.useAuth = Auth.useAuth;
|
|
89
89
|
exports.useInjectReducer = useInjectReducer.useInjectReducer;
|
|
90
90
|
exports.useAPIErrorHandler = useAPIErrorHandler.useAPIErrorHandler;
|
|
91
|
+
exports.deepEncodeQueryValues = useQueryParams.deepEncodeQueryValues;
|
|
91
92
|
exports.useQueryParams = useQueryParams.useQueryParams;
|
|
93
|
+
exports.withEncodedUserParams = useQueryParams.withEncodedUserParams;
|
|
92
94
|
exports.useFetchClient = useFetchClient.useFetchClient;
|
|
93
95
|
exports.useFocusInputField = useFocusInputField.useFocusInputField;
|
|
94
96
|
exports.useRBAC = useRBAC.useRBAC;
|
|
@@ -106,10 +108,12 @@ exports.useScopedPersistentState = usePersistentState.useScopedPersistentState;
|
|
|
106
108
|
exports.useAdminUsers = users$1.useAdminUsers;
|
|
107
109
|
exports.useGetCountDocumentsQuery = homepage.useGetCountDocumentsQuery;
|
|
108
110
|
exports.translatedErrors = translatedErrors.translatedErrors;
|
|
111
|
+
exports.ADMIN_REFRESH_LOCK = getFetchClient.ADMIN_REFRESH_LOCK;
|
|
109
112
|
exports.FetchError = getFetchClient.FetchError;
|
|
110
113
|
exports.attemptTokenRefresh = getFetchClient.attemptTokenRefresh;
|
|
111
114
|
exports.getFetchClient = getFetchClient.getFetchClient;
|
|
112
115
|
exports.isFetchError = getFetchClient.isFetchError;
|
|
116
|
+
exports.refreshAccessToken = getFetchClient.refreshAccessToken;
|
|
113
117
|
exports.setOnSessionExpired = getFetchClient.setOnSessionExpired;
|
|
114
118
|
exports.setOnTokenUpdate = getFetchClient.setOnTokenUpdate;
|
|
115
119
|
exports.storeToken = getFetchClient.storeToken;
|
package/dist/admin/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/admin/index.mjs
CHANGED
|
@@ -26,7 +26,7 @@ export { useAppInfo } from './admin/src/features/AppInfo.mjs';
|
|
|
26
26
|
export { useAuth } from './admin/src/features/Auth.mjs';
|
|
27
27
|
export { useInjectReducer } from './admin/src/hooks/useInjectReducer.mjs';
|
|
28
28
|
export { useAPIErrorHandler } from './admin/src/hooks/useAPIErrorHandler.mjs';
|
|
29
|
-
export { useQueryParams } from './admin/src/hooks/useQueryParams.mjs';
|
|
29
|
+
export { deepEncodeQueryValues, useQueryParams, withEncodedUserParams } from './admin/src/hooks/useQueryParams.mjs';
|
|
30
30
|
export { useFetchClient } from './admin/src/hooks/useFetchClient.mjs';
|
|
31
31
|
export { useFocusInputField } from './admin/src/hooks/useFocusInputField.mjs';
|
|
32
32
|
export { useRBAC } from './admin/src/hooks/useRBAC.mjs';
|
|
@@ -39,7 +39,7 @@ export { usePersistentState, usePersistentStateScope, useScopedPersistentState }
|
|
|
39
39
|
export { useAdminUsers } from './admin/src/services/users.mjs';
|
|
40
40
|
export { useGetCountDocumentsQuery } from './admin/src/services/homepage.mjs';
|
|
41
41
|
export { translatedErrors } from './admin/src/utils/translatedErrors.mjs';
|
|
42
|
-
export { FetchError, attemptTokenRefresh, getFetchClient, isFetchError, setOnSessionExpired, setOnTokenUpdate, storeToken, triggerSessionExpired } from './admin/src/utils/getFetchClient.mjs';
|
|
42
|
+
export { ADMIN_REFRESH_LOCK, FetchError, attemptTokenRefresh, getFetchClient, isFetchError, refreshAccessToken, setOnSessionExpired, setOnTokenUpdate, storeToken, triggerSessionExpired } from './admin/src/utils/getFetchClient.mjs';
|
|
43
43
|
export { fetchBaseQuery, isBaseQueryError } from './admin/src/utils/baseQuery.mjs';
|
|
44
44
|
export { createRulesEngine } from './admin/src/utils/rulesEngine.mjs';
|
|
45
45
|
export { getDisplayName, getInitials, hashAdminUserEmail } from './admin/src/utils/users.mjs';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const AUDIT_LOGS_EXPORT_UNTIL_HEADER = 'X-Audit-Logs-Export-Until';
|
|
4
|
+
const AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER = 'X-Audit-Logs-Export-Next-Cursor';
|
|
5
|
+
const AUDIT_LOGS_EXPORT_PART_SIZE_HEADER = 'X-Audit-Logs-Export-Part-Size';
|
|
6
|
+
const AUDIT_LOGS_EXPORT_TOKEN_HEADER = 'X-Audit-Logs-Export-Token';
|
|
7
|
+
const AUDIT_LOGS_EXPORT_CURSOR_DONE = 'none';
|
|
8
|
+
const AUDIT_LOGS_EXPORT_PART_ROWS = 50000;
|
|
9
|
+
|
|
10
|
+
exports.AUDIT_LOGS_EXPORT_CURSOR_DONE = AUDIT_LOGS_EXPORT_CURSOR_DONE;
|
|
11
|
+
exports.AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER = AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER;
|
|
12
|
+
exports.AUDIT_LOGS_EXPORT_PART_ROWS = AUDIT_LOGS_EXPORT_PART_ROWS;
|
|
13
|
+
exports.AUDIT_LOGS_EXPORT_PART_SIZE_HEADER = AUDIT_LOGS_EXPORT_PART_SIZE_HEADER;
|
|
14
|
+
exports.AUDIT_LOGS_EXPORT_TOKEN_HEADER = AUDIT_LOGS_EXPORT_TOKEN_HEADER;
|
|
15
|
+
exports.AUDIT_LOGS_EXPORT_UNTIL_HEADER = AUDIT_LOGS_EXPORT_UNTIL_HEADER;
|
|
16
|
+
//# 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_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"],"mappings":";;AAEO,MAAMA,iCAAiC;AACvC,MAAMC,uCAAuC;AAC7C,MAAMC,qCAAqC;AAC3C,MAAMC,iCAAiC;AACvC,MAAMC,gCAAgC;AACtC,MAAMC,8BAA8B;;;;;;;;;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const AUDIT_LOGS_EXPORT_UNTIL_HEADER = 'X-Audit-Logs-Export-Until';
|
|
2
|
+
const AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER = 'X-Audit-Logs-Export-Next-Cursor';
|
|
3
|
+
const AUDIT_LOGS_EXPORT_PART_SIZE_HEADER = 'X-Audit-Logs-Export-Part-Size';
|
|
4
|
+
const AUDIT_LOGS_EXPORT_TOKEN_HEADER = 'X-Audit-Logs-Export-Token';
|
|
5
|
+
const AUDIT_LOGS_EXPORT_CURSOR_DONE = 'none';
|
|
6
|
+
const AUDIT_LOGS_EXPORT_PART_ROWS = 50000;
|
|
7
|
+
|
|
8
|
+
export { AUDIT_LOGS_EXPORT_CURSOR_DONE, AUDIT_LOGS_EXPORT_NEXT_CURSOR_HEADER, AUDIT_LOGS_EXPORT_PART_ROWS, AUDIT_LOGS_EXPORT_PART_SIZE_HEADER, AUDIT_LOGS_EXPORT_TOKEN_HEADER, AUDIT_LOGS_EXPORT_UNTIL_HEADER };
|
|
9
|
+
//# 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_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"],"mappings":"AAEO,MAAMA,iCAAiC;AACvC,MAAMC,uCAAuC;AAC7C,MAAMC,qCAAqC;AAC3C,MAAMC,iCAAiC;AACvC,MAAMC,gCAAgC;AACtC,MAAMC,8BAA8B;;;;"}
|
|
@@ -3,4 +3,16 @@ declare const useQueryParams: <TQuery extends object = QueryParams>(initialParam
|
|
|
3
3
|
readonly query: TQuery;
|
|
4
4
|
readonly rawQuery: string;
|
|
5
5
|
}, (nextParams: TQuery, method?: "push" | "remove", replace?: boolean) => void];
|
|
6
|
-
|
|
6
|
+
/**
|
|
7
|
+
* These functions are used to encode query values when writing them to the URL.
|
|
8
|
+
* As stated above, it should be handled by `useQueryParams` instead, but that would be a breaking change.
|
|
9
|
+
*/
|
|
10
|
+
declare const deepEncodeQueryValues: <T>(value: T) => T;
|
|
11
|
+
declare const withEncodedUserParams: <T extends object, TQuery extends {
|
|
12
|
+
filters?: unknown;
|
|
13
|
+
_q?: unknown;
|
|
14
|
+
}>(query: TQuery, nextParams: T) => T & {
|
|
15
|
+
filters?: TQuery["filters"];
|
|
16
|
+
_q?: TQuery["_q"];
|
|
17
|
+
};
|
|
18
|
+
export { useQueryParams, deepEncodeQueryValues, withEncodedUserParams };
|
|
@@ -44,7 +44,7 @@ export { useHistory } from './features/BackButton';
|
|
|
44
44
|
*/
|
|
45
45
|
export { useInjectReducer } from './hooks/useInjectReducer';
|
|
46
46
|
export { useAPIErrorHandler } from './hooks/useAPIErrorHandler';
|
|
47
|
-
export { useQueryParams } from './hooks/useQueryParams';
|
|
47
|
+
export { useQueryParams, deepEncodeQueryValues, withEncodedUserParams, } from './hooks/useQueryParams';
|
|
48
48
|
export { useFetchClient } from './hooks/useFetchClient';
|
|
49
49
|
export { useFocusInputField } from './hooks/useFocusInputField';
|
|
50
50
|
export { useRBAC, type AllowedActions } from './hooks/useRBAC';
|
|
@@ -38,6 +38,13 @@ declare const triggerSessionExpired: () => void;
|
|
|
38
38
|
* @internal Exported for testing purposes
|
|
39
39
|
*/
|
|
40
40
|
declare const storeToken: (token: string) => void;
|
|
41
|
+
declare const ADMIN_REFRESH_LOCK = "strapi-admin-access-token";
|
|
42
|
+
/**
|
|
43
|
+
* Refresh the access token by calling the /admin/access-token endpoint.
|
|
44
|
+
* This uses a low-level fetch to avoid recursion through the interceptor.
|
|
45
|
+
* Returns the new token on success, or null on failure.
|
|
46
|
+
*/
|
|
47
|
+
declare const refreshAccessToken: (tokenUsedByFailedRequest?: string | null) => Promise<string | null>;
|
|
41
48
|
/**
|
|
42
49
|
* Attempt to refresh the token if not already refreshing.
|
|
43
50
|
* Uses a module-level promise to prevent concurrent refresh requests.
|
|
@@ -46,7 +53,7 @@ declare const storeToken: (token: string) => void;
|
|
|
46
53
|
* @throws {Error} If the token refresh fails (e.g., refresh token expired)
|
|
47
54
|
* @internal Exported for testing purposes
|
|
48
55
|
*/
|
|
49
|
-
declare const attemptTokenRefresh: () => Promise<string>;
|
|
56
|
+
declare const attemptTokenRefresh: (tokenUsedByFailedRequest?: string | null) => Promise<string>;
|
|
50
57
|
type FetchResponse<TData = unknown> = {
|
|
51
58
|
data: TData;
|
|
52
59
|
status?: number;
|
|
@@ -117,5 +124,5 @@ type FetchClient = {
|
|
|
117
124
|
* ```
|
|
118
125
|
*/
|
|
119
126
|
declare const getFetchClient: (defaultOptions?: FetchConfig) => FetchClient;
|
|
120
|
-
export { getFetchClient, isFetchError, FetchError, attemptTokenRefresh, storeToken, setOnTokenUpdate, setOnSessionExpired, triggerSessionExpired, };
|
|
127
|
+
export { getFetchClient, isFetchError, FetchError, attemptTokenRefresh, refreshAccessToken, storeToken, setOnTokenUpdate, setOnSessionExpired, triggerSessionExpired, ADMIN_REFRESH_LOCK, };
|
|
121
128
|
export type { FetchOptions, FetchResponse, FetchConfig, FetchClient, ErrorResponse };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ExportProgress, ExportResult } from '../hooks/useExportAuditLogs';
|
|
2
|
+
interface ExportCardProps {
|
|
3
|
+
progress: ExportProgress | null;
|
|
4
|
+
exportResult: ExportResult | null;
|
|
5
|
+
onDownload: () => void;
|
|
6
|
+
onDismiss: () => void;
|
|
7
|
+
}
|
|
8
|
+
declare const ExportCard: ({ progress, exportResult, onDownload, onDismiss }: ExportCardProps) => import("react/jsx-runtime").JSX.Element | null;
|
|
9
|
+
export { ExportCard };
|
|
10
|
+
export type { ExportCardProps };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface ExportProgress {
|
|
2
|
+
fetched: number;
|
|
3
|
+
total: number;
|
|
4
|
+
}
|
|
5
|
+
interface ExportResult {
|
|
6
|
+
blob: Blob;
|
|
7
|
+
fileName: string;
|
|
8
|
+
}
|
|
9
|
+
declare const useExportAuditLogs: () => {
|
|
10
|
+
exportAuditLogs: (filters: unknown, totalEntries: number) => Promise<void>;
|
|
11
|
+
downloadExport: () => void;
|
|
12
|
+
dismissExport: () => void;
|
|
13
|
+
isExporting: boolean;
|
|
14
|
+
progress: ExportProgress | null;
|
|
15
|
+
exportResult: ExportResult | null;
|
|
16
|
+
};
|
|
17
|
+
export { useExportAuditLogs };
|
|
18
|
+
export type { ExportProgress, ExportResult };
|
|
@@ -27,5 +27,14 @@ export declare const actionTypes: {
|
|
|
27
27
|
'permission.create': string;
|
|
28
28
|
'permission.update': string;
|
|
29
29
|
'permission.delete': string;
|
|
30
|
+
'release.create': string;
|
|
31
|
+
'release.update': string;
|
|
32
|
+
'release.delete': string;
|
|
33
|
+
'release.trigger': string;
|
|
34
|
+
'release.entry.add': string;
|
|
35
|
+
'release.entry.update': string;
|
|
36
|
+
'release.entry.remove': string;
|
|
37
|
+
'release.settings.update': string;
|
|
38
|
+
'audit-log.export': string;
|
|
30
39
|
};
|
|
31
40
|
export declare const getDefaultMessage: (value: keyof typeof actionTypes) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-logs.d.ts","sourceRoot":"","sources":["../../../../../../ee/server/src/audit-logs/controllers/audit-logs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"audit-logs.d.ts","sourceRoot":"","sources":["../../../../../../ee/server/src/audit-logs/controllers/audit-logs.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;;kBAkBb,OAAO;uBAUF,OAAO;iBAUb,OAAO;gBAWR,OAAO;;AAhC3B,wBA2FE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-logs.d.ts","sourceRoot":"","sources":["../../../../../../ee/server/src/audit-logs/routes/audit-logs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAeA,
|
|
1
|
+
{"version":3,"file":"audit-logs.d.ts","sourceRoot":"","sources":["../../../../../../ee/server/src/audit-logs/routes/audit-logs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAeA,wBA4BE"}
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
+
import { Readable } from 'stream';
|
|
1
2
|
import type { Core } from '@strapi/types';
|
|
2
3
|
interface Event {
|
|
3
4
|
action: string;
|
|
4
5
|
date: Date;
|
|
5
|
-
userId: string | number;
|
|
6
|
+
userId: string | number | null;
|
|
6
7
|
payload: Record<string, unknown>;
|
|
7
8
|
}
|
|
9
|
+
interface ExportQuery {
|
|
10
|
+
cursor?: number;
|
|
11
|
+
pageSize?: number;
|
|
12
|
+
until?: number;
|
|
13
|
+
token?: string;
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
declare const toCsvLine: (row: any) => string;
|
|
8
17
|
/**
|
|
9
18
|
* @description
|
|
10
19
|
* Manages audit logs interaction with the database. Accessible via strapi.get('audit-logs')
|
|
@@ -20,6 +29,18 @@ declare const createAuditLogsService: (strapi: Core.Strapi) => {
|
|
|
20
29
|
total: number;
|
|
21
30
|
};
|
|
22
31
|
}>;
|
|
32
|
+
isExportTooLarge(query: {
|
|
33
|
+
filters?: unknown;
|
|
34
|
+
}): Promise<boolean>;
|
|
35
|
+
isTrustedContinuation(query: ExportQuery): boolean;
|
|
36
|
+
createExportStream(query: ExportQuery): Promise<{
|
|
37
|
+
stream: Readable;
|
|
38
|
+
nextCursor: number | null;
|
|
39
|
+
until: number;
|
|
40
|
+
isNewExport: boolean;
|
|
41
|
+
partSize: number;
|
|
42
|
+
exportToken: string;
|
|
43
|
+
}>;
|
|
23
44
|
findManyUsers(query: {
|
|
24
45
|
page?: number | string;
|
|
25
46
|
pageSize?: number | string;
|
|
@@ -27,7 +48,7 @@ declare const createAuditLogsService: (strapi: Core.Strapi) => {
|
|
|
27
48
|
results: {
|
|
28
49
|
id: any;
|
|
29
50
|
email: any;
|
|
30
|
-
displayName:
|
|
51
|
+
displayName: string;
|
|
31
52
|
}[];
|
|
32
53
|
pagination: {
|
|
33
54
|
page: number;
|
|
@@ -39,5 +60,5 @@ declare const createAuditLogsService: (strapi: Core.Strapi) => {
|
|
|
39
60
|
findOne(id: unknown): Promise<any>;
|
|
40
61
|
deleteExpiredEvents(expirationDate: Date): Promise<import("@strapi/database/dist/types").CountResult>;
|
|
41
62
|
};
|
|
42
|
-
export { createAuditLogsService };
|
|
63
|
+
export { createAuditLogsService, toCsvLine };
|
|
43
64
|
//# sourceMappingURL=audit-logs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-logs.d.ts","sourceRoot":"","sources":["../../../../../../ee/server/src/audit-logs/services/audit-logs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"audit-logs.d.ts","sourceRoot":"","sources":["../../../../../../ee/server/src/audit-logs/services/audit-logs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAyB1C,UAAU,KAAK;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,IAAI,CAAC;IAEX,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAkCD,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA8BD,QAAA,MAAM,SAAS,GAAI,KAAK,GAAG,WAc1B,CAAC;AAEF;;;GAGG;AACH,QAAA,MAAM,sBAAsB,GAAI,QAAQ,IAAI,CAAC,MAAM;qBAExB,KAAK;oBAWN,OAAO;;;;;;;;;4BAiCC;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE;iCAoBtB,WAAW;8BAIR,WAAW;;;;;;;;yBA2GhB;QAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE;;;;;;;;;;;;;gBAmC/D,OAAO;wCAkBW,IAAI;CAU3C,CAAC;AAEF,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
import type { Core } from '@strapi/types';
|
|
1
|
+
import type { Core, Modules } from '@strapi/types';
|
|
2
2
|
/**
|
|
3
3
|
* @description
|
|
4
|
-
* Manages the lifecycle of audit logs. Accessible via strapi.get('audit-logs-
|
|
4
|
+
* Manages the lifecycle of audit logs. Accessible via strapi.get('audit-logs-lifecycle')
|
|
5
5
|
*/
|
|
6
6
|
declare const createAuditLogsLifecycleService: (strapi: Core.Strapi) => {
|
|
7
|
+
/**
|
|
8
|
+
* Adds an event to the list of audited events. Plugins register their own from
|
|
9
|
+
* their bootstrap; the transformer builds the audited shape
|
|
10
|
+
* ({resource, details, outcome}) from the arguments passed to eventHub.emit().
|
|
11
|
+
*/
|
|
12
|
+
registerEvent<TDetails = unknown>(name: string, transform: Modules.AuditLogs.EventTransformer<TDetails>): void;
|
|
7
13
|
register(): Promise</*elided*/ any>;
|
|
8
14
|
unsubscribe(): /*elided*/ any;
|
|
9
15
|
destroy(): /*elided*/ any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycles.d.ts","sourceRoot":"","sources":["../../../../../../ee/server/src/audit-logs/services/lifecycles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"lifecycles.d.ts","sourceRoot":"","sources":["../../../../../../ee/server/src/audit-logs/services/lifecycles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAgFnD;;;GAGG;AACH,QAAA,MAAM,+BAA+B,GAAI,QAAQ,IAAI,CAAC,MAAM;IAiHxD;;;;OAIG;kBACW,QAAQ,kBACd,MAAM,aACD,OAAO,CAAC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,CAAC;;;;CAyF5D,CAAC;AAEF,OAAO,EAAE,+BAA+B,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv.d.ts","sourceRoot":"","sources":["../../../../../../ee/server/src/audit-logs/utils/csv.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,OAAO,WAAW,CAAC;AAGzB,QAAA,MAAM,cAAc,GAAI,OAAO,OAAO,KAAG,MAgBxC,CAAC;AAEF,QAAA,MAAM,gBAAgB,GAAI,QAAQ,OAAO,EAAE,KAAG,MAE7C,CAAC;AAEF,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
declare const EXPORT_TOKEN_TTL_MS: number;
|
|
2
|
+
declare const signExportToken: (secret: string, until: number, filters: unknown, issuedAt?: number) => string;
|
|
3
|
+
declare const verifyExportToken: (secret: string, token: unknown, until: number, filters: unknown, now?: number) => boolean;
|
|
4
|
+
export { signExportToken, verifyExportToken, EXPORT_TOKEN_TTL_MS };
|
|
5
|
+
//# sourceMappingURL=export-token.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"export-token.d.ts","sourceRoot":"","sources":["../../../../../../ee/server/src/audit-logs/utils/export-token.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,mBAAmB,QAAiB,CAAC;AAW3C,QAAA,MAAM,eAAe,GACnB,QAAQ,MAAM,EACd,OAAO,MAAM,EACb,SAAS,OAAO,EAChB,iBAAqB,KACpB,MAA6E,CAAC;AAEjF,QAAA,MAAM,iBAAiB,GACrB,QAAQ,MAAM,EACd,OAAO,OAAO,EACd,OAAO,MAAM,EACb,SAAS,OAAO,EAChB,YAAgB,KACf,OAyBF,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC"}
|