Page MenuHomePhorge

No OneTemporary

Authored By
Unknown
Size
6 KB
Referenced Files
None
Subscribers
None
diff --git a/src/api/mfa.js b/src/api/mfa.js
new file mode 100644
index 0000000000..ff5df65607
--- /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 f4ddcadd0a..46e38d29cf 100644
--- a/src/components/mfa_form/recovery_form.js
+++ b/src/components/mfa_form/recovery_form.js
@@ -1,60 +1,60 @@
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'
import { useOAuthStore } from 'src/stores/oauth.js'
import { library } from '@fortawesome/fontawesome-svg-core'
import { faTimes } from '@fortawesome/free-solid-svg-icons'
library.add(faTimes)
export default {
data: () => ({
code: null,
error: false,
}),
computed: {
...mapStores(useOAuthStore),
...mapState(useOAuthStore, ['clientId', 'clientSecret']),
...mapState(useAuthFlowStore, ['settings']),
...mapState(useInstanceStore, ['server']),
},
methods: {
...mapActions(useAuthFlowStore, ['requireTOTP', 'abortMFA', 'login']),
clearError() {
this.error = false
},
focusOnCodeInput() {
const codeInput = this.$refs.codeInput
codeInput.focus()
codeInput.setSelectionRange(0, codeInput.value.length)
},
submit() {
const data = {
clientId: this.clientId,
clientSecret: this.clientSecret,
instance: this.server,
mfaToken: this.settings.mfa_token,
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 6d51cba944..4cd6355500 100644
--- a/src/components/mfa_form/totp_form.js
+++ b/src/components/mfa_form/totp_form.js
@@ -1,63 +1,63 @@
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'
import { useOAuthStore } from 'src/stores/oauth.js'
import { library } from '@fortawesome/fontawesome-svg-core'
import { faTimes } from '@fortawesome/free-solid-svg-icons'
library.add(faTimes)
export default {
data: () => ({
code: null,
error: false,
}),
computed: {
...mapState(useAuthFlowStore, {
authSettings: (store) => store.settings,
}),
...mapState(useInstanceStore, ['server']),
...mapStores(useOAuthStore),
},
methods: {
...mapActions(useAuthFlowStore, ['requireRecovery', 'abortMFA', 'login']),
clearError() {
this.error = false
},
focusOnCodeInput() {
const codeInput = this.$refs.codeInput
codeInput.focus()
codeInput.setSelectionRange(0, codeInput.value.length)
},
submit() {
const { clientId, clientSecret } = this.oauthStore
const data = {
clientId,
clientSecret,
instance: this.server,
mfaToken: this.authSettings.mfa_token,
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 1d35b65a8b..0000000000
--- 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

File Metadata

Mime Type
text/x-diff
Expires
Fri, Oct 30, 2:45 AM (1 d, 6 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1799241
Default Alt Text
(6 KB)

Event Timeline