aboutsummaryrefslogtreecommitdiff
path: root/packages/demobank-ui/src/components/Routing.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'packages/demobank-ui/src/components/Routing.tsx')
-rw-r--r--packages/demobank-ui/src/components/Routing.tsx66
1 files changed, 56 insertions, 10 deletions
diff --git a/packages/demobank-ui/src/components/Routing.tsx b/packages/demobank-ui/src/components/Routing.tsx
index 2c532e863..890058a9b 100644
--- a/packages/demobank-ui/src/components/Routing.tsx
+++ b/packages/demobank-ui/src/components/Routing.tsx
@@ -24,12 +24,50 @@ import { HomePage, WithdrawalOperationPage } from "../pages/HomePage.js";
import { PublicHistoriesPage } from "../pages/PublicHistoriesPage.js";
import { RegistrationPage } from "../pages/RegistrationPage.js";
import { Test } from "../pages/Test.js";
+import { useBackendContext } from "../context/backend.js";
+import { LoginForm } from "../pages/LoginForm.js";
+import { AdminPage } from "../pages/AdminPage.js";
export function Routing(): VNode {
const history = createHashHistory();
+ const backend = useBackendContext();
+
+ if (backend.state.status === "loggedOut") {
+ return <BankFrame
+ goToBusinessAccount={() => {
+ route("/business");
+ }}
+ >
+ <Router history={history}>
+ <Route
+ path="/login"
+ component={() => (
+ <LoginForm
+ onRegister={() => {
+ route("/register");
+ }}
+ />
+ )}
+ />
+ <Route
+ path="/register"
+ component={() => (
+ <RegistrationPage
+ onComplete={() => {
+ route("/account");
+ }}
+ />
+ )}
+ />
+ <Route default component={Redirect} to="/login" />
+ </Router>
+ </BankFrame>
+ }
+ const isAdmin = backend.state.isUserAdministrator
return (
<BankFrame
+ account={backend.state.username}
goToBusinessAccount={() => {
route("/business");
}}
@@ -69,16 +107,24 @@ export function Routing(): VNode {
/>
<Route
path="/account"
- component={() => (
- <HomePage
- onPendingOperationFound={(wopid) => {
- route(`/operation/${wopid}`);
- }}
- onRegister={() => {
- route("/register");
- }}
- />
- )}
+ component={() => {
+ if (isAdmin) {
+ return <AdminPage
+ onRegister={() => {
+ route("/register");
+ }}
+ />;
+ } else {
+ return <HomePage
+ onPendingOperationFound={(wopid) => {
+ route(`/operation/${wopid}`);
+ }}
+ onRegister={() => {
+ route("/register");
+ }}
+ />
+ }
+ }}
/>
<Route
path="/business"