1
0
Fork 0
VaultUI/src/pages/KeyValueView.js
2021-04-15 13:01:58 +01:00

81 lines
2.7 KiB
JavaScript

import { Page } from "../types/Page.js";
import { DoesNotExistError, getSecrets } from "../api.js";
import { setErrorText, setTitleElement } from "../pageUtils.js";
import { makeElement } from "../htmlUtils.js";
export class KeyValueViewPage extends Page {
constructor() {
super();
}
goBack() {
if (pageState.currentSecretPath.length != 0) {
pageState.popCurrentSecretPath();
changePage(pages.KEY_VALUE_VIEW);
} else {
changePage(pages.HOME);
}
}
async render() {
pageState.currentSecret = "";
setTitleElement(pageState);
let newButton = makeElement({
tag: "button",
text: "New",
class: ["uk-button", "uk-button-primary", "uk-margin-bottom"],
onclick: () => {
changePage(pages.KEY_VALUE_NEW_SECRET);
}
});
pageContent.appendChild(newButton);
try {
let res = await getSecrets(pageState.currentBaseMount, pageState.currentSecretPath);
pageContent.appendChild(makeElement({
tag: "ul",
class: ["uk-nav", "uk-nav-default"],
children: [
...res.map(function (secret) {
return makeElement({
tag: "li",
children: makeElement({
tag: "a",
text: secret,
onclick: _ => {
if (secret.endsWith("/")) {
pageState.pushCurrentSecretPath(secret);
changePage(pages.KEY_VALUE_VIEW);
} else {
pageState.currentSecret = secret;
changePage(pages.KEY_VALUE_SECRETS);
}
}
})
});
})
]
}));
} catch (e) {
if (e == DoesNotExistError) {
// getSecrets also 404's on no keys so dont go all the way back.
if (pageState.currentSecretPath.length != 0) {
return this.goBack();
} else {
pageContent.appendChild(makeElement({
tag: "p",
text: "You seem to have no secrets here, would you like to create one?"
}));
}
} else {
setErrorText(e.message);
}
};
}
get name() {
return "K/V View";
}
}