From 48b2220ea3eb98a86b12fa314bb3caa223c140b0 Mon Sep 17 00:00:00 2001 From: KMKoushik Date: Thu, 29 Aug 2024 08:56:30 +1000 Subject: [PATCH] fix add login page based on providers --- apps/web/src/app/login/login-page.tsx | 83 ++++++++++++++++----------- apps/web/src/app/login/page.tsx | 5 +- 2 files changed, 53 insertions(+), 35 deletions(-) diff --git a/apps/web/src/app/login/login-page.tsx b/apps/web/src/app/login/login-page.tsx index 1bbf549..7c5c526 100644 --- a/apps/web/src/app/login/login-page.tsx +++ b/apps/web/src/app/login/login-page.tsx @@ -6,7 +6,7 @@ import { z } from "zod"; import { zodResolver } from "@hookform/resolvers/zod"; import { useForm } from "react-hook-form"; import { useState } from "react"; -import { signIn } from "next-auth/react"; +import { ClientSafeProvider, signIn } from "next-auth/react"; import { Form, FormControl, @@ -23,6 +23,7 @@ import { } from "@unsend/ui/src/input-otp"; import { Input } from "@unsend/ui/src/input"; import { env } from "~/env"; +import { Provider } from "next-auth/providers/index"; const emailSchema = z.object({ email: z @@ -36,7 +37,32 @@ const otpSchema = z.object({ .length(5, { message: "Invalid OTP" }), }); -export default function LoginPage() { +const providerSvgs = { + github: ( + + + + ), + google: ( + + + + ), +}; + +export default function LoginPage({ + providers, +}: { + providers?: ClientSafeProvider[]; +}) { const [emailStatus, setEmailStatus] = useState< "idle" | "sending" | "success" >("idle"); @@ -68,6 +94,10 @@ export default function LoginPage() { )}&token=${values.otp.toLowerCase()}${callbackUrl ? `&callbackUrl=${callbackUrl}/dashboard` : ""}`; } + const emailProvider = providers?.find( + (provider) => provider.type === "email" + ); + return (
@@ -80,37 +110,22 @@ export default function LoginPage() { />

Log in to unsend

- - {/* {env.NEXT_PUBLIC_IS_CLOUD ? ( - - ) : null} */} - {env.NEXT_PUBLIC_IS_CLOUD ? ( + {providers && + Object.values(providers).map((provider) => { + if (provider.type === "email") return null; + return ( + + ); + })} + {emailProvider && ( <>

@@ -216,7 +231,7 @@ export default function LoginPage() { )} - ) : null} + )}

diff --git a/apps/web/src/app/login/page.tsx b/apps/web/src/app/login/page.tsx index ede716e..65da307 100644 --- a/apps/web/src/app/login/page.tsx +++ b/apps/web/src/app/login/page.tsx @@ -1,6 +1,7 @@ import { redirect } from "next/navigation"; import { getServerAuthSession } from "~/server/auth"; import LoginPage from "./login-page"; +import { getProviders } from "next-auth/react"; export default async function Login() { const session = await getServerAuthSession(); @@ -9,5 +10,7 @@ export default async function Login() { redirect("/dashboard"); } - return ; + const providers = await getProviders(); + + return ; }