UNPKG

1.74 kBJavaScriptView Raw
1import { Injectable } from '@angular/core';
2import { BehaviorSubject, of as observableOf } from 'rxjs';
3import { filter, share } from 'rxjs/operators';
4import { NbTokenStorage } from './token-storage';
5/**
6 * Service that allows you to manage authentication token - get, set, clear and also listen to token changes over time.
7 */
8export class NbTokenService {
9 constructor(tokenStorage) {
10 this.tokenStorage = tokenStorage;
11 this.token$ = new BehaviorSubject(null);
12 this.publishStoredToken();
13 }
14 /**
15 * Publishes token when it changes.
16 * @returns {Observable<NbAuthToken>}
17 */
18 tokenChange() {
19 return this.token$
20 .pipe(filter(value => !!value), share());
21 }
22 /**
23 * Sets a token into the storage. This method is used by the NbAuthService automatically.
24 *
25 * @param {NbAuthToken} token
26 * @returns {Observable<any>}
27 */
28 set(token) {
29 this.tokenStorage.set(token);
30 this.publishStoredToken();
31 return observableOf(null);
32 }
33 /**
34 * Returns observable of current token
35 * @returns {Observable<NbAuthToken>}
36 */
37 get() {
38 const token = this.tokenStorage.get();
39 return observableOf(token);
40 }
41 /**
42 * Removes the token and published token value
43 *
44 * @returns {Observable<any>}
45 */
46 clear() {
47 this.tokenStorage.clear();
48 this.publishStoredToken();
49 return observableOf(null);
50 }
51 publishStoredToken() {
52 this.token$.next(this.tokenStorage.get());
53 }
54}
55NbTokenService.decorators = [
56 { type: Injectable }
57];
58NbTokenService.ctorParameters = () => [
59 { type: NbTokenStorage }
60];
61//# sourceMappingURL=token.service.js.map
\No newline at end of file