
import { supabase } from "@/integrations/supabase/client";

export type LoginResult =
  | { success: true }
  | { success: false; errorCode?: string };

function getAuthErrorCode(error: unknown) {
  if (typeof error === "object" && error !== null && "code" in error) {
    const code = (error as { code?: unknown }).code;
    return typeof code === "string" ? code : undefined;
  }

  return undefined;
}

/**
 * Authenticates a user with email and password
 */
export async function login(email: string, password: string): Promise<LoginResult> {
  console.group('🔑 Tentative de connexion');
  console.info('Email:', email);

  try {
    const { data, error } = await supabase.auth.signInWithPassword({
      email,
      password,
    });

    if (error) {
      throw error;
    }

    if (data.user) {
      console.info('Connexion réussie pour:', data.user.email);
      console.info('Session créée:', !!data.session);
      console.groupEnd();
      return { success: true };
    }

    console.warn('⚠️ Connexion réussie mais aucun utilisateur retourné');
    console.groupEnd();
    return { success: false };
  } catch (error) {
    console.error('❌ Erreur de connexion:', error);
    console.groupEnd();
    return { success: false, errorCode: getAuthErrorCode(error) };
  }
}
