From a23ed9502838a726c253d497dbcb46cc267636aa Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Mon, 21 Oct 2024 01:55:55 +0800 Subject: [PATCH] refactor: login page --- app/[locale]/(main)/layout.tsx | 5 +++- app/[locale]/login/page.tsx | 48 ++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 app/[locale]/login/page.tsx diff --git a/app/[locale]/(main)/layout.tsx b/app/[locale]/(main)/layout.tsx index 3991299..dd0530d 100644 --- a/app/[locale]/(main)/layout.tsx +++ b/app/[locale]/(main)/layout.tsx @@ -4,14 +4,17 @@ import { auth } from "@/auth"; import getEnv from "@/lib/env-entry"; import React from "react"; import { redirect } from "next/navigation"; +import { getLocale } from "next-intl/server"; type DashboardProps = { children: React.ReactNode; }; export default async function MainLayout({ children }: DashboardProps) { const session = await auth() + const locale = await getLocale() + if (!session && getEnv("SITE_PASSWORD")) { - redirect("/api/auth/signin"); + redirect(`/${locale}/login`); } return ( diff --git a/app/[locale]/login/page.tsx b/app/[locale]/login/page.tsx new file mode 100644 index 0000000..ffbae6f --- /dev/null +++ b/app/[locale]/login/page.tsx @@ -0,0 +1,48 @@ +import Footer from "@/app/[locale]/(main)/footer" +import Header from "@/app/[locale]/(main)/header" +import { auth, signIn } from "@/auth" +import { getLocale } from "next-intl/server" +import { redirect } from "next/navigation" + +export const runtime = 'edge'; + +export default async function Login() { + + const locale = await getLocale() + + const session = await auth() + if (session) { + redirect(`/${locale}`) + } + + + async function handleSubmit(formData: FormData) { + 'use server' + try { + await signIn("credentials", formData, { redirectTo: `/${locale}` }) + } catch (error) { + redirect(`/${locale}/login`) + } + } + + return ( +