remove preact and create setup wizard
This commit is contained in:
@@ -78,6 +78,22 @@
|
||||
|
||||
const formJSON = (form) => Object.fromEntries(new FormData(form).entries());
|
||||
|
||||
document.querySelector("[data-initial-setup]")?.addEventListener("submit", async (event) => {
|
||||
event.preventDefault();
|
||||
const form = event.currentTarget;
|
||||
try {
|
||||
await postJSON("/api/setup", {
|
||||
email: form.elements.email.value,
|
||||
displayName: form.elements.displayName.value,
|
||||
password: form.elements.password.value,
|
||||
signupsEnabled: form.elements.signupsEnabled.checked,
|
||||
});
|
||||
window.location.href = "/account";
|
||||
} catch (error) {
|
||||
setStatus("[data-setup-status]", error.message, true);
|
||||
}
|
||||
});
|
||||
|
||||
const base64URLToBuffer = (value) => {
|
||||
const padded = value.replace(/-/g, "+").replace(/_/g, "/").padEnd(Math.ceil(value.length / 4) * 4, "=");
|
||||
const binary = atob(padded);
|
||||
@@ -350,6 +366,29 @@
|
||||
);
|
||||
};
|
||||
|
||||
const loadAdminSettings = async () => {
|
||||
const section = document.querySelector("[data-admin-settings-section]");
|
||||
const form = document.querySelector("[data-admin-settings]");
|
||||
if (!section || !form) return;
|
||||
const me = await fetch("/api/auth/me", { credentials: "same-origin" }).then((response) => response.json()).catch(() => null);
|
||||
if (me?.principal?.role !== "admin") return;
|
||||
section.hidden = false;
|
||||
const data = await fetch("/api/admin/settings", { credentials: "same-origin" }).then((response) => response.json());
|
||||
form.elements.signupsEnabled.checked = Boolean(data.settings?.signupsEnabled);
|
||||
};
|
||||
|
||||
document.querySelector("[data-admin-settings]")?.addEventListener("submit", async (event) => {
|
||||
event.preventDefault();
|
||||
try {
|
||||
const form = event.currentTarget;
|
||||
await postJSON("/api/admin/settings", { signupsEnabled: form.elements.signupsEnabled.checked }, { method: "PATCH" });
|
||||
setStatus("[data-admin-settings-status]", "Registration setting saved.");
|
||||
} catch (error) {
|
||||
setStatus("[data-admin-settings-status]", error.message, true);
|
||||
}
|
||||
});
|
||||
|
||||
loadTokens().catch(() => {});
|
||||
loadAdminUsers().catch(() => {});
|
||||
loadAdminSettings().catch(() => {});
|
||||
})();
|
||||
|
||||
@@ -240,6 +240,16 @@ code {
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
|
||||
.auth-form .auth-choice {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.55rem;
|
||||
}
|
||||
|
||||
.auth-choice input {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.auth-form input,
|
||||
.auth-form select,
|
||||
.user-row select {
|
||||
@@ -1817,4 +1827,3 @@ code {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user