4053245be8
- New settings.json persistence layer (internal/settings/settings.go) - Atomic write (tmp + rename), thread-safe with sync.RWMutex - Stores password hash overrides and DB validation cache - Auto-creates on first save, graceful handling if missing - Auth improvements - Password resolution priority: settings.json > controller.yaml > none - Session duration extended to 7 days (was 24h) - ?next= redirect after session expiry (returns to original page) - Flash messages on login page (used after password change) - Conditional logout link (hidden when auth disabled) - Session invalidation on password change - New Settings page (/settings) - Read-only system config display (customer, domain, git, backup, monitoring) - Password change form with validation (min 8 chars, match check) - Sidebar "Beállítások" item pinned to bottom above version - DB validation persistence - Validation results saved to settings.json after each dump - Cached data survives container restarts Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
98 lines
4.4 KiB
HTML
98 lines
4.4 KiB
HTML
{{define "settings"}}
|
||
{{template "layout_start" .}}
|
||
|
||
<div class="page-header">
|
||
<h2>Beállítások</h2>
|
||
</div>
|
||
|
||
<!-- Section A: System Configuration (read-only) -->
|
||
<div class="settings-card">
|
||
<h3>Rendszer konfiguráció</h3>
|
||
<p class="settings-card-desc">Az üzemeltető által beállított értékek. Módosításhoz kérd az üzemeltetőt.</p>
|
||
<div class="settings-grid">
|
||
<div class="settings-row">
|
||
<span class="settings-label">Ügyfél azonosító</span>
|
||
<span class="settings-value mono">{{.CustomerID}}</span>
|
||
</div>
|
||
<div class="settings-row">
|
||
<span class="settings-label">Ügyfél neve</span>
|
||
<span class="settings-value">{{.CustomerName}}</span>
|
||
</div>
|
||
<div class="settings-row">
|
||
<span class="settings-label">Domain</span>
|
||
<span class="settings-value mono">{{.CustomerDomain}}</span>
|
||
</div>
|
||
{{if .GitRepoURL}}
|
||
<div class="settings-row">
|
||
<span class="settings-label">Alkalmazás sablon forrás</span>
|
||
<span class="settings-value mono settings-value-truncate">{{.GitRepoURL}}</span>
|
||
</div>
|
||
{{end}}
|
||
<div class="settings-row">
|
||
<span class="settings-label">Sablon szinkronizálás</span>
|
||
<span class="settings-value mono">{{.GitSyncInterval}}</span>
|
||
</div>
|
||
<div class="settings-row">
|
||
<span class="settings-label">Biztonsági mentés</span>
|
||
<span class="settings-value">{{if .BackupEnabled}}<span class="state-text-green">✅ Aktív</span>{{else}}<span class="state-text-red">❌ Inaktív</span>{{end}}</span>
|
||
</div>
|
||
{{if .BackupEnabled}}
|
||
<div class="settings-row">
|
||
<span class="settings-label">Mentés ütemezés</span>
|
||
<span class="settings-value mono">{{.DBDumpSchedule}} / {{.ResticSchedule}}</span>
|
||
</div>
|
||
{{end}}
|
||
<div class="settings-row">
|
||
<span class="settings-label">Monitoring</span>
|
||
<span class="settings-value">{{if .MonitoringEnabled}}<span class="state-text-green">✅ Aktív</span>{{else}}<span class="state-text-red">❌ Inaktív</span>{{end}}</span>
|
||
</div>
|
||
{{if .MonitoringEnabled}}
|
||
<div class="settings-row">
|
||
<span class="settings-label">Healthchecks URL</span>
|
||
<span class="settings-value mono settings-value-truncate">{{if .HealthchecksBase}}{{.HealthchecksBase}}{{else}}–{{end}}</span>
|
||
</div>
|
||
{{end}}
|
||
<div class="settings-row">
|
||
<span class="settings-label">Hub jelentés</span>
|
||
<span class="settings-value">{{if .HubEnabled}}<span class="state-text-green">✅ Aktív</span>{{else}}–{{end}}</span>
|
||
</div>
|
||
<div class="settings-row">
|
||
<span class="settings-label">Controller verzió</span>
|
||
<span class="settings-value mono">v{{.Version}}</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Section B: Password Change -->
|
||
<div class="settings-card">
|
||
<h3>Jelszó módosítás</h3>
|
||
{{if .AuthEnabled}}
|
||
{{if .PasswordError}}<div class="alert alert-error">{{.PasswordError}}</div>{{end}}
|
||
<form method="POST" action="/settings/password">
|
||
<div class="form-group">
|
||
<label for="current_password">Jelenlegi jelszó</label>
|
||
<input type="password" id="current_password" name="current_password" required
|
||
placeholder="Adja meg a jelenlegi jelszavát" class="form-control">
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="new_password">Új jelszó</label>
|
||
<input type="password" id="new_password" name="new_password" required minlength="8"
|
||
placeholder="Legalább 8 karakter" class="form-control">
|
||
</div>
|
||
<div class="form-group">
|
||
<label for="confirm_password">Új jelszó megerősítése</label>
|
||
<input type="password" id="confirm_password" name="confirm_password" required minlength="8"
|
||
placeholder="Jelszó mégegyszer" class="form-control">
|
||
</div>
|
||
<button type="submit" class="btn btn-primary">Jelszó módosítása</button>
|
||
</form>
|
||
{{else}}
|
||
<div class="alert alert-info">
|
||
A jelszavas védelem nincs beállítva. Kérd az üzemeltetőt a beállításhoz.
|
||
</div>
|
||
{{end}}
|
||
</div>
|
||
|
||
{{template "layout_end" .}}
|
||
{{end}}
|