1
0
Fork 0
VaultUI/src/ui/pages/Access/Auth/userpass/UserPassUsersList.tsx

58 lines
1.7 KiB
TypeScript

import { Button } from "../../../../elements/Button";
import { Component } from "preact";
import { DefaultPageProps } from "../../../../../types/DefaultPageProps";
import { Margin } from "../../../../elements/Margin";
import { PageTitle } from "../../../../elements/PageTitle";
import { route } from "preact-router";
import { sendErrorNotification } from "../../../../elements/ErrorMessage";
import { userPassUserNewURL, userPassUserViewURL } from "../../../pageLinks";
import i18next from "i18next";
export class UserPassUsersList extends Component<DefaultPageProps, { users: string[] }> {
async componentDidMount() {
const baseMount = this.props.matches["baseMount"];
try {
const users = await this.props.api.listUserPassUsers(baseMount);
this.setState({ users });
} catch (e: unknown) {
const error = e as Error;
sendErrorNotification(error.message);
}
}
render() {
if (!this.state.users) return;
const baseMount = this.props.matches["baseMount"];
return (
<>
<PageTitle title={i18next.t("userpass_users_list_title")} />
<div>
<Margin>
<Button
text={i18next.t("common_new")}
color="primary"
route={userPassUserNewURL(baseMount)}
/>
</Margin>
<ul>
{...this.state.users.map((user) => (
<li>
<a
onClick={async () => {
route(userPassUserViewURL(baseMount, user));
}}
>
{user}
</a>
</li>
))}
</ul>
</div>
</>
);
}
}