Compare commits

...

7 Commits

Author SHA1 Message Date
hamster1963
56d28c1ec1 update: v1.2.5 2024-11-06 16:29:55 +08:00
hamster1963
bc6566a363 fix(cloudflare): get env 2024-11-06 16:23:14 +08:00
仓鼠
d3936ff307
Merge pull request #104 from hamster1963/fix-auth-cache
fix:layout cache
2024-11-06 16:12:20 +08:00
hamster1963
913a905100 perf(serverless): fallback to static env 2024-11-06 15:57:17 +08:00
hamster1963
2462659026 fix(layout): revert client side auth 2024-11-06 15:48:47 +08:00
hamster1963
adaed58fa5 test: client side auth 2024-11-06 15:38:00 +08:00
hamster1963
b123ad9f3e perf(layout): refactor auth check 2024-11-06 15:29:44 +08:00
7 changed files with 37 additions and 21 deletions

View File

@ -8,16 +8,24 @@ import React from "react";
type DashboardProps = {
children: React.ReactNode;
};
export default async function MainLayout({ children }: DashboardProps) {
const session = await auth();
export default function MainLayout({ children }: DashboardProps) {
return (
<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">
<Header />
{!session && getEnv("SitePassword") ? <SignIn /> : children}
<AuthProtected>{children}</AuthProtected>
<Footer />
</main>
</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) {
const session = await auth();
if (!session && getEnv("SitePassword")) {
redirect("/");
if (getEnv("SitePassword")) {
const session = await auth();
if (!session) {
redirect("/");
}
}
const { searchParams } = new URL(req.url);

View File

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

View File

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

View File

@ -48,7 +48,7 @@ export default async function LocaleLayout({
return (
<html lang={locale} suppressHydrationWarning>
<head>
<PublicEnvScript />
{!process.env.VERCEL && <PublicEnvScript />}
<link
rel="stylesheet"
href="https://cdn.jsdelivr.net/gh/lipis/flag-icons@7.0.0/css/flag-icons.min.css"

View File

@ -1,8 +1,12 @@
import { env } from "next-runtime-env";
export default function getEnv(key: string) {
if (key.startsWith("NEXT_PUBLIC_")) {
return env(key);
if (process.env.VERCEL) {
return process.env[key];
} else {
if (key.startsWith("NEXT_PUBLIC_")) {
return env(key);
}
return process.env[key];
}
return process.env[key];
}

View File

@ -1,6 +1,6 @@
{
"name": "nezha-dash",
"version": "1.2.4",
"version": "1.2.5",
"private": true,
"scripts": {
"dev": "next dev -p 3020",