fix: handle token refresh gracefully in auth interceptor and update loading interceptor to skip refresh token requests
This commit is contained in:
parent
e83e2b2161
commit
9e34de73ee
@ -73,14 +73,30 @@ export const AuthInterceptor: HttpInterceptorFn = (
|
|||||||
refreshInProgress = true;
|
refreshInProgress = true;
|
||||||
refreshSubject.next(null);
|
refreshSubject.next(null);
|
||||||
|
|
||||||
return authSvc.refreshToken()!.pipe(
|
const refresh$ = authSvc.refreshToken();
|
||||||
|
|
||||||
|
// refreshToken() must return an Observable. Otherwise handle gracefully
|
||||||
|
if (!refresh$) {
|
||||||
|
refreshInProgress = false;
|
||||||
|
authSvc.logout();
|
||||||
|
return throwError(() => err);
|
||||||
|
}
|
||||||
|
|
||||||
|
return refresh$.pipe(
|
||||||
|
|
||||||
switchMap(res => {
|
switchMap(res => {
|
||||||
|
|
||||||
refreshInProgress = false;
|
refreshInProgress = false;
|
||||||
const newToken = res.accessToken;
|
|
||||||
authSvc.safeSetToken(newToken);
|
|
||||||
|
|
||||||
|
const newToken = res?.accessToken;
|
||||||
|
|
||||||
|
if (!newToken) {
|
||||||
|
authSvc.logout();
|
||||||
|
return throwError(() => err);
|
||||||
|
}
|
||||||
|
|
||||||
|
authSvc.safeSetToken(newToken);
|
||||||
refreshSubject.next(newToken);
|
refreshSubject.next(newToken);
|
||||||
|
|
||||||
const retryReq = clonedRequest.clone({
|
const retryReq = clonedRequest.clone({
|
||||||
headers: clonedRequest.headers.set('Authorization', `Bearer ${newToken}`),
|
headers: clonedRequest.headers.set('Authorization', `Bearer ${newToken}`),
|
||||||
withCredentials: true
|
withCredentials: true
|
||||||
|
|||||||
@ -12,6 +12,10 @@ export const loadingInterceptor: HttpInterceptorFn = (
|
|||||||
|
|
||||||
const loadingSvc = inject(LoaderService);
|
const loadingSvc = inject(LoaderService);
|
||||||
|
|
||||||
|
if(req.url.includes('/RefreshToken')) {
|
||||||
|
return next(req);
|
||||||
|
}
|
||||||
|
|
||||||
totalRequests++;
|
totalRequests++;
|
||||||
loadingSvc.setLoading(true);
|
loadingSvc.setLoading(true);
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user