feat(config): admin Configuration page (registry-driven)
New admin-only Configuration page that renders the system_config registry grouped (Email/SMTP first), with per-field save/reset, write-only encrypted secret fields (disabled with a hint when TOKEN_ENCRYPTION_KEY is unset), and a Send-test-email button. New 'config' page + sidebar nav item + header title; api methods and EN/HU/DE strings.
This commit is contained in:
parent
8e4754b0b0
commit
007458e61f
12 changed files with 311 additions and 2 deletions
30
frontend/src/i18n/locales/de/config.json
Normal file
30
frontend/src/i18n/locales/de/config.json
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"intro": "In der Datenbank gespeicherte Betriebseinstellungen — sie überschreiben die Datei-/Env-Standardwerte und wirken ohne erneutes Deployment. Lass ein Feld leer (oder setze es zurück), um auf den Standard zurückzufallen.",
|
||||
"loading": "Konfiguration wird geladen…",
|
||||
"groups": {
|
||||
"email": "E-Mail / SMTP"
|
||||
},
|
||||
"fields": {
|
||||
"smtp_host": { "label": "SMTP-Host", "hint": "z. B. smtp.gmail.com" },
|
||||
"smtp_port": { "label": "SMTP-Port", "hint": "Üblicherweise 587 (STARTTLS)." },
|
||||
"smtp_user": { "label": "SMTP-Benutzername", "hint": "Das sendende Konto / der Login." },
|
||||
"smtp_from": { "label": "Absenderadresse", "hint": "z. B. Siftlode <addr@gmail.com>. Standard ist der Benutzername." },
|
||||
"smtp_password": { "label": "SMTP-Passwort", "hint": "App-Passwort. Verschlüsselt gespeichert; nur schreibbar — wird nie wieder angezeigt." }
|
||||
},
|
||||
"save": "Speichern",
|
||||
"saved": "Gespeichert",
|
||||
"saveFailed": "Speichern fehlgeschlagen",
|
||||
"reset": "Zurücksetzen",
|
||||
"resetHint": "Diese Überschreibung entfernen und auf den Datei-/Env-Standard zurückfallen.",
|
||||
"resetDone": "Auf Standard zurückgesetzt",
|
||||
"usingDefault": "Standard wird verwendet",
|
||||
"overridden": "in der DB überschrieben",
|
||||
"secretSet": "•••••••• gespeichert",
|
||||
"secretEnv": "Env-Wert wird verwendet",
|
||||
"secretUnset": "nicht gesetzt",
|
||||
"secretsDisabled": "Setze TOKEN_ENCRYPTION_KEY, um Secrets in der Datenbank zu speichern.",
|
||||
"testEmail": "Test-E-Mail senden",
|
||||
"testEmailHint": "Sende eine Test-E-Mail an deine eigene Adresse mit den obigen Einstellungen, um zu prüfen, ob sie funktionieren.",
|
||||
"testSent": "Test-E-Mail gesendet an {{to}}",
|
||||
"testFailed": "Test-E-Mail fehlgeschlagen — prüfe die Einstellungen"
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
"channelManager": "Kanalverwaltung",
|
||||
"usageStats": "Nutzung & Statistik",
|
||||
"scheduler": "Planer",
|
||||
"configuration": "Konfiguration",
|
||||
"scope": {
|
||||
"label": "Feed-Quelle",
|
||||
"my": "Meine",
|
||||
|
|
@ -18,6 +19,7 @@
|
|||
"playlists": "Wiedergabelisten",
|
||||
"stats": "Statistik",
|
||||
"scheduler": "Planer",
|
||||
"config": "Konfiguration",
|
||||
"settings": "Einstellungen",
|
||||
"about": "Über",
|
||||
"signOut": "Abmelden",
|
||||
|
|
|
|||
30
frontend/src/i18n/locales/en/config.json
Normal file
30
frontend/src/i18n/locales/en/config.json
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"intro": "Operational settings stored in the database — these override the file/env defaults and take effect without a redeploy. Leave a field empty (or reset it) to fall back to the default.",
|
||||
"loading": "Loading configuration…",
|
||||
"groups": {
|
||||
"email": "Email / SMTP"
|
||||
},
|
||||
"fields": {
|
||||
"smtp_host": { "label": "SMTP host", "hint": "e.g. smtp.gmail.com" },
|
||||
"smtp_port": { "label": "SMTP port", "hint": "Usually 587 (STARTTLS)." },
|
||||
"smtp_user": { "label": "SMTP username", "hint": "The sending account / login." },
|
||||
"smtp_from": { "label": "From address", "hint": "e.g. Siftlode <addr@gmail.com>. Defaults to the username." },
|
||||
"smtp_password": { "label": "SMTP password", "hint": "App password. Stored encrypted; write-only — it's never shown back." }
|
||||
},
|
||||
"save": "Save",
|
||||
"saved": "Saved",
|
||||
"saveFailed": "Couldn't save",
|
||||
"reset": "Reset",
|
||||
"resetHint": "Remove this override and fall back to the file/env default.",
|
||||
"resetDone": "Reset to default",
|
||||
"usingDefault": "using default",
|
||||
"overridden": "overridden in DB",
|
||||
"secretSet": "•••••••• stored",
|
||||
"secretEnv": "using env value",
|
||||
"secretUnset": "not set",
|
||||
"secretsDisabled": "Set TOKEN_ENCRYPTION_KEY to store secrets in the database.",
|
||||
"testEmail": "Send test email",
|
||||
"testEmailHint": "Send a test email to your own address using the settings above, to confirm they work.",
|
||||
"testSent": "Test email sent to {{to}}",
|
||||
"testFailed": "Test email failed — check the settings"
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
"channelManager": "Channel manager",
|
||||
"usageStats": "Usage & stats",
|
||||
"scheduler": "Scheduler",
|
||||
"configuration": "Configuration",
|
||||
"scope": {
|
||||
"label": "Feed source",
|
||||
"my": "Mine",
|
||||
|
|
@ -18,6 +19,7 @@
|
|||
"playlists": "Playlists",
|
||||
"stats": "Stats",
|
||||
"scheduler": "Scheduler",
|
||||
"config": "Configuration",
|
||||
"settings": "Settings",
|
||||
"about": "About",
|
||||
"signOut": "Sign out",
|
||||
|
|
|
|||
30
frontend/src/i18n/locales/hu/config.json
Normal file
30
frontend/src/i18n/locales/hu/config.json
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
{
|
||||
"intro": "Az adatbázisban tárolt működési beállítások — felülírják a fájl/env alapértékeket, és újratelepítés nélkül lépnek életbe. Hagyd üresen (vagy állítsd vissza) a mezőt az alapértékhez való visszatéréshez.",
|
||||
"loading": "Konfiguráció betöltése…",
|
||||
"groups": {
|
||||
"email": "E-mail / SMTP"
|
||||
},
|
||||
"fields": {
|
||||
"smtp_host": { "label": "SMTP-kiszolgáló", "hint": "pl. smtp.gmail.com" },
|
||||
"smtp_port": { "label": "SMTP-port", "hint": "Általában 587 (STARTTLS)." },
|
||||
"smtp_user": { "label": "SMTP-felhasználónév", "hint": "A küldő fiók / bejelentkezés." },
|
||||
"smtp_from": { "label": "Feladó cím", "hint": "pl. Siftlode <addr@gmail.com>. Alapból a felhasználónév." },
|
||||
"smtp_password": { "label": "SMTP-jelszó", "hint": "Alkalmazásjelszó. Titkosítva tárolva; csak írható — soha nem jelenik meg újra." }
|
||||
},
|
||||
"save": "Mentés",
|
||||
"saved": "Elmentve",
|
||||
"saveFailed": "Nem sikerült menteni",
|
||||
"reset": "Visszaállítás",
|
||||
"resetHint": "Eltávolítja ezt a felülírást, és visszatér a fájl/env alapértékhez.",
|
||||
"resetDone": "Visszaállítva az alapértékre",
|
||||
"usingDefault": "alapérték használatban",
|
||||
"overridden": "felülírva az adatbázisban",
|
||||
"secretSet": "•••••••• tárolva",
|
||||
"secretEnv": "env-érték használatban",
|
||||
"secretUnset": "nincs beállítva",
|
||||
"secretsDisabled": "Állítsd be a TOKEN_ENCRYPTION_KEY-t a titkok adatbázisban tárolásához.",
|
||||
"testEmail": "Teszt-email küldése",
|
||||
"testEmailHint": "Teszt-email küldése a saját címedre a fenti beállításokkal, hogy ellenőrizd, működnek-e.",
|
||||
"testSent": "Teszt-email elküldve ide: {{to}}",
|
||||
"testFailed": "A teszt-email sikertelen — ellenőrizd a beállításokat"
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@
|
|||
"channelManager": "Csatornakezelő",
|
||||
"usageStats": "Használat és statisztika",
|
||||
"scheduler": "Ütemező",
|
||||
"configuration": "Konfiguráció",
|
||||
"scope": {
|
||||
"label": "Hírfolyam forrása",
|
||||
"my": "Sajátom",
|
||||
|
|
@ -18,6 +19,7 @@
|
|||
"playlists": "Lejátszási listák",
|
||||
"stats": "Statisztika",
|
||||
"scheduler": "Ütemező",
|
||||
"config": "Konfiguráció",
|
||||
"settings": "Beállítások",
|
||||
"about": "Névjegy",
|
||||
"signOut": "Kijelentkezés",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue