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

85 lines
2.3 KiB
JavaScript
Raw Normal View History

2021-05-03 09:25:42 +01:00
import { CodeJar } from "codejar";
2021-05-07 23:33:58 +01:00
import { Page } from "../../types/Page";
2021-05-07 23:21:38 +01:00
import { changePage, setErrorText, setPageContent, setTitleElement } from "../../pageUtils";
2021-05-07 11:53:26 +01:00
import { createOrUpdateSecret } from "../../api/createOrUpdateSecret.js";
import { getSecret } from "../../api/getSecret.js";
import { makeElement } from "../../htmlUtils";
2021-05-07 23:08:02 +01:00
import { pageState } from "../../globalPageState.ts";
import { verifyJSONString } from "../../utils";
import i18next from 'i18next';
export class KeyValueSecretEditPage extends Page {
2021-04-15 13:01:58 +01:00
constructor() {
super();
}
goBack() {
changePage("KEY_VALUE_SECRET");
2021-04-15 13:01:58 +01:00
}
render() {
setTitleElement(pageState);
let loadingText = makeElement({
tag: "p",
text: i18next.t("kv_sec_edit_loading")
});
2021-04-15 13:01:58 +01:00
let editor = makeElement({
tag: "div",
class: ["editor", "language-json"]
});
let saveButton = makeElement({
tag: "button",
class: ["uk-button", "uk-button-primary"],
text: i18next.t("kv_sec_edit_btn")
2021-04-15 13:01:58 +01:00
});
setPageContent(makeElement({
tag: "div",
children: [
loadingText,
editor,
makeElement({
tag: "p",
id: "errorText",
class: ["uk-text-danger", "uk-margin-top"]
}),
saveButton
]
}));
getSecret(
pageState.currentBaseMount,
pageState.currentMountType,
pageState.currentSecretPath,
pageState.currentSecret,
).then(secretInfo => {
2021-04-15 13:01:58 +01:00
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(i18next.t("kv_sec_edit_invalid_json_err"));
2021-04-15 13:01:58 +01:00
return;
}
createOrUpdateSecret(
pageState.currentBaseMount,
pageState.currentSecretPath,
pageState.currentSecret,
JSON.parse(jar.toString())
2021-04-18 10:42:57 +01:00
).then(_ => {
changePage("KEY_VALUE_SECRET");
2021-04-15 13:01:58 +01:00
return;
}).catch(e => {
setErrorText(e.message);
});
};
});
}
get titleSuffix() {
return i18next.t("kv_sec_edit_suffix");
}
2021-04-15 13:01:58 +01:00
get name() {
return i18next.t("kv_sec_edit_title");
2021-04-15 13:01:58 +01:00
}
}