- WebGUI Anwendungseinstellungen
+ Einstellungen
+
+
diff --git a/src/PolyTrader.Web/wwwroot/js/app.js b/src/PolyTrader.Web/wwwroot/js/app.js
index c0c822b..eb05d43 100644
--- a/src/PolyTrader.Web/wwwroot/js/app.js
+++ b/src/PolyTrader.Web/wwwroot/js/app.js
@@ -585,54 +585,17 @@ async function loadSettings() {
if (!res.ok) return;
const opt = await res.json();
- document.getElementById('cfgEnabled').checked = opt.enabled;
- document.getElementById('cfgPort').value = opt.port;
- document.getElementById('cfgLocalOnly').checked = opt.localOnly;
- document.getElementById('cfgToken').value = opt.token || '';
+ document.getElementById('cfgEnabled').textContent = opt.enabled ? 'aktiv' : 'deaktiviert';
+ document.getElementById('cfgPort').textContent = opt.port;
+ document.getElementById('cfgBind').textContent = opt.localOnly
+ ? 'nur lokal (127.0.0.1)'
+ : 'im Netzwerk – alle Schnittstellen, unverschlüsseltes HTTP';
+ document.getElementById('cfgTokenStatus').textContent = opt.hasToken
+ ? 'gesetzt'
+ : 'nicht gesetzt – das WebUI ist gesperrt';
} catch (e) {}
}
-async function saveSettings(e) {
- e.preventDefault();
- const enabled = document.getElementById('cfgEnabled').checked;
- const port = parseInt(document.getElementById('cfgPort').value, 10);
- const localOnly = document.getElementById('cfgLocalOnly').checked;
- const token = document.getElementById('cfgToken').value.trim();
-
- try {
- const res = await fetch('/api/settings/webui', {
- method: 'POST',
- headers: { 'Content-Type': 'application/json' },
- body: JSON.stringify({ enabled, port, localOnly, authToken: token })
- });
- if (res.ok) {
- const msg = document.getElementById('settingsStatusMsg');
- msg.style.display = 'inline';
- setTimeout(() => { msg.style.display = 'none'; }, 3000);
- }
- } catch (e) {}
-}
-
-async function generateNewToken() {
- if (!confirm('Neues Zugangs-Token generieren? Alle bestehenden Sessions müssen sich danach neu anmelden.')) return;
- try {
- const res = await fetch('/api/settings/webui/generate-token', { method: 'POST' });
- if (res.ok) {
- const data = await res.json();
- document.getElementById('cfgToken').value = data.token;
- alert('Neues Token generiert und in appsettings.Local.json gespeichert:\n\n' + data.token);
- }
- } catch (e) {}
-}
-
-function copyToken() {
- const input = document.getElementById('cfgToken');
- if (!input.value) return;
- navigator.clipboard.writeText(input.value).then(() => {
- alert('Token in Zwischenablage kopiert!');
- });
-}
-
// Auth
async function logout() {
try {
diff --git a/tests/PolyTrader.Tests/WebUi/WebUiSecretsTests.cs b/tests/PolyTrader.Tests/WebUi/WebUiSecretsTests.cs
new file mode 100644
index 0000000..2d767ad
--- /dev/null
+++ b/tests/PolyTrader.Tests/WebUi/WebUiSecretsTests.cs
@@ -0,0 +1,171 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using Microsoft.AspNetCore.Routing;
+using Microsoft.Extensions.DependencyInjection;
+using PolyTraderSharp.Models;
+using Xunit;
+
+namespace PolyTrader.Tests.WebUi
+{
+ ///