Commit faa055d4 by Nattana Chaiyamat

แก้ login ไม่ต้องส่ง token

parent 084807ff
...@@ -23,20 +23,21 @@ export class HttpRequestInterceptor { ...@@ -23,20 +23,21 @@ export class HttpRequestInterceptor {
return next.handle(req); return next.handle(req);
} else { } else {
let authReq = req; let authReq = req;
console.log(req.url)
const fullUrl = req.url.startsWith("http") ? req.url : environment.baseUrl + req.url; const fullUrl = req.url.startsWith("http") ? req.url : environment.baseUrl + req.url;
const token = this.tokenService.getToken() const token = this.tokenService.getToken()
if (token != null && !req.url.includes("/refresh-token")) { if (token != null && !req.url.includes("/refresh-token")) {
authReq = this.addTokenHeader(req, "Bearer " +token ,fullUrl); authReq = this.addTokenHeader(req, "Bearer " + token, fullUrl);
}else{ } else {
const overideReq = { const overideReq = {
url: fullUrl, url: fullUrl,
}; };
authReq = req.clone(overideReq); authReq = req.clone(overideReq);
} }
return next.handle(authReq).pipe(catchError(error => { return next.handle(authReq).pipe(catchError(error => {
if (error instanceof HttpErrorResponse && error.status === 403 && !fullUrl.includes("login")) { if (fullUrl.includes("login")) {
return this.handle403Error(authReq, next ,fullUrl); 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 throwError(error); return throwError(error);
})); }));
...@@ -44,7 +45,7 @@ export class HttpRequestInterceptor { ...@@ -44,7 +45,7 @@ export class HttpRequestInterceptor {
} }
private handle403Error(request: HttpRequest<any>, next: HttpHandler , fullUrl : string) { private handle403Error(request: HttpRequest<any>, next: HttpHandler, fullUrl: string) {
if (!this.isRefreshing) { if (!this.isRefreshing) {
this.isRefreshing = true; this.isRefreshing = true;
this.refreshTokenSubject.next(null); this.refreshTokenSubject.next(null);
...@@ -52,14 +53,14 @@ export class HttpRequestInterceptor { ...@@ -52,14 +53,14 @@ 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;
this.tokenService.saveToken(token.accessToken); this.tokenService.saveToken(token.accessToken);
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, token.accessToken, fullUrl));
}), }),
catchError((err) => { catchError((err) => {
this.isRefreshing = false; this.isRefreshing = false;
...@@ -73,17 +74,17 @@ export class HttpRequestInterceptor { ...@@ -73,17 +74,17 @@ export class HttpRequestInterceptor {
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, 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) });
/* for Node.js Express back-end */ /* for Node.js Express back-end */
return request.clone({ headers: request.headers.set(TOKEN_HEADER_KEY, token) , url : fullUrl }); return request.clone({ headers: request.headers.set(TOKEN_HEADER_KEY, token), url: fullUrl });
} }
} }
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