import { setAuthCredentials, throwErrorMessage, clearLocalStorageOnLogout, } from 'dashboard/store/utils/api'; import wootAPI from './apiClient'; import { getLoginRedirectURL } from '../helpers/AuthHelper'; export const login = async ({ ssoAccountId, ssoConversationId, ...credentials }) => { try { const response = await wootAPI.post('auth/sign_in', credentials); // Check if MFA is required if (response.status === 206 && response.data.mfa_required) { // Return MFA data instead of throwing error return { mfaRequired: true, mfaToken: response.data.mfa_token, }; } setAuthCredentials(response); clearLocalStorageOnLogout(); window.location = getLoginRedirectURL({ ssoAccountId, ssoConversationId, user: response.data.data, }); return null; } catch (error) { // Check if it's an MFA required response if (error.response?.status === 206 && error.response?.data?.mfa_required) { return { mfaRequired: true, mfaToken: error.response.data.mfa_token, }; } throwErrorMessage(error); return null; } }; export const register = async creds => { try { const response = await wootAPI.post('api/v1/accounts.json', { account_name: creds.accountName.trim(), user_full_name: creds.fullName.trim(), email: creds.email, password: creds.password, h_captcha_client_response: creds.hCaptchaClientResponse, }); setAuthCredentials(response); return response.data; } catch (error) { throwErrorMessage(error); } return null; }; export const verifyPasswordToken = async ({ confirmationToken }) => { try { const response = await wootAPI.post('auth/confirmation', { confirmation_token: confirmationToken, }); setAuthCredentials(response); } catch (error) { throwErrorMessage(error); } }; export const setNewPassword = async ({ resetPasswordToken, password, confirmPassword, }) => { try { const response = await wootAPI.put('auth/password', { reset_password_token: resetPasswordToken, password_confirmation: confirmPassword, password, }); setAuthCredentials(response); } catch (error) { throwErrorMessage(error); } }; export const resetPassword = async ({ email }) => wootAPI.post('auth/password', { email });