fix: remove mfa factor is broken (#19734)

* chore: fixed issue when remove mfa factor is broken

* chore: use auth to remove mfa users

* chore: remove unuse code
This commit is contained in:
Austin Tran authored and GitHub committed 2024-01-10 06:19:34 +00:00
1 parent 88cd9076df
commit 8fbf22a9d3
1 file changed
+43
@@ -0,0 +1,43 @@
import { createClient } from '@supabase/supabase-js'
import apiWrapper from 'lib/api/apiWrapper'
import { NextApiRequest, NextApiResponse } from 'next'
const supabase = createClient(process.env.SUPABASE_URL!, process.env.SUPABASE_SERVICE_KEY!)
export default (req: NextApiRequest, res: NextApiResponse) => apiWrapper(req, res, handler)
async function handler(req: NextApiRequest, res: NextApiResponse) {
const { method } = req
switch (method) {
case 'DELETE':
return handleDelete(req, res)
default:
res.setHeader('Allow', ['DELETE'])
res.status(405).json({ data: null, error: { message: `Method ${method} Not Allowed` } })
}
}
const handleDelete = async (req: NextApiRequest, res: NextApiResponse) => {
const { id } = req.query
// Get all factors for the user
const { data: factors, error } = await supabase.auth.admin.mfa.listFactors({
userId: id as string,
})
if (error) {
return res.status(400).json({ error: { message: error.message } })
}
factors?.factors.forEach(async (factor: any) => {
const { error } = await supabase.auth.admin.mfa.deleteFactor({
id: factor.id,
userId: id as string,
})
if (error) {
return res.status(400).json({ error: { message: error.message } })
}
})
return res.status(200).json({ data: null, error: null })
}