@nebular/auth
Version:
@nebular/auth
61 lines • 6.18 kB
JavaScript
import { Injectable } from '@angular/core';
import { BehaviorSubject, of as observableOf } from 'rxjs';
import { filter, share } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "./token-storage";
/**
* Service that allows you to manage authentication token - get, set, clear and also listen to token changes over time.
*/
export class NbTokenService {
constructor(tokenStorage) {
this.tokenStorage = tokenStorage;
this.token$ = new BehaviorSubject(null);
this.publishStoredToken();
}
/**
* Publishes token when it changes.
* @returns {Observable<NbAuthToken>}
*/
tokenChange() {
return this.token$
.pipe(filter(value => !!value), share());
}
/**
* Sets a token into the storage. This method is used by the NbAuthService automatically.
*
* @param {NbAuthToken} token
* @returns {Observable<any>}
*/
set(token) {
this.tokenStorage.set(token);
this.publishStoredToken();
return observableOf(null);
}
/**
* Returns observable of current token
* @returns {Observable<NbAuthToken>}
*/
get() {
const token = this.tokenStorage.get();
return observableOf(token);
}
/**
* Removes the token and published token value
*
* @returns {Observable<any>}
*/
clear() {
this.tokenStorage.clear();
this.publishStoredToken();
return observableOf(null);
}
publishStoredToken() {
this.token$.next(this.tokenStorage.get());
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NbTokenService, deps: [{ token: i1.NbTokenStorage }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NbTokenService }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NbTokenService, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: i1.NbTokenStorage }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9mcmFtZXdvcmsvYXV0aC9zZXJ2aWNlcy90b2tlbi90b2tlbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLGVBQWUsRUFBRSxFQUFFLElBQUksWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUsvQzs7R0FFRztBQUVILE1BQU0sT0FBTyxjQUFjO0lBSXpCLFlBQXNCLFlBQTRCO1FBQTVCLGlCQUFZLEdBQVosWUFBWSxDQUFnQjtRQUZ4QyxXQUFNLEdBQWlDLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBR3pFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsTUFBTTthQUNmLElBQUksQ0FDSCxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQ3hCLEtBQUssRUFBRSxDQUNSLENBQUM7SUFDTixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxHQUFHLENBQUMsS0FBa0I7UUFDcEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILEdBQUc7UUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3RDLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSztRQUNILElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsT0FBTyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDNUIsQ0FBQztJQUVTLGtCQUFrQjtRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDNUMsQ0FBQzs4R0F0RFUsY0FBYztrSEFBZCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgQmVoYXZpb3JTdWJqZWN0LCBvZiBhcyBvYnNlcnZhYmxlT2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgc2hhcmUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IE5iVG9rZW5TdG9yYWdlIH0gZnJvbSAnLi90b2tlbi1zdG9yYWdlJztcbmltcG9ydCB7IE5iQXV0aFRva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbi8qKlxuICogU2VydmljZSB0aGF0IGFsbG93cyB5b3UgdG8gbWFuYWdlIGF1dGhlbnRpY2F0aW9uIHRva2VuIC0gZ2V0LCBzZXQsIGNsZWFyIGFuZCBhbHNvIGxpc3RlbiB0byB0b2tlbiBjaGFuZ2VzIG92ZXIgdGltZS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5iVG9rZW5TZXJ2aWNlIHtcblxuICBwcm90ZWN0ZWQgdG9rZW4kOiBCZWhhdmlvclN1YmplY3Q8TmJBdXRoVG9rZW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChudWxsKTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgdG9rZW5TdG9yYWdlOiBOYlRva2VuU3RvcmFnZSkge1xuICAgIHRoaXMucHVibGlzaFN0b3JlZFRva2VuKCk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGlzaGVzIHRva2VuIHdoZW4gaXQgY2hhbmdlcy5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8TmJBdXRoVG9rZW4+fVxuICAgKi9cbiAgdG9rZW5DaGFuZ2UoKTogT2JzZXJ2YWJsZTxOYkF1dGhUb2tlbj4ge1xuICAgIHJldHVybiB0aGlzLnRva2VuJFxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcih2YWx1ZSA9PiAhIXZhbHVlKSxcbiAgICAgICAgc2hhcmUoKSxcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBhIHRva2VuIGludG8gdGhlIHN0b3JhZ2UuIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgdGhlIE5iQXV0aFNlcnZpY2UgYXV0b21hdGljYWxseS5cbiAgICpcbiAgICogQHBhcmFtIHtOYkF1dGhUb2tlbn0gdG9rZW5cbiAgICogQHJldHVybnMge09ic2VydmFibGU8YW55Pn1cbiAgICovXG4gIHNldCh0b2tlbjogTmJBdXRoVG9rZW4pOiBPYnNlcnZhYmxlPG51bGw+IHtcbiAgICB0aGlzLnRva2VuU3RvcmFnZS5zZXQodG9rZW4pO1xuICAgIHRoaXMucHVibGlzaFN0b3JlZFRva2VuKCk7XG4gICAgcmV0dXJuIG9ic2VydmFibGVPZihudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIG9ic2VydmFibGUgb2YgY3VycmVudCB0b2tlblxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxOYkF1dGhUb2tlbj59XG4gICAqL1xuICBnZXQoKTogT2JzZXJ2YWJsZTxOYkF1dGhUb2tlbj4ge1xuICAgIGNvbnN0IHRva2VuID0gdGhpcy50b2tlblN0b3JhZ2UuZ2V0KCk7XG4gICAgcmV0dXJuIG9ic2VydmFibGVPZih0b2tlbik7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgdG9rZW4gYW5kIHB1Ymxpc2hlZCB0b2tlbiB2YWx1ZVxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JzZXJ2YWJsZTxhbnk+fVxuICAgKi9cbiAgY2xlYXIoKTogT2JzZXJ2YWJsZTxudWxsPiB7XG4gICAgdGhpcy50b2tlblN0b3JhZ2UuY2xlYXIoKTtcbiAgICB0aGlzLnB1Ymxpc2hTdG9yZWRUb2tlbigpO1xuICAgIHJldHVybiBvYnNlcnZhYmxlT2YobnVsbCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcHVibGlzaFN0b3JlZFRva2VuKCkge1xuICAgIHRoaXMudG9rZW4kLm5leHQodGhpcy50b2tlblN0b3JhZ2UuZ2V0KCkpO1xuICB9XG59XG4iXX0=