Fix error message on token expiration

pull/543/merge
Chocobozzz 2018-05-07 18:40:51 +02:00
parent fd5e57bbe2
commit 47f8de2834
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 22 additions and 12 deletions

View File

@ -39,6 +39,7 @@ export class AuthService {
private clientSecret: string
private loginChanged: Subject<AuthStatus>
private user: AuthUser = null
private refreshingTokenObservable: Observable<any>
constructor (
private http: HttpClient,
@ -144,6 +145,8 @@ export class AuthService {
}
refreshAccessToken () {
if (this.refreshingTokenObservable) return this.refreshingTokenObservable
console.log('Refreshing token...')
const refreshToken = this.getRefreshToken()
@ -157,18 +160,23 @@ export class AuthService {
const headers = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
return this.http.post<UserRefreshToken>(AuthService.BASE_TOKEN_URL, body, { headers })
.map(res => this.handleRefreshToken(res))
.catch(err => {
console.error(err)
console.log('Cannot refresh token -> logout...')
this.logout()
this.router.navigate(['/login'])
this.refreshingTokenObservable = this.http.post<UserRefreshToken>(AuthService.BASE_TOKEN_URL, body, { headers })
.map(res => this.handleRefreshToken(res))
.do(() => this.refreshingTokenObservable = null)
.catch(err => {
this.refreshingTokenObservable = null
return Observable.throw({
error: 'You need to reconnect.'
})
})
console.error(err)
console.log('Cannot refresh token -> logout...')
this.logout()
this.router.navigate([ '/login' ])
return Observable.throw({
error: 'You need to reconnect.'
})
})
return this.refreshingTokenObservable
}
refreshUserInformation () {

View File

@ -33,13 +33,15 @@ export class RestExtractor {
return target
}
handleError (err: HttpErrorResponse) {
handleError (err: any) {
let errorMessage
if (err.error instanceof Error) {
// A client-side or network error occurred. Handle it accordingly.
errorMessage = err.error.message
console.error('An error occurred:', errorMessage)
} else if (typeof err.error === 'string') {
errorMessage = err.error
} else if (err.status !== undefined) {
// A server-side error occurred.
if (err.error && err.error.errors) {