Skip to content

Commit 5d85672

Browse files
chore(ui): ensure token updated before making failed req (#27140)
(cherry picked from commit 5cdf7fa)
1 parent 4072bf8 commit 5d85672

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

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
@@ -499,10 +499,10 @@ export const AuthProvider = ({
499499
// Refresh the token and retry the requests in the queue
500500
tokenService.current
501501
.refreshToken()
502-
.then((token) => {
502+
.then(async (token) => {
503503
if (token) {
504504
// Retry the pending requests
505-
initializeAxiosInterceptors();
505+
await initializeAxiosInterceptors();
506506
pendingRequests.forEach(({ resolve, reject, config }) => {
507507
axiosClient.request(config).then(resolve).catch(reject);
508508
});

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
@@ -90,8 +90,8 @@ class TokenService {
9090
this.setRefreshInProgress();
9191

9292
try {
93-
const token = await getOidcToken();
94-
const { isExpired, timeoutExpiry } = extractDetailsFromToken(token);
93+
const oldToken = await getOidcToken();
94+
const { isExpired, timeoutExpiry } = extractDetailsFromToken(oldToken);
9595

9696
// If token is expired or timeoutExpiry is less than 0 then try to silent signIn
9797
if (isExpired || timeoutExpiry <= 0) {
@@ -163,6 +163,21 @@ class TokenService {
163163
isTokenUpdateInProgress() {
164164
return localStorage.getItem(REFRESH_IN_PROGRESS_KEY) === 'true';
165165
}
166+
167+
private async waitForTokenPersistence(oldToken: string) {
168+
const maxAttempts = 20;
169+
const delayMs = 50;
170+
171+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
172+
await new Promise((resolve) => setTimeout(resolve, delayMs));
173+
174+
const currentToken = await getOidcToken();
175+
176+
if (currentToken && currentToken !== oldToken) {
177+
return;
178+
}
179+
}
180+
}
166181
}
167182

168183
export default TokenService;

0 commit comments

Comments
 (0)