Geräte-Tab: Wipe-Aktion mit Benutzerdaten-Option, Suchfeld vergrößert
Wipe-Button mit eigenem Modal: Checkbox ob Benutzerdaten behalten werden (keepUserData). Suchfeld auf max-width 600px vergrößert. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+49
-3
@@ -5395,6 +5395,25 @@ function devRenderDetail(d) {
|
||||
if (autopilotBtn) autopilotBtn.style.display = isWin ? '' : 'none';
|
||||
}
|
||||
|
||||
// Wipe-Dialog (Promise: true=keepUserData, false=löschen, null=abgebrochen)
|
||||
function devWipeDialog(deviceName) {
|
||||
return new Promise(resolve => {
|
||||
document.getElementById('wipeDeviceName').textContent = deviceName;
|
||||
document.getElementById('wipeKeepUserData').checked = false;
|
||||
const backdrop = document.getElementById('wipeModalBackdrop');
|
||||
backdrop.classList.remove('hidden');
|
||||
|
||||
const close = (result) => {
|
||||
backdrop.classList.add('hidden');
|
||||
resolve(result);
|
||||
};
|
||||
document.getElementById('wipeCancel').onclick = () => close(null);
|
||||
document.getElementById('wipeModalClose').onclick = () => close(null);
|
||||
document.getElementById('wipeConfirm').onclick = () => close(document.getElementById('wipeKeepUserData').checked);
|
||||
backdrop.onclick = (e) => { if (e.target === backdrop) close(null); };
|
||||
});
|
||||
}
|
||||
|
||||
// Aktion ausführen
|
||||
document.getElementById('devActions')?.addEventListener('click', async (e) => {
|
||||
const btn = e.target.closest('.dev-action-btn');
|
||||
@@ -5409,10 +5428,38 @@ document.getElementById('devActions')?.addEventListener('click', async (e) => {
|
||||
collectDiagnostics: 'Diagnose sammeln',
|
||||
rotateBitLockerKeys: 'BitLocker-Schlüssel rotieren',
|
||||
autopilotReset: 'Autopilot Reset',
|
||||
retire: 'Retire (MDM entfernen)'
|
||||
retire: 'Retire (MDM entfernen)',
|
||||
wipe: 'Wipe'
|
||||
};
|
||||
const isDangerous = action === 'retire' || action === 'autopilotReset';
|
||||
const devName = DevState.selected.DeviceName || DevState.selected.Id;
|
||||
|
||||
// Wipe: eigener Dialog mit Benutzerdaten-Option
|
||||
if (action === 'wipe') {
|
||||
const keepUserData = await devWipeDialog(devName);
|
||||
if (keepUserData === null) return;
|
||||
btn.disabled = true;
|
||||
const origText2 = btn.textContent.trim();
|
||||
btn.textContent = '…';
|
||||
try {
|
||||
await api(`/api/devices/${encodeURIComponent(DevState.selected.Id)}/action`, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({ action: 'wipe', keepUserData })
|
||||
});
|
||||
toast(`Wipe gesendet${keepUserData ? ' (Benutzerdaten behalten)' : ''}`, 'ok');
|
||||
DevState.items = DevState.items.filter(d => d.Id !== DevState.selected.Id);
|
||||
DevState.selected = null;
|
||||
document.getElementById('devDetail').classList.add('hidden');
|
||||
devApplyFilters();
|
||||
} catch (e) {
|
||||
toast(`Fehler bei Wipe: ${e}`, 'error');
|
||||
} finally {
|
||||
btn.disabled = false;
|
||||
btn.textContent = origText2;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
const isDangerous = action === 'retire' || action === 'autopilotReset';
|
||||
const dangerMsg = {
|
||||
retire: `ACHTUNG: "Retire" auf "${devName}" ausführen?\n\nDas MDM-Profil wird entfernt — Gerät wird nicht mehr verwaltet.`,
|
||||
autopilotReset: `ACHTUNG: "Autopilot Reset" auf "${devName}" ausführen?\n\nDas Gerät wird auf OOBE zurückgesetzt. Enrollment-Daten bleiben erhalten, Benutzerdaten werden gelöscht.`
|
||||
@@ -5431,7 +5478,6 @@ document.getElementById('devActions')?.addEventListener('click', async (e) => {
|
||||
});
|
||||
toast(`${labels[action]}: Aktion wurde gesendet`, 'ok');
|
||||
if (action === 'retire') {
|
||||
// Gerät aus Liste entfernen
|
||||
DevState.items = DevState.items.filter(d => d.Id !== DevState.selected.Id);
|
||||
DevState.selected = null;
|
||||
document.getElementById('devDetail').classList.add('hidden');
|
||||
|
||||
Reference in New Issue
Block a user