"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { useDispatch } from "react-redux"; import { setProfile } from "@/redux/slices/profileSlice"; import { showToast } from "@/redux/slices/toastSlice"; import Link from "next/link"; export default function LoginPage() { const router = useRouter(); const dispatch = useDispatch(); const [formData, setFormData] = useState({ email: "", password: "", }); const [errors, setErrors] = useState({}); const [isLoading, setIsLoading] = useState(false); const validateForm = () => { const newErrors = {}; if (!formData.email.trim()) { newErrors.email = "ایمیل الزامی است"; } else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(formData.email)) { newErrors.email = "ایمیل معتبر نیست"; } if (!formData.password.trim()) { newErrors.password = "رمز عبور الزامی است"; } else if (formData.password.length < 6) { newErrors.password = "رمز عبور باید حداقل 6 کاراکتر باشد"; } setErrors(newErrors); return Object.keys(newErrors).length === 0; }; const handleChange = (e) => { const { name, value } = e.target; setFormData((prev) => ({ ...prev, [name]: value, })); if (errors[name]) { setErrors((prev) => ({ ...prev, [name]: "", })); } }; const handleSubmit = async (e) => { e.preventDefault(); if (!validateForm()) { return; } setIsLoading(true); try { // فراخوانی API (توکن خودکار در HTTP-only cookie ذخیره می‌شود) const response = await fetch("/api/auth/login", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ email: formData.email, password: formData.password, }), }); if (!response.ok) { const error = await response.json(); throw new Error(error.message || "خطا در ورود"); } const data = await response.json(); // ذخیره user info در Redux (فقط برای UI) dispatch( setProfile( data.user || { email: formData.email } ) ); dispatch( showToast({ message: "خوش آمدید! شما با موفقیت وارد شدید", type: "success", }) ); // Redirect به صفحه اصلی // (middleware خودکار بررسی توکن را انجام می‌دهد) router.push("/"); } catch (error) { dispatch( showToast({ message: error.message || "خطایی در حین ورود رخ داد", type: "error", }) ); setErrors((prev) => ({ ...prev, submit: error.message, })); } finally { setIsLoading(false); } }; return (

خوش آمدید

لطفاً وارد حساب خود شوید

{errors.submit && (
{errors.submit}
)}
{/* Email Field */}
{errors.email && (

{errors.email}

)}
{/* Password Field */}
{errors.password && (

{errors.password}

)}
{/* Submit Button */}
{/* Register Link */}
حساب کاربری ندارید؟{" "} ثبت‌نام کنید
); }