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

74 lines
2 KiB
JavaScript
Raw Normal View History

2021-04-17 10:45:42 +01:00
import { Page } from "../../types/Page.js";
import { getSecret, createOrUpdateSecret } from "../../api.js";
import { verifyJSONString } from "../../utils.js";
2021-04-17 11:30:10 +01:00
import { setPageContent, setTitleElement, setErrorText, changePage } from "../../pageUtils.js";
2021-04-17 10:45:42 +01:00
import { makeElement } from "../../htmlUtils.js";
2021-04-15 13:01:58 +01:00
import { CodeJar } from "codejar";
export class KeyValueSecretsEditPage extends Page {
constructor() {
super();
}
goBack() {
2021-04-17 11:24:43 +01:00
changePage("KEY_VALUE_SECRETS");
2021-04-15 13:01:58 +01:00
}
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())
2021-04-18 10:42:57 +01:00
).then(_ => {
2021-04-17 11:24:43 +01:00
changePage("KEY_VALUE_SECRETS");
2021-04-15 13:01:58 +01:00
return;
}).catch(e => {
setErrorText(e.message);
});
};
});
}
get titleSuffix() {
return " (edit)";
}
2021-04-15 13:01:58 +01:00
get name() {
return "K/V Secrets Edit";
}
}