"use client" import { useState, useEffect } from "react" import { useAuth } from "@/contexts/supabase-auth-context" import { supabase } from "@/lib/supabase" import { addVerifiedUser } from "@/lib/add-verified-user" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Alert, AlertDescription } from "@/components/ui/alert" import { swal } from "@/lib/sweetalert" export default function DebugAuthPage() { const { user, login, register, logout, isLoading } = useAuth() const [email, setEmail] = useState("") const [password, setPassword] = useState("") const [debugInfo, setDebugInfo] = useState({}) const [error, setError] = useState("") const [addUserEmail, setAddUserEmail] = useState("") const [addUserPassword, setAddUserPassword] = useState("") const [addUserUsername, setAddUserUsername] = useState("") useEffect(() => { // Get debug information about Supabase connection const getDebugInfo = async () => { try { const { data: { session }, error: sessionError } = await supabase.auth.getSession() const { data: { user: authUser }, error: userError } = await supabase.auth.getUser() setDebugInfo({ session: session ? "Present" : "None", sessionError: sessionError?.message || "None", authUser: authUser ? "Present" : "None", userError: userError?.message || "None", supabaseUrl: process.env.NEXT_PUBLIC_SUPABASE_URL || "Using fallback", supabaseKey: process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY ? "Present" : "Using fallback", currentUser: user ? "Present" : "None" }) } catch (err) { setDebugInfo({ error: err instanceof Error ? err.message : "Unknown error" }) } } getDebugInfo() }, [user]) const handleLogin = async (e: React.FormEvent) => { e.preventDefault() setError("") try { const success = await login(email, password) if (!success) { setError("Login failed") } } catch (err) { setError(err instanceof Error ? err.message : "Login error") } } const handleRegister = async (e: React.FormEvent) => { e.preventDefault() setError("") try { const success = await register(email.split('@')[0], email, password) if (!success) { setError("Registration failed") } } catch (err) { setError(err instanceof Error ? err.message : "Registration error") } } const testSupabaseConnection = async () => { try { // Test database connection instead of auth (which requires email confirmation) const { data, error } = await supabase .from('users') .select('count') .limit(1) setDebugInfo(prev => ({ ...prev, testConnection: error ? `Error: ${error.message}` : "Database connection successful" })) } catch (err) { setDebugInfo(prev => ({ ...prev, testConnection: `Error: ${err instanceof Error ? err.message : "Unknown error"}` })) } } const handleAddVerifiedUser = async (e: React.FormEvent) => { e.preventDefault() setError("") if (!addUserUsername || !addUserEmail || !addUserPassword) { setError("All fields are required") return } try { const result = await addVerifiedUser(addUserUsername, addUserEmail, addUserPassword) if (result.success) { setError("") swal.success("User added", "You can now log in with these credentials.") setAddUserUsername("") setAddUserEmail("") setAddUserPassword("") } else { setError(result.error || "Failed to add user") } } catch (err) { setError(err instanceof Error ? err.message : "Failed to add user") } } return (

Authentication Debug

{/* Debug Information */} Debug Information Current authentication state and Supabase connection
{Object.entries(debugInfo).map(([key, value]) => (
{key}: {String(value)}
))}
{/* Current User */} Current User {user ? (

Email: {user.email}

ID: {user.id}

Created: {user.created_at}

Last Sign In: {user.last_sign_in_at}

Email Confirmed: {user.email_confirmed_at ? "Yes" : "No"}

) : (

No user logged in

)}
{/* Login Form */} Test Login
{error && ( {error} )}
setEmail(e.target.value)} placeholder="Enter email" />
setPassword(e.target.value)} placeholder="Enter password" />
{/* Add Verified User */} Add Verified User Add a user to both Supabase Auth and your custom users table
{error && ( {error} )}
setAddUserUsername(e.target.value)} placeholder="Enter username" />
setAddUserEmail(e.target.value)} placeholder="Enter email" />
setAddUserPassword(e.target.value)} placeholder="Enter password" />
) }