fix(auth): harden logout proxy traps from review feedback

- get() now returns undefined for logged-out providers instead of
  delegating to target.get() which could bypass the guard
- getCredential() in provider-auth returns undefined for logged-out
  providers instead of falling through to authStorage.get()
- getAll() skips logged-out providers at top of loop
- list() filters modelsJsonApiKeys against loggedOutProviders
- Added remove() trap in provider-auth for clearApiKey flow

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Timothy Laurent
2026-05-05 21:21:33 -07:00
parent 148b2e8f4c
commit 7724cadaf4
2 changed files with 19 additions and 4 deletions

View File

@@ -157,7 +157,7 @@ export function mergeAuthStorageReads(
const getCredential = (providerId: string) => {
if (loggedOutProviders.has(providerId)) {
return authStorage.get(providerId) as StoredCredential | undefined;
return undefined;
}
return selectCredential(providerId, readAuthStorages);
};
@@ -190,6 +190,13 @@ export function mergeAuthStorageReads(
};
}
if (prop === "remove") {
return (provider: string) => {
loggedOutProviders.add(provider);
target.remove(provider);
};
}
if (prop === "set") {
return (provider: string, credential: AuthCredential) => {
loggedOutProviders.delete(provider);