"use client" import React, { useState } from 'react' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { loginSchema, LoginInput } 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 { Turnstile } from 'nextjs-turnstile' import { signIn } from 'next-auth/react' import Swal from 'sweetalert2' import { useRouter } from 'next/navigation' import Link from 'next/link' const LoginPage = () => { const [isLoading, setIsLoading] = useState(false) const [turnstileToken, setTurnstileToken] = useState(null) const router = useRouter() const { register, handleSubmit, formState: { errors }, } = useForm({ resolver: zodResolver(loginSchema), }) const siteKey = process.env.NEXT_PUBLIC_TURNSTILE_SITEKEY const onSubmit = async (data: LoginInput) => { 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 result = await signIn('credentials', { redirect: false, email: data.email, password: data.password, }) if (result?.error) { throw new Error(result.error) } if (result?.ok) { Swal.fire({ icon: 'success', title: 'Giriş Başarılı', text: 'Yönlendiriliyorsunuz...', timer: 1500, showConfirmButton: false, }).then(() => { const callbackUrl = new URLSearchParams(window.location.search).get("callbackUrl") || "/" router.push(callbackUrl) router.refresh() }) } } catch { Swal.fire({ icon: 'error', title: 'Giriş Başarısız', text: 'E-posta veya şifre hatalı olabilir.', }) } finally { setIsLoading(false) } } return (
Giriş Yap Hesabınıza erişmek için bilgilerinizi girin
{errors.email && (

{errors.email.message}

)}
Şifremi Unuttum?
{errors.password && (

{errors.password.message}

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

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

) } export default LoginPage