From 217315b8c24111edb645bc10ed0c8f77c9f6eba9 Mon Sep 17 00:00:00 2001 From: user12224 <122770437+user12224@users.noreply.github.com> Date: Thu, 3 Apr 2025 07:48:14 +0200 Subject: [PATCH] plz? --- apps/mail/app/(auth)/login/login-client.tsx | 33 ++++++++++++++++----- apps/mail/lib/auth.ts | 4 +-- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/apps/mail/app/(auth)/login/login-client.tsx b/apps/mail/app/(auth)/login/login-client.tsx index cf8cff0e01..c3eeff3967 100644 --- a/apps/mail/app/(auth)/login/login-client.tsx +++ b/apps/mail/app/(auth)/login/login-client.tsx @@ -1,11 +1,11 @@ 'use client'; -import { useEffect, type ReactNode, useState } from 'react'; +import { useEffect, type ReactNode, useState, Suspense } from 'react'; import { Google } from '@/components/icons/icons'; import { type EnvVarInfo } from '@/lib/auth-providers'; import { signIn, useSession } from '@/lib/auth-client'; import { Button } from '@/components/ui/button'; -import { useRouter } from 'next/navigation'; +import { useRouter, useSearchParams } from 'next/navigation'; import Image from 'next/image'; import { toast } from 'sonner'; import Link from 'next/link'; @@ -55,18 +55,23 @@ const getProviderIcon = (providerId: string, className?: string): ReactNode => { } }; -export function LoginClient({ providers, isProd }: LoginClientProps) { +function LoginClientContent({ providers, isProd }: LoginClientProps) { const router = useRouter(); + const searchParams = useSearchParams(); const { data: session, isPending } = useSession(); const [expandedProviders, setExpandedProviders] = useState>({}); useEffect(() => { - const missingProviders = providers.filter((p) => p.required && !p.enabled); + const error = searchParams.get('error'); + if (error === 'early_access_required') { + toast.error('This account requires early access approval.'); + } - if (missingProviders.length > 0 && missingProviders[0]?.id) { - setExpandedProviders({ [missingProviders[0].id]: true }); + const missing = providers.find((p) => p.required && !p.enabled); + if (missing?.id) { + setExpandedProviders({ [missing.id]: true }); } - }, [providers]); + }, [searchParams, providers, router]); const missingRequiredProviders = providers .filter((p) => p.required && !p.enabled) @@ -351,3 +356,17 @@ export function LoginClient({ providers, isProd }: LoginClientProps) { ); } + +export function LoginClient(props: LoginClientProps) { + const fallback = ( +
+

Loading...

+
+ ); + + return ( + + + + ); +} diff --git a/apps/mail/lib/auth.ts b/apps/mail/lib/auth.ts index 4192d23285..d68a864f1b 100644 --- a/apps/mail/lib/auth.ts +++ b/apps/mail/lib/auth.ts @@ -91,9 +91,7 @@ const options = { .catch((err) => console.log('Tried to add user to earlyAccess after error, failed', foundUser), ); - throw new Error('Unauthorized', { - cause: 'No early access found, check logs', - }); + redirect('/login?error=early_access_required'); } let activeConnection = null;