@nebular/auth
Version:
@nebular/auth
59 lines • 7.62 kB
JavaScript
import { Inject, Injectable, InjectionToken } from '@angular/core';
import { nbAuthCreateToken } from './token';
import { NB_AUTH_TOKENS } from '../../auth.options';
import * as i0 from "@angular/core";
export const NB_AUTH_FALLBACK_TOKEN = new InjectionToken('Nebular Auth Options');
/**
* Creates a token parcel which could be stored/restored
*/
export class NbAuthTokenParceler {
constructor(fallbackClass, tokenClasses) {
this.fallbackClass = fallbackClass;
this.tokenClasses = tokenClasses;
}
wrap(token) {
return JSON.stringify({
name: token.getName(),
ownerStrategyName: token.getOwnerStrategyName(),
createdAt: token.getCreatedAt().getTime(),
value: token.toString(),
});
}
unwrap(value) {
let tokenClass = this.fallbackClass;
let tokenValue = '';
let tokenOwnerStrategyName = '';
let tokenCreatedAt = null;
const tokenPack = this.parseTokenPack(value);
if (tokenPack) {
tokenClass = this.getClassByName(tokenPack.name) || this.fallbackClass;
tokenValue = tokenPack.value;
tokenOwnerStrategyName = tokenPack.ownerStrategyName;
tokenCreatedAt = new Date(Number(tokenPack.createdAt));
}
return nbAuthCreateToken(tokenClass, tokenValue, tokenOwnerStrategyName, tokenCreatedAt);
}
// TODO: this could be moved to a separate token registry
getClassByName(name) {
return this.tokenClasses.find((tokenClass) => tokenClass.NAME === name);
}
parseTokenPack(value) {
try {
return JSON.parse(value);
}
catch (e) { }
return null;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NbAuthTokenParceler, deps: [{ token: NB_AUTH_FALLBACK_TOKEN }, { token: NB_AUTH_TOKENS }], target: i0.ɵɵFactoryTarget.Injectable }); }
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NbAuthTokenParceler }); }
}
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.0", ngImport: i0, type: NbAuthTokenParceler, decorators: [{
type: Injectable
}], ctorParameters: () => [{ type: undefined, decorators: [{
type: Inject,
args: [NB_AUTH_FALLBACK_TOKEN]
}] }, { type: undefined, decorators: [{
type: Inject,
args: [NB_AUTH_TOKENS]
}] }] });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcGFyY2VsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvZnJhbWV3b3JrL2F1dGgvc2VydmljZXMvdG9rZW4vdG9rZW4tcGFyY2VsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5FLE9BQU8sRUFBRSxpQkFBaUIsRUFBaUMsTUFBTSxTQUFTLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQVNwRCxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLGNBQWMsQ0FBbUIsc0JBQXNCLENBQUMsQ0FBQztBQUVuRzs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBb0QsYUFBK0IsRUFDdkMsWUFBZ0M7UUFEeEIsa0JBQWEsR0FBYixhQUFhLENBQWtCO1FBQ3ZDLGlCQUFZLEdBQVosWUFBWSxDQUFvQjtJQUM1RSxDQUFDO0lBRUQsSUFBSSxDQUFDLEtBQWtCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUNyQixpQkFBaUIsRUFBRSxLQUFLLENBQUMsb0JBQW9CLEVBQUU7WUFDL0MsU0FBUyxFQUFFLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQyxPQUFPLEVBQUU7WUFDekMsS0FBSyxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7U0FDeEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxLQUFhO1FBQ2xCLElBQUksVUFBVSxHQUFxQixJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3RELElBQUksVUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNwQixJQUFJLHNCQUFzQixHQUFHLEVBQUUsQ0FBQztRQUNoQyxJQUFJLGNBQWMsR0FBUyxJQUFJLENBQUM7UUFFaEMsTUFBTSxTQUFTLEdBQWdCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3ZFLFVBQVUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQzdCLHNCQUFzQixHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsQ0FBQztZQUNyRCxjQUFjLEdBQUcsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3pELENBQUM7UUFFRCxPQUFPLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxVQUFVLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFFM0YsQ0FBQztJQUVELHlEQUF5RDtJQUMvQyxjQUFjLENBQUMsSUFBSTtRQUMzQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsVUFBNEIsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRVMsY0FBYyxDQUFDLEtBQUs7UUFDNUIsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNmLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzs4R0EzQ1UsbUJBQW1CLGtCQUVWLHNCQUFzQixhQUN0QixjQUFjO2tIQUh2QixtQkFBbUI7OzJGQUFuQixtQkFBbUI7a0JBRC9CLFVBQVU7OzBCQUdJLE1BQU07MkJBQUMsc0JBQXNCOzswQkFDN0IsTUFBTTsyQkFBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBuYkF1dGhDcmVhdGVUb2tlbiwgTmJBdXRoVG9rZW4sIE5iQXV0aFRva2VuQ2xhc3MgfSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCB7IE5CX0FVVEhfVE9LRU5TIH0gZnJvbSAnLi4vLi4vYXV0aC5vcHRpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBOYlRva2VuUGFjayB7XG4gIG5hbWU6IHN0cmluZyxcbiAgb3duZXJTdHJhdGVneU5hbWU6IHN0cmluZyxcbiAgY3JlYXRlZEF0OiBOdW1iZXIsXG4gIHZhbHVlOiBzdHJpbmcsXG59XG5cbmV4cG9ydCBjb25zdCBOQl9BVVRIX0ZBTExCQUNLX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPE5iQXV0aFRva2VuQ2xhc3M+KCdOZWJ1bGFyIEF1dGggT3B0aW9ucycpO1xuXG4vKipcbiAqIENyZWF0ZXMgYSB0b2tlbiBwYXJjZWwgd2hpY2ggY291bGQgYmUgc3RvcmVkL3Jlc3RvcmVkXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBOYkF1dGhUb2tlblBhcmNlbGVyIHtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KE5CX0FVVEhfRkFMTEJBQ0tfVE9LRU4pIHByaXZhdGUgZmFsbGJhY2tDbGFzczogTmJBdXRoVG9rZW5DbGFzcyxcbiAgICAgICAgICAgICAgQEluamVjdChOQl9BVVRIX1RPS0VOUykgcHJpdmF0ZSB0b2tlbkNsYXNzZXM6IE5iQXV0aFRva2VuQ2xhc3NbXSkge1xuICB9XG5cbiAgd3JhcCh0b2tlbjogTmJBdXRoVG9rZW4pOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICBuYW1lOiB0b2tlbi5nZXROYW1lKCksXG4gICAgICBvd25lclN0cmF0ZWd5TmFtZTogdG9rZW4uZ2V0T3duZXJTdHJhdGVneU5hbWUoKSxcbiAgICAgIGNyZWF0ZWRBdDogdG9rZW4uZ2V0Q3JlYXRlZEF0KCkuZ2V0VGltZSgpLFxuICAgICAgdmFsdWU6IHRva2VuLnRvU3RyaW5nKCksXG4gICAgfSk7XG4gIH1cblxuICB1bndyYXAodmFsdWU6IHN0cmluZyk6IE5iQXV0aFRva2VuIHtcbiAgICBsZXQgdG9rZW5DbGFzczogTmJBdXRoVG9rZW5DbGFzcyA9IHRoaXMuZmFsbGJhY2tDbGFzcztcbiAgICBsZXQgdG9rZW5WYWx1ZSA9ICcnO1xuICAgIGxldCB0b2tlbk93bmVyU3RyYXRlZ3lOYW1lID0gJyc7XG4gICAgbGV0IHRva2VuQ3JlYXRlZEF0OiBEYXRlID0gbnVsbDtcblxuICAgIGNvbnN0IHRva2VuUGFjazogTmJUb2tlblBhY2sgPSB0aGlzLnBhcnNlVG9rZW5QYWNrKHZhbHVlKTtcbiAgICBpZiAodG9rZW5QYWNrKSB7XG4gICAgICB0b2tlbkNsYXNzID0gdGhpcy5nZXRDbGFzc0J5TmFtZSh0b2tlblBhY2submFtZSkgfHwgdGhpcy5mYWxsYmFja0NsYXNzO1xuICAgICAgdG9rZW5WYWx1ZSA9IHRva2VuUGFjay52YWx1ZTtcbiAgICAgIHRva2VuT3duZXJTdHJhdGVneU5hbWUgPSB0b2tlblBhY2sub3duZXJTdHJhdGVneU5hbWU7XG4gICAgICB0b2tlbkNyZWF0ZWRBdCA9IG5ldyBEYXRlKE51bWJlcih0b2tlblBhY2suY3JlYXRlZEF0KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5iQXV0aENyZWF0ZVRva2VuKHRva2VuQ2xhc3MsIHRva2VuVmFsdWUsIHRva2VuT3duZXJTdHJhdGVneU5hbWUsIHRva2VuQ3JlYXRlZEF0KTtcblxuICB9XG5cbiAgLy8gVE9ETzogdGhpcyBjb3VsZCBiZSBtb3ZlZCB0byBhIHNlcGFyYXRlIHRva2VuIHJlZ2lzdHJ5XG4gIHByb3RlY3RlZCBnZXRDbGFzc0J5TmFtZShuYW1lKTogTmJBdXRoVG9rZW5DbGFzcyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5DbGFzc2VzLmZpbmQoKHRva2VuQ2xhc3M6IE5iQXV0aFRva2VuQ2xhc3MpID0+IHRva2VuQ2xhc3MuTkFNRSA9PT0gbmFtZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VUb2tlblBhY2sodmFsdWUpOiBOYlRva2VuUGFjayB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHZhbHVlKTtcbiAgICB9IGNhdGNoIChlKSB7IH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19