1
0
Fork 0
VaultUI/src/pages/KeyValueSecretsEdit.js

71 lines
2 KiB
JavaScript
Raw Normal View History

2021-04-15 13:01:58 +01:00
import { Page } from "../types/Page.js";
import { getSecret, createOrUpdateSecret } from "../api.js";
import { verifyJSONString } from "../utils.js";
import { setPageContent, setTitleElement, setErrorText } from "../pageUtils.js";
import { CodeJar } from "codejar";
import { makeElement } from "../htmlUtils.js";
export class KeyValueSecretsEditPage extends Page {
constructor() {
super();
}
goBack() {
changePage(pages.KEY_VALUE_SECRETS);
}
render() {
setTitleElement(pageState);
let loadingText = makeElement({ tag: "p", text: "Loading.." });
let editor = makeElement({
tag: "div",
class: ["editor", "language-json"]
});
let saveButton = makeElement({
tag: "button",
class: ["uk-button", "uk-button-primary"],
text: "Save"
});
setPageContent(makeElement({
tag: "div",
children: [
loadingText,
editor,
makeElement({
tag: "p",
id: "errorText",
class: ["uk-text-danger", "uk-margin-top"]
}),
saveButton
]
}));
getSecret(pageState.currentBaseMount, pageState.currentSecretPath, pageState.currentSecret).then(secretInfo => {
loadingText.remove();
const secretsJSON = JSON.stringify(Object.fromEntries(new Map(Object.entries(secretInfo).sort())), null, 4);
let jar = CodeJar(editor, () => { }, { tab: ' '.repeat(4) });
jar.updateCode(secretsJSON);
saveButton.onclick = function () {
if (!verifyJSONString(jar.toString())) {
setErrorText("Invalid JSON");
return;
}
createOrUpdateSecret(
pageState.currentBaseMount,
pageState.currentSecretPath,
pageState.currentSecret,
JSON.parse(jar.toString())
).then(resp => {
changePage(pages.KEY_VALUE_SECRETS);
return;
}).catch(e => {
setErrorText(e.message);
});
};
});
}
get name() {
return "K/V Secrets Edit";
}
}