import { type DjangoPaginatedResponse, axios } from '@baseapp-frontend/utils' import type { LoginMfaRequest } from '../types/auth' import type { MfaActivationResponse, MfaActiveMethodResponse, MfaConfigurationResponse, MfaConfirmationResponse, MfaDeactivateRequest, MfaRequest, } from '../types/mfa' const baseUrl = '/auth' export default class MfaApi { static activate({ method }: Pick): Promise { return axios.post(`${baseUrl}/${method}/activate/`) } static confirmActivation({ method, code }: MfaRequest): Promise { return axios.post(`${baseUrl}/${method}/activate/confirm/`, { code }) } static getActiveMethods(): Promise> { return axios.get(`${baseUrl}/mfa/user-active-methods/`) } static getConfiguration(): Promise { return axios.get(`${baseUrl}/mfa/config/`) } static sendCode(): Promise { return axios.get(`${baseUrl}/code/request/`) } static deactivate({ method, code }: MfaDeactivateRequest): Promise { return axios.post(`${baseUrl}/${method}/deactivate/`, { code }) } static regenerateBackupCodes({ method, code }: MfaRequest): Promise { return axios.post(`${baseUrl}/${method}/codes/regenerate/`, { code }) } // TODO: review this endpoint static loginStep2(data: LoginMfaRequest): Promise { return axios.post('/auth/login/code', data) } } export const MFA_API_KEY = { default: ['mfa'], getActiveMethods: () => [...MFA_API_KEY.default, 'getActiveMethods'] as const, getConfiguration: () => [...MFA_API_KEY.default, 'getConfiguration'] as const, sendCode: () => [...MFA_API_KEY.default, 'sendCode'] as const, }