"use client"; import { useState } from "react"; import { useAppDispatch, useAppSelector } from "@/lib/hooks"; import { login } from "@/lib/features/auth/authSlice"; import { useRouter } from "next/navigation"; import { Turnstile } from "nextjs-turnstile"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import { AlertCircle, Loader2 } from "lucide-react"; import Link from "next/link"; import Swal from 'sweetalert2' import { loginSchema } from "@/lib/schemas/login"; export default function LoginPage() { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [formErrors, setFormErrors] = useState>({}); const [turnstileToken, setTurnstileToken] = useState(null); const dispatch = useAppDispatch(); const { isLoading, error } = useAppSelector((state) => state.auth); const router = useRouter(); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setFormErrors({}); // Zod Validation const result = loginSchema.safeParse({ email, password }); if (!result.success) { const errors: Record = {}; result.error.issues.forEach((issue) => { const path = issue.path[0]; if (typeof path === 'string') { errors[path] = issue.message; } }); setFormErrors(errors); return; } if (!turnstileToken) { Swal.fire({ icon: 'error', title: 'Hata', text: 'Lütfen doğrulamayı tamamlayın (Turnstile).', }) return; } const dispatchResult = await dispatch(login({ email, password })); if (login.fulfilled.match(dispatchResult)) { Swal.fire({ position: "center", icon: "success", title: "Giriş Başarılı", showConfirmButton: false, timer: 1500 }); router.push("/admin"); } }; return ( Giriş Yap Admin paneline erişmek için giriş yapın
setEmail(e.target.value)} // required override by Zod /> {formErrors.email &&

{formErrors.email}

}
setPassword(e.target.value)} // required override by Zod /> {formErrors.password &&

{formErrors.password}

}
setTurnstileToken(token)} />
{error && (
{error}
)}

Hesabınız yok mu?{" "} Kayıt Ol

); }