From f8bb05d8b9c8477e9818f8474f1ea0713bff1428 Mon Sep 17 00:00:00 2001 From: andrzej Date: Sat, 21 Sep 2024 16:40:19 +0200 Subject: [PATCH] logout functionality --- prisma/dev.db | Bin 69632 -> 69632 bytes src/app/api/auth/logout/route.ts | 20 ++++++++++++++++++++ src/app/layout.tsx | 7 +++++-- src/app/login/page.tsx | 3 ++- src/app/tailwind.css | 4 ---- src/app/ui/logoutButton.tsx | 22 ++++++++++++++++++++++ 6 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 src/app/api/auth/logout/route.ts create mode 100644 src/app/ui/logoutButton.tsx diff --git a/prisma/dev.db b/prisma/dev.db index 841e2e80cd0533ac8602e7a6a7f73010fb78cd24..12b04ebd9e257f067167f3e608f78407bc4ef9e6 100644 GIT binary patch delta 349 zcmXAjy-UMT6vcC2lk@}aQ9-KMm#U+Mv}xn0pyJT6h`XKiA1D$ zP@_D=LAN3Zf?umc!ATcEaM8*1bvgH*--UB-siBq{YITIlJJC5RUoIULL(L&P;TRj? zrsyl}g@Kq7XA8gwQ|7i8lVQl=4a=zE5bt=vFJAGDT?mv>z$b2S zh9a`a2(vMafM2Cfxb0-!Y1>QJiAltGN>_tK+>*mcO6oHb-K$}CJx`04J2M)MAkVyl z53h0yfB3-{)^UMT+#@fH=SAq6_p?{C*0y6Qxmz7Il2Q{=P07>ZvAsG$#(t%TX0JCx HRM7qbiM3KN delta 341 zcmZozz|ydQWr8$g^F$eE#^#L)%j&t7N${WNU%}tZw`{XO!!$lsO<5KOreKB>zC{Y| z8TrK}3hw!-#R?_)3c&@5$*BsC>4}+nI-5`TnKQDjW)S1gV4ln|L6LhY|6KmV{CoJf z@~_|Qc)^r^a^`#!Ayyq`Mn)!Ceim(JPDWV<1_qYN>*tFy>P|j7-&SWnP;($NeC;wSi diff --git a/src/app/api/auth/logout/route.ts b/src/app/api/auth/logout/route.ts new file mode 100644 index 0000000..39ee4e9 --- /dev/null +++ b/src/app/api/auth/logout/route.ts @@ -0,0 +1,20 @@ +import { revalidatePath } from "next/cache"; +import { NextRequest } from "next/server"; +import { logout } from "../actions"; + +const dynamic = 'force-dynamic' + +export async function POST(request: NextRequest) { + await logout() + revalidatePath('/login') + const response = { + success: true, + message: 'Logged out successfully', + }; + + return new Response(JSON.stringify(response), { + headers: { + 'Content-Type': 'application/json', + }, + }); +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index fdec280..fde9763 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -6,6 +6,9 @@ import "./globals.css"; import Navlinks from "./ui/navLinks"; import { ModeToggle } from "./ui/modeToggle"; import { inter } from "./ui/fonts"; +import { LogOutIcon } from "lucide-react"; +import { Button } from "@/components/ui/button"; +import LogoutButton from "./ui/logoutButton"; @@ -15,7 +18,6 @@ export const metadata: Metadata = { }; - export default function RootLayout({ children, }: Readonly<{ @@ -37,7 +39,8 @@ export default function RootLayout({

The self-hosted literary submission tracker.

-
+
+
{children} diff --git a/src/app/login/page.tsx b/src/app/login/page.tsx index 74eaece..9b0d492 100644 --- a/src/app/login/page.tsx +++ b/src/app/login/page.tsx @@ -17,7 +17,8 @@ import Link from "next/link"; export default function LoginForm() { const router = useRouter() const searchParams = useSearchParams() - const redirect = searchParams.get("from") ?? "submission" + const redirect = searchParams.get("from") ?? "/submission" + console.log(redirect) const form = useForm>({ resolver: zodResolver(loginSchema), }) diff --git a/src/app/tailwind.css b/src/app/tailwind.css index f73f4ea..df53417 100644 --- a/src/app/tailwind.css +++ b/src/app/tailwind.css @@ -740,10 +740,6 @@ body { margin-bottom: 1.5rem; } -.mb-4 { - margin-bottom: 1rem; -} - .ml-2 { margin-left: 0.5rem; } diff --git a/src/app/ui/logoutButton.tsx b/src/app/ui/logoutButton.tsx new file mode 100644 index 0000000..9a7cac1 --- /dev/null +++ b/src/app/ui/logoutButton.tsx @@ -0,0 +1,22 @@ +"use client" +import { Button } from "@/components/ui/button" +import { LogOutIcon } from "lucide-react" + + +async function handleLogout() { + const res = await fetch('/api/auth/logout', { + method: 'POST', + headers: { + 'Content-type': 'application/json', + } + }) + console.log(res) + window.location.reload() +} +export default function LogoutButton() { + return ( + + ) +}