Add passphrase keypasses

This commit is contained in:
Ettore
2026-05-10 11:02:03 +02:00
parent 0264425383
commit 54f1ebb62d
5 changed files with 102 additions and 7 deletions

View File

@@ -236,6 +236,12 @@ let _allGates = [];
document.getElementById("btn-new-keypass").addEventListener("click", () => {
document.getElementById("kp-desc").value = "";
document.getElementById("kp-code").value = "";
// Reset complexity — default to passphrase
document.getElementById("kp-charset").value = "passphrase";
document.getElementById("kp-length").value = 12;
document.getElementById("kp-length-val").textContent = "12";
document.getElementById("kp-length-wrap").style.display = "none";
document.getElementById("kp-autogen-options").style.display = "";
// Reset never-expires
const neverCb = document.getElementById("kp-never-expires");
neverCb.checked = false;
@@ -263,6 +269,17 @@ document.getElementById("btn-new-keypass").addEventListener("click", () => {
document.getElementById("keypass-modal").classList.remove("hidden");
});
// Auto-generation options — hide when a manual code is typed, hide length for passphrase
document.getElementById("kp-code").addEventListener("input", e => {
document.getElementById("kp-autogen-options").style.display = e.target.value.trim() ? "none" : "";
});
document.getElementById("kp-charset").addEventListener("change", e => {
document.getElementById("kp-length-wrap").style.display = e.target.value === "passphrase" ? "none" : "";
});
document.getElementById("kp-length").addEventListener("input", e => {
document.getElementById("kp-length-val").textContent = e.target.value;
});
// Never expires toggle
document.getElementById("kp-never-expires").addEventListener("change", e => {
const kpExpInput = document.getElementById("kp-expires");
@@ -345,6 +362,8 @@ document.getElementById("keypass-form").addEventListener("submit", async e => {
e.preventDefault();
const desc = document.getElementById("kp-desc").value.trim();
const code = document.getElementById("kp-code").value.trim() || null;
const charset = document.getElementById("kp-charset").value;
const length = parseInt(document.getElementById("kp-length").value, 10);
const neverExpires = document.getElementById("kp-never-expires").checked;
const expires_at = neverExpires ? null : new Date(document.getElementById("kp-expires").value).toISOString();
const allGates = document.getElementById("kp-all-gates").checked;
@@ -352,7 +371,7 @@ document.getElementById("keypass-form").addEventListener("submit", async e => {
const errEl = document.getElementById("kp-error");
errEl.classList.add("hidden");
try {
await api("POST", "/api/admin/keypasses", { description: desc, expires_at, gate_ids, code });
await api("POST", "/api/admin/keypasses", { description: desc, expires_at, gate_ids, code, charset, length });
document.getElementById("keypass-modal").classList.add("hidden");
showToast("Keypass created");
loadKeypasses();