diff --git a/packages/features/auth/src/components/password-sign-in-container.tsx b/packages/features/auth/src/components/password-sign-in-container.tsx index b9dfa47ed..f685ed813 100644 --- a/packages/features/auth/src/components/password-sign-in-container.tsx +++ b/packages/features/auth/src/components/password-sign-in-container.tsx @@ -6,6 +6,7 @@ import type { z } from 'zod'; import { useSignInWithEmailPassword } from '@kit/supabase/hooks/use-sign-in-with-email-password'; +import { useCaptchaToken } from '../captcha/client'; import type { PasswordSignInSchema } from '../schemas/password-sign-in.schema'; import { AuthErrorAlert } from './auth-error-alert'; import { PasswordSignInForm } from './password-sign-in-form'; @@ -13,23 +14,28 @@ import { PasswordSignInForm } from './password-sign-in-form'; export const PasswordSignInContainer: React.FC<{ onSignIn?: (userId?: string) => unknown; }> = ({ onSignIn }) => { + const { captchaToken } = useCaptchaToken(); const signInMutation = useSignInWithEmailPassword(); const isLoading = signInMutation.isPending; const onSubmit = useCallback( async (credentials: z.infer) => { try { - const data = await signInMutation.mutateAsync(credentials); - const userId = data?.user?.id; + const data = await signInMutation.mutateAsync({ + ...credentials, + options: { captchaToken }, + }); if (onSignIn) { + const userId = data?.user?.id; + onSignIn(userId); } } catch (e) { // wrong credentials, do nothing } }, - [onSignIn, signInMutation], + [captchaToken, onSignIn, signInMutation], ); return ( diff --git a/packages/supabase/src/hooks/use-sign-in-with-email-password.ts b/packages/supabase/src/hooks/use-sign-in-with-email-password.ts index 26a1a9249..d6ba8e718 100644 --- a/packages/supabase/src/hooks/use-sign-in-with-email-password.ts +++ b/packages/supabase/src/hooks/use-sign-in-with-email-password.ts @@ -1,17 +1,14 @@ +import type { SignInWithPasswordCredentials } from '@supabase/supabase-js'; + import { useMutation } from '@tanstack/react-query'; import { useSupabase } from './use-supabase'; -interface Credentials { - email: string; - password: string; -} - export function useSignInWithEmailPassword() { const client = useSupabase(); const mutationKey = ['auth', 'sign-in-with-email-password']; - const mutationFn = async (credentials: Credentials) => { + const mutationFn = async (credentials: SignInWithPasswordCredentials) => { const response = await client.auth.signInWithPassword(credentials); if (response.error) {