mirror of
https://github.com/wkulhanek/bonob.git
synced 2025-12-21 17:33:29 +01:00
More token refresh fixes
This commit is contained in:
@@ -547,7 +547,7 @@ function bindSmapiSoapServiceToExpress(
|
|||||||
logger.info("Token refresh successful, issuing new SMAPI token");
|
logger.info("Token refresh successful, issuing new SMAPI token");
|
||||||
return smapiAuthTokens.issue(it.serviceToken);
|
return smapiAuthTokens.issue(it.serviceToken);
|
||||||
}),
|
}),
|
||||||
TE.tap(swapToken(undefined)), // Don't pass old token to avoid circular reference issues
|
TE.tap(swapToken(authOrFail.expiredToken)), // Pass the expired token to ensure it gets deleted
|
||||||
TE.map((newToken) => ({
|
TE.map((newToken) => ({
|
||||||
Fault: {
|
Fault: {
|
||||||
faultcode: "Client.TokenRefreshRequired",
|
faultcode: "Client.TokenRefreshRequired",
|
||||||
@@ -616,7 +616,7 @@ function bindSmapiSoapServiceToExpress(
|
|||||||
return pipe(
|
return pipe(
|
||||||
musicService.refreshToken(serviceToken),
|
musicService.refreshToken(serviceToken),
|
||||||
TE.map((it) => smapiAuthTokens.issue(it.serviceToken)),
|
TE.map((it) => smapiAuthTokens.issue(it.serviceToken)),
|
||||||
TE.tap(swapToken(undefined)), // Don't pass old token to avoid circular reference issues
|
TE.tap(swapToken(serviceToken)), // Pass the expired token to ensure it gets deleted
|
||||||
TE.map((it) => ({
|
TE.map((it) => ({
|
||||||
refreshAuthTokenResult: {
|
refreshAuthTokenResult: {
|
||||||
authToken: it.token,
|
authToken: it.token,
|
||||||
|
|||||||
@@ -45,9 +45,9 @@ export class InMemorySmapiTokenStore implements SmapiTokenStore {
|
|||||||
// Do NOT delete ExpiredTokenError as those can still be refreshed
|
// Do NOT delete ExpiredTokenError as those can still be refreshed
|
||||||
if (E.isLeft(verifyResult)) {
|
if (E.isLeft(verifyResult)) {
|
||||||
const error = verifyResult.left;
|
const error = verifyResult.left;
|
||||||
// Only delete invalid tokens, not expired ones (which can be refreshed)
|
// Delete both invalid and expired tokens to prevent accumulation
|
||||||
if (error._tag === 'InvalidTokenError') {
|
if (error._tag === 'InvalidTokenError' || error._tag === 'ExpiredTokenError') {
|
||||||
logger.debug(`Deleting invalid token from in-memory store`);
|
logger.debug(`Deleting ${error._tag} token from in-memory store`);
|
||||||
delete this.tokens[tokenKey];
|
delete this.tokens[tokenKey];
|
||||||
deletedCount++;
|
deletedCount++;
|
||||||
}
|
}
|
||||||
@@ -146,9 +146,9 @@ export class FileSmapiTokenStore implements SmapiTokenStore {
|
|||||||
// Do NOT delete ExpiredTokenError as those can still be refreshed
|
// Do NOT delete ExpiredTokenError as those can still be refreshed
|
||||||
if (E.isLeft(verifyResult)) {
|
if (E.isLeft(verifyResult)) {
|
||||||
const error = verifyResult.left;
|
const error = verifyResult.left;
|
||||||
// Only delete invalid tokens, not expired ones (which can be refreshed)
|
// Delete both invalid and expired tokens to prevent accumulation
|
||||||
if (error._tag === 'InvalidTokenError') {
|
if (error._tag === 'InvalidTokenError' || error._tag === 'ExpiredTokenError') {
|
||||||
logger.debug(`Deleting invalid token from file store`);
|
logger.debug(`Deleting ${error._tag} token from file store`);
|
||||||
delete this.tokens[tokenKey];
|
delete this.tokens[tokenKey];
|
||||||
deletedCount++;
|
deletedCount++;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -126,9 +126,9 @@ export class SQLiteSmapiTokenStore implements SmapiTokenStore {
|
|||||||
// Do NOT delete ExpiredTokenError as those can still be refreshed
|
// Do NOT delete ExpiredTokenError as those can still be refreshed
|
||||||
if (E.isLeft(verifyResult)) {
|
if (E.isLeft(verifyResult)) {
|
||||||
const error = verifyResult.left;
|
const error = verifyResult.left;
|
||||||
// Only delete invalid tokens, not expired ones (which can be refreshed)
|
// Delete both invalid and expired tokens to prevent accumulation
|
||||||
if (error._tag === 'InvalidTokenError') {
|
if (error._tag === 'InvalidTokenError' || error._tag === 'ExpiredTokenError') {
|
||||||
logger.debug(`Deleting invalid token from SQLite store`);
|
logger.debug(`Deleting ${error._tag} token from SQLite store`);
|
||||||
this.delete(tokenKey);
|
this.delete(tokenKey);
|
||||||
deletedCount++;
|
deletedCount++;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user