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";
|
export const dynamic = "force-dynamic";
|
||||||
import { useSearchParams, useRouter } from "next/navigation";
|
|
||||||
|
import AuthCallbackClient from "./AuthCallbackClient";
|
||||||
|
|
||||||
export default function AuthCallbackPage() {
|
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 (
|
return (
|
||||||
<main className="min-h-screen flex items-center justify-center">
|
<Suspense fallback={null}>
|
||||||
<p className="text-sm text-gray-500">Signing you in…</p>
|
<AuthCallbackClient />
|
||||||
</main>
|
</Suspense>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue