"use client"; import { useState, FormEvent } from "react"; import { useRouter } from "next/navigation"; import Link from "next/link"; const API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000/api/v1"; export default function RegisterPage() { const [formData, setFormData] = useState({ email: "", password: "", re_password: "", first_name: "", last_name: "", }); const [error, setError] = useState(""); const [fieldErrors, setFieldErrors] = useState>({}); const [loading, setLoading] = useState(false); const [success, setSuccess] = useState(false); const router = useRouter(); const handleChange = (e: React.ChangeEvent) => { setFormData({ ...formData, [e.target.name]: e.target.value, }); // Clear field error when user starts typing if (fieldErrors[e.target.name]) { const newErrors = { ...fieldErrors }; delete newErrors[e.target.name]; setFieldErrors(newErrors); } }; const handleSubmit = async (e: FormEvent) => { e.preventDefault(); setError(""); setFieldErrors({}); setLoading(true); try { const response = await fetch(`${API_BASE_URL}/auth/users/`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify(formData), }); const data = await response.json(); if (!response.ok) { if (data.email || data.password || data.first_name || data.last_name) { setFieldErrors(data); } else if (data.detail) { setError(data.detail); } else { setError("Kayıt başarısız. Lütfen bilgilerinizi kontrol edin."); } } else { setSuccess(true); setTimeout(() => { router.push("/auth/login"); }, 3000); } } catch (err) { setError("Bir hata oluştu. Lütfen tekrar deneyin."); console.error("Registration error:", err); } finally { setLoading(false); } }; if (success) { return (

Kayıt Başarılı!

Email adresinize gönderilen aktivasyon linkine tıklayarak hesabınızı aktifleştirin.

Giriş sayfasına yönlendiriliyorsunuz...

); } return (

Hesap Oluştur

Veya{" "} mevcut hesabınızla giriş yapın

{fieldErrors.first_name && (

{fieldErrors.first_name[0]}

)}
{fieldErrors.last_name && (

{fieldErrors.last_name[0]}

)}
{fieldErrors.email && (

{fieldErrors.email[0]}

)}
{fieldErrors.password && (

{fieldErrors.password[0]}

)}
{fieldErrors.re_password && (

{fieldErrors.re_password[0]}

)}
{error && (

{error}

)}
); }