aboutsummaryrefslogtreecommitdiff
path: root/communities/174bg/174bg.net/src/app/login
diff options
context:
space:
mode:
Diffstat (limited to 'communities/174bg/174bg.net/src/app/login')
-rw-r--r--communities/174bg/174bg.net/src/app/login/page.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/communities/174bg/174bg.net/src/app/login/page.js b/communities/174bg/174bg.net/src/app/login/page.js
new file mode 100644
index 0000000..b2b1ea8
--- /dev/null
+++ b/communities/174bg/174bg.net/src/app/login/page.js
@@ -0,0 +1,51 @@
+"use client";
+
+import { Suspense, useEffect, useState } from "react";
+import { useSearchParams } from "next/navigation";
+import { authClient } from "@/lib/auth-client";
+
+function LoginRedirect() {
+ const searchParams = useSearchParams();
+ const callbackUrl = searchParams.get("callbackUrl") ?? "/secure";
+ const [error, setError] = useState(null);
+
+ const signIn = () => {
+ authClient.signIn
+ .social({
+ provider: "discord",
+ callbackURL: callbackUrl,
+ })
+ .then(({ error }) => {
+ if (error) setError(error.message ?? "Sign-in failed");
+ });
+ };
+
+ useEffect(() => {
+ signIn();
+ // eslint-disable-next-line react-hooks/exhaustive-deps
+ }, []);
+
+ if (error) {
+ return (
+ <div>
+ <p>Error: {error}</p>
+ <button onClick={signIn}>Retry</button>
+ </div>
+ );
+ }
+
+ return (
+ <div>
+ <p>Redirecting to Discord...</p>
+ <button onClick={signIn}>Click here if nothing happens</button>
+ </div>
+ );
+}
+
+export default function LoginPage() {
+ return (
+ <Suspense fallback={<p>Loading...</p>}>
+ <LoginRedirect />
+ </Suspense>
+ );
+}