diff options
author | 杨宇千 <crupest@outlook.com> | 2019-04-11 21:13:15 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-11 21:13:15 +0800 |
commit | 19cae15eba2bcede41b818e1b8ab7fd5ac92eb05 (patch) | |
tree | 34118752ae3015a26c0f6f3a02b3043806ce895a /Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.ts | |
parent | 5b5ca3acb1b9decb5ad13798dc79ba2d58f2ce95 (diff) | |
parent | 63573d7c988e0bc1b7e82eeea53ecc3678b0a2f5 (diff) | |
download | timeline-19cae15eba2bcede41b818e1b8ab7fd5ac92eb05.tar.gz timeline-19cae15eba2bcede41b818e1b8ab7fd5ac92eb05.tar.bz2 timeline-19cae15eba2bcede41b818e1b8ab7fd5ac92eb05.zip |
Merge pull request #19 from crupest/18-createtoken
Change create token api.
Diffstat (limited to 'Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.ts')
-rw-r--r-- | Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.ts | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.ts b/Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.ts index 6de355f2..66eafde9 100644 --- a/Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.ts +++ b/Timeline/ClientApp/src/app/user/internal-user-service/internal-user.service.ts @@ -5,7 +5,7 @@ import { Router } from '@angular/router'; import { Observable, throwError, BehaviorSubject, of } from 'rxjs'; import { map, catchError, retry, switchMap, tap, filter } from 'rxjs/operators'; -import { AlreadyLoginError, BadCredentialsError, BadNetworkError, UnknownError } from './errors'; +import { AlreadyLoginError, BadCredentialsError, BadNetworkError, UnknownError, ServerInternalError } from './errors'; import { createTokenUrl, validateTokenUrl, CreateTokenRequest, CreateTokenResponse, ValidateTokenRequest, ValidateTokenResponse @@ -84,7 +84,7 @@ export class InternalUserService { if (userInfo) { return of(userInfo); } else { - return throwError(new Error('Wrong server response. IsValid is true but UserInfo is null.')); + return throwError(new ServerInternalError('IsValid is true but UserInfo is null.')); } } else { return of(null); @@ -117,21 +117,28 @@ export class InternalUserService { if (error.error instanceof ErrorEvent) { console.error('An error occurred when login: ' + error.error.message); return throwError(new BadNetworkError()); - } else if (error.status === 400) { - console.error('An error occurred when login: wrong credentials.'); - return throwError(new BadCredentialsError()); } else { console.error('An unknown error occurred when login: ' + error); return throwError(new UnknownError(error)); } }), - map(result => { - this.token = result.token; - if (info.rememberMe) { - this.window.localStorage.setItem(TOKEN_STORAGE_KEY, result.token); + switchMap(result => { + if (result.success) { + if (result.token && result.userInfo) { + this.token = result.token; + if (info.rememberMe) { + this.window.localStorage.setItem(TOKEN_STORAGE_KEY, result.token); + } + this.userInfoSubject.next(result.userInfo); + return of(result.userInfo); + } else { + console.error('An error occurred when login: server return wrong data.'); + return throwError(new ServerInternalError('Token or userInfo is null.')); + } + } else { + console.error('An error occurred when login: wrong credentials.'); + return throwError(new BadCredentialsError()); } - this.userInfoSubject.next(result.userInfo); - return result.userInfo; }) ); } |