@akveo/nga-auth
Version:
@akveo/nga-auth
69 lines • 3.37 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
var __metadata = (this && this.__metadata) || function (k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
};
var __param = (this && this.__param) || function (paramIndex, decorator) {
return function (target, key) { decorator(target, key, paramIndex); }
};
import { Inject, Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/do';
import { ngaAuthOptionsToken } from '../auth.options';
import { deepExtend, getDeepFromObject } from '../helpers';
var NgaTokenService = (function () {
function NgaTokenService(options) {
var _this = this;
this.options = options;
this.defaultConfig = {
token: {
key: 'auth_app_token',
getter: function () { return Observable.of(localStorage.getItem(_this.getConfigValue('token.key'))); },
setter: function (token) { return Observable.of(token)
.do(function (t) { return localStorage.setItem(_this.getConfigValue('token.key'), t); }); },
deleter: function (token) { return Observable.of(token)
.do(function (t) { return localStorage.removeItem(_this.getConfigValue('token.key')); }); },
},
};
this.config = {};
this.token$ = new BehaviorSubject(null);
this.setConfig(options);
this.get().subscribe(function (token) { return _this.publishToken(token); });
}
NgaTokenService.prototype.setConfig = function (config) {
this.config = deepExtend({}, this.defaultConfig, config);
};
NgaTokenService.prototype.getConfigValue = function (key) {
return getDeepFromObject(this.config, key, null);
};
NgaTokenService.prototype.set = function (token) {
this.publishToken(token);
return this.getConfigValue('token.setter')(token);
};
NgaTokenService.prototype.get = function () {
return this.getConfigValue('token.getter')();
};
NgaTokenService.prototype.tokenChange = function () {
return this.token$.publish().refCount();
};
NgaTokenService.prototype.clear = function () {
this.publishToken(null);
return this.getConfigValue('token.deleter')();
};
NgaTokenService.prototype.publishToken = function (token) {
this.token$.next(token);
};
return NgaTokenService;
}());
NgaTokenService = __decorate([
Injectable(),
__param(0, Inject(ngaAuthOptionsToken)),
__metadata("design:paramtypes", [Object])
], NgaTokenService);
export { NgaTokenService };
//# sourceMappingURL=token.service.js.map