32 lines
840 B
TypeScript
32 lines
840 B
TypeScript
'use server';
|
|
|
|
import { fetcher } from '@/lib/fetcher';
|
|
import { getRemoteIp } from '@/lib/headers';
|
|
import { fetchPostverifyTurnstile } from '../../_http/fetch-post-verify-turnstile';
|
|
import {
|
|
resendOTPValidationSchema,
|
|
type ResendOTPValidationType,
|
|
} from '../_validation/resend-otp-validation';
|
|
|
|
export async function resendOTPAction(request: ResendOTPValidationType) {
|
|
const validRequest = resendOTPValidationSchema.parse(request);
|
|
const remoteIp = await getRemoteIp();
|
|
|
|
const isCapchaValid = await fetchPostverifyTurnstile(
|
|
validRequest.token,
|
|
remoteIp
|
|
);
|
|
|
|
if (!isCapchaValid) throw new Error('Failed to verify captcha');
|
|
|
|
const { data, error } = await fetcher.POST('/v1/auth/send-otp', {
|
|
body: {
|
|
email: validRequest.email,
|
|
},
|
|
});
|
|
|
|
if (error) throw new Error(error.message);
|
|
|
|
return data;
|
|
}
|