Files
myeasycms-v2/packages/supabase/src/hooks/use-sign-up-with-email-password.ts
giancarlo 0a9c1f35c6 Add captcha support to authentication features
The update includes the implementation of captcha support during the sign-in and sign-up process for user accounts. The process ensures a better level of security against bot-based attacks. Also, the code has been refactored to separate error and success alerts and unnecessary useEffect hooks have been removed. Moreover, some logic concerning the authentication rendering has been simplified.
2024-04-07 10:56:33 +08:00

47 lines
1.0 KiB
TypeScript

import { useMutation } from '@tanstack/react-query';
import { useSupabase } from './use-supabase';
interface Credentials {
email: string;
password: string;
emailRedirectTo: string;
captchaToken?: string;
}
export function useSignUpWithEmailAndPassword() {
const client = useSupabase();
const mutationKey = ['auth', 'sign-up-with-email-password'];
const mutationFn = async (params: Credentials) => {
const { emailRedirectTo, captchaToken, ...credentials } = params;
const response = await client.auth.signUp({
...credentials,
options: {
emailRedirectTo,
captchaToken,
},
});
if (response.error) {
throw response.error.message;
}
const user = response.data?.user;
const identities = user?.identities ?? [];
// if the user has no identities, it means that the email is taken
if (identities.length === 0) {
throw new Error('User already registered');
}
return response.data;
};
return useMutation({
mutationKey,
mutationFn,
});
}