import { useEffect, useState } from 'react'; import { Trans } from '@lingui/react/macro'; import { Link, redirect } from 'react-router'; import { getOptionalSession } from '@documenso/auth/server/lib/utils/get-session'; import { IS_GOOGLE_SSO_ENABLED, IS_MICROSOFT_SSO_ENABLED, IS_OIDC_SSO_ENABLED, OIDC_PROVIDER_LABEL, } from '@documenso/lib/constants/auth'; import { env } from '@documenso/lib/utils/env'; import { isValidReturnTo, normalizeReturnTo } from '@documenso/lib/utils/is-valid-return-to'; import { SignInForm } from '~/components/forms/signin'; import { appMetaTags } from '~/utils/meta'; import type { Route } from './+types/signin'; export function meta() { return appMetaTags('Sign In'); } export async function loader({ request }: Route.LoaderArgs) { const { isAuthenticated } = await getOptionalSession(request); // SSR env variables. const isGoogleSSOEnabled = IS_GOOGLE_SSO_ENABLED; const isMicrosoftSSOEnabled = IS_MICROSOFT_SSO_ENABLED; const isOIDCSSOEnabled = IS_OIDC_SSO_ENABLED; const oidcProviderLabel = OIDC_PROVIDER_LABEL; let returnTo = new URL(request.url).searchParams.get('returnTo') ?? undefined; returnTo = isValidReturnTo(returnTo) ? normalizeReturnTo(returnTo) : undefined; if (isAuthenticated) { throw redirect(returnTo || '/'); } return { isGoogleSSOEnabled, isMicrosoftSSOEnabled, isOIDCSSOEnabled, oidcProviderLabel, returnTo, }; } export default function SignIn({ loaderData }: Route.ComponentProps) { const { isGoogleSSOEnabled, isMicrosoftSSOEnabled, isOIDCSSOEnabled, oidcProviderLabel, returnTo, } = loaderData; const [isEmbeddedRedirect, setIsEmbeddedRedirect] = useState(false); useEffect(() => { const hash = window.location.hash.slice(1); const params = new URLSearchParams(hash); setIsEmbeddedRedirect(params.get('embedded') === 'true'); }, []); return (

Sign in to your account

Welcome back, we are lucky to have you.


{!isEmbeddedRedirect && env('NEXT_PUBLIC_DISABLE_SIGNUP') !== 'true' && (

Don't have an account?{' '} Sign up

)}
); }