Policies: Admin-Vorlagen-Export gehärtet (resiliente Liste + sichtbare Fehler)
- Get-GraphPolicyList: $expand=assignments pro Typ absichern. groupPolicyConfigurations (Administrative Vorlagen) lehnt den Expand teils mit 400 ab -> dann scheiterte das Laden und der Export ließ die Policies still weg. Jetzt Fallback auf Laden ohne Zuweisungen, damit der Typ erscheint und exportierbar bleibt. - Export-PoliciesEndpoint: Detail-Fehler nicht mehr verschlucken, sondern pro Policy in 'errors' zurückgeben (+ Log). - Frontend: Export-Fehler werden im Toast gemeldet (kein stiller Teil-Export mehr). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+12
-2
@@ -6467,11 +6467,17 @@ async function polExportSelected() {
|
||||
setLoading('Exportiere Policies…');
|
||||
try {
|
||||
let allExports = [];
|
||||
let allErrors = [];
|
||||
for (const [type, ids] of Object.entries(byType)) {
|
||||
const res = await api('/api/policies/export', { method: 'POST', body: { type, ids }, timeoutMs: 120000 });
|
||||
if (res.exports) allExports = allExports.concat(res.exports);
|
||||
if (res.errors) allErrors = allErrors.concat(res.errors);
|
||||
}
|
||||
if (!allExports.length) {
|
||||
const hint = allErrors.length ? ` (${allErrors.length} Fehler, z.B. ${escapeHtml(allErrors[0].error || '')})` : '';
|
||||
toast('Nichts exportiert.' + hint, 'err', 'Export');
|
||||
return;
|
||||
}
|
||||
if (!allExports.length) { toast('Nichts exportiert.', 'warn'); return; }
|
||||
// Jede ausgewählte Policy als eigene JSON-Datei herunterladen.
|
||||
const usedNames = new Set();
|
||||
for (let i = 0; i < allExports.length; i++) {
|
||||
@@ -6484,7 +6490,11 @@ async function polExportSelected() {
|
||||
// Kurze Pause, damit der Browser mehrere aufeinanderfolgende Downloads nicht verwirft.
|
||||
if (i < allExports.length - 1) await new Promise(r => setTimeout(r, 150));
|
||||
}
|
||||
toast(`${allExports.length} Policy(s) als Einzeldatei(en) exportiert (auch im Server-Archiv abgelegt).`, 'ok');
|
||||
if (allErrors.length) {
|
||||
toast(`${allExports.length} exportiert, ${allErrors.length} fehlgeschlagen (z.B. ${escapeHtml(allErrors[0].error || 'Fehler')}).`, 'warn', 'Export');
|
||||
} else {
|
||||
toast(`${allExports.length} Policy(s) als Einzeldatei(en) exportiert (auch im Server-Archiv abgelegt).`, 'ok');
|
||||
}
|
||||
} catch (e) {
|
||||
toast('Export fehlgeschlagen: ' + e.message, 'err');
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user