Files
beer-inventory/app/routes/admin/layout.tsx
T

54 lines
1.2 KiB
TypeScript

import { LoaderFunctionArgs, MetaFunction, redirect } from "@remix-run/node";
import { Outlet, json, useLoaderData } from "@remix-run/react";
import { Container, Row } from "react-bootstrap";
import { getSession } from "~/auth/session";
import Header, { HeaderData } from "~/components/header";
export async function loader({
request,
}: LoaderFunctionArgs) {
const session = await getSession(
request.headers.get("Cookie")
);
if(!session.has("user_id")){
return redirect("/");
}
let user = session.get("user");
if(user.type != "Admin"){
return redirect("/");
}
let data : HeaderData = {loggedin: false};
if(session.has("user_id")){
data.user = session.get("user");
data.loggedin = true;
}
return json({data});
}
export const meta: MetaFunction = ({}) => {
return [{ title: "Admin | K-FRIDGE" }];
};
export default function InventoryLayout() {
let data = useLoaderData<typeof loader>();
return (
<>
<header>
<Header data={data.data}></Header>
</header>
<main>
<Container>
<Row>
<Outlet />
</Row>
</Container>
</main>
</>
);
}