Advertisement
Guest User

Untitled

a guest
Jun 25th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.06 KB | None | 0 0
  1. import { Injectable } from '@angular/core';
  2. import {
  3. HttpRequest,
  4. HttpHandler,
  5. HttpEvent,
  6. HttpInterceptor,
  7. HttpErrorResponse
  8. } from '@angular/common/http';
  9. import { AuthService } from '../services/auth.service';
  10. import { Observable, of, throwError } from 'rxjs';
  11. import { Router } from '@angular/router';
  12. import { catchError, map } from 'rxjs/operators';
  13. import { HttpClient } from '@angular/common/http';
  14. import { ApiResult } from '../models/apiresult.model';
  15.  
  16. @Injectable()
  17. export class TokenInterceptor implements HttpInterceptor {
  18.  
  19. constructor(
  20. public auth: AuthService,
  21. private router: Router,
  22. private http:HttpClient
  23. ) { }
  24.  
  25. intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
  26. console.log(request);
  27. if (request.url == '/api/authenticate/refreshaccesstoken' || request.url.includes('registration')) {
  28. return next.handle(request);
  29. }
  30. let refreshtoken = {
  31. "refreshtoken": ''
  32. };
  33. if (this.auth.getRefreshToken() != null) refreshtoken.refreshtoken = this.auth.getRefreshToken();
  34. if (this.auth.isLoggedIn()) {
  35. request = request.clone({
  36. setHeaders: {
  37. Authorization: `Bearer ${this.auth.getToken()}`
  38. }
  39. });
  40. return next.handle(request).pipe();
  41. }
  42. if (request.url == "/api/authenticate") {
  43. return next.handle(request);
  44. }
  45. let sub = null;
  46.  
  47. let observable = new Observable<HttpEvent<any>>((subscriber) => {
  48.  
  49. let originalRequestSubscription = next.handle(request).subscribe((resp) => {
  50.  
  51. console.log(resp);
  52. this.http.post<ApiResult<JWT>>('/api/authenticate/refreshaccesstoken', refreshtoken).pipe(map(res => {
  53. return res;
  54. })).subscribe(data => {
  55. console.log(data.data);
  56. sub = this.auth.refreshToken(data.data);
  57. return observable;
  58. });
  59. subscriber.next();
  60. }
  61. );
  62.  
  63. return () => {
  64. originalRequestSubscription.unsubscribe();
  65. }
  66. });
  67. console.log(sub);
  68. return observable;
  69. }
  70.  
  71.  
  72.  
  73.  
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement