54 lines
1.2 KiB
JavaScript
54 lines
1.2 KiB
JavaScript
import mfaApi from '../../services/new_api/mfa.js'
|
|
import { mapState, mapGetters, mapActions, mapMutations } from 'vuex'
|
|
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: {
|
|
...mapGetters({
|
|
authSettings: 'authFlow/settings'
|
|
}),
|
|
...mapState({
|
|
instance: 'instance',
|
|
oauth: 'oauth'
|
|
})
|
|
},
|
|
methods: {
|
|
...mapMutations('authFlow', ['requireRecovery', 'abortMFA']),
|
|
...mapActions({ login: 'authFlow/login' }),
|
|
clearError () { this.error = false },
|
|
submit () {
|
|
const { clientId, clientSecret } = this.oauth
|
|
|
|
const data = {
|
|
clientId,
|
|
clientSecret,
|
|
instance: this.instance.server,
|
|
mfaToken: this.authSettings.mfa_token,
|
|
code: this.code
|
|
}
|
|
|
|
mfaApi.verifyOTPCode(data).then((result) => {
|
|
if (result.error) {
|
|
this.error = result.error
|
|
this.code = null
|
|
return
|
|
}
|
|
|
|
this.login(result).then(() => {
|
|
this.$router.push({ name: 'friends' })
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|