Commit 4b4f7b48 by Nakarin Luankla

UPDATE แก้ token หมดอายุ

parent d95a5d26
...@@ -34,15 +34,12 @@ export class HttpRequestInterceptor { ...@@ -34,15 +34,12 @@ export class HttpRequestInterceptor {
authReq = req.clone(overideReq); authReq = req.clone(overideReq);
} }
return next.handle(authReq).pipe(catchError(error => { return next.handle(authReq).pipe(catchError(error => {
if (fullUrl.includes("login")) { if (error instanceof HttpErrorResponse && (error.status === 401 || error.status === 403) && !fullUrl.includes("login")) {
return this.handle403Error(this.addTokenHeader(req, "Bearer ", fullUrl), next, fullUrl);
} else if (error instanceof HttpErrorResponse && error.status === 403 && !fullUrl.includes("login")) {
return this.handle403Error(authReq, next, fullUrl); return this.handle403Error(authReq, next, fullUrl);
} }
return throwError(error); return throwError(error);
})); }));
} }
} }
private handle403Error(request: HttpRequest<any>, next: HttpHandler, fullUrl: string) { private handle403Error(request: HttpRequest<any>, next: HttpHandler, fullUrl: string) {
...@@ -52,7 +49,7 @@ export class HttpRequestInterceptor { ...@@ -52,7 +49,7 @@ export class HttpRequestInterceptor {
const token = this.tokenService.getRefreshToken(); const token = this.tokenService.getRefreshToken();
if (token) if (token) {
return this.authService.refreshToken(token.replace("Bearer ", "")).pipe( return this.authService.refreshToken(token.replace("Bearer ", "")).pipe(
switchMap((token: any) => { switchMap((token: any) => {
this.isRefreshing = false; this.isRefreshing = false;
...@@ -60,26 +57,28 @@ export class HttpRequestInterceptor { ...@@ -60,26 +57,28 @@ export class HttpRequestInterceptor {
this.tokenService.saveRefreshToken(token.refreshToken); this.tokenService.saveRefreshToken(token.refreshToken);
this.refreshTokenSubject.next(token.accessToken); this.refreshTokenSubject.next(token.accessToken);
return next.handle(this.addTokenHeader(request, token.accessToken, fullUrl)); return next.handle(this.addTokenHeader(request, "Bearer " + token.accessToken, fullUrl));
}), }),
catchError((err) => { catchError((err) => {
this.isRefreshing = false; this.isRefreshing = false;
this.tokenService.signOut(); this.tokenService.signOut();
return throwError(err); return throwError(err);
}) })
); );
} else {
this.isRefreshing = false;
this.tokenService.signOut();
return throwError('No refresh token available');
}
} }
return this.refreshTokenSubject.pipe( return this.refreshTokenSubject.pipe(
filter(token => token !== null), filter(token => token !== null),
take(1), take(1),
switchMap((token) => next.handle(this.addTokenHeader(request, token, fullUrl))) switchMap((token) => next.handle(this.addTokenHeader(request, "Bearer " + token, fullUrl)))
); );
} }
private addTokenHeader(request: HttpRequest<any>, token: string, fullUrl: string) { private addTokenHeader(request: HttpRequest<any>, token: string, fullUrl: string) {
/* for Spring Boot back-end */ /* for Spring Boot back-end */
// return request.clone({ headers: request.headers.set(TOKEN_HEADER_KEY, 'Bearer ' + token) }); // return request.clone({ headers: request.headers.set(TOKEN_HEADER_KEY, 'Bearer ' + token) });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment