Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { Injectable } from '@angular/core'
  2. import { HttpClient, HttpHeaders } from '@angular/common/http'
  3. import { Observable } from 'rxjs/Observable'
  4. import { environment } from '../../../environments/environment'
  5. import { map, switchMap } from 'rxjs/operators'
  6. import { ApiKey } from '../../models/api-key'
  7. import { User } from '../../models/user'
  8. import { UserService } from './user.service'
  9. import { BehaviorSubject } from 'rxjs/BehaviorSubject'
  10.  
  11. @Injectable()
  12. export class AuthService {
  13.  
  14.   public user$ = new BehaviorSubject<User>(null)
  15.  
  16.   constructor (private httpClient: HttpClient, private userService: UserService) {
  17.  
  18.   }
  19.  
  20.   login (username: string, password: string): void {
  21.     const data = new FormData()
  22.     data.append('username', username)
  23.     data.append('password', password)
  24.     this.httpClient
  25.       .post<ApiKey>(
  26.         environment.apiUrl + '/login',
  27.         data,
  28.       ).pipe(
  29.       switchMap(
  30.         (apiKey) => {
  31.           localStorage.setItem('token', apiKey.token)
  32.           return this.getAuthenticatedUser()
  33.         }
  34.       )
  35.     ).subscribe(
  36.       (user) => {
  37.         this.user$.next(user)
  38.       }
  39.     )
  40.   }
  41.  
  42.   private getToken (): string {
  43.     return localStorage.getItem('token')
  44.   }
  45.  
  46.   private getAuthenticatedUser (): Observable<User> {
  47.     return this.httpClient.get<User>(environment.apiUrl + '/users/me')
  48.   }
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement