From f53e34c37d811cede37301ca3ff7b5cd6ce8c438 Mon Sep 17 00:00:00 2001 From: gianantoniopini <63844628+gianantoniopini@users.noreply.github.com> Date: Fri, 23 Apr 2021 17:30:25 +0200 Subject: [PATCH] UserContext, deleteAccount: if provider is google, always reauthenticate the user before performing any delete --- src/contexts/UserContext.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/contexts/UserContext.js b/src/contexts/UserContext.js index 95dc558e..6491f8ee 100644 --- a/src/contexts/UserContext.js +++ b/src/contexts/UserContext.js @@ -75,17 +75,20 @@ const UserProvider = ({ children }) => { const deleteAccount = async () => { const { currentUser } = firebase.auth(); + const authProviderIsGoogle = + currentUser.providerData.length > 0 && + currentUser.providerData[0].providerId === 'google.com'; const deleteUser = firebase.functions().httpsCallable('deleteUser'); + if (authProviderIsGoogle) { + const userCredential = await loginWithGoogle(); + await currentUser.reauthenticateWithCredential(userCredential.credential); + } + await deleteUser(); try { await currentUser.delete(); - } catch (error) { - if (error.code === 'auth/requires-recent-login') { - await loginWithGoogle(); - await currentUser.delete(); - } } finally { logout(); toast(