"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; import Button1 from "../../ui/buttons/button1"; import { account } from "../../lib/appwrite"; import { useRouter } from "next/navigation"; import { useAuth } from "../../context/AuthContext"; export default function SignInPage() { const [darkMode, setDarkMode] = useState(false); const { setIsAuthenticated } = useAuth(); const router = useRouter(); const [formData, setFormData] = useState({ email: "", password: "", rememberMe: false, }); const [showPassword, setShowPassword] = useState(false); const [loading, setLoading] = useState(false); useEffect(() => { const checkAuth = async () => { try { const user = await account.get(); if (user) { localStorage.setItem("isLoggedIn", "true"); router.push("/dashboard"); } } catch (error) { console.warn("No active session:", error); localStorage.removeItem("isLoggedIn"); } }; checkAuth(); }, [router]); const handleChange = (e) => { const { name, value, type, checked } = e.target; setFormData({ ...formData, [name]: type === "checkbox" ? checked : value, }); }; const handleSubmit = async (e) => { e.preventDefault(); setLoading(true); try { // Use the correct method name: createEmailPasswordSession const session = await account.createEmailPasswordSession( formData.email, formData.password ); if (session) { const user = await account.get(); if (user) { localStorage.setItem("isLoggedIn", "true"); setIsAuthenticated(true); router.push("/dashboard"); } } } catch (error) { // console.error("Login error:", error); // Improved error handling let errorMessage = 'Login failed. Please try again.'; if (error.type === 'user_invalid_credentials') { errorMessage = 'Invalid email or password'; } else if (error.type === 'general_argument_invalid') { errorMessage = 'Invalid email format'; } alert(errorMessage); } finally { setLoading(false); } }; return (
Enter your email and password to sign in!
Don't have an accoun?{" "} Sign Up
Free and Open-Source Tailwind CSS Admin Dashboard Template