From 62e0adb97aa17f91209e7d00b1946cb8f82f3bc5 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Sun, 20 Oct 2024 15:42:05 +0800 Subject: [PATCH 1/7] feat: init auth --- app/[locale]/(main)/header.tsx | 11 +++++++++-- app/[locale]/(main)/page.tsx | 10 +++++++++- app/[locale]/layout.tsx | 2 ++ app/api/auth/[...nextauth]/route.ts | 2 ++ app/api/detail/route.ts | 9 +++++++-- auth.ts | 18 ++++++++++++++++++ bun.lockb | Bin 449731 -> 453700 bytes components/sign-in.tsx | 18 ++++++++++++++++++ middleware.ts | 2 ++ package.json | 1 + 10 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 app/api/auth/[...nextauth]/route.ts create mode 100644 auth.ts create mode 100644 components/sign-in.tsx diff --git a/app/[locale]/(main)/header.tsx b/app/[locale]/(main)/header.tsx index 523b2d1..47cf6e1 100644 --- a/app/[locale]/(main)/header.tsx +++ b/app/[locale]/(main)/header.tsx @@ -10,8 +10,9 @@ import { useLocale } from "next-intl"; import Image from "next/image"; import { useRouter } from "next/navigation"; import React, { useEffect, useRef, useState } from "react"; +import { auth } from "@/auth"; -function Header() { +async function Header() { const t = useTranslations("Header"); const customLogo = getEnv("NEXT_PUBLIC_CustomLogo"); const customTitle = getEnv("NEXT_PUBLIC_CustomTitle"); @@ -20,6 +21,12 @@ function Header() { const router = useRouter(); const locale = useLocale(); + const session = await auth(); + + if (session) { + console.log(session); + } + return (
@@ -62,7 +69,7 @@ function Header() { // https://github.com/streamich/react-use/blob/master/src/useInterval.ts const useInterval = (callback: Function, delay?: number | null) => { - const savedCallback = useRef(() => {}); + const savedCallback = useRef(() => { }); useEffect(() => { savedCallback.current = callback; }); diff --git a/app/[locale]/(main)/page.tsx b/app/[locale]/(main)/page.tsx index 79b4bd9..f0d48e0 100644 --- a/app/[locale]/(main)/page.tsx +++ b/app/[locale]/(main)/page.tsx @@ -1,13 +1,21 @@ +import { auth } from "@/auth"; import ServerList from "@/components/ServerList"; import ServerOverview from "@/components/ServerOverview"; +import { SignIn } from "@/components/sign-in"; import { unstable_setRequestLocale } from "next-intl/server"; -export default function Home({ +export default async function Home({ params: { locale }, }: { params: { locale: string }; }) { unstable_setRequestLocale(locale); + + const session = await auth() + if (!session) return + + + return (
diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index 4671348..2b2864f 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -13,6 +13,7 @@ import { Inter as FontSans } from "next/font/google"; import React from "react"; import "/node_modules/flag-icons/css/flag-icons.min.css"; +import { auth } from "@/auth"; const fontSans = FontSans({ subsets: ["latin"], @@ -54,6 +55,7 @@ export default function LocaleLayout({ unstable_setRequestLocale(locale); const messages = useMessages(); + return ( diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts new file mode 100644 index 0000000..0cf1408 --- /dev/null +++ b/app/api/auth/[...nextauth]/route.ts @@ -0,0 +1,2 @@ +import { handlers } from "@/auth" // Referring to the auth.ts we just created +export const { GET, POST } = handlers \ No newline at end of file diff --git a/app/api/detail/route.ts b/app/api/detail/route.ts index b0f8bc1..c9a23ea 100644 --- a/app/api/detail/route.ts +++ b/app/api/detail/route.ts @@ -1,6 +1,7 @@ import { NezhaAPISafe } from "@/app/[locale]/types/nezha-api"; import { GetServerDetail } from "@/lib/serverFetch"; import { NextResponse } from "next/server"; +import { auth } from "@/auth" export const dynamic = "force-dynamic"; @@ -9,7 +10,11 @@ interface NezhaDataResponse { data?: NezhaAPISafe; } -export async function GET(req: Request) { +export const GET = auth(async function GET(req) { + + if (!req.auth) + return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); + const { searchParams } = new URL(req.url); const server_id = searchParams.get("server_id"); if (!server_id) { @@ -26,4 +31,4 @@ export async function GET(req: Request) { return NextResponse.json({ error: response.error }, { status: 400 }); } return NextResponse.json(response, { status: 200 }); -} +}); diff --git a/auth.ts b/auth.ts new file mode 100644 index 0000000..a912a4e --- /dev/null +++ b/auth.ts @@ -0,0 +1,18 @@ +import NextAuth from "next-auth" +import Credentials from "next-auth/providers/credentials" + +export const { handlers, signIn, signOut, auth } = NextAuth({ + providers: [ + Credentials({ + credentials: { + password: {}, + }, + authorize: async (credentials) => { + if (credentials.password === "123456") { + return { id: "1", name: "John Doe" } + } + return null + }, + }), + ], +}) \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index e99d4170458813cab3a8632511a2a6dd1e0729bf..6cbf07db8a71c50c2566dd08c4ec9fcbd9568019 100755 GIT binary patch delta 95256 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 delta 93574 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≠ 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 { + "use server" + await signIn("credentials", formData) + }} + > + + + + ) +} \ No newline at end of file diff --git a/middleware.ts b/middleware.ts index 92342ad..fa0386d 100644 --- a/middleware.ts +++ b/middleware.ts @@ -3,6 +3,8 @@ import createMiddleware from "next-intl/middleware"; import { defaultLocale, locales } from "./i18n-metadata"; +// export { auth as middleware } from "@/auth" + export default createMiddleware({ // A list of all locales that are supported locales: locales, diff --git a/package.json b/package.json index e94e7b2..76c090f 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "lucide-react": "^0.451.0", "luxon": "^3.5.0", "next": "^14.2.15", + "next-auth": "^5.0.0-beta.25", "next-intl": "^3.21.1", "next-runtime-env": "^3.2.2", "next-themes": "^0.3.0", From 20ed4a819fc0c26803a15d0f614cfff4557a7d0c Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Sun, 20 Oct 2024 16:17:33 +0800 Subject: [PATCH 2/7] feat: set api auth --- app/[locale]/(main)/header.tsx | 8 +------- app/[locale]/(main)/layout.tsx | 7 ++++++- app/[locale]/(main)/page.tsx | 9 +-------- app/api/detail/route.ts | 3 ++- app/api/monitor/route.ts | 11 +++++++++-- app/api/server/route.ts | 10 ++++++++-- auth.ts | 6 ++++-- bun.lockb | Bin 453700 -> 453714 bytes next.config.mjs | 5 +++++ 9 files changed, 36 insertions(+), 23 deletions(-) diff --git a/app/[locale]/(main)/header.tsx b/app/[locale]/(main)/header.tsx index 47cf6e1..a7d9ec7 100644 --- a/app/[locale]/(main)/header.tsx +++ b/app/[locale]/(main)/header.tsx @@ -10,9 +10,8 @@ import { useLocale } from "next-intl"; import Image from "next/image"; import { useRouter } from "next/navigation"; import React, { useEffect, useRef, useState } from "react"; -import { auth } from "@/auth"; -async function Header() { +function Header() { const t = useTranslations("Header"); const customLogo = getEnv("NEXT_PUBLIC_CustomLogo"); const customTitle = getEnv("NEXT_PUBLIC_CustomTitle"); @@ -21,11 +20,6 @@ async function Header() { const router = useRouter(); const locale = useLocale(); - const session = await auth(); - - if (session) { - console.log(session); - } return (

diff --git a/app/[locale]/(main)/layout.tsx b/app/[locale]/(main)/layout.tsx index 84bd06e..4a1c101 100644 --- a/app/[locale]/(main)/layout.tsx +++ b/app/[locale]/(main)/layout.tsx @@ -1,11 +1,16 @@ import Footer from "@/app/[locale]/(main)/footer"; import Header from "@/app/[locale]/(main)/header"; +import { auth } from "@/auth"; +import { SignIn } from "@/components/sign-in"; import React from "react"; type DashboardProps = { children: React.ReactNode; }; -export default function MainLayout({ children }: DashboardProps) { +export default async function MainLayout({ children }: DashboardProps) { + const session = await auth() + if (!session) return + return (
diff --git a/app/[locale]/(main)/page.tsx b/app/[locale]/(main)/page.tsx index f0d48e0..0e568e6 100644 --- a/app/[locale]/(main)/page.tsx +++ b/app/[locale]/(main)/page.tsx @@ -1,21 +1,14 @@ -import { auth } from "@/auth"; import ServerList from "@/components/ServerList"; import ServerOverview from "@/components/ServerOverview"; -import { SignIn } from "@/components/sign-in"; import { unstable_setRequestLocale } from "next-intl/server"; -export default async function Home({ +export default function Home({ params: { locale }, }: { params: { locale: string }; }) { unstable_setRequestLocale(locale); - const session = await auth() - if (!session) return - - - return (
diff --git a/app/api/detail/route.ts b/app/api/detail/route.ts index c9a23ea..5361e90 100644 --- a/app/api/detail/route.ts +++ b/app/api/detail/route.ts @@ -12,8 +12,9 @@ interface NezhaDataResponse { export const GET = auth(async function GET(req) { - if (!req.auth) + if (!req.auth) { return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); + } const { searchParams } = new URL(req.url); const server_id = searchParams.get("server_id"); diff --git a/app/api/monitor/route.ts b/app/api/monitor/route.ts index e03fe89..9a7f17c 100644 --- a/app/api/monitor/route.ts +++ b/app/api/monitor/route.ts @@ -1,4 +1,5 @@ import { ServerMonitorChart } from "@/app/[locale]/types/nezha-api"; +import { auth } from "@/auth"; import { GetServerMonitor } from "@/lib/serverFetch"; import { NextResponse } from "next/server"; @@ -9,7 +10,13 @@ interface NezhaDataResponse { data?: ServerMonitorChart; } -export async function GET(req: Request) { +export const GET = auth(async function GET(req) { + + if (!req.auth) { + return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); + } + + const { searchParams } = new URL(req.url); const server_id = searchParams.get("server_id"); if (!server_id) { @@ -26,4 +33,4 @@ export async function GET(req: Request) { return NextResponse.json({ error: response.error }, { status: 400 }); } return NextResponse.json(response, { status: 200 }); -} +}); diff --git a/app/api/server/route.ts b/app/api/server/route.ts index e34a83c..7a6176a 100644 --- a/app/api/server/route.ts +++ b/app/api/server/route.ts @@ -1,4 +1,5 @@ import { ServerApi } from "@/app/[locale]/types/nezha-api"; +import { auth } from "@/auth"; import { GetNezhaData } from "@/lib/serverFetch"; import { NextResponse } from "next/server"; @@ -9,11 +10,16 @@ interface NezhaDataResponse { data?: ServerApi; } -export async function GET(_: Request) { +export const GET = auth(async function GET(req) { + + if (!req.auth) { + return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); + } + const response = (await GetNezhaData()) as NezhaDataResponse; if (response.error) { console.log(response.error); return NextResponse.json({ error: response.error }, { status: 400 }); } return NextResponse.json(response, { status: 200 }); -} +}); diff --git a/auth.ts b/auth.ts index a912a4e..a908388 100644 --- a/auth.ts +++ b/auth.ts @@ -1,15 +1,17 @@ import NextAuth from "next-auth" import Credentials from "next-auth/providers/credentials" +import getEnv from "./lib/env-entry" export const { handlers, signIn, signOut, auth } = NextAuth({ + secret:"this_is_nezha_dash_web_secret", providers: [ Credentials({ credentials: { password: {}, }, authorize: async (credentials) => { - if (credentials.password === "123456") { - return { id: "1", name: "John Doe" } + if (credentials.password === getEnv("SITE_PASSWORD")) { + return { id: "0" } } return null }, diff --git a/bun.lockb b/bun.lockb index 6cbf07db8a71c50c2566dd08c4ec9fcbd9568019..a0f7e64cf96016144ff8bdfc5de83e4724cf553a 100755 GIT binary patch delta 43420 zcmeIbcYIYv^FMyh%{`Dq5rQdPE+IsU6bYnp0|Bn|UX>Dx5Rw3a6jEqXlF&sd;Q&j- z00HSu1Vu!e3Q|Ns1PvG<3W5|B#ezJ@?>)PFZVHL|X|LD!kDssSVRm+BXJ=<;X3N>T z`S>gQ=U>?u^-w>|?Agp#)lE^JR+RKzilUSUOc@uI9GMcM_+;kzr2VFe%+yga39%z4 zDVHVwJzzx;mjUzu92u859QBnQWd(hFY(nhV$dr@^z;%?bm+-i|qErH21DQ_&X3P9N zz$*ja3`l&}mgDu((#Io#|E2eUXaw8hp9+9ifcpS`0Z3ApmGBq}iGdIPA$rNER6b_? zo{)wFGWpDhV3ol+eJsSK24alEs!!VQz)1cR5SE%58<{$)(U_P?kF27f-vN?XS`|gH z0p5ag?11sWDgQihFTmuOl*G94G0I_R-VgX5KoWNoAc-+5G9__Bf}%Y16zwDlzG>+> zs7(Y>DJd~2QHm0U0>Z~8rlcZI+3GDS1R$RnCPXGA#zrejFW}&vJ}ELjjt0sCoCcHaA>V*L(eqNBC>W`&S$A2ntPbE!BuLT0qhnFNQFBxQ26AXtZM@Ge@KzZmkG3W^acoK>Zal2Ip#L4_Nc?{QB>MQ6;PU zQzj&H+T@tXs8po?^xJ?K+4S~+=wJGI zi9ajx!+=Cz9+2pNsI4gIclv2Svak06NuafWWQQp+@#ACA$K}Aw)38P*#wAjpJpx2e zhX9f$b^y|FB*#RdkEtm~EkXmIHWqLMAkpn>A{wvfEc)z7Ek*@{pl70jU z8oC{TB>W0MQru%zG&CJJb=JL&fD?dI!|{ORh$oOwc(kFGg~hiOR0|;%S@eHXtbdd$ z8m$xmaVas4ViQv1-t43(RmkEOAVJ+QU7|*3Vfi(>2+OqsCyyA^PFVB=Kq_MVwmD$ z#wSp<6yVhCFbPKkQh%ajV#dOflq0BD33%}dZug6#-d>cG7)t=*o9VLw$;2iDVl;-Q z$Bs-$Oom(|ViTepjT@`1?I-O;!m*9w5~Cth(OO(=d~B++yuTiVIC0|nVK3Ctqe8-bsyWA2tgH-0zIL%&Zte++|`KGeLPwMBO%uf5}m7WyrTQ5 z$Ba$-vwK(j!`w>wu(unlK{cQj}Wg3E?hX7&+y9 z)Pcs{a?eKe93k{jyvJr=qZ6Z2lVcNNqGN`S8wtJr93|}NOF;7PMX|!}iudm=qgnZ$ zX{P>M+$5Licy8Y5{Q=1eO>K3N_}N5}A13Kc?#}_I5im7#Do*rx9w5c-6t!yt7H6M~{Hn;8 z&A6=Er0;8FRq#topD0w73P>`nm?T{H6~HRMV~|fiVVkTdn8(shx*NbrwST;`hqH#%U*B_sgS!l3>l zVIego?2mjB>o)k1#hd}8G1?7C-LC|7kYT1Q7WhCwa^dFzt3kl@pP@e*+$)CATQj46 zCBL+l?1xWrC9~&RjD0;ZE z7$rQd1Pg3bn5-oU>CPJH5l*8=PTNCR~m^{b>I z;j>OiJ{Pba@O%_h1w6A}jPPDSYH*E&(SS7K>447wnxX9j)FXR)v{5t|3!H|sBOrBf z-X_tJ7l4ys%>m;{viG(Mi8ld~isnkl0IL9>B=O!7uP9+G)KCBYvPEbj3i-s?0SJ>z z_XDJke2jAHz$Ig+hfiAMP9fe~fTUM*&Pa`kAKNH8HhBQ@X`tUlEfRk{APv~qT_PX* zlf>bp6{S0H(x+*W%Xf=j+y*46Q8X%457(mLua~So>;yQgO3PvO*W8EG#YVRRIU;!kCBR>)Yn1>3) zAmC$R+6Mti@ZUg3a0hT2nw5Yg*iuN-iTc!$$DpU7+zmX9EFl{Sg0D(~BtWv5 z2tcx!c7R@hp@1X+#ymM@WX#0cz^S3wl*r`d$VrM1aO!DAKne<1We3gxl3*VLRsh@# zNPJcwQeNVO^CV#kAPEvJ308e7B<%y7ByR~wg4C0+Dj+ewaZvc?X+RSAENp-ps%hkS zKAUE)JtI>lB}6HT(szsCVg}QccyT!6L_X>J=viR^O+FXhF+I9A%Izrcd`{>)43N5i z7m&KsSmyf!l71zhv~-hEWiTMixet>s4`?n*M#dy?(ULDnUzsSxHx~}(!oXZOnDe!{ zfcX1`0!-XoDVQq@bBd2fgCuEtKtI5rE{Ps)Ixk{cZRGnSzxb*tI8Q7@{Q+rQDuIs1 z#oQo1Mh8hVyrXGUP^?F#_2i!fOS&xt?gdDK)%#JbGQI$$A!u|(SZ*-NY5F1hH0q&A zXcBl!0u_)XKX41HM!;UbC`v=XD)+?@90J7QMEWW~YVhY@MVR{pkm!~mzdYb*aonWL z0#1UA0we)mx{nZ34vG6DKoTVF z2nuNIu3Q(YKMY7JT>{t$urbOT0LB0(4Q;BdDq(<5;B^5jpqv`CN&MGqg7F!^I>=uK zNIjno=m$6$koaA{$~&Hx9)gT|$fyKJ74p9oD%%4{guXsv2;K&y05co;)RPrpK=ea_ zKMNQpp(kK%;Oih5^)wBT1dWjJkgPWvFi?rYxg8QMLGUTuqZObzhH1dN1Mdh(J-)bE zxQ{u z%q3s(=p%zd+7nJ}`kd+X|5v^zd<}8-8f>3T()1bA$4s9xea-Z(;yz{iQgI(LUB`5p z5?v(?4gXtTDefbsxkhO&QIadr*=(u4@ZWU-)AWm*cyWt{C66d#$_HS!x-Y$yFMToHs5DG%<~CzTXWaw?dzkvPAiNgU!VHlbXR%UF;8pE zQg`H&IeYd}`Q)2z?DX|X%LGPCma>2q0Uz`fr8fYp0AJQa<=YAKJmwQ{p;%#_)0_bv zEuB7mLC}2woLX50NE1;eAWektfDiHC1W4_z=&RBaD$Uh^xg(nff~p|+TopmaJmV;S zCek-fPPIuQD4Ay@+aaJ0^*aL+AM+Df5O5N-I-ob;bAyPkD`r3>NHTS>s8B`Xj|Yk# zxeXDThy;NX^v;q$SDfL&7fZNUoOwNiQjp zqV^YnI`CtFq@TTjG@)k?7knZo#^3-xIp&P4cNCCX{k5BrGA^3aRdap9>WvI)pgth! z!NWN0=M(Y92*EZJkj&GJZDtHC9{a*!#u%n_%uie_gnwSo+?PW{-reIyV9jScR~jRP zN*o)LK*t5sMvK;x0jX25fYiz8abx3RCdMSgs1nB|M8%lL2SZU#o$9hHr{;v3YD2@; z+NmxxBJl4HBMbjFG;;Cp6vNiWslIJQv~gP0GREs|TB%))Tx4Y!wzf|7pb^m)1!axb z+qO~%8M(-M->|iFs@07M{QIJj)y}Cebf*(5C0#cn+d0&)3|o7r`kWEb-l>m;gj8ZN zatO#jWBhIVe9DBe?wkBP`GjW zZqNfwh2VwS^CV_9{M$OT^T65|zU{+ReE8L%&bwGq64*Z?XpH>X;|$i=@i4O@4o{w1PF z7eU$Cq5D5Ac&dhf7l)c`5R_UBex(aWjtMUJQn{pb&Yky3e^ zYJ0=h+o?~2zxF_$mFwaYU`>Fb-SjYbAY=i&yLuq}i7I2%+B>wDf$>q(KR~KI@+*;o zbw5NQR}=amV3Hk%;#FY1I0q8u5-=JVA-b)a5S?SN0o#jCeGT%ceT$Lb#-V==Om-DE zR}JA<*aul)G%)How?KU-FsdhP^|r*&rQ@*dzD_-|x}r2ixz)(O9Oe#$7{L}GVjeIO zstjpEwHvwpoccIKbZS^Na(X-TO~8mkGa}y&GqUkhEi93!u3WaJKVs^bjXV5ffP z8L>^MLMlh#$wJ=DT0)($5ct3WVEqbYtZmw9J}f)N$Qt6*GU_TyHzRvUxONJu9z12o zin;@(^sz{h{?JFXz1_%t$*EmM-iy361S|I_UJ5O04A=mk|07Z(UHSd6v*9i1Ymge` z%6|l`7pL#uKv9Oe^0xvL`Tr@BKd7O}X9H4#4@N_`Jf|o_%-Z@;V38)K9Reo$^i(57 z=|iol@rEtRspSA~W%yohVMQXy@a-6``Wm@WPJIkCPs4;Dg<*Xk7%4z8^7}c|Ka8ws zr=E$KCLDP}?dJ_!j8m;_M8r7tGjN}-D1l$Vgc<}2qXC9NjV-`ntQ(Dp5ilX-wdC{^ z?t+Y5Q~wTm)JSC`r-wtY2{~UB z^kW?Qd|)&(h$0Z+Brwq?bZvo`4~%c6_A#>JoqA3)7a4ibi>?Q(J=K0Y=`~aP5vO)eZyQkLSJaO8tb?i#)F#Vv|TMN2(9cyM?YCV-4Fl zr?wh+h>_hUT)&DGnxZfOJFRKtqI5R~HHhT}sx7QY4KRGihik1cwTRR*r26r^JFZll z4%7ppTjomLLaGnXYtfPVLZz=E)eWf@M%F~9<_Fa^<@tS)YG&k(3s>JYA|^TY=R2Dr z6#Cca0fT$cKt(y!4-DJOPBq+!c-g5NnA`h^k}tyCf%F3chaTk6!{M!@4uw~mU_?xI zs`ZSl$xeM`H$@qU5|~#Tx4?ic@`L*rq!5P*@5E z4D2uo=&8U+|6(Dr!^oZLRPznnG^g6bh?wToxAqi`mqim{?m%KeT!9bFOPG1#d}M=Q zbhEc9C3Unm`XXe`p8_`kM#hD1gYrBuvTF!{*-v}Hq|6!Y&|6DPh%?p5O?T>hkVkF< z6F~^M3k>5yet`7^Tn(N;u?$ulZ{%h;^#jP0>Vjwg35=`)GxJLhy?I|;s1lXuhq(i3 z$1771`w5sZGioIO>ZiVGG;3+Yfi*RT%naAJBSlnV=DH&>%Ejt15g zBv{Kp{MRL>8u?Ql`bA*EgUGkNVIv54>E(DZeGwQ13()2F6Xp(t$RRTr-vkCDkgUQ63*$yy?&i=(1H;4y@h~*{GFKU47l4uG z%TiF%t6^e9WE5N|9?rw61bL)?@PdteD=EaX&Hj>TRoKrMU|@%KNW-51qjd;;Wlos; zP<$)^0%L+D3;{+gg}G(|BfEftKjDO=5-1kE>NZR$7798YW(5*PdkOu0q+|^cJ&pOB zFs?=I1z>HA?CCAsks$qu(fLI6G+x(%%7w2mz+~ z5I7Xe7Pt!OU@)!!Y>S*~6(a)wjx@3sIklb9Xv@eR9IoCrY?*x9mFd(+#t0h|8>t<@ zT7U=Sfu?T*BNezA`4_|7M+k!>&&F^8Bh%!%(%z;rVy%6HRERMI{rARdiG~THf>jTR zfgUbB8yK0Z*am!T*p@i8KakhM7}7di?=VW}3d4=TpAC%oK-qAb1BPv>Q~wEhh%KlO zF%iMCkhc|)1~CQg!M-hzVvTBxTIoTf1uL#E?0d47In{ke?lPzDJ_cbOX(oQ`-XAnEOY3;$BEIv#&xbkA0IC?!`(pJ46G?lD%w?~LXGTp;ks9X z={B%4EehE4Ms}xgeJxT!;EGYgsGc`+vz)p;(G^r7OFv+(xnzhXDl@WPcdD0-+}E9Y z)v>}4V98MFU|{5?LZVDyq$VDwDS)qV>Q#~yr6cl$-z)`&U?{Phz%YwRtP!FdoJL^U zJYdfozSvh@Fe0+SCq?uYd>~&3U}UpAis|XVD6EL^@UAS=d64-D7)e;3Ha_mDqT_rV z_2Iz8sQUNiMIuVj`aTauWE{dn?c;<~iav}5Mx!RiUl+nREumc_117KJNObyq2P7++<5(^#b ze#5rbsn>cL6Fq8jOVSg8k=uhJ#-TYUT7Q-~rBet`1lEtsO4t!#@Og?1zPge(a~2suYx82Q?1T7NU0y9i|aS{{L#Cl-;jO_N|+JBI0Wn{Mv*PCYw?*j#PSwO^C(!_cV z*kCRRF1+hC{%gm({COa*Vp-)D3?{Iw#Qshv4ErG+)+&y$SYJ1PA&NU+5!M zEWtK0tB@*j5!1HUsV_wy=?)w)XXgQQEzhpHp9ryr#&*V!Mk& zy8x`Yk@r$K_I_C(IMwb(?gu!4$ri>a!r@V1WPW0KRd1!aNFd1u10y-bUhEBEEr5x7 zUjd_$;A>7CR%RW*@?({0iI}zZUBGDS!-6K!q2d7Xpi^JA+7-31X8+8{J?KZD)tJ7+43Me;p|j3@eBE##aI(T?*_nu+G3R zPB>Y3cC&CBQMMdd8yDq=TSezY*jG=HtuQtZ7{vimcA-dF_3eeqv{8f^c}H8g zBN4!>ka>LrY%s_2M}@iXC@j-rV4{fn@&hpPNt}pcq5YO{LecCSz(f%d-Umh#7#|tE z?oNU6RgInijJhd|`D0+@I|B23+dLS^Ie@?qEX*v^<^XF>i*oHSQm_mxPqkgb4~0Wb z0@j?jN>k%5U?CjC%3HqyECCo6E?BYQ&hII#!*>@}@grcQMy!EA-}xP}mJ}26Bw!>n z%CMR{VdQ@1)E^^HI0*$@=et5yteK94xdWjhbP5WUC1todxbG31_@Y_s0<4uWnx6;_KJoeC1ePBU#te9^&Spw5-@B} z5S>3psugO&W#OKdeWsRxX)Oq&RiZXtq_A{9j}%D(KJd4mACNZ%RbN zBB(}&S@)9z4Z+el1t|*0=sUV_mhw3f?Kk`nn9~GBym7!p;6}{SPXH4_!X!2KgCsmY zWawRx67hzVun3q_@VkRk_zO<0|A!O~NW5&M$XpP%ah`YH$okT$J^c}Pd+^CXiY!?u zJ`WfUlJic^0h)`MtbIl}dFp@kKRPF#|iNC|mqM*55h1V50wALRoHHXV=> zN}?fI46Hq;%5Uw^z692fH`eGAa|VNPYBPXgg@xLukrGnok8tP>j|r#3zyX^9tPkgv z^DYilfOQa@F^u-(=sVZ{3rH16nGK9WC*lp(hv$H`0R}T3;LyBI!2GFItv6CQ!8_2x z9f?kyoGj%oFfwD|1C36K2H`kcfjpavtyAEIRcmvl7@I2uy%qU zgt-T-o2#vsr_9dLFfVjrP>-GujHD8B)c?#}4w8&>fDJIqaE6+d?^GKbx%v3sa@t%( zlfUdVBEE5|SBjDh>%WQ}0W#oSA z)VrKD?Vgt7F9Vakz*7AdFzT;7!T#Lzb@W1AVA!t1!;#k?6qWb}JocQ+h|ue`z^FB` zeE$zH!HcHkHeU!zOsX)eDZr$&Wa3i*Frw6Wgz-BsS``i$35;~d&$QGpjjS8^OmIO& z#xnft%n`$O)2Um&H2XpN?*WW-f*nt$1FTwjFLFfK#R1&3DtYl=d?4{-E)$BA89?j5JzJI^(8(9o;E$kbtRwUZ7Yz-T=+uVbG2-o%?g%7ew-9u^w^DTqY zJJfB;V@SbkkUED{0#CKROX4HXGUKi>@P}5~VPp*BMgBjK+$d5f84>qzPziiA#Qkv-)4m1P!N?mCuGRkuUc|*RvVL}|-x#?+JN0MpnZ&d#T>`8hs)`}P9_|;X zZP?G^1A&77RQ$gTCGcN&NW0*!4ao`H-L@j3Ze;o$ge_7 zF)e%jCMHj@rkw$78mA;vDgV1LMRX_%&IBw-bO_Ed85l)txDO75-v<^2tQ=p{`u^bx zAUO^#0@zE2FN|UjQgJL>h0Y(K9d2qlNR8zwk3Ugr=R0 zZX-3DvrGDqqP)yYZzF|$J4z!SDat5H;bg@2r&Fu{m$W%;BvOLwC8TEaaeLLUJ#=d2 zq0sSsM1MqTAm`IrRf*%RaD5L_FQaR?W{`-Th6Na>-GY=5-0nv8$-*;{8o^6{M+&Xo zgH1njYF}AZ+1-Acs!TAlAK}X;&|yrq%g?f6jn)9rts8mq{eZ&`ju5Bo#*8v zWf(*5hij=GT*IjG4N@aHUFRxh-X5ezvpgL=c$(TEr<{+}M9xL?RHYBbASHBv2`P-n z!*H#um)Yn2NQt`jz0DEWfE0HXtu3y1Ch{0{3aJR5s#_JkH?r@9tD9MtyXw@uY;u^@ zS<&a+; z`88JLj=x%|-TK9?t7@Mh?+xC^C|^}s$x~_#X$#soq(0zzfqts8n6#pQgwzY*!uPA% zb2U|^u`y(BxIPFea#zea+r!*}v;rb-Kb({ps^Ali?yvIji76BNmX{=kc(6Fk9SAKd zuqi+k{tj4UVD3hKe~0e%jJTBx{#fR82iA_Clx0%B;rnK|b{r`L*7$HYy_RYWif^fP ztVQESWgCz}%*Tn@W2E47NJZ3Em1v^Z_ah~?nK+fx%hyr)Cs?dm@gZ<1vw5gabq$Lk zaGzxXXyJ9q{OF)A3n^?N-wao;u!t%ss{Jg+n`PT!Nk~m(zMe?cAS6A_0>^R?P+|WJ9W=DpGK44qbvGh4oMl4-HH=-XsyeMiz2n3B=^el5+Oeu@+VA4*%bGMnFw z)HIeyjXF)bl}IHRc^K^HO^b|1Y9`CB0Wze70Sstu%5l_{3TeZA6-}H$3ciX|LR;>k zNHu6Dd!v7VR14vJ_(=Q*v(-|adU$&n9x`!Aj~z!Quy!27aff=IBs-vLfUaNLt5p}>U1DWK?SZL!K&POa4neZN4U6lRM z8TvyR_6}Gd%f;H_X1Qefkl7WSSvN8#;Z2;DTzP#(6Juu+NM}WcV<11j)MQp->Rp?m=Q=ezK z_0gMd%+>(CS>H?L3tavkL%Rwr%*gH^u2t=gfJhq|sKnL~gfo#LR05^zM}bjCRj$Kw zeN=PpkDWt5U_DTVuEja@H-U-Bn)9VYy}+`b1GA79L^u@ds5oFWx?t81_ZNZT%Nh27 zwO&-^o|*DffDJeD(!(+0wg51(^))5RABoS|Lf04-tgyBK6B{L3nf(Gx2$XXOUkduE z{NxF%Jp|@?z9#~&s_yP>k1Ns-nW&oq9LzGTZ@xnO;LoX5>5*fDtp8HoooWQ5pXjGX5o~jH~@~ zq{w&pr$_y%p(aK~+yxjJmMEK67*pS7wx*auv|)Ub!1xV9ineiL?Ys_{a7o&1<^!WK z!I;Bj8b=Cqf)#cPa|a^Yr=yZQV9hxp?Mi)yi($s}3oq{vjP^1ri)@DP2*89H(V&-$ z5+(*k!v)#^6OKvE%?3s-V5f^~Hy^UBW>C|X=t9*kY7DE^Ty3SdijjuS`~y^nHXSH- zF`dG-i#$c<*oN7{F$7y!1c3g{2q6>P722*hQYb8v$+TiOCy*Ds1iqI66YFSQHI43hyIddfVpYwpRD#wzhgN@3qtrg2u78l(s16F1ke_Bpb_Oc*1cWva;xI9i-3n`0zdeh>r{eqQZ zIm&y1=Qa5rc@7`^+K%#kC~wbz?=6E>txk1RE@&)-iZuQJ&>sIfZjV)7{mc&*cXikv zf7LBf-E+0N+ZhYbK6D>k>$JqrdiLa4+zdfmC{uI+^fx*AqTj)#H@nx+tv@k|6HJEv zX>s@Z4G};mm11cdiTn82u_(Xonfj+?vZ}QjCdIx|oC|5E1!e9@e`L9-7UKQ9x=eMe zDMX&Esyp{&TiiZU)$T0P>eg7z-;-%|OR;JbmP*b-NyBs~(|SD=qh#9nQ{GRwO? ztv<8Iw~pI6D;Hx*Wf1Rs2R{!K#MGneqA1ZeqNsM=_&Q@UNn5I9-r8I&w@5 z&tp5i-J)c(7@Nk0HO`>%G>!J_T=H7f$fs(tjQ4mAU-PGnD)!Rlq$AK*3;%j7aq3@NHOe`c*b0*lmLLAw1NB#6CA?Ylz#Pts&NHP3-2A zIlqSnEO;vI+9``V5rgm)YAs}2Vyrg1`8LsWtO zj~%@p^NOTK(i)5~ z*t?r%Q-5czS6QpEQ^>MdtSqjZR@GA8%2oraUd$i0)LN|PD635kVE$vRHa2~fwHlVr z*~qe+@15BY+XRx>z3!SPv&CXL{T&jw{r91 z+umNE&q8Zq=m><|!xn-dv@L9&T6+|yzBTrlb{9bq8W2bXBT#~%nf}M0lSh3xV97d* z+7mfsMdMi>@m>m)%p*GDqYqbBTCG{sbmSm_rmtllao~LjD2--dxqG)8bnvuV)UC+z zM2`6cOOM7MuCbl?$WtnziK4V+Ls3;7&+_A}-ZhY6KIu15edAJx-&c+00`j5wf^7q- z-F)M3YhvK;xF4ccf*=@OL{-kjrXFJtL08>;>+kG<&1X8_Uv=H0P76d&VN+$xvnKJ@ zs`e6f!J862R(r6i@o3R}1u)`h(>}MlJh+1vp;Bt`3$_ykke(|jrjqz|Qm<)oAAG%Y z*H+Lugk)pc<9LkW?<_dM+Fd=tG7?bhJX--!-Fyu2fk(`kzd}xBp%$bJ2yCKgRoIyX zYt>NmnZRM4qsl+?N?#f?_z<;UTHO$36FWN;=F$Y?o;e=2f0*@7gai-S?L652%0$?H z4x8TtCDNvEB*LbJYp7dUI6Q>hsNY!Y2sNJV9}9OEkNx4tj<2k))u6|kRuF@n1Y&rx z@=4YVHH#evL%aFLU&~((?L1LAbd*#BoT(o>oP>^VWS0mq_G=Q@_VpEZ_iFT#ogZ90 zeg)*vEm>p?%XtAlfOzsd83o$&6I1A5N@xrNaLX zKO=tr?8h?GtTrF>4Zxcl=T*9Jp$yD+Of6c0oSk9yQaxFtaaMnIIqNwN9bQ{oxYee8 z!)~peK4QF8Z4wY1Od`L}vd5v((`?X0fFIadV3zWA*qw3Ks_L_>BIUMce&b=2QFX*y z1?S%$wdlZ#?^{__7z7!&lEw~B09_7?Cpz;9z#rz${o1`_()5DH&a)g4sJGcZqEqV% zPt7=OdG>`FmZ=4FUhGE@gqn{NR<}QR^?Gon3k3w`bB0$Bd;K-@t5MeqN(Qi&5XEl3 zf7o?`+NJj|Uso<5h-66z^kiyHc)#kw7D8L0PX+-v7q?mS zDZ{d!Lp>*d-)0BQj+`21w}a(Pw2ri!&jh}bv3+8v*IOWdnC9M+4V?tuuJ;9h+;e^M z;-vRDhY%VA^98~as>j8iTW<6^)eJBFgE;U>lSzX41?yIiH#1v<2$lp zdax`(>uId}WQ@lGR7I#tU-#C?bF(eqwE+P+GP<74GC%y4K@r=S0B?RP&F zFtW4LL|{JO82YDoLR3(Ne2dzE)@t}Kin&d(4%KHu8JGgn7qBr?AoG)wF%Zy#7H>DE z;w>d*Qq#)&7SCGU*P^bLC7amZDR5u&vB&(lI$y2pGUh*NtKKZ(%JwV+l_<*h?8~Xpe<~|K4b07# zAzyo;|C`HqWE}+aP$&+XEnJ5;p;Cvo@@5U>{Tsoi0B5 zo@#|~_Sp<;RlP#E!Y`E1XKm9Ua~4q2Qt=9vRkOrpE?d%E=3-jSsOi=!_7m7c(E{p8 z7AKf9-I}OIvmNP>G@iAb2{3_OxroJ0V4yOcCCx;*ThLO>?JHPd2FiD^gEOr@zCnul z{^Xa_y?5&8p0gqjg}{vhgOsmX8d2V76=!iu^9joxX=yjB=szwmpsd4M3lj6y%TBYE zF3)WkU=)xHVCr;)&SadfS4J-mtlM>@)3)86Jo#Kn%a`e_CkU!P*}azn!}wh7-iEE5 zj>Fm$?Cf-FLrlJprXwVa2`_Z3x9DBN^J|mOj(K}92A0AE%*%WcbNu(8Em~mgyva-W z+&hTH&)}MxGsD_m&0wbp^JF(>Si^-fecVEof2B?$a?k?*q~XEh-=P=y*A5Q{U6n5FI{~Ln8$2zdy_Ss4efcd*88m0*{TUv&0_7${xch^ zDf6k$N6UA8{!z}nM;0|Gz!88=zOsOAn{DlG5@M<9H3yTqtjCVd##&?$n~FSjKifG6 zt$e~x61dEKUjew!9?!8h)c)#_Zmb73Rq)1Plm z&G@LvwJ#=F)KC}z77CAq70UMsn zgS8&&V3x5IY{#&j{Xxt(Ji+Mojv>Hivn{WoYzbSn4C3u&fiHp4dX_N&;0Wva2Fku* z{tQ5_k}tEbNWV9=G)%ik&HJKLgvT>>hCtb<`Br z6;(~_I7=f;?nBInPLI!@@|2I|{6q`ZIJ`f~a(0U7*0LK55Z29iOB-)!b?CcU!>6K2 zkdeabvz`kvsH<4^LXe+f`KzJmlMAr`>&o&LBTH(g#v*GK{cD_yP()qFu4I|ivQkL3 z@?uq9WbeV7IL7uZLazq1-gTgf43_jc*E$+s!D?k%PpfB{&k7JoHRiF_ixFb}942DL z7XJZj{+#u=wu}|1RW_0>T8x$2Qnm?%Mdif4&ci6+)tL=75LM?yiI=CIG$*_Ha%#-9 z?^+eGOEW*xYqW+iSZ6v zYAs|>E0#hsZcjFLbE&nOMUQ6H->^1fiK}4PE(;q&ru9FvF!RaQ_nu$%Sy$zQU!{e? zIg46YEmnRxgsso&EXTg0C)=*}aoiZ?>?XhM$i=8IH)`8u!;m{%sKAwqg6*=)=QKaLN7* z{x-Gnh|#9Z43}qF;~WfIQ8x-@J997!5iDa3mS^Vsw3~eMj-7wI{cjf4!KZ#jna3XI zz=9-Q>E;O9-WcI_C~qH?mf?QLorMHbEY5&PRE1g@> z0*1@!v&=&P39R*2fQ9Vtet;a7^d0~X43TL!Uoc)=XW6^wJGbtSjTfXrca-bw z@IkD%%qNf4Uz5wu`Q!OZf&l$cYBP^*IOJ_RLtK@Aa&c*vTxa)oVp6)i%i6(i=9NIr z@^@H$*w#r}Ik?Q(Nmv$LeII=;lxEAeTZjFN21WN-gKao5PTygzqP8X8!MfRaW2Sxt zfl4ix>U+o%4}h%KTmLL~0dLV+oW!~6_BWd?q0drx=JU_CSp(YoYA=0(0i|OuXu0lO zaRytVTuiI#qx>-U(fE-13y(3TFg{|WXI1o0N&r)EzKwA}vkapZWF3jB##h>rv z-oy1Vo9zGr*25f>DpFBDkYgeh^DfJJ=U;XBpUmXH)D?^p z2-Icp+?+Xm6KAXC)u?Vxrr2npU3q!V>&&Yq!=$F<_vp3ugI)#*a93)@ad1AsP6G=y|6sy@=5AR0)n`dwoSbib&9`bd#N5qnm-}Y~N@y91 zRiqHAy7`BI!n&OJA!tQ4oX}uB%Y8?#Dse_-S>nSZX~r2F@EyYx8mDd^;?=op*- zDdc&99VXz~Q&u|V8V=?>Wo=yR{wi^pqplVwinqffBaa95(7C7~0Zp5Rd9h5Y^bFf_ z3Y^4R|7r8R%EaZTD@~i*jaA0JwESl{Pd?4kPJ_A!>q;P=MScdbi20pGuhy>-E45nB z4d{M8rvGa^s0PyHw~y@rU8wm-8&WGgH)YX|y(29u9i`JZ4)f19csH>n{n>sDHeApo z-_rZAN7RIDX)X&aXx?5rKPhH3%RW<3Ih~!N%4^s@NQ+IpN@Wk&Spd8FXCS7$x^jM> z|M+3Oh2iJB8o}ycwj^Y2B9i%cIalF_MpIg24Ih(~w z^dhTx4vOM$zvCQd_k$W27p1R!4L4cn6(B0_L_r;&U_Sq#G}*Q>Yf>HfR2u- zVdAyfLJ)+S&+-qd*5lQ8w_a-rf*^6GWj^FzX~xp81KnpqrS<^_ySRFS%x_CzINyRYKLk*I%`q0wg?AU&+@6xyX@f?*6yJnBbRP| zEbX`T_wH-vq!k3wODL&|lAE7L&KmQA-;{!qU)a?1;2`v7skoKJeTlPBKXwwicJr@s z%qX|C!;a8CxU^wL<=*Tu2tv(2+wp70pVtS3JnURRVE*Bc&DRe_XL@b16qL+ms}S*V z%5d*100hVj0PnFC1bDDFrBNlN98(EO7Fft*){wkqjlvBEn-)@(sle=|EAU^i8o(lQ zF^sj?{9LHc{8J^L_doy5m7f>U;hzk0Z?VH5z-_%tL_U^Px(IUfFOYcHj=Cl;=AR~6bNHJ{bWPrt@)e+A3<7Fp|=N(8%@9l&n>QIfaHUyPqP z>)mrwM+lu4Sx=&qElIY5pWXZ$DeWh%c-;IDoy~VWFIjKTn)9Aj^M`6birGh+v5z2u%V3 zeZZ<(_lE!FMX%SAvf=CLt0<|0l5@8veD!U$o^(%z{1m30&Gr-T-5{V?o$=;JRW4fR zw?YxQs_@#gBwo`zGG% z{Z)rYPRSeg&j;VT2E;J`&W_UT{`fT=U!7dgzGN4`GLmsE%>27Nw<5P|EmPN@mvk_Y zl`QiHTHnF80N8)SFwtcP&o5qUdtm*^yOItI^@HpR(Q&r?;$;$)Qx%rf*0`6z!Rr(n)1(lV0?9nIbUq^KVxr?(Tv; z`{6b`_KDt0#?qNqu%tUMaY+Sb$_C{aNgFO;B5N0xoU5F(l&XgaT z*RxgkP)&SavWP8KRd(l|wS)fnjM&|lwBN$n=$8Aacb4t{8DCv;&x(ab3QX?Wa6U$(oGabq%l(U#Ym%)jXr{I37fw=C-((y~8@ z2cO1lKG@mKKL+)}ZSSW2CdJYRUHP@6Gdui?wY}cwoQO_$StXK9?7Hcmuld)ZK1}P8 zpLk{8OQ=c98hEd`M#{$D$A^98y!hiXn^-1Q7d^BeL2eZYJiBwNu50hleT1tUw46jZ zz0Z1=$7Jyb)it|UiK$i?D*voQ7pVDHCLgyDth6J41=IE{!-vm7cY|Xk*w}D~bZm4=_zolo+hF$Kq(nZ@BKmKRD3`st~LY@NvtFjr|i}rR0|<*>Ip} z*oL1b7JRrW`O}vCoFxS@n`OIyw>HK8VWIfc#Q_(Qeo<{NW7#4; zW_d#iu8&qOaoG=l;10+?e&&+jpqiBQ4GLey@jb0%jTP=SA5G7iL2!~#^N(*OPBYr) zZfJm?A<%}2ZkYKpI9PmQR@E(UGM!K;J@fi?Z>5aBtiEt3u!Go&5f< z!`FL?M(OaS+*S5j1I^nvP#Jwy{7Iv|4VL=;_}-GYEow*P)Pm`*V6FXObcfhZ@KUd{ zA3JC^OND&at08``(3m|&u00}O{DGtXcQfa@y|6K>poKJ+-H;pPI@bLW>K|ce8-m++ zEQ2r~wt_%M=Jy;jK#WSPWh1VV5O$Yp4rWP&hbXg||6}0mSU7<*?4Tg~l_dhV zn}0@UL%-v1-QF;n?v?UAa-ia56$5y`V%UDFxrDVA_+fUB@GDE<-4^S2Y*B#b4S%e+ z)QOda`KPdc?>(gIv`g;a6!4qE@{ zH2*}>g^f4%?>V*TWs_wnuCz@hO6q$f3s?+iI|V+MMH0T7O(yU;dn~elV>^J`%|D!W zAoJX$p)an^EMVAMt5+d84s}( znUcz&YSC~(XCn*C^6V#qD=CNv0@wHa;^DmLg@C__t3nhhfoPGvSw;&nTbDu<2@v8F zduj4M8QRL=#3xw!iRDpucpMY0$}SXyF)HW5$;W|j^FIoIKlt;9H)>yOPKS`BaZHKD zPn9aGJwR(i9I4HA>fpgcl^46JYc+7s@3F20$Ch5Fly+!jZ;Rzv(py8%A5v=$f&{?< z!8GWla}(lYmMm42Cl195#P?_2%R&5lY-Bkt_;2WV|L962Rt~A`bjidAe-^jtda-*I zxK8fb0Hm_-vmClzN6j=$X+boAK?qJ6>=iSB3iN(D3`xx=7n4k|7ccb*b68!;(3 zCy}#|^tR$A{Pixgo`HBxF zUtq}Y$f?<-tJXA8yD%=+5;2LpGD{$lB1n>=D;c>Ia7|8s$49OnTqHDdWpF(##Iy#f zDY@8i(Ul;QEaSFL3n;Dx9;~dUUgR3QsP+q8_9|LlbVWaLFVEwQ3bEHlNrus~e!H-$+OW68j-8h7q7gfu>EVA`^b4OQ zb*iu1Ocyx$rX;9I(Y_UQN@Gbixx4atMRt&OF-3N0m3opS$=kxcr%09j&{0$-n4Vij{S=YN6&| za}C(l`JJwx-LJ`KbMcirqxjddX>tYp|9|ZJfAM3V_!7mA)yI5WWT3IHZ`2gtS(^nm zFoTAVZF@wMf70!`YvR{a?Y~I~dM&R4-f_9}Tl1NQ1#O5Uf~qPV5KtSX9T7MbenenX>41Qm;70_w z_J9Kds%QQ+?j3)ndiV2)tx(VcKQ^$b{K$YPOFJ}hDE!cXJ}cqKfSTZk26XO#BLl)^ zObo*Y7l#IPLXIN?Vp-aufkPY`&`KOf2E>9N8rbmB8b=0H)BN-4p^*z`4ZrY)JP-@P zS1^8#K*Hb@fhbEmM+j5+IRYKq;}n6~;O7W7+&sc50@eKAI7jdeD)}5i{uF?&x=Wws z3pUzBHxs7_^qT>GOdBRDz(l#r0NXrilT#UoS?+54v4nHoiseG+jXs_-t zPfv+oCH#(n9SXr20iVt3pn|f*NiN+yFc%OG?D>aKiEGdAz^L+{A-MJ){3i-hSceeS zB|Hp{M=E>ik%@1&>0S}wUBbL-0z2R#>QoaN8HqE!}Q-@Z~UIqJQ`k?yM-8%ugN3Zg5j!5LUBwfhoum>H38UTt3TLyJAn6SXPrpq@NcRx-g5PC55r# zd&&}eaYUTw7p~{(Wz2NB z1t*gBFQa==H{jb0QnJf{q|Lw4p1)LN02d?7~J;R6j*A^V<{!yOOto zA`EhVZ_}<1U;8?7qvHN9yHYgtNfo$)j+}I4A7mA=(JN&qSg6sWiu@N?QITW?zUq)i zX|4!aXip}Gy08ls;lt9qYG>r*TjqmX)vvjU9n;Q=HLkrfe^VpO2y{;sC)nmwT;jXq z-#oY_euj)oOZ=@a`TmZ0rptVVOFROGS&2W*CEqXF(_Qn!PuB{bH0mzrIr*9qOYVVf z0VfDn#V2O9GP^`CAc<#**i$`0z~%E4ze6eURS5oJzYiPI6EoObC=z8i;s zoZ#uYMEVNL?1=;IjUb?}eJ7qtd-<0}6J`_;oMczPA@nK;=omln$G}gYJN)+a0)hu9 zv7^L#F>d0~Ypdc4O7NOcFEm~s&&hg$;M{~&UHg5Q`bz;pD;5a?96wJcx(v|O1l^B4 z`;Y21<42`{E{E+Pg8d+%mM#RR=g&XXab^L*SM1wfTKi{u;5k}650w7oua;9$QW+)u z6$3V{xAv}ihe5u5Abw9;;>!d4N5=BqHo9PoXAI1z57@!MIAM^F7|53mOwy%t}h;3;J@;gKfrbUJX-vinH_i$%Rbiy za=b!dV|Du?YjL3$ApZV`+Vr!_qEAAwpZaQLN*0%20sepHciPo|?WXdpA>aH|H?M&s z@e<$v;IXP8#l1VL5usJJSMRPW-Y|jR-&)eqZP0jJq{cHExQ&6oV!(PwU`RW&F#u2e z7~Y~rq9%U5mA)O2e4t0a0-wtpZbdWU_9iWc;s!XSKY z|B%%g1U@AVDDKV`yyW4sjDjDf|I-^D!jS)O-|z@lGg&6R6^JX2tC%_z9sGdV37lbD zVzE~5F;ok&e*%?~lgGUFbokum}aZ~01rUZ zBU3HvZVas4W>F4m(d9!ZwQMi;;xH`;Hwfko!w@}#_n&crK0TA|8-~-iY^Fzor@Vai z&v)CzrQf3Dg|7pPYj5oN;dljw3+ltx57(NSm(MV?MK76s$hJkH=cDPFJ9*iv6q;f( z7H(ADXOma%K4g<8K&SsCqj`B%Tq0$EMf0;LTMV=zeg;IpJMm@dF`D_xMpg8Po{PXG z4*pCF|MC6Ptj9>LOyTDz`ZC`UAmTszf4VF;Y&=QPdxX}omiaC~>F-TMuvJe~mah(o zB35Q31eJmmmLQ4E9|cV&jD+S397#MeV8vr3vPww}$UN>>u4fG(Fg-a4rVZ_;+)vIc zBiOl7nm>M2Q}7lhUHQgCm<11C@&_?(_M>>?x*RO8)4GK1U-^|OE8q3QKxgp_f5U7G3=hM2dr3Ge9nX%5(=M6hOW&^Vw~mr>A@_Z5>x|C<^4%+ah`1G z7)`UQc!isOToLH@_TigDXXi;L4Qe9#;@u2)=0AW-dV*&3sE&V3xElUGZ|G~On0SiDMGm)Ei7y?1%zQe40`Z<-grdu?9B zx3~>qHRI8My!9*{zTmE?yk#26a_B<3yq8{*G`K?-D6UYtu7S(uPqL&0)J$8KvLQA%YvX>{B<9enLUN@<$xz7f5*%s~Agy zdGbr_-mHJ3=Bwf+2=Nh@d+nv$$1c{L`YkX0i~HI|v_QAPiVoKkT`S0tzhIDKevHjZ z!Hgi|;hhwm8)f6YbsCg@>)%<_tjtn6cBetXDrr6QPlX^-HPV4SSR!SL*$i(2txd(s z`myv@uYRY#eXiEWbbXZ1OwDk-e2)mKNdJ8C(#!Q4Ru3CtQCs7kc3P|o|Fri8N|E6A zjl;Xm%=Jr`I)%Rq&()BE<182lyXH^&*_pMQR@r?h>XGBK^m6D+DL-z(Z$0B!rSWk0 z86d9*@+aM0&Sb^jXmy#=znC=(yY4^EPbE%g4Orkr%pf!Inl$w(6Oev9(eV&A4_*zE zp%YwWq90GZ!O|vT5X8};1?QW)Cu-dac3AdFTElWC7yM+S*Cc3-pE}Y${uzdIM;m)% z64uS)=lJ+#=Iu#{qUJ-@``g!@JowiD{JH@li!U&`Fu#{Ej6?AnJvpBL2c9>2e&<{b ziReLN*a}`<27&p!RV>^0GWaEfoE&B1tEu~+zVqjNkV`+E#(pGnvHxT(CPS3HENL?O z^bva%z_St_$)=X3WF8(^_E61ii;A=F_a*GhaJre+9RRd#h`eV^cMS{(FB< i&Qxuc4T delta 43369 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 DbaW=X diff --git a/next.config.mjs b/next.config.mjs index 86bfbf5..5713407 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -23,6 +23,11 @@ const withPWA = withPWAInit({ const nextConfig = { output: "standalone", reactStrictMode: true, + experimental: { + serverActions: { + allowedOrigins: ['*'], + }, + }, logging: { fetches: { fullUrl: true, From b7e403756a6041162c46531cea55eb1701294829 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Sun, 20 Oct 2024 16:19:42 +0800 Subject: [PATCH 3/7] fix: empty SITE_PASSWORD --- app/[locale]/(main)/layout.tsx | 3 ++- app/api/detail/route.ts | 3 ++- app/api/monitor/route.ts | 4 ++-- app/api/server/route.ts | 3 ++- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/[locale]/(main)/layout.tsx b/app/[locale]/(main)/layout.tsx index 4a1c101..82a15af 100644 --- a/app/[locale]/(main)/layout.tsx +++ b/app/[locale]/(main)/layout.tsx @@ -2,6 +2,7 @@ import Footer from "@/app/[locale]/(main)/footer"; import Header from "@/app/[locale]/(main)/header"; import { auth } from "@/auth"; import { SignIn } from "@/components/sign-in"; +import getEnv from "@/lib/env-entry"; import React from "react"; type DashboardProps = { @@ -9,7 +10,7 @@ type DashboardProps = { }; export default async function MainLayout({ children }: DashboardProps) { const session = await auth() - if (!session) return + if (!session && getEnv("SITE_PASSWORD")) return return (
diff --git a/app/api/detail/route.ts b/app/api/detail/route.ts index 5361e90..fdc18cb 100644 --- a/app/api/detail/route.ts +++ b/app/api/detail/route.ts @@ -2,6 +2,7 @@ import { NezhaAPISafe } from "@/app/[locale]/types/nezha-api"; import { GetServerDetail } from "@/lib/serverFetch"; import { NextResponse } from "next/server"; import { auth } from "@/auth" +import getEnv from "@/lib/env-entry"; export const dynamic = "force-dynamic"; @@ -12,7 +13,7 @@ interface NezhaDataResponse { export const GET = auth(async function GET(req) { - if (!req.auth) { + if (!req.auth && getEnv("SITE_PASSWORD")) { return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); } diff --git a/app/api/monitor/route.ts b/app/api/monitor/route.ts index 9a7f17c..3f38586 100644 --- a/app/api/monitor/route.ts +++ b/app/api/monitor/route.ts @@ -1,5 +1,6 @@ import { ServerMonitorChart } from "@/app/[locale]/types/nezha-api"; import { auth } from "@/auth"; +import getEnv from "@/lib/env-entry"; import { GetServerMonitor } from "@/lib/serverFetch"; import { NextResponse } from "next/server"; @@ -12,11 +13,10 @@ interface NezhaDataResponse { export const GET = auth(async function GET(req) { - if (!req.auth) { + if (!req.auth && getEnv("SITE_PASSWORD")) { return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); } - const { searchParams } = new URL(req.url); const server_id = searchParams.get("server_id"); if (!server_id) { diff --git a/app/api/server/route.ts b/app/api/server/route.ts index 7a6176a..e6a1f99 100644 --- a/app/api/server/route.ts +++ b/app/api/server/route.ts @@ -1,5 +1,6 @@ import { ServerApi } from "@/app/[locale]/types/nezha-api"; import { auth } from "@/auth"; +import getEnv from "@/lib/env-entry"; import { GetNezhaData } from "@/lib/serverFetch"; import { NextResponse } from "next/server"; @@ -12,7 +13,7 @@ interface NezhaDataResponse { export const GET = auth(async function GET(req) { - if (!req.auth) { + if (!req.auth && getEnv("SITE_PASSWORD")) { return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); } From aff62d55dc26cdcb3a7b81ec96e322bb91d5a6ee Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Sun, 20 Oct 2024 21:50:46 +0800 Subject: [PATCH 4/7] feat: login-in form --- components/sign-in.tsx | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/components/sign-in.tsx b/components/sign-in.tsx index 0bc181c..c31d84d 100644 --- a/components/sign-in.tsx +++ b/components/sign-in.tsx @@ -1,18 +1,30 @@ +import Footer from "@/app/[locale]/(main)/footer" +import Header from "@/app/[locale]/(main)/header" import { signIn } from "@/auth" export function SignIn() { return ( -
{ - "use server" - await signIn("credentials", formData) - }} - > - - -
+
+
+
+
{ + "use server" + const res = await signIn("credentials", formData) + console.log(res) + }} + > +
+ + +
+
+
+
+
) } \ No newline at end of file From 27d61f6174512c1fe9d08e3e0f5a12d3900c0308 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Sun, 20 Oct 2024 23:27:54 +0800 Subject: [PATCH 5/7] fix: login state --- components/sign-in.tsx | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/components/sign-in.tsx b/components/sign-in.tsx index c31d84d..ef2f016 100644 --- a/components/sign-in.tsx +++ b/components/sign-in.tsx @@ -1,19 +1,25 @@ import Footer from "@/app/[locale]/(main)/footer" import Header from "@/app/[locale]/(main)/header" import { signIn } from "@/auth" +import { redirect } from "next/navigation" export function SignIn() { + async function handleSubmit(formData: FormData) { + 'use server' + try { + await signIn("credentials", formData) + } catch (error) { + redirect('/') + } + } + return (
{ - "use server" - const res = await signIn("credentials", formData) - console.log(res) - }} + action={handleSubmit} >
) -} \ No newline at end of file +} From 5533ef5fb93ba7287ff45a53336f7cc774b753b6 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Sun, 20 Oct 2024 23:50:23 +0800 Subject: [PATCH 6/7] fix: redirect --- components/sign-in.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/components/sign-in.tsx b/components/sign-in.tsx index ef2f016..8d266c5 100644 --- a/components/sign-in.tsx +++ b/components/sign-in.tsx @@ -1,15 +1,19 @@ import Footer from "@/app/[locale]/(main)/footer" import Header from "@/app/[locale]/(main)/header" import { signIn } from "@/auth" +import { useLocale } from "next-intl" import { redirect } from "next/navigation" export function SignIn() { + const locale = useLocale() + + async function handleSubmit(formData: FormData) { 'use server' try { await signIn("credentials", formData) } catch (error) { - redirect('/') + redirect(`/${locale}`) } } From f1369b0a51b91b4724c8e498714f192603707252 Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Mon, 21 Oct 2024 02:19:30 +0800 Subject: [PATCH 7/7] fix: cloudflare error --- app/[locale]/(main)/header.tsx | 3 +- app/[locale]/(main)/layout.tsx | 12 ++++- app/[locale]/layout.tsx | 2 +- app/api/auth/[...nextauth]/route.ts | 6 ++- app/api/detail/route.ts | 5 +- app/api/monitor/route.ts | 1 - app/api/server/route.ts | 1 - auth.ts | 17 +++---- components/sign-in.tsx | 73 +++++++++++++++-------------- next.config.mjs | 2 +- 10 files changed, 67 insertions(+), 55 deletions(-) diff --git a/app/[locale]/(main)/header.tsx b/app/[locale]/(main)/header.tsx index a7d9ec7..523b2d1 100644 --- a/app/[locale]/(main)/header.tsx +++ b/app/[locale]/(main)/header.tsx @@ -20,7 +20,6 @@ function Header() { const router = useRouter(); const locale = useLocale(); - return (
@@ -63,7 +62,7 @@ function Header() { // https://github.com/streamich/react-use/blob/master/src/useInterval.ts const useInterval = (callback: Function, delay?: number | null) => { - const savedCallback = useRef(() => { }); + const savedCallback = useRef(() => {}); useEffect(() => { savedCallback.current = callback; }); diff --git a/app/[locale]/(main)/layout.tsx b/app/[locale]/(main)/layout.tsx index 82a15af..ef107f1 100644 --- a/app/[locale]/(main)/layout.tsx +++ b/app/[locale]/(main)/layout.tsx @@ -3,14 +3,22 @@ import Header from "@/app/[locale]/(main)/header"; import { auth } from "@/auth"; import { SignIn } from "@/components/sign-in"; import getEnv from "@/lib/env-entry"; +import { redirect } from "next/navigation"; import React from "react"; type DashboardProps = { children: React.ReactNode; }; export default async function MainLayout({ children }: DashboardProps) { - const session = await auth() - if (!session && getEnv("SITE_PASSWORD")) return + const session = await auth(); + + if (!session && getEnv("SITE_PASSWORD")) { + if (getEnv("CF_PAGES")) { + redirect("/api/auth/signin"); + } else { + return ; + } + } return (
diff --git a/app/[locale]/layout.tsx b/app/[locale]/layout.tsx index 2b2864f..9e6ce07 100644 --- a/app/[locale]/layout.tsx +++ b/app/[locale]/layout.tsx @@ -1,4 +1,5 @@ // @auto-i18n-check. Please do not delete the line. +import { auth } from "@/auth"; import { locales } from "@/i18n-metadata"; import getEnv from "@/lib/env-entry"; import { cn } from "@/lib/utils"; @@ -13,7 +14,6 @@ import { Inter as FontSans } from "next/font/google"; import React from "react"; import "/node_modules/flag-icons/css/flag-icons.min.css"; -import { auth } from "@/auth"; const fontSans = FontSans({ subsets: ["latin"], diff --git a/app/api/auth/[...nextauth]/route.ts b/app/api/auth/[...nextauth]/route.ts index 0cf1408..87f6488 100644 --- a/app/api/auth/[...nextauth]/route.ts +++ b/app/api/auth/[...nextauth]/route.ts @@ -1,2 +1,4 @@ -import { handlers } from "@/auth" // Referring to the auth.ts we just created -export const { GET, POST } = handlers \ No newline at end of file +import { handlers } from "@/auth"; + +// Referring to the auth.ts we just created +export const { GET, POST } = handlers; diff --git a/app/api/detail/route.ts b/app/api/detail/route.ts index fdc18cb..17ef913 100644 --- a/app/api/detail/route.ts +++ b/app/api/detail/route.ts @@ -1,8 +1,8 @@ import { NezhaAPISafe } from "@/app/[locale]/types/nezha-api"; +import { auth } from "@/auth"; +import getEnv from "@/lib/env-entry"; import { GetServerDetail } from "@/lib/serverFetch"; import { NextResponse } from "next/server"; -import { auth } from "@/auth" -import getEnv from "@/lib/env-entry"; export const dynamic = "force-dynamic"; @@ -12,7 +12,6 @@ interface NezhaDataResponse { } export const GET = auth(async function GET(req) { - if (!req.auth && getEnv("SITE_PASSWORD")) { return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); } diff --git a/app/api/monitor/route.ts b/app/api/monitor/route.ts index 3f38586..528de95 100644 --- a/app/api/monitor/route.ts +++ b/app/api/monitor/route.ts @@ -12,7 +12,6 @@ interface NezhaDataResponse { } export const GET = auth(async function GET(req) { - if (!req.auth && getEnv("SITE_PASSWORD")) { return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); } diff --git a/app/api/server/route.ts b/app/api/server/route.ts index e6a1f99..f201247 100644 --- a/app/api/server/route.ts +++ b/app/api/server/route.ts @@ -12,7 +12,6 @@ interface NezhaDataResponse { } export const GET = auth(async function GET(req) { - if (!req.auth && getEnv("SITE_PASSWORD")) { return NextResponse.json({ message: "Not authenticated" }, { status: 401 }); } diff --git a/auth.ts b/auth.ts index a908388..ca98657 100644 --- a/auth.ts +++ b/auth.ts @@ -1,9 +1,10 @@ -import NextAuth from "next-auth" -import Credentials from "next-auth/providers/credentials" -import getEnv from "./lib/env-entry" - +import NextAuth from "next-auth"; +import Credentials from "next-auth/providers/credentials"; + +import getEnv from "./lib/env-entry"; + export const { handlers, signIn, signOut, auth } = NextAuth({ - secret:"this_is_nezha_dash_web_secret", + secret: "this_is_nezha_dash_web_secret", providers: [ Credentials({ credentials: { @@ -11,10 +12,10 @@ export const { handlers, signIn, signOut, auth } = NextAuth({ }, authorize: async (credentials) => { if (credentials.password === getEnv("SITE_PASSWORD")) { - return { id: "0" } + return { id: "0" }; } - return null + return null; }, }), ], -}) \ No newline at end of file +}); diff --git a/components/sign-in.tsx b/components/sign-in.tsx index 8d266c5..c8adbea 100644 --- a/components/sign-in.tsx +++ b/components/sign-in.tsx @@ -1,40 +1,45 @@ -import Footer from "@/app/[locale]/(main)/footer" -import Header from "@/app/[locale]/(main)/header" -import { signIn } from "@/auth" -import { useLocale } from "next-intl" -import { redirect } from "next/navigation" +import Footer from "@/app/[locale]/(main)/footer"; +import Header from "@/app/[locale]/(main)/header"; +import { signIn } from "@/auth"; +import { useLocale } from "next-intl"; +import { redirect } from "next/navigation"; export function SignIn() { - const locale = useLocale() + const locale = useLocale(); - - async function handleSubmit(formData: FormData) { - 'use server' - try { - await signIn("credentials", formData) - } catch (error) { - redirect(`/${locale}`) - } + async function handleSubmit(formData: FormData) { + "use server"; + try { + await signIn("credentials", formData); + } catch (error) { + redirect(`/${locale}`); } + } - return ( -
-
-
- -
- - -
- -
-
-
- ) + return ( +
+
+
+
+
+ + +
+
+
+
+ ); } diff --git a/next.config.mjs b/next.config.mjs index 5713407..a68be47 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -25,7 +25,7 @@ const nextConfig = { reactStrictMode: true, experimental: { serverActions: { - allowedOrigins: ['*'], + allowedOrigins: ["*"], }, }, logging: {