54 lines
1.2 KiB
TypeScript
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>
|
|
</>
|
|
);
|
|
} |