import { useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import Head from "next/head"; import Image from "next/image"; import Link from "next/link"; import { useRouter } from "next/router"; import axios from "axios" // import ListBox from '@app/components/basic/Listbox'; import InitialLoginStep from "@app/components/login/InitialLoginStep"; import MFAStep from "@app/components/login/MFAStep"; import PasswordInputStep from "@app/components/login/PasswordInputStep"; import { fetchUserDetails } from "@app/hooks/api/users/queries"; import { useProviderAuth } from "@app/hooks/useProviderAuth"; import { getAuthToken, isLoggedIn } from "@app/reactQuery"; import getOrganizations from "./api/organization/getOrgs"; export default function Login() { const router = useRouter(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [step, setStep] = useState(1); const { t } = useTranslation(); // const lang = router.locale ?? 'en'; const { providerAuthToken, email: providerEmail, setProviderAuthToken, isProviderUserCompleted } = useProviderAuth(); if (providerAuthToken && isProviderUserCompleted === false) { router.push(`/signup?providerAuthToken=${encodeURIComponent(providerAuthToken)}`); } // const setLanguage = async (to: string) => { // router.push('/login', '/login', { locale: to }); // localStorage.setItem('lang', to); // }; useEffect(() => { // TODO(akhilmhdh): workspace will be controlled by a workspace context const redirectToDashboard = async () => { try { const userOrgs = await getOrganizations(); // userWorkspace = userWorkspaces[0] && userWorkspaces[0]._id; const userOrg = userOrgs[0] && userOrgs[0]._id; // user details const userDetails = await fetchUserDetails() // send details back to client const queryParams = new URLSearchParams(window.location.search) if (queryParams && queryParams.get("callback_port")) { const callbackPort = queryParams.get("callback_port") // send post request to cli with details const cliUrl = `http://localhost:${callbackPort}` const instance = axios.create() await instance.post(cliUrl, { email: userDetails.email, privateKey: localStorage.getItem("PRIVATE_KEY"), JTWToken: getAuthToken() }) } router.push(`/org/${userOrg}/overview`); } catch (error) { console.log("Error - Not logged in yet"); } }; if (isLoggedIn()) { redirectToDashboard(); } }, []); const renderView = (loginStep: number) => { if (providerAuthToken && step === 1) { return ( ); } if (loginStep === 1) { return ; } if (step === 2) { return ( ); } return
; }; return (
{t("common.head-title", { title: t("login.title") })}
Infisical logo
{renderView(step)} {/*
*/}
); }