Interner Zugang auffindbar + Owner kann eigenen Code selbst aendern
- Footer hat jetzt einen eigenen Block "Intern" mit Links zum Bewerbungs-Postfach und zu Zugaenge & Rollen (vorher nur ein winziger Link ganz unten) - Postfach-Login verlinkt auf die Zugaenge-Seite - Neue Tabelle app_settings + Endpunkt /admin/owner/set-code: der Hauptadministrator kann seinen Code selbst aendern, mit Bestaetigung des aktuellen Codes; gespeichert wird nur der Hash - Neuer Tab "Mein Zugang" in zugaenge.html (nur fuer den Owner) Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
+6
-1
@@ -158,11 +158,16 @@
|
||||
<li><a href="bewerben.html">Bewerben</a></li>
|
||||
<li><a href="kontakt.html">Kontakt</a></li>
|
||||
</ul>
|
||||
<h4 style="margin-top:1.4rem;">Intern 🔒</h4>
|
||||
<ul>
|
||||
<li><a href="postfach.html">Bewerbungs-Postfach</a></li>
|
||||
<li><a href="zugaenge.html">Zugänge & Rollen</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container footer-bottom">
|
||||
<span>© ${year} Dogfather Universe. Team Dogi ist Familie 🩵</span>
|
||||
<span><a href="kontakt.html">Impressum & Datenschutz</a> · <a href="postfach.html">Team-Postfach 🔒</a></span>
|
||||
<span><a href="kontakt.html">Impressum & Datenschutz</a> · <a href="postfach.html">🔒 Interner Login</a></span>
|
||||
</div>
|
||||
</footer>`;
|
||||
}
|
||||
|
||||
@@ -70,6 +70,10 @@ function showApp(session) {
|
||||
const canViewAudit = session.isOwner || sessionHasPermission(session, "SETTINGS_VIEW_ACTIVITY_LOG");
|
||||
if (auditTabBtn) auditTabBtn.style.display = canViewAudit ? "" : "none";
|
||||
|
||||
// "Mein Zugang" (eigenen Owner-Code ändern) gibt es nur für Dogi selbst.
|
||||
const myCodeTabBtn = document.querySelector('[data-tab="tab-mycode"]');
|
||||
if (myCodeTabBtn) myCodeTabBtn.style.display = session.isOwner ? "" : "none";
|
||||
|
||||
loadRoles().then(loadUsers);
|
||||
if (session.isOwner || sessionHasPermission(session, "SETTINGS_VIEW_ACTIVITY_LOG")) loadAudit();
|
||||
}
|
||||
@@ -501,6 +505,35 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
showGate();
|
||||
});
|
||||
|
||||
// Eigenen Hauptadministrator-Code ändern
|
||||
$("owner-code-form").addEventListener("submit", async (e) => {
|
||||
e.preventDefault();
|
||||
const status = $("owner-code-status");
|
||||
const currentCode = $("oc-current").value;
|
||||
const newCode = $("oc-new").value;
|
||||
const repeat = $("oc-new2").value;
|
||||
|
||||
const fail = (msg) => {
|
||||
status.textContent = msg;
|
||||
status.className = "form-status show error";
|
||||
};
|
||||
|
||||
if (newCode !== repeat) return fail("Die beiden neuen Codes sind nicht gleich.");
|
||||
if (newCode.length < 10) return fail("Der neue Code muss mindestens 10 Zeichen haben.");
|
||||
|
||||
status.textContent = "Wird geändert …";
|
||||
status.className = "form-status show";
|
||||
|
||||
const res = await apiCall(API_BASE_URL, "/admin/owner/set-code", { currentCode, newCode });
|
||||
if (res.ok) {
|
||||
status.textContent = "Erledigt — ab sofort gilt dein neuer Code. Gut merken! 🩵";
|
||||
status.className = "form-status show success";
|
||||
$("owner-code-form").reset();
|
||||
} else {
|
||||
fail(res.error || "Hat nicht geklappt.");
|
||||
}
|
||||
});
|
||||
|
||||
// Modals per Klick auf Backdrop schließen
|
||||
document.querySelectorAll(".modal-backdrop").forEach((m) => {
|
||||
m.addEventListener("click", (e) => {
|
||||
|
||||
Reference in New Issue
Block a user