From a20776fcbbe488475238228716cad370056ad5bd Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Tue, 29 May 2018 17:16:20 +0200 Subject: [PATCH] Fix refreshing oauth token --- client/src/app/core/auth/auth.service.ts | 19 ++++++++++++++----- client/src/ngsw-config.json | 4 +--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/client/src/app/core/auth/auth.service.ts b/client/src/app/core/auth/auth.service.ts index c3879d570..614d38d08 100644 --- a/client/src/app/core/auth/auth.service.ts +++ b/client/src/app/core/auth/auth.service.ts @@ -1,5 +1,5 @@ import { Observable, ReplaySubject, Subject, throwError as observableThrowError } from 'rxjs' -import { catchError, map, mergeMap, tap } from 'rxjs/operators' +import { catchError, map, mergeMap, tap, share } from 'rxjs/operators' import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http' import { Injectable } from '@angular/core' import { Router } from '@angular/router' @@ -12,6 +12,7 @@ import { RestExtractor } from '../../shared/rest' import { AuthStatus } from './auth-status.model' import { AuthUser } from './auth-user.model' import { objectToUrlEncoded } from '@app/shared/misc/utils' +import { peertubeLocalStorage } from '@app/shared/misc/peertube-local-storage' interface UserLoginWithUsername extends UserLogin { access_token: string @@ -27,12 +28,16 @@ export class AuthService { private static BASE_CLIENT_URL = environment.apiUrl + '/api/v1/oauth-clients/local' private static BASE_TOKEN_URL = environment.apiUrl + '/api/v1/users/token' private static BASE_USER_INFORMATION_URL = environment.apiUrl + '/api/v1/users/me' + private static LOCAL_STORAGE_OAUTH_CLIENT_KEYS = { + CLIENT_ID: 'client_id', + CLIENT_SECRET: 'client_secret' + } loginChangedSource: Observable userInformationLoaded = new ReplaySubject(1) - private clientId: string - private clientSecret: string + private clientId: string = peertubeLocalStorage.getItem(AuthService.LOCAL_STORAGE_OAUTH_CLIENT_KEYS.CLIENT_ID) + private clientSecret: string = peertubeLocalStorage.getItem(AuthService.LOCAL_STORAGE_OAUTH_CLIENT_KEYS.CLIENT_SECRET) private loginChanged: Subject private user: AuthUser = null private refreshingTokenObservable: Observable @@ -52,13 +57,16 @@ export class AuthService { loadClientCredentials () { // Fetch the client_id/client_secret - // FIXME: save in local storage? this.http.get(AuthService.BASE_CLIENT_URL) .pipe(catchError(res => this.restExtractor.handleError(res))) .subscribe( res => { this.clientId = res.client_id this.clientSecret = res.client_secret + + peertubeLocalStorage.setItem(AuthService.LOCAL_STORAGE_OAUTH_CLIENT_KEYS.CLIENT_ID, this.clientId) + peertubeLocalStorage.setItem(AuthService.LOCAL_STORAGE_OAUTH_CLIENT_KEYS.CLIENT_SECRET, this.clientSecret) + console.log('Client credentials loaded.') }, @@ -174,7 +182,8 @@ export class AuthService { return observableThrowError({ error: 'You need to reconnect.' }) - }) + }), + share() ) return this.refreshingTokenObservable diff --git a/client/src/ngsw-config.json b/client/src/ngsw-config.json index 47a116bb7..25f099654 100644 --- a/client/src/ngsw-config.json +++ b/client/src/ngsw-config.json @@ -7,9 +7,7 @@ "resources": { "files": [ "/index.html", - "/client/assets/images/favicon.png" - ], - "versionedFiles": [ + "/client/assets/images/favicon.png", "/client/*.bundle.css", "/client/*.bundle.js", "/client/*.chunk.js"