diff --git a/apps/web/.env.development.example b/apps/web/.env.development.example index 56c7bf0..a1c9eb0 100644 --- a/apps/web/.env.development.example +++ b/apps/web/.env.development.example @@ -24,6 +24,7 @@ RESEND_API_KEY= # Formbase ALLOW_SIGNIN_SIGNUP=true +SKIP_EMAIL_VERIFICATION=true # Analytics (optional) UMAMI_TRACKING_ID= diff --git a/apps/web/next-env.d.ts b/apps/web/next-env.d.ts index 9edff1c..c4b7818 100644 --- a/apps/web/next-env.d.ts +++ b/apps/web/next-env.d.ts @@ -1,6 +1,6 @@ /// /// -import "./.next/types/routes.d.ts"; +import "./.next/dev/types/routes.d.ts"; // NOTE: This file should not be edited // see https://nextjs.org/docs/app/api-reference/config/typescript for more information. diff --git a/apps/web/src/app/(auth)/signup/signup.tsx b/apps/web/src/app/(auth)/signup/signup.tsx index b282ea4..9a84c9f 100644 --- a/apps/web/src/app/(auth)/signup/signup.tsx +++ b/apps/web/src/app/(auth)/signup/signup.tsx @@ -1,14 +1,14 @@ 'use client'; -import { type FormEvent, useState } from 'react'; +import { useState } from 'react'; import Link from 'next/link'; import { useRouter } from 'next/navigation'; +import type { FormEvent } from 'react'; + import { IconBrandGithub, IconBrandGoogleFilled } from '@tabler/icons-react'; import { signUp } from '@formbase/auth/client'; - -import { Logo } from '../_components/logo'; import { Button } from '@formbase/ui/primitives/button'; import { Input } from '@formbase/ui/primitives/input'; import { Label } from '@formbase/ui/primitives/label'; @@ -18,6 +18,8 @@ import { LoadingButton } from '~/components/loading-button'; import { PasswordInput } from '~/components/password-input'; import { useSocialAuth } from '~/lib/hooks/use-social-auth'; +import { Logo } from '../_components/logo'; + export function Signup() { const router = useRouter(); const [formError, setFormError] = useState(null); @@ -50,7 +52,7 @@ export function Signup() { }); if (error) { - setFormError(error.message); + setFormError(error.message ?? 'An error occurred'); return; } @@ -180,6 +182,7 @@ export function Signup() { ) : null} diff --git a/apps/web/src/app/(auth)/verify-email/page.tsx b/apps/web/src/app/(auth)/verify-email/page.tsx index 43edb5a..43ae86c 100644 --- a/apps/web/src/app/(auth)/verify-email/page.tsx +++ b/apps/web/src/app/(auth)/verify-email/page.tsx @@ -1,9 +1,9 @@ import { redirect } from 'next/navigation'; import { getSession } from '@formbase/auth/server'; +import { env } from '@formbase/env'; import { Logo } from '../_components/logo'; - import { VerifyEmail } from './verify-code'; export const metadata = { @@ -25,7 +25,7 @@ export default async function VerifyEmailPage({ redirect('/login'); } - if (session?.user.emailVerified) { + if (session?.user.emailVerified || env.SKIP_EMAIL_VERIFICATION) { redirect('/dashboard'); } @@ -50,7 +50,7 @@ export default async function VerifyEmailPage({ <>Use the verification link from your email to continue. )}

- + ); diff --git a/apps/web/src/app/(landing)/_components/header.tsx b/apps/web/src/app/(landing)/_components/header.tsx index 982002d..56a1281 100644 --- a/apps/web/src/app/(landing)/_components/header.tsx +++ b/apps/web/src/app/(landing)/_components/header.tsx @@ -1,10 +1,9 @@ import Link from 'next/link'; -import { FunctionSquare } from 'lucide-react'; - import { type User } from '@formbase/auth'; import { env } from '@formbase/env'; +import { Logo } from '../../(auth)/_components/logo'; import { MobileNavigation } from './mobile-navigation'; const routes = [{ name: 'Docs', href: 'https://docs.formbase.dev' }] as const; @@ -18,19 +17,19 @@ export const Header = ({ user }: LandingHeaderProps) => { return (
-