Skip to content

Commit 0ae3382

Browse files
chore(ui): ensure token updated before making failed req (#27140)
(cherry picked from commit 5cdf7fa)
1 parent 235841e commit 0ae3382

2 files changed

Lines changed: 19 additions & 4 deletions

File tree

openmetadata-ui/src/main/resources/ui/src/components/Auth/AuthProviders/AuthProvider.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -517,10 +517,10 @@ export const AuthProvider = ({
517517
// Refresh the token and retry the requests in the queue
518518
tokenService.current
519519
.refreshToken()
520-
.then((token) => {
520+
.then(async (token) => {
521521
if (token) {
522522
// Retry the pending requests
523-
initializeAxiosInterceptors();
523+
await initializeAxiosInterceptors();
524524
pendingRequests.forEach(({ resolve, reject, config }) => {
525525
axiosClient.request(config).then(resolve).catch(reject);
526526
});

openmetadata-ui/src/main/resources/ui/src/utils/Auth/TokenService/TokenServiceUtil.ts

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,8 @@ class TokenService {
8787
this.setRefreshInProgress();
8888

8989
try {
90-
const token = await getOidcToken();
91-
const { isExpired, timeoutExpiry } = extractDetailsFromToken(token);
90+
const oldToken = await getOidcToken();
91+
const { isExpired, timeoutExpiry } = extractDetailsFromToken(oldToken);
9292

9393
// If token is expired or timeoutExpiry is less than 0 then try to silent signIn
9494
if (isExpired || timeoutExpiry <= 0) {
@@ -160,6 +160,21 @@ class TokenService {
160160
isTokenUpdateInProgress() {
161161
return localStorage.getItem(REFRESH_IN_PROGRESS_KEY) === 'true';
162162
}
163+
164+
private async waitForTokenPersistence(oldToken: string) {
165+
const maxAttempts = 20;
166+
const delayMs = 50;
167+
168+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
169+
await new Promise((resolve) => setTimeout(resolve, delayMs));
170+
171+
const currentToken = await getOidcToken();
172+
173+
if (currentToken && currentToken !== oldToken) {
174+
return;
175+
}
176+
}
177+
}
163178
}
164179

165180
export default TokenService;

0 commit comments

Comments
 (0)