From 7a02ae396e3a577a00200d6b33d3531ac7bb2a70 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Wed, 17 Jun 2026 18:30:53 +0300 Subject: [PATCH] move mfa.js to the rest of the API --- src/api/mfa.js | 46 ++++++++++++++++++++ src/components/mfa_form/recovery_form.js | 18 ++++---- src/components/mfa_form/totp_form.js | 18 ++++---- src/services/new_api/mfa.js | 54 ------------------------ 4 files changed, 64 insertions(+), 72 deletions(-) create mode 100644 src/api/mfa.js delete mode 100644 src/services/new_api/mfa.js diff --git a/src/api/mfa.js b/src/api/mfa.js new file mode 100644 index 000000000..ff5df6560 --- /dev/null +++ b/src/api/mfa.js @@ -0,0 +1,46 @@ +import { promisedRequest } from './helpers.js' + +export const verifyOTPCode = ({ + clientId, + clientSecret, + instance, + mfaToken, + code, +}) => { + const formData = new window.FormData() + + formData.append('client_id', clientId) + formData.append('client_secret', clientSecret) + formData.append('mfa_token', mfaToken) + formData.append('code', code) + formData.append('challenge_type', 'totp') + + return promisedRequest({ + url: '/oauth/mfa/challenge' + method: 'POST', + formData, + }) +} + +export const verifyRecoveryCode = ({ + clientId, + clientSecret, + instance, + mfaToken, + code, +}) => { + const url = `${instance}` + const formData = new window.FormData() + + formData.append('client_id', clientId) + formData.append('client_secret', clientSecret) + formData.append('mfa_token', mfaToken) + formData.append('code', code) + formData.append('challenge_type', 'recovery') + + return promisedRequest({ + url: '/oauth/mfa/challenge' + method: 'POST', + formData, + }) +} diff --git a/src/components/mfa_form/recovery_form.js b/src/components/mfa_form/recovery_form.js index f4ddcadd0..46e38d29c 100644 --- a/src/components/mfa_form/recovery_form.js +++ b/src/components/mfa_form/recovery_form.js @@ -1,6 +1,6 @@ import { mapActions, mapState, mapStores } from 'pinia' -import mfaApi from '../../services/new_api/mfa.js' +import { verifyRecoveryCode } from 'src/api/mfa.js' import { useAuthFlowStore } from 'src/stores/auth_flow.js' import { useInstanceStore } from 'src/stores/instance.js' @@ -43,18 +43,18 @@ export default { code: this.code, } - mfaApi.verifyRecoveryCode(data).then((result) => { - if (result.error) { - this.error = result.error + verifyRecoveryCode(data) + .then((result) => { + this.login(result).then(() => { + this.$router.push({ name: 'friends' }) + }) + }) + .catch((error) => { + this.error = error this.code = null this.focusOnCodeInput() return - } - - this.login(result).then(() => { - this.$router.push({ name: 'friends' }) }) - }) }, }, } diff --git a/src/components/mfa_form/totp_form.js b/src/components/mfa_form/totp_form.js index 6d51cba94..4cd635550 100644 --- a/src/components/mfa_form/totp_form.js +++ b/src/components/mfa_form/totp_form.js @@ -1,6 +1,6 @@ import { mapActions, mapState, mapStores } from 'pinia' -import mfaApi from '../../services/new_api/mfa.js' +import { verifyOTPCode } from 'src/api/mfa.js' import { useAuthFlowStore } from 'src/stores/auth_flow.js' import { useInstanceStore } from 'src/stores/instance.js' @@ -46,18 +46,18 @@ export default { code: this.code, } - mfaApi.verifyOTPCode(data).then((result) => { - if (result.error) { - this.error = result.error + verifyOTPCode(data) + .then(({ data: result }) => { + this.login(result).then(() => { + this.$router.push({ name: 'friends' }) + }) + }) + .catch((error) => { + this.error = error this.code = null this.focusOnCodeInput() return - } - - this.login(result).then(() => { - this.$router.push({ name: 'friends' }) }) - }) }, }, } diff --git a/src/services/new_api/mfa.js b/src/services/new_api/mfa.js deleted file mode 100644 index 1d35b65a8..000000000 --- a/src/services/new_api/mfa.js +++ /dev/null @@ -1,54 +0,0 @@ -const verifyOTPCode = ({ - clientId, - clientSecret, - instance, - mfaToken, - code, -}) => { - const url = `${instance}/oauth/mfa/challenge` - const form = new window.FormData() - - form.append('client_id', clientId) - form.append('client_secret', clientSecret) - form.append('mfa_token', mfaToken) - form.append('code', code) - form.append('challenge_type', 'totp') - - return window - .fetch(url, { - method: 'POST', - body: form, - }) - .then((data) => data.json()) -} - -const verifyRecoveryCode = ({ - clientId, - clientSecret, - instance, - mfaToken, - code, -}) => { - const url = `${instance}/oauth/mfa/challenge` - const form = new window.FormData() - - form.append('client_id', clientId) - form.append('client_secret', clientSecret) - form.append('mfa_token', mfaToken) - form.append('code', code) - form.append('challenge_type', 'recovery') - - return window - .fetch(url, { - method: 'POST', - body: form, - }) - .then((data) => data.json()) -} - -const mfa = { - verifyOTPCode, - verifyRecoveryCode, -} - -export default mfa