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