"use client"; import { useState, FormEvent } from "react"; import { useParams, 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 PasswordResetConfirmPage() { const params = useParams(); const router = useRouter(); const [formData, setFormData] = useState({ new_password: "", re_new_password: "", }); const [error, setError] = useState(""); const [fieldErrors, setFieldErrors] = useState>({}); const [loading, setLoading] = useState(false); const [success, setSuccess] = useState(false); 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); const { uid, token } = params; try { const response = await fetch(`${API_BASE_URL}/auth/users/reset_password_confirm/`, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ uid, token, new_password: formData.new_password, re_new_password: formData.re_new_password, }), }); if (response.ok || response.status === 204) { setSuccess(true); setTimeout(() => { router.push("/auth/login"); }, 3000); } else { const data = await response.json(); if (data.new_password || data.re_new_password) { setFieldErrors(data); } else if (data.detail) { setError(data.detail); } else if (data.token) { setError("Şifre sıfırlama linki geçersiz veya süresi dolmuş."); } else { setError("Şifre sıfırlama başarısız. Lütfen bilgilerinizi kontrol edin."); } } } catch (err) { setError("Bir hata oluştu. Lütfen tekrar deneyin."); console.error("Password reset confirm error:", err); } finally { setLoading(false); } }; if (success) { return (

Şifre Sıfırlama Başarılı!

Şifreniz başarıyla değiştirildi. Artık yeni şifrenizle giriş yapabilirsiniz.

Giriş sayfasına yönlendiriliyorsunuz...

); } return (

Yeni Şifre Belirle

Hesabınız için yeni bir şifre oluşturun.

{fieldErrors.new_password && (

{fieldErrors.new_password[0]}

)}
{fieldErrors.re_new_password && (

{fieldErrors.re_new_password[0]}

)}
{error && (

{error}

)}
Giriş sayfasına dön
); }