@@ -3,9 +3,10 @@ import { Injectable } from '@angular/core';
3
3
import { Router } from '@angular/router' ;
4
4
import { HttpClient } from '@angular/common/http' ;
5
5
import { BehaviorSubject , Observable } from 'rxjs' ;
6
- import { map , switchMap , tap } from 'rxjs/operators' ;
6
+ import { map , switchMap } from 'rxjs/operators' ;
7
7
import { environment } from '../_environments/environment' ;
8
8
import { User } from '../_models/user.model' ;
9
+ import { UServRes } from '../_models/user.service.response.interface' ;
9
10
10
11
@Injectable ( { providedIn : 'root' } )
11
12
export class AuthenticationService {
@@ -14,7 +15,7 @@ export class AuthenticationService {
14
15
15
16
constructor (
16
17
private router : Router ,
17
- private http : HttpClient
18
+ private http : HttpClient ,
18
19
) {
19
20
this . userSubject = new BehaviorSubject ( JSON . parse ( localStorage . getItem ( 'user' ) ! ) ) ;
20
21
this . user$ = this . userSubject . asObservable ( ) ;
@@ -25,28 +26,34 @@ export class AuthenticationService {
25
26
}
26
27
27
28
login ( username : string , password : string ) {
28
- return this . http . post < any > ( `${ environment . UserServiceApiUrl } /auth/login` ,
29
- { "username" : username , "password" : password } )
30
- . pipe ( map ( response => {
31
- // store user details and jwt token in local storage to keep user logged in between page refreshes
32
- const data = response . data ;
33
- const user : User = {
34
- id : data . id ,
35
- username : data . username ,
36
- email : data . email ,
37
- accessToken : data . accessToken ,
38
- isAdmin : data . isAdmin ,
39
- createdAt : data . createdAt
40
- }
41
- localStorage . setItem ( 'user' , JSON . stringify ( user ) ) ;
42
- this . userSubject . next ( user ) ;
43
- return user ;
44
- } ) ) ;
29
+ return this . http
30
+ . post < UServRes > ( `${ environment . UserServiceApiUrl } /auth/login` , { username : username , password : password } )
31
+ . pipe (
32
+ map ( response => {
33
+ // store user details and jwt token in local storage to keep user logged in between page refreshes
34
+ const data = response . data ;
35
+ const user : User = {
36
+ id : data . id ,
37
+ username : data . username ,
38
+ email : data . email ,
39
+ accessToken : data . accessToken ,
40
+ isAdmin : data . isAdmin ,
41
+ createdAt : data . createdAt ,
42
+ } ;
43
+ localStorage . setItem ( 'user' , JSON . stringify ( user ) ) ;
44
+ this . userSubject . next ( user ) ;
45
+ return user ;
46
+ } ) ,
47
+ ) ;
45
48
}
46
49
47
50
createAccount ( username : string , email : string , password : string ) {
48
- return this . http . post < any > ( `${ environment . UserServiceApiUrl } /users` ,
49
- { "username" : username , "email" : email , "password" : password } )
51
+ return this . http
52
+ . post < UServRes > ( `${ environment . UserServiceApiUrl } /users` , {
53
+ username : username ,
54
+ email : email ,
55
+ password : password ,
56
+ } )
50
57
. pipe ( switchMap ( ( ) => this . login ( username , password ) ) ) ; // auto login after registration
51
58
}
52
59
@@ -56,4 +63,4 @@ export class AuthenticationService {
56
63
this . userSubject . next ( null ) ;
57
64
this . router . navigate ( [ '/account/login' ] ) ;
58
65
}
59
- }
66
+ }
0 commit comments