Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { Injectable } from '@angular/core'
- import { HttpClient, HttpHeaders } from '@angular/common/http'
- import { Observable } from 'rxjs/Observable'
- import { environment } from '../../../environments/environment'
- import { map, switchMap } from 'rxjs/operators'
- import { ApiKey } from '../../models/api-key'
- import { User } from '../../models/user'
- import { UserService } from './user.service'
- import { BehaviorSubject } from 'rxjs/BehaviorSubject'
- @Injectable()
- export class AuthService {
- public user$ = new BehaviorSubject<User>(null)
- constructor (private httpClient: HttpClient, private userService: UserService) {
- }
- login (username: string, password: string): void {
- const data = new FormData()
- data.append('username', username)
- data.append('password', password)
- this.httpClient
- .post<ApiKey>(
- environment.apiUrl + '/login',
- data,
- ).pipe(
- switchMap(
- (apiKey) => {
- localStorage.setItem('token', apiKey.token)
- return this.getAuthenticatedUser()
- }
- )
- ).subscribe(
- (user) => {
- this.user$.next(user)
- }
- )
- }
- private getToken (): string {
- return localStorage.getItem('token')
- }
- private getAuthenticatedUser (): Observable<User> {
- return this.httpClient.get<User>(environment.apiUrl + '/users/me')
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement