'use client'; import { useState } from 'react'; import { useRouter } from 'next/navigation'; import { signIn } from 'next-auth/react'; import Link from 'next/link'; export default function LoginPage() { const router = useRouter(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [showPassword, setShowPassword] = useState(false); const [error, setError] = useState(''); const [loading, setLoading] = useState(false); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); setError(''); try { // First, validate credentials with backend to get proper error messages const validateRes = await fetch(`${process.env.NEXT_PUBLIC_API_URL}/auth/login`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ email, password }), }); const validateData = await validateRes.json(); if (!validateRes.ok) { // Show the actual error message from backend setError(validateData.message || 'Invalid email or password'); setLoading(false); return; } // If validation passed, use NextAuth to create session const result = await signIn('credentials', { email, password, redirect: false, }); setLoading(false); if (result?.error) { setError('Login failed. Please try again.'); } else { router.push('/'); router.refresh(); } } catch (err) { setLoading(false); setError('An error occurred. Please try again.'); } }; const handleSocialLogin = (provider: 'google' | 'facebook' | 'twitter') => { signIn(provider, { callbackUrl: '/' }); }; return (
Sign in to your account to access your real estate dashboard and manage your properties