61 lines
1.6 KiB
TypeScript
61 lines
1.6 KiB
TypeScript
import CustomAppBar from "./CustomAppBar";
|
|
import React from "react";
|
|
import { makeStyles } from "@material-ui/core/styles";
|
|
import { MainPageEditor } from "./MainPageEditor";
|
|
import { getJsonWebToken } from "../jwt/jwt";
|
|
import { MainPageCandidate } from "./MainPageCandidate";
|
|
import { MainPageUser } from "./MainPageUser";
|
|
import { Link } from "react-router-dom";
|
|
import { Container } from "@material-ui/core";
|
|
|
|
const useStyles = makeStyles((theme) => ({
|
|
appBarSpacer: theme.mixins.toolbar,
|
|
content: {
|
|
flexGrow: 1,
|
|
height: "100vh",
|
|
overflow: "auto",
|
|
},
|
|
invalidTokenContainer: {
|
|
paddingTop: theme.spacing(4),
|
|
paddingBottom: theme.spacing(4),
|
|
},
|
|
}));
|
|
|
|
function Main(): React.ReactElement {
|
|
const classes = useStyles();
|
|
const getMainPage = () => {
|
|
const jwt = getJsonWebToken();
|
|
if (jwt) {
|
|
switch (jwt.role) {
|
|
case "candymat_editor":
|
|
return <MainPageEditor />;
|
|
case "candymat_candidate":
|
|
return <MainPageCandidate personRowId={jwt.person_row_id} />;
|
|
case "candymat_person":
|
|
return <MainPageUser />;
|
|
}
|
|
} else {
|
|
localStorage.removeItem("token");
|
|
return (
|
|
<Container className={classes.invalidTokenContainer}>
|
|
Du bist nicht eingelogged oder dein Token ist ungültig. Logge dich
|
|
erneut ein.
|
|
<br />
|
|
Zur <Link to={"/login"}>Login Seite</Link>
|
|
</Container>
|
|
);
|
|
}
|
|
};
|
|
return (
|
|
<div>
|
|
<CustomAppBar />
|
|
<main className={classes.content}>
|
|
<div className={classes.appBarSpacer} />
|
|
{getMainPage()}
|
|
</main>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
export default Main;
|