"use client" import React, { useState } from 'react' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { registerSchema, RegisterInput } from '@/lib/auth-schema' import { Input } from '@/components/ui/input' import { Button } from '@/components/ui/button' import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from '@/components/ui/card' import { Label } from '@/components/ui/label' import Link from 'next/link' import Swal from 'sweetalert2' import { Turnstile } from 'nextjs-turnstile' import { useRouter } from 'next/navigation' const RegisterPage = () => { const [isLoading, setIsLoading] = useState(false) const [turnstileToken, setTurnstileToken] = useState(null) const router = useRouter() const siteKey = process.env.NEXT_PUBLIC_TURNSTILE_SITEKEY const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(registerSchema), }) const onSubmit = async (data: RegisterInput) => { if (siteKey && !turnstileToken) { Swal.fire({ icon: 'warning', title: 'Güvenlik Doğrulaması', text: 'Lütfen robot olmadığınızı doğrulayın.', }) return } setIsLoading(true) try { const response = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/api/v1/auth/register`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ username: data.username, email: data.email, password: data.password }), }) const result = await response.json() if (!response.ok) { throw new Error(result.error || result.message || 'Kayıt işlemi başarısız oldu.') } Swal.fire({ title: 'Başarılı!', text: 'Kayıt işlemi başarıyla tamamlandı. Lütfen e-posta adresinizi doğrulayın.', icon: 'success', confirmButtonText: 'Giriş Yap', }).then(() => { router.push('/auth/login') }) } catch (error: any) { // eslint-disable-line @typescript-eslint/no-explicit-any Swal.fire({ title: 'Hata!', text: error.message || 'Bir sorun oluştu.', icon: 'error', confirmButtonText: 'Tamam', }) } finally { setIsLoading(false) } } return (
Kayıt Ol Yeni bir hesap oluşturmak için bilgilerinizi girin
{errors.username && (

{errors.username.message}

)}
{errors.email && (

{errors.email.message}

)}
{errors.password && (

{errors.password.message}

)}
{errors.confirmPassword && (

{errors.confirmPassword.message}

)}
{siteKey && (
setTurnstileToken(token)} onError={() => setTurnstileToken(null)} onExpire={() => setTurnstileToken(null)} />
)}

Zaten hesabınız var mı?{' '} Giriş Yap

) } export default RegisterPage