Skip to content

Commit 284740a

Browse files
authored
fix: ID-3129 Prevent Unknown or invalid refresh token requests from being triggered multiple times (#2479)
1 parent 8ea903d commit 284740a

File tree

2 files changed

+16
-3
lines changed

2 files changed

+16
-3
lines changed

packages/passport/sdk/src/authManager.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ describe('AuthManager', () => {
460460

461461
await expect(() => authManager.getUser()).rejects.toThrow(
462462
new PassportError(
463-
'Failed to refresh token: oops',
463+
'Failed to refresh token: oops: Failed to remove user: this.userManager.removeUser is not a function',
464464
PassportErrorType.AUTHENTICATION_ERROR,
465465
),
466466
);

packages/passport/sdk/src/authManager.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -481,18 +481,31 @@ export default class AuthManager {
481481
} catch (err) {
482482
let passportErrorType = PassportErrorType.AUTHENTICATION_ERROR;
483483
let errorMessage = 'Failed to refresh token';
484+
let removeUser = true;
484485

485486
if (err instanceof ErrorTimeout) {
486487
passportErrorType = PassportErrorType.SILENT_LOGIN_ERROR;
488+
errorMessage = `${errorMessage}: ${err.message}`;
489+
removeUser = false;
487490
} else if (err instanceof ErrorResponse) {
488491
passportErrorType = PassportErrorType.NOT_LOGGED_IN_ERROR;
489-
errorMessage = `${err.message}: ${err.error_description}`;
492+
errorMessage = `${errorMessage}: ${err.message || err.error_description}`;
490493
} else if (err instanceof Error) {
491-
errorMessage = err.message;
494+
errorMessage = `${errorMessage}: ${err.message}`;
492495
} else if (typeof err === 'string') {
493496
errorMessage = `${errorMessage}: ${err}`;
494497
}
495498

499+
if (removeUser) {
500+
try {
501+
await this.userManager.removeUser();
502+
} catch (removeUserError) {
503+
if (removeUserError instanceof Error) {
504+
errorMessage = `${errorMessage}: Failed to remove user: ${removeUserError.message}`;
505+
}
506+
}
507+
}
508+
496509
reject(new PassportError(errorMessage, passportErrorType));
497510
} finally {
498511
this.refreshingPromise = null; // Reset the promise after completion

0 commit comments

Comments
 (0)