Skip to content

Commit 7f62c71

Browse files
chirag-madlaniSaaiAravindhRaja
authored andcommitted
chore(ui): ensure token updated before making failed req (open-metadata#27140)
1 parent bce0058 commit 7f62c71

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
@@ -514,10 +514,10 @@ export const AuthProvider = ({
514514
// Refresh the token and retry the requests in the queue
515515
tokenService.current
516516
.refreshToken()
517-
.then((token) => {
517+
.then(async (token) => {
518518
if (token) {
519519
// Retry the pending requests
520-
initializeAxiosInterceptors();
520+
await initializeAxiosInterceptors();
521521
pendingRequests.forEach(({ resolve, reject, config }) => {
522522
axiosClient.request(config).then(resolve).catch(reject);
523523
});

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)