mirror of
https://github.com/wassname/Open-Assistant.git
synced 2026-07-28 11:15:43 +08:00
48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
import Head from "next/head";
|
|
import { useRouter } from "next/router";
|
|
import { useSession } from "next-auth/react";
|
|
import { useEffect } from "react";
|
|
import { getAdminLayout } from "src/components/Layout";
|
|
import UsersCell from "src/components/UsersCell";
|
|
|
|
/**
|
|
* Provides the admin index page that will display a list of users and give
|
|
* admins the ability to manage their access rights.
|
|
*/
|
|
const AdminIndex = () => {
|
|
const router = useRouter();
|
|
const { data: session, status } = useSession();
|
|
|
|
// Check when the user session is loaded and re-route if the user is not an
|
|
// admin. This follows the suggestion by NextJS for handling private pages:
|
|
// https://nextjs.org/docs/api-reference/next/router#usage
|
|
//
|
|
// All admin pages should use the same check and routing steps.
|
|
useEffect(() => {
|
|
if (status === "loading") {
|
|
return;
|
|
}
|
|
if (session?.user?.role === "admin") {
|
|
return;
|
|
}
|
|
router.push("/");
|
|
}, [router, session, status]);
|
|
|
|
return (
|
|
<>
|
|
<Head>
|
|
<title>Open Assistant</title>
|
|
<meta
|
|
name="description"
|
|
content="Conversational AI for everyone. An open source project to create a chat enabled GPT LLM run by LAION and contributors around the world."
|
|
/>
|
|
</Head>
|
|
<main className="oa-basic-theme">{status === "loading" ? "loading..." : <UsersCell />}</main>
|
|
</>
|
|
);
|
|
};
|
|
|
|
AdminIndex.getLayout = getAdminLayout;
|
|
|
|
export default AdminIndex;
|