I was trying to follow the docs to activate MFA: https://appwrite.io/docs/products/auth/mfa
But when I called the account.updateMFA(true) I got the following exception:
AppwriteException: Invalid document structure: Attribute "factors" must be an array
idk if there's a missing step in the docs or I'm doing it incorrectly
This is the code I'm using (it's vue 3, but this is just JS):
Here's the Vue code I'm using:
// STEP 1
const recoveryCodes = ref<Models.MfaRecoveryCodes | undefined>()
async function startMfaRecoveryCodes() {
try {
step.value = MFA_STEPS.RECOVERY_CODES
showMfaModal.value = true
const res = await appwriteStore.account.createMfaRecoveryCodes()
recoveryCodes.value = res
console.log('Step 1', res)
} catch (error) {
console.error(error)
if (error instanceof AppwriteException) {
alert(error.message)
return
}
alert('Error loading thing')
}
}
//STEP 2
const mfaUri = ref<string | undefined>()
const otp = ref('')
async function makeMfaAuth() {
try {
const res = await appwriteStore.account.createMfaAuthenticator(AuthenticatorType.Totp)
mfaUri.value = res.uri
console.log('Step 2', res)
step.value = MFA_STEPS.VERIFY_MFA_FACTOR
} catch (error) {
console.error(error)
if (error instanceof AppwriteException) {
alert(error.message)
return
}
alert('Error loading MFA')
}
}
// STEP 3
async function enableOtp() {
try {
const resMfaAuth = await appwriteStore.account.updateMfaAuthenticator(
AuthenticatorType.Totp,
otp.value,
)
console.log('Step 3: MFA', resMfaAuth)
const mfaFactors = await appwriteStore.account.listMfaFactors()
console.log(mfaFactors)
// THIS GENERATES ERROR
const resUpdate = await appwriteStore.account.updateMFA(true)
console.log('Step 3: Update', resUpdate)
alert('MFA activated')
authStore.reloadUserAccount()
showMfaModal.value = false
} catch (error) {
console.error(error)
if (error instanceof AppwriteException) {
alert(error.message)
return
}
alert('Error Validating OTP')
}
}
Recommended threads
- How to disable appwrite/embedding from s...
Hi everyone! I'm currently running a self-hosted instance of Appwrite. For my current use case, I don't need the AI/embedding features, and I noticed the `app...
- Invalid type for attribute 'email': emai...
I'm using the node-appwrite SDK to create a table, the column payload looks like this: ```json [{"key":"email","type":"email","required":true, "size": 512}] ``...
- Git connection is not working anymore on...
Hello all, I updated from 1.8.1 to 1.9.0 then 1.9.5. All seems to work even the Github connection. In Git configuration I see my Github user but when trying to...