From 2a76a6599b09679ec59b20da51c6b851b4c2d51b Mon Sep 17 00:00:00 2001 From: Debian Date: Thu, 28 May 2026 15:06:48 +0200 Subject: [PATCH] fix(license): Rejection-Reason anzeigen + Placeholder NETC- korrigieren MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wenn der License-Server valid:false zurückgibt, wird payload.reason jetzt als roter Alert angezeigt — bisher war der Grund nicht sichtbar und der Operator sah nur "Abgelaufen" ohne Erklärung. Formular-Placeholder NMG-XXXX → NETC-XXXX (mail-gateway copy-paste). Co-Authored-By: Claude Sonnet 4.6 --- VERSION | 2 +- cmd/edgeguard-api/main.go | 2 +- cmd/edgeguard-ctl/main.go | 2 +- cmd/edgeguard-scheduler/main.go | 2 +- management-ui/src/i18n/locales/de/common.json | 1 + management-ui/src/i18n/locales/en/common.json | 1 + management-ui/src/pages/License/index.tsx | 13 ++++++++++++- 7 files changed, 18 insertions(+), 5 deletions(-) diff --git a/VERSION b/VERSION index 1e9370f..6683f49 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.1.129 +1.1.130 diff --git a/cmd/edgeguard-api/main.go b/cmd/edgeguard-api/main.go index 10093a6..0cb01e6 100644 --- a/cmd/edgeguard-api/main.go +++ b/cmd/edgeguard-api/main.go @@ -60,7 +60,7 @@ import ( usersvc "git.netcell-it.de/projekte/edgeguard-native/internal/services/users" ) -var version = "1.1.129" +var version = "1.1.130" func main() { addr := os.Getenv("EDGEGUARD_API_ADDR") diff --git a/cmd/edgeguard-ctl/main.go b/cmd/edgeguard-ctl/main.go index 6af50b6..afaecc8 100644 --- a/cmd/edgeguard-ctl/main.go +++ b/cmd/edgeguard-ctl/main.go @@ -11,7 +11,7 @@ import ( "git.netcell-it.de/projekte/edgeguard-native/internal/services/setup" ) -var version = "1.1.129" +var version = "1.1.130" const usage = `edgeguard-ctl — EdgeGuard CLI diff --git a/cmd/edgeguard-scheduler/main.go b/cmd/edgeguard-scheduler/main.go index 906d4c8..1e14701 100644 --- a/cmd/edgeguard-scheduler/main.go +++ b/cmd/edgeguard-scheduler/main.go @@ -41,7 +41,7 @@ import ( "git.netcell-it.de/projekte/edgeguard-native/internal/services/tlscerts" ) -var version = "1.1.129" +var version = "1.1.130" const ( // renewTickInterval — how often we re-evaluate expiring certs. diff --git a/management-ui/src/i18n/locales/de/common.json b/management-ui/src/i18n/locales/de/common.json index 4856575..56ae180 100644 --- a/management-ui/src/i18n/locales/de/common.json +++ b/management-ui/src/i18n/locales/de/common.json @@ -1071,6 +1071,7 @@ "confirmClear": "Lizenz-Schlüssel wirklich entfernen?", "confirmClearHint": "System fällt auf Trial-Modus zurück, sobald der Schlüssel gelöscht wird.", "lastVerifyFailed": "Letzte Server-Verifizierung fehlgeschlagen", + "serverRejected": "Lizenz vom Server abgelehnt", "trialExpiring": "Trial läuft in {{days}} Tag(en) ab", "trialExpiringHint": "Lizenz aktivieren, bevor die Trial-Periode endet.", "tagActive": "Aktiv", diff --git a/management-ui/src/i18n/locales/en/common.json b/management-ui/src/i18n/locales/en/common.json index 0e532dc..3d9b345 100644 --- a/management-ui/src/i18n/locales/en/common.json +++ b/management-ui/src/i18n/locales/en/common.json @@ -1071,6 +1071,7 @@ "confirmClear": "Really remove the license key?", "confirmClearHint": "The system will fall back to trial-mode once the key is deleted.", "lastVerifyFailed": "Last server verify failed", + "serverRejected": "License rejected by server", "trialExpiring": "Trial expires in {{days}} day(s)", "trialExpiringHint": "Activate a license before the trial period ends.", "tagActive": "Active", diff --git a/management-ui/src/pages/License/index.tsx b/management-ui/src/pages/License/index.tsx index 16eb236..fc9b0b6 100644 --- a/management-ui/src/pages/License/index.tsx +++ b/management-ui/src/pages/License/index.tsx @@ -25,6 +25,7 @@ interface LicenseStatus { payload?: { product?: string type?: string + reason?: string limits?: Record features?: Record } @@ -130,6 +131,16 @@ export default function LicensePage() { /> )} + {status?.status !== 'active' && status?.payload?.reason && ( + + )} + {isTrial && days !== null && days <= 14 && ( {t('license.enterKeyHint')}
setKey.mutate(v.license_key.trim())}> - +