import axios from "axios"; import { saveSession } from "./saveSession"; import Cookies from 'js-cookie'; import { signInWithProvider } from "./signInWithProvider"; import getApi from "../system/getAPI"; import apiCall from "../system/apiCall"; import APIResponse from "@/interfaces/APIResponse"; export async function signIn({ provider, data }: any): Promise<{ data: APIResponse }> { try { let response: any; const storedSession = Cookies.get('ultimapanel-auth-session'); if (storedSession) throw 'You are already logged in!'; switch (provider) { case 'username': case 'email': if (!data || !data.password || !data[provider]) throw "Credentials are missing."; // Construct the user payload using either email or username let userPayload = { provider: 'credentials', user: { [provider]: data[provider], password: data.password } }; // Existing logic with modified payload response = (await apiCall.post( `/auth/signin`, userPayload, )).data; break; case 'credentials': // Ensure at least one identifier is provided if (!data || !data.password || !data.credentials) throw "Credentials are missing."; // Dynamic logic to choose user identity field response = (await apiCall.post( `/auth/signin`, { provider: 'credentials', user: { credentials: data.credentials, password: data.password }, } )).data; break; default: if (!provider) throw 'No provider specified.'; response = await signInWithProvider(provider); break; } return { data: response, }; } catch (error: any) { console.error(`Error signing in:`, error); throw error; } };