mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2025-11-11 04:52:36 +10:00
UserContext, deleteAccount: if provider is google, use reauthenticateWithPopup to reauthenticate user
This commit is contained in:
@ -46,7 +46,7 @@ const Settings = ({ id }) => {
|
|||||||
try {
|
try {
|
||||||
await deleteAccount();
|
await deleteAccount();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
toast.error('An error occurred deleting your account');
|
toast.error('An error occurred deleting your account.');
|
||||||
setDeleteText(t('builder.settings.dangerZone.button'));
|
setDeleteText(t('builder.settings.dangerZone.button'));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -73,22 +73,55 @@ const UserProvider = ({ children }) => {
|
|||||||
navigate('/');
|
navigate('/');
|
||||||
};
|
};
|
||||||
|
|
||||||
const deleteAccount = async () => {
|
const reauthenticateWithGoogle = async () => {
|
||||||
const { currentUser } = firebase.auth();
|
const { currentUser } = firebase.auth();
|
||||||
|
const provider = new firebase.auth.GoogleAuthProvider();
|
||||||
|
|
||||||
|
try {
|
||||||
|
const userCredential = await currentUser.reauthenticateWithPopup(
|
||||||
|
provider,
|
||||||
|
);
|
||||||
|
return userCredential;
|
||||||
|
} catch (error) {
|
||||||
|
toast.error(error.message);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const reauthenticate = async () => {
|
||||||
|
const { currentUser } = firebase.auth();
|
||||||
|
|
||||||
|
if (currentUser.isAnonymous) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const googleAuthProvider = new firebase.auth.GoogleAuthProvider();
|
||||||
const authProviderIsGoogle =
|
const authProviderIsGoogle =
|
||||||
|
currentUser.providerData &&
|
||||||
currentUser.providerData.length > 0 &&
|
currentUser.providerData.length > 0 &&
|
||||||
currentUser.providerData[0].providerId === 'google.com';
|
currentUser.providerData[0].providerId === googleAuthProvider.providerId;
|
||||||
const deleteUser = firebase.functions().httpsCallable('deleteUser');
|
|
||||||
|
|
||||||
if (authProviderIsGoogle) {
|
if (authProviderIsGoogle) {
|
||||||
const userCredential = await loginWithGoogle();
|
await reauthenticateWithGoogle();
|
||||||
await currentUser.reauthenticateWithCredential(userCredential.credential);
|
} else {
|
||||||
|
const errorMessage = 'Unable to determine reauthentication method.';
|
||||||
|
toast.error(errorMessage);
|
||||||
|
throw new Error(errorMessage);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const deleteAccount = async () => {
|
||||||
|
const { currentUser } = firebase.auth();
|
||||||
|
const deleteUser = firebase.functions().httpsCallable('deleteUser');
|
||||||
|
|
||||||
|
await reauthenticate();
|
||||||
|
|
||||||
await deleteUser();
|
await deleteUser();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await currentUser.delete();
|
await currentUser.delete();
|
||||||
|
} catch (error) {
|
||||||
|
toast.error(error.message);
|
||||||
} finally {
|
} finally {
|
||||||
logout();
|
logout();
|
||||||
toast(
|
toast(
|
||||||
|
|||||||
Reference in New Issue
Block a user