perf(layout): refactor auth check

This commit is contained in:
hamster1963 2024-11-06 15:29:44 +08:00
parent a8cbf9589a
commit b123ad9f3e
4 changed files with 28 additions and 16 deletions

View File

@ -8,16 +8,24 @@ import React from "react";
type DashboardProps = { type DashboardProps = {
children: React.ReactNode; children: React.ReactNode;
}; };
export default async function MainLayout({ children }: DashboardProps) { export default function MainLayout({ children }: DashboardProps) {
const session = await auth();
return ( return (
<div className="flex min-h-screen w-full flex-col"> <div className="flex min-h-screen w-full flex-col">
<main className="flex min-h-[calc(100vh_-_theme(spacing.16))] flex-1 flex-col gap-4 bg-background p-4 md:p-10 md:pt-8"> <main className="flex min-h-[calc(100vh_-_theme(spacing.16))] flex-1 flex-col gap-4 bg-background p-4 md:p-10 md:pt-8">
<Header /> <Header />
{!session && getEnv("SitePassword") ? <SignIn /> : children} <AuthProtected>{children}</AuthProtected>
<Footer /> <Footer />
</main> </main>
</div> </div>
); );
} }
async function AuthProtected({ children }: DashboardProps) {
if (getEnv("SitePassword")) {
const session = await auth();
if (!session) {
return <SignIn />;
}
}
return children;
}

View File

@ -12,10 +12,11 @@ interface ResError extends Error {
} }
export async function GET(req: NextRequest) { export async function GET(req: NextRequest) {
const session = await auth(); if (getEnv("SitePassword")) {
const session = await auth();
if (!session && getEnv("SitePassword")) { if (!session) {
redirect("/"); redirect("/");
}
} }
const { searchParams } = new URL(req.url); const { searchParams } = new URL(req.url);

View File

@ -12,14 +12,16 @@ interface ResError extends Error {
} }
export async function GET(req: NextRequest) { export async function GET(req: NextRequest) {
const session = await auth(); if (getEnv("SitePassword")) {
const session = await auth();
if (!session && getEnv("SitePassword")) { if (!session) {
redirect("/"); redirect("/");
}
} }
const { searchParams } = new URL(req.url); const { searchParams } = new URL(req.url);
const server_id = searchParams.get("server_id"); const server_id = searchParams.get("server_id");
if (!server_id) { if (!server_id) {
return NextResponse.json( return NextResponse.json(
{ error: "server_id is required" }, { error: "server_id is required" },

View File

@ -12,10 +12,11 @@ interface ResError extends Error {
} }
export async function GET() { export async function GET() {
const session = await auth(); if (getEnv("SitePassword")) {
const session = await auth();
if (!session && getEnv("SitePassword")) { if (!session) {
redirect("/"); redirect("/");
}
} }
try { try {