mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-22 20:51:29 +10:00
UserContext, deleteAccount: if provider is google, always reauthenticate the user before performing any delete
This commit is contained in:
@ -75,17 +75,20 @@ const UserProvider = ({ children }) => {
|
|||||||
|
|
||||||
const deleteAccount = async () => {
|
const deleteAccount = async () => {
|
||||||
const { currentUser } = firebase.auth();
|
const { currentUser } = firebase.auth();
|
||||||
|
const authProviderIsGoogle =
|
||||||
|
currentUser.providerData.length > 0 &&
|
||||||
|
currentUser.providerData[0].providerId === 'google.com';
|
||||||
const deleteUser = firebase.functions().httpsCallable('deleteUser');
|
const deleteUser = firebase.functions().httpsCallable('deleteUser');
|
||||||
|
|
||||||
|
if (authProviderIsGoogle) {
|
||||||
|
const userCredential = await loginWithGoogle();
|
||||||
|
await currentUser.reauthenticateWithCredential(userCredential.credential);
|
||||||
|
}
|
||||||
|
|
||||||
await deleteUser();
|
await deleteUser();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await currentUser.delete();
|
await currentUser.delete();
|
||||||
} catch (error) {
|
|
||||||
if (error.code === 'auth/requires-recent-login') {
|
|
||||||
await loginWithGoogle();
|
|
||||||
await currentUser.delete();
|
|
||||||
}
|
|
||||||
} finally {
|
} finally {
|
||||||
logout();
|
logout();
|
||||||
toast(
|
toast(
|
||||||
|
|||||||
Reference in New Issue
Block a user