bugfixing

This commit is contained in:
2026-02-07 22:55:34 +01:00
parent 6646adb4a4
commit a50db95dd8
2 changed files with 13 additions and 4 deletions

View File

@@ -455,7 +455,7 @@
<div class="mb-3"> <div class="mb-3">
<label class="form-label">Subdomain *</label> <label class="form-label">Subdomain *</label>
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control" id="cust-subdomain" required pattern="[a-z0-9][a-z0-9-]*[a-z0-9]"> <input type="text" class="form-control" id="cust-subdomain" required pattern="[a-z0-9][-a-z0-9]*[a-z0-9]">
<span class="input-group-text" id="cust-subdomain-suffix">.domain.com</span> <span class="input-group-text" id="cust-subdomain-suffix">.domain.com</span>
</div> </div>
<div class="form-text">Lowercase, alphanumeric + hyphens</div> <div class="form-text">Lowercase, alphanumeric + hyphens</div>

View File

@@ -112,7 +112,16 @@ document.getElementById('login-form').addEventListener('submit', async (e) => {
}); });
function logout() { function logout() {
api('POST', '/auth/logout').catch(() => {}); // Use fetch directly (not api()) to avoid 401 → logout → 401 infinite loop
if (authToken) {
fetch('/api/auth/logout', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${authToken}`,
},
}).catch(() => {});
}
authToken = null; authToken = null;
currentUser = null; currentUser = null;
localStorage.removeItem('authToken'); localStorage.removeItem('authToken');
@@ -228,7 +237,7 @@ function showNewCustomerModal() {
document.getElementById('customer-form').reset(); document.getElementById('customer-form').reset();
document.getElementById('cust-max-devices').value = '20'; document.getElementById('cust-max-devices').value = '20';
document.getElementById('customer-modal-error').classList.add('d-none'); document.getElementById('customer-modal-error').classList.add('d-none');
document.getElementById('customer-save-btn').textContent = 'Save & Deploy'; document.getElementById('customer-save-btn').innerHTML = '<span class="spinner-border spinner-border-sm d-none me-1" id="customer-save-spinner"></span> Save &amp; Deploy';
// Update subdomain suffix // Update subdomain suffix
api('GET', '/settings/system').then(cfg => { api('GET', '/settings/system').then(cfg => {
@@ -255,7 +264,7 @@ function editCurrentCustomer() {
document.getElementById('cust-max-devices').value = c.max_devices; document.getElementById('cust-max-devices').value = c.max_devices;
document.getElementById('cust-notes').value = c.notes || ''; document.getElementById('cust-notes').value = c.notes || '';
document.getElementById('customer-modal-error').classList.add('d-none'); document.getElementById('customer-modal-error').classList.add('d-none');
document.getElementById('customer-save-btn').textContent = 'Save Changes'; document.getElementById('customer-save-btn').innerHTML = '<span class="spinner-border spinner-border-sm d-none me-1" id="customer-save-spinner"></span> Save Changes';
const modalEl = document.getElementById('customer-modal'); const modalEl = document.getElementById('customer-modal');
const modal = bootstrap.Modal.getOrCreateInstance(modalEl); const modal = bootstrap.Modal.getOrCreateInstance(modalEl);