Skip to content

Commit 2739ac5

Browse files
committed
fix(keepAuthFresh): deadlock if cannot refresh
1 parent 215b7b3 commit 2739ac5

1 file changed

Lines changed: 16 additions & 10 deletions

File tree

apps/backend/src/api/auth/$.middleware.ts

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,25 @@ export function keepAuthFresh() {
1414

1515
// If token will expire in less than 20 minutes, refresh it
1616
if ((decode(userAuth.private.accessToken)?.payload?.exp || 0) * 1000 < Date.now() + 1000 * 60 * 20) {
17-
const { accessToken, refreshToken } = await workos.userManagement.authenticateWithRefreshToken({
17+
await workos.userManagement.authenticateWithRefreshToken({
1818
clientId: workos.clientId!,
1919
refreshToken: userAuth.private.refreshToken,
2020
})
21-
22-
auth.data.userAuth = {
23-
...userAuth,
24-
private: {
25-
accessToken,
26-
refreshToken,
27-
sessionId: decode(accessToken).payload.sid as string,
28-
},
29-
}
21+
.then(({ accessToken, refreshToken }) => {
22+
auth.data.userAuth = {
23+
...userAuth,
24+
private: {
25+
accessToken,
26+
refreshToken,
27+
sessionId: decode(accessToken).payload.sid as string,
28+
},
29+
}
30+
})
31+
.catch((e) => {
32+
console.error(e)
33+
// Clears `userAuth` if there is trouble refreshing
34+
auth.data.userAuth = undefined
35+
})
3036
}
3137

3238
await next()

0 commit comments

Comments
 (0)