save
This commit is contained in:
parent
3fbac8fdf5
commit
ec77dea850
2 changed files with 47 additions and 34 deletions
40
stripe_to_invoice/app/auth/callback/AuthCallbackClient.tsx
Normal file
40
stripe_to_invoice/app/auth/callback/AuthCallbackClient.tsx
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
"use client";
|
||||
|
||||
import { useEffect, useRef } from "react";
|
||||
import { useSearchParams, useRouter } from "next/navigation";
|
||||
|
||||
export default function AuthCallbackClient() {
|
||||
const params = useSearchParams();
|
||||
const router = useRouter();
|
||||
const ran = useRef(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (ran.current) return;
|
||||
ran.current = true;
|
||||
|
||||
const token = params.get("token");
|
||||
if (!token) {
|
||||
router.replace("/login");
|
||||
return;
|
||||
}
|
||||
|
||||
fetch("/api/auth/callback", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ token }),
|
||||
})
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw new Error(await res.text());
|
||||
router.replace("/app");
|
||||
})
|
||||
.catch(() => {
|
||||
router.replace("/login");
|
||||
});
|
||||
}, [params, router]);
|
||||
|
||||
return (
|
||||
<main className="min-h-screen flex items-center justify-center">
|
||||
<p className="text-sm text-gray-500">Signing you in…</p>
|
||||
</main>
|
||||
);
|
||||
}
|
||||
|
|
@ -1,40 +1,13 @@
|
|||
"use client";
|
||||
import { Suspense } from "react";
|
||||
|
||||
import { useEffect, useRef } from "react";
|
||||
import { useSearchParams, useRouter } from "next/navigation";
|
||||
export const dynamic = "force-dynamic";
|
||||
|
||||
import AuthCallbackClient from "./AuthCallbackClient";
|
||||
|
||||
export default function AuthCallbackPage() {
|
||||
const params = useSearchParams();
|
||||
const router = useRouter();
|
||||
const ran = useRef(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (ran.current) return;
|
||||
ran.current = true;
|
||||
|
||||
const token = params.get("token");
|
||||
if (!token) {
|
||||
router.replace("/login");
|
||||
return;
|
||||
}
|
||||
|
||||
fetch("/api/auth/callback", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ token }),
|
||||
})
|
||||
.then(async (res) => {
|
||||
if (!res.ok) throw new Error(await res.text());
|
||||
router.replace("/app");
|
||||
})
|
||||
.catch(() => {
|
||||
router.replace("/login");
|
||||
});
|
||||
}, [params, router]);
|
||||
|
||||
return (
|
||||
<main className="min-h-screen flex items-center justify-center">
|
||||
<p className="text-sm text-gray-500">Signing you in…</p>
|
||||
</main>
|
||||
<Suspense fallback={null}>
|
||||
<AuthCallbackClient />
|
||||
</Suspense>
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue