diff --git a/CHANGELOG.md b/CHANGELOG.md
index 01fe82e..59f6d32 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -46,3 +46,4 @@ Alle Einträge verwenden ISO-8601-Timestamps in UTC. Mehrere Änderungen desselb
- Beispielkonfiguration und Sicherheitsdokumentation bereitgestellt.
- Browserinstaller korrigiert: Der initiale Administrator wird jetzt mit allen im `users`-Schema erforderlichen Pflichtfeldern angelegt.
- Realm-Dashboard korrigiert: Es fragt nur noch die konfigurierte Portainer-Umgebung ab, benötigt keine globale Endpoint-Liste oder Endpoint-Metadaten mehr und verwendet direkt den Docker-Proxy.
+- Fehlgeschlagene, bereits bezahlte Provisionierungen können durch Administratoren erneut gestartet werden.
diff --git a/dashboard.php b/dashboard.php
index cdd34aa..085bdd3 100644
--- a/dashboard.php
+++ b/dashboard.php
@@ -78,7 +78,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$message = 'Die Instanzanfrage wurde erfasst und wartet auf die Zahlungsfreigabe.';
} elseif ($action === 'approve_instance' && $isAdmin) {
$instanceId = (int)($_POST['instance_id'] ?? 0);
- $query = $db->prepare('SELECT * FROM instances WHERE id = :id AND status = "pending_payment" LIMIT 1');
+ $query = $db->prepare('SELECT * FROM instances WHERE id = :id AND ((status = "pending_payment") OR (status = "error" AND payment_status = "paid")) LIMIT 1');
$query->execute(['id' => $instanceId]);
$instance = $query->fetch();
if (!$instance) throw new RuntimeException('Diese Instanzanfrage ist nicht mehr freigabefähig.');
@@ -293,5 +293,5 @@ function dashboard_bytes(int $bytes): string {
Neue Buchung ProvisionierungInstanz anfragen
Instanzen
Name Benutzer Tarif Zahlung Status Adresse Aktion = dashboard_escape((string)$instance['name']) ?> = dashboard_escape((string)$instance['username']) ?> = strtoupper(dashboard_escape((string)$instance['plan'])) ?> = dashboard_escape((string)$instance['payment_status']) ?> = dashboard_escape(dashboard_status((string)$instance['status'])) ?>
= dashboard_escape((string)$instance['error_message']) ?>:= dashboard_escape((string)$instance['port']) ?>– –
| Name | Benutzer | Tarif | Zahlung | Status | Adresse | Aktion |
|---|---|---|---|---|---|---|
| = dashboard_escape((string)$instance['name']) ?> | = dashboard_escape((string)$instance['username']) ?> | = strtoupper(dashboard_escape((string)$instance['plan'])) ?> | = dashboard_escape((string)$instance['payment_status']) ?> | = dashboard_escape(dashboard_status((string)$instance['status'])) ?> = dashboard_escape((string)$instance['error_message']) ?> | := dashboard_escape((string)$instance['port']) ?>– | – |