fix(auth): update tombstones after storage writes to prevent state drift
Reorder logout/set/remove traps so in-memory loggedOutProviders is only updated after the underlying storage write succeeds. If target.logout() or target.set() throws, the tombstone set now stays consistent with the actual storage state. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -185,22 +185,22 @@ export function mergeAuthStorageReads(
|
||||
get(target, prop, receiver) {
|
||||
if (prop === "logout") {
|
||||
return (provider: string) => {
|
||||
loggedOutProviders.add(provider);
|
||||
target.logout(provider);
|
||||
loggedOutProviders.add(provider);
|
||||
};
|
||||
}
|
||||
|
||||
if (prop === "remove") {
|
||||
return (provider: string) => {
|
||||
loggedOutProviders.add(provider);
|
||||
target.remove(provider);
|
||||
loggedOutProviders.add(provider);
|
||||
};
|
||||
}
|
||||
|
||||
if (prop === "set") {
|
||||
return (provider: string, credential: AuthCredential) => {
|
||||
loggedOutProviders.delete(provider);
|
||||
target.set(provider, credential);
|
||||
loggedOutProviders.delete(provider);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user