feat(customer): allow changing an already-registered NetBird API token

The per-customer Auto-Updates card only showed the token input when no
token was registered yet, so there was no way to replace one once set
(e.g. rotating it manually). Adds a "Change token" link that reveals the
same input/save flow at any time.
This commit is contained in:
2026-08-19 11:21:10 +02:00
parent 1e05ddfe69
commit 1bc768151a
3 changed files with 18 additions and 1 deletions
+16 -1
View File
@@ -625,12 +625,27 @@ async function loadCustomerNetbirdUpdates(id, hasToken) {
<button class="btn btn-outline-secondary btn-sm" onclick="syncCustomerNetbirdFromMaster(${id})">${t('customer.nbuSyncMaster')}</button> <button class="btn btn-outline-secondary btn-sm" onclick="syncCustomerNetbirdFromMaster(${id})">${t('customer.nbuSyncMaster')}</button>
</div> </div>
</div> </div>
<div id="nbu-result" class="small mt-2"></div>`; <div id="nbu-result" class="small mt-2"></div>
<div class="mt-2">
<a href="#" class="small" onclick="event.preventDefault(); showChangeNetbirdToken(${id})">${t('customer.nbuChangeToken')}</a>
</div>
<div id="nbu-change-token-area" class="mt-2 d-none"></div>`;
} catch (err) { } catch (err) {
container.innerHTML = `<div class="alert alert-warning py-2 small mb-0">${esc(err.message)}</div>`; container.innerHTML = `<div class="alert alert-warning py-2 small mb-0">${esc(err.message)}</div>`;
} }
} }
function showChangeNetbirdToken(id) {
const area = document.getElementById('nbu-change-token-area');
area.classList.remove('d-none');
area.innerHTML = `
<div class="input-group input-group-sm">
<input type="text" class="form-control" id="nbu-token-input" placeholder="${t('customer.nbuTokenPlaceholder')}">
<button class="btn btn-outline-primary" onclick="saveCustomerNetbirdToken(${id})">${t('customer.nbuSaveToken')}</button>
</div>
<div id="nbu-token-result" class="small mt-1"></div>`;
}
async function saveCustomerNetbirdToken(id) { async function saveCustomerNetbirdToken(id) {
const input = document.getElementById('nbu-token-input'); const input = document.getElementById('nbu-token-input');
const resultEl = document.getElementById('nbu-token-result'); const resultEl = document.getElementById('nbu-token-result');
+1
View File
@@ -97,6 +97,7 @@
"nbuTokenPlaceholder": "Personal Access Token einfügen…", "nbuTokenPlaceholder": "Personal Access Token einfügen…",
"nbuSaveToken": "Prüfen & Speichern", "nbuSaveToken": "Prüfen & Speichern",
"nbuTokenSaved": "Token gespeichert.", "nbuTokenSaved": "Token gespeichert.",
"nbuChangeToken": "Token ändern",
"nbuVersion": "Client-Version", "nbuVersion": "Client-Version",
"nbuDisabled": "Deaktiviert", "nbuDisabled": "Deaktiviert",
"nbuLatest": "Neueste Version", "nbuLatest": "Neueste Version",
+1
View File
@@ -97,6 +97,7 @@
"nbuTokenPlaceholder": "Paste Personal Access Token…", "nbuTokenPlaceholder": "Paste Personal Access Token…",
"nbuSaveToken": "Verify & Save", "nbuSaveToken": "Verify & Save",
"nbuTokenSaved": "Token saved.", "nbuTokenSaved": "Token saved.",
"nbuChangeToken": "Change token",
"nbuVersion": "Client version", "nbuVersion": "Client version",
"nbuDisabled": "Disabled", "nbuDisabled": "Disabled",
"nbuLatest": "Latest version", "nbuLatest": "Latest version",