@nakedcreativity/membrs-angular-helper 0.0.20 → 0.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/nakedcreativity-membrs-angular-helper.umd.js +15 -5
- package/bundles/nakedcreativity-membrs-angular-helper.umd.js.map +1 -1
- package/bundles/nakedcreativity-membrs-angular-helper.umd.min.js +1 -1
- package/bundles/nakedcreativity-membrs-angular-helper.umd.min.js.map +1 -1
- package/esm2015/lib/auth.interceptor.js +1 -1
- package/esm2015/lib/config.interface.js +1 -1
- package/esm2015/lib/config.service.js +1 -1
- package/esm2015/lib/membrs.module.js +2 -2
- package/esm2015/lib/membrs.service.js +8 -1
- package/esm2015/lib/router.config.js +1 -1
- package/esm2015/lib/token.js +1 -1
- package/esm2015/nakedcreativity-membrs-angular-helper.js +1 -1
- package/esm2015/public-api.js +1 -1
- package/fesm2015/nakedcreativity-membrs-angular-helper.js +8 -1
- package/fesm2015/nakedcreativity-membrs-angular-helper.js.map +1 -1
- package/lib/membrs.service.d.ts +3 -0
- package/nakedcreativity-membrs-angular-helper.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@auth0/angular-jwt'), require('@angular/common/http'), require('@angular/common'), require('@uirouter/angular'), require('rxjs/operators')) :
|
|
3
|
-
typeof define === 'function' && define.amd ? define('@nakedcreativity/membrs-angular-helper', ['exports', '@angular/core', '@auth0/angular-jwt', '@angular/common/http', '@angular/common', '@uirouter/angular', 'rxjs/operators'], factory) :
|
|
4
|
-
(global = global || self, factory((global.nakedcreativity = global.nakedcreativity || {}, global.nakedcreativity['membrs-angular-helper'] = {}), global.ng.core, global.angularJwt, global.ng.common.http, global.ng.common, global.angular, global.rxjs.operators));
|
|
5
|
-
}(this, (function (exports, i0, angularJwt, i1, common, angular, operators) { 'use strict';
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@auth0/angular-jwt'), require('@angular/common/http'), require('rxjs'), require('@angular/common'), require('@uirouter/angular'), require('rxjs/operators')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define('@nakedcreativity/membrs-angular-helper', ['exports', '@angular/core', '@auth0/angular-jwt', '@angular/common/http', 'rxjs', '@angular/common', '@uirouter/angular', 'rxjs/operators'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory((global.nakedcreativity = global.nakedcreativity || {}, global.nakedcreativity['membrs-angular-helper'] = {}), global.ng.core, global.angularJwt, global.ng.common.http, global.rxjs, global.ng.common, global.angular, global.rxjs.operators));
|
|
5
|
+
}(this, (function (exports, i0, angularJwt, i1, rxjs, common, angular, operators) { 'use strict';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* This is not a real service, but it looks like it from the outside.
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
this.http = http;
|
|
17
17
|
this.config = config;
|
|
18
18
|
this._lsKey = 'membrs';
|
|
19
|
+
this._loggedInObservable = new rxjs.BehaviorSubject(false);
|
|
19
20
|
console.log('membrs constructor');
|
|
20
21
|
// if the token exists in local storage, retrieve it back to the service
|
|
21
22
|
if (localStorage.getItem(this._lsKey)) {
|
|
@@ -41,6 +42,7 @@
|
|
|
41
42
|
_this.http.post(_this.config.apiProtocol + _this.config.api + '/token/' + _this._token, {}).subscribe(function (response) {
|
|
42
43
|
if (response.token) {
|
|
43
44
|
_this.token = response.token;
|
|
45
|
+
_this._loggedInObservable.next(true);
|
|
44
46
|
resolve(_this._token);
|
|
45
47
|
}
|
|
46
48
|
else {
|
|
@@ -51,6 +53,7 @@
|
|
|
51
53
|
});
|
|
52
54
|
}
|
|
53
55
|
else {
|
|
56
|
+
_this._loggedInObservable.next(true);
|
|
54
57
|
resolve(_this._token);
|
|
55
58
|
}
|
|
56
59
|
});
|
|
@@ -87,6 +90,13 @@
|
|
|
87
90
|
enumerable: false,
|
|
88
91
|
configurable: true
|
|
89
92
|
});
|
|
93
|
+
Object.defineProperty(MembrsService.prototype, "isLoggedInObservable", {
|
|
94
|
+
get: function () {
|
|
95
|
+
return this._loggedInObservable;
|
|
96
|
+
},
|
|
97
|
+
enumerable: false,
|
|
98
|
+
configurable: true
|
|
99
|
+
});
|
|
90
100
|
MembrsService.prototype.logout = function () {
|
|
91
101
|
var _this = this;
|
|
92
102
|
return new Promise(function (resolve, reject) {
|
|
@@ -175,7 +185,7 @@
|
|
|
175
185
|
return new Promise(function (resolve, reject) {
|
|
176
186
|
console.log('validate promise resolve');
|
|
177
187
|
membrsService.reissue().then(function (response) {
|
|
178
|
-
resolve();
|
|
188
|
+
resolve(null);
|
|
179
189
|
}).catch(function (error) {
|
|
180
190
|
console.log('error in validateResolveFn');
|
|
181
191
|
console.log(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nakedcreativity-membrs-angular-helper.umd.js","sources":["../../../projects/membrs/src/lib/config.service.ts","../../../projects/membrs/src/lib/membrs.service.ts","../../../projects/membrs/src/lib/router.config.ts","../../../projects/membrs/src/lib/token.ts","../../../projects/membrs/src/lib/membrs.module.ts","../../../projects/membrs/src/lib/auth.interceptor.ts","../../../projects/membrs/src/nakedcreativity-membrs-angular-helper.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MembrsConfig } from './config.interface';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionTToken used to import the config object, provided from the outside\n */\nexport const MembrsConfigService = new InjectionToken<MembrsConfig>(\"MembrsConfig\");\n","import { Injectable, Inject } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { HttpClient } from '@angular/common/http'\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nconst jwtService = new JwtHelperService()\n\n@Injectable({\n providedIn: 'root'\n})\n\n\nexport class MembrsService {\n\n _token: string;\n _decoded: any;\n _lsKey: string = 'membrs';\n\n constructor(private http: HttpClient, @Inject(MembrsConfigService) private config: MembrsConfig) {\n\n console.log('membrs constructor')\n // if the token exists in local storage, retrieve it back to the service\n if(localStorage.getItem(this._lsKey)){\n this.token = localStorage.getItem(this._lsKey)\n }\n \n }\n\n reissue(token?:string){\n\n return new Promise((resolve, reject)=>{\n\n if(!token && !this._token){\n reject('NOT_LOGGED_IN')\n }\n\n if(token)\n this.token = token\n\n // check stored token has not expired, or needs to be reissued soon\n var reissueIn = this._decoded.exp - Math.floor(Date.now()/1000)\n \n // token has expired\n if(reissueIn < 0){\n reject('NOT_LOGGED_IN')\n }\n \n // token expiring soon\n if(reissueIn < 300){\n\n this.http.post(this.config.apiProtocol + this.config.api+'/token/'+this._token, {}).subscribe((response:any)=>{\n\n if(response.token){\n this.token = response.token\n resolve(this._token)\n }else {\n reject('NOT_LOGGED_IN')\n }\n \n }, error=>{\n reject('NOT_LOGGED_IN')\n })\n\n }else {\n resolve(this._token)\n }\n \n })\n \n }\n\n set token(token){\n this._token = token\n localStorage.setItem(this._lsKey, token)\n this._decoded = jwtService.decodeToken(this._token)\n }\n\n deleteToken(){\n localStorage.removeItem(this._lsKey)\n }\n\n isLoggedIn(){\n return this.token ? true : false\n }\n\n get profile(){\n return this._decoded\n }\n\n get token(){\n return this._token\n }\n\n get admin (){\n return this.profile.permission == 1\n }\n\n logout(){\n return new Promise((resolve, reject)=>{\n this.http.delete(this.config.apiProtocol+this.config.api+'/token/'+this._token).subscribe((response:any)=>{\n this._token = null;\n localStorage.removeItem(this._lsKey)\n resolve(this.config.login)\n //this.router.stateService.go('dashboard')\n }, error=>{\n reject(error)\n })\n })\n \n }\n\n\n}\n","import { UIRouter } from '@uirouter/core';\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nimport { Injector } from '@angular/core';\nimport { MembrsService } from './membrs.service';\n\nexport function routerConfigFn(router: UIRouter, injector: Injector) {\n\n const transitionService = router.transitionService;\n const stateService = router.stateService\n const config:MembrsConfig = injector.get(MembrsConfigService)\n const membrsService = injector.get(MembrsService)\n\n \tstateService.defaultErrorHandler(function(error) {\n\t\t \n\t\tconsole.log('Default error handler - Membrs Angular Helper')\n\t\tconsole.log(error)\n\t\t\t\n\t\tif(error.detail == 'NOT_LOGGED_IN'){\n\t\t\tmembrsService.deleteToken()\n\t\t\twindow.location.href = config.login;\n\t\t}\n\n\t\tif(error.detail == 'INSUFFICIENT_PERMISSIONS')\n\t\t\tstateService.go(config.defaultState)\n\n\t});\n\t\n}","export function retrieveToken() {\n console.log('retrieve from ls')\n return localStorage.getItem('membrs');\n}","import { NgModule, ModuleWithProviders, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MembrsService } from './membrs.service';\nimport { JwtModule, JWT_OPTIONS } from \"@auth0/angular-jwt\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { UIRouterModule } from '@uirouter/angular'\n\nimport { Ng2StateDeclaration } from '@uirouter/angular';\nimport { Transition, UIRouter } from '@uirouter/angular'\n\nimport { routerConfigFn } from './router.config';\nimport { MembrsConfig } from './config.interface';\nimport { MembrsConfigService } from './config.service';\nimport { retrieveToken } from './token';\n\nexport const validateResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: validateResolveFn\n}\n\nexport const reissueResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: reissueResolveFn\n}\n\nexport const reissueState:Ng2StateDeclaration = {\n\tname: 'reissue', \n\turl: '/reissue?token',\n\tviews: { },\n\tresolve: [\n reissueResolve\n\t]\n}\n\nexport function reissueResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('reissue promise resolve')\n console.log(transition.params().token)\n membrsService.reissue(transition.params().token).then((response)=>{\n console.log('redirect to default state')\n router.stateService.go(membrsConfig.defaultState, {}, {inherit:false})\n reject()\n }).catch(error=>{\n console.log('error in reissue resolve')\n console.log(error)\n //window.location.href = environment.login\n reject(error)\n })\n\n\t})\n}\n\nexport function validateResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('validate promise resolve')\n \n membrsService.reissue().then((response)=>{\n resolve()\n }).catch(error=>{\n console.log('error in validateResolveFn')\n console.log(error)\n window.location.href = membrsConfig.login\n reject(error)\n })\n\n})\n}\n\nexport function jwtOptionsFactory(config) {\n console.log('jwt options factory')\n console.log(config)\n return {\n tokenGetter: () => {\n console.log('token getter', localStorage.getItem('membrs'))\n return localStorage.getItem('membrs');\n },\n allowedDomains: [config.api]\n }\n}\n\n\n/** The top level state(s) */\nexport const STATES = [\n reissueState\n]\n\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n JwtModule\n // JwtModule.forRoot({\n // config: {\n // tokenGetter: retrieveToken\n // }\n // })\n // UIRouterModule.forChild({\n // states: STATES,\n // config: routerConfigFn,\n // }),\n // JwtModule.forRoot({})\n ]\n})\n\n\n\nexport class MembrsModule { \n static forRoot(config: MembrsConfig): ModuleWithProviders<MembrsModule> {\n\n\n const moduleProviders = UIRouterModule.forChild({\n states: STATES,\n config: routerConfigFn\n }).providers\n\n moduleProviders.push(JwtModule.forRoot({\n config: {\n tokenGetter: retrieveToken,\n allowedDomains: []\n }\n }).providers)\n \n moduleProviders.push(MembrsService)\n moduleProviders.push({provide: MembrsConfigService,useValue: config});\n \n \n return {\n ngModule: MembrsModule, \n providers: moduleProviders //[{provide: MembrsConfigService,useValue: config}]\n };\n \n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n//import { NgBusyService } from '@nakedcreativity/ng-busy';\nimport { finalize } from 'rxjs/operators';\n\n\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n constructor() {}\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n \n //this.busyService.busy()\n request = request.clone({\n setHeaders: {\n Authorization: localStorage.getItem('membrs')\n }\n });\n return next.handle(request).pipe(finalize(()=>{\n //this.busyService.finished()\n }));\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MembrsConfig as ɵb} from './lib/config.interface';\nexport {MembrsConfigService as ɵa} from './lib/config.service';"],"names":["InjectionToken","JwtHelperService","Injectable","HttpClient","Inject","Transition","UIRouter","UIRouterModule","JwtModule","NgModule","CommonModule","HttpClientModule","finalize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nakedcreativity-membrs-angular-helper.umd.js","sources":["../../../projects/membrs/src/lib/config.service.ts","../../../projects/membrs/src/lib/membrs.service.ts","../../../projects/membrs/src/lib/router.config.ts","../../../projects/membrs/src/lib/token.ts","../../../projects/membrs/src/lib/membrs.module.ts","../../../projects/membrs/src/lib/auth.interceptor.ts","../../../projects/membrs/src/nakedcreativity-membrs-angular-helper.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MembrsConfig } from './config.interface';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionTToken used to import the config object, provided from the outside\n */\nexport const MembrsConfigService = new InjectionToken<MembrsConfig>(\"MembrsConfig\");\n","import { Injectable, Inject } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { HttpClient } from '@angular/common/http'\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nimport { BehaviorSubject } from 'rxjs';\nconst jwtService = new JwtHelperService()\n\n@Injectable({\n providedIn: 'root'\n})\n\n\nexport class MembrsService {\n\n _token: string;\n _decoded: any;\n _lsKey: string = 'membrs';\n _loggedInObservable: BehaviorSubject<Boolean> = new BehaviorSubject(false)\n\n constructor(private http: HttpClient, @Inject(MembrsConfigService) private config: MembrsConfig) {\n\n console.log('membrs constructor')\n // if the token exists in local storage, retrieve it back to the service\n if(localStorage.getItem(this._lsKey)){\n this.token = localStorage.getItem(this._lsKey)\n }\n \n }\n\n reissue(token?:string){\n\n return new Promise((resolve, reject)=>{\n\n if(!token && !this._token){\n reject('NOT_LOGGED_IN')\n }\n\n if(token)\n this.token = token\n\n // check stored token has not expired, or needs to be reissued soon\n var reissueIn = this._decoded.exp - Math.floor(Date.now()/1000)\n \n // token has expired\n if(reissueIn < 0){\n reject('NOT_LOGGED_IN')\n }\n \n // token expiring soon\n if(reissueIn < 300){\n\n this.http.post(this.config.apiProtocol + this.config.api+'/token/'+this._token, {}).subscribe((response:any)=>{\n\n if(response.token){\n this.token = response.token\n this._loggedInObservable.next(true)\n resolve(this._token)\n }else {\n reject('NOT_LOGGED_IN')\n }\n \n }, error=>{\n reject('NOT_LOGGED_IN')\n })\n\n }else {\n this._loggedInObservable.next(true)\n resolve(this._token)\n }\n \n })\n \n }\n\n set token(token){\n this._token = token\n localStorage.setItem(this._lsKey, token)\n this._decoded = jwtService.decodeToken(this._token)\n }\n\n deleteToken(){\n localStorage.removeItem(this._lsKey)\n }\n\n isLoggedIn(){\n return this.token ? true : false\n }\n\n get profile(){\n return this._decoded\n }\n\n get token(){\n return this._token\n }\n\n get admin (){\n return this.profile.permission == 1\n }\n\n get isLoggedInObservable(){\n return this._loggedInObservable\n }\n \n logout(){\n return new Promise((resolve, reject)=>{\n this.http.delete(this.config.apiProtocol+this.config.api+'/token/'+this._token).subscribe((response:any)=>{\n this._token = null;\n localStorage.removeItem(this._lsKey)\n resolve(this.config.login)\n //this.router.stateService.go('dashboard')\n }, error=>{\n reject(error)\n })\n })\n \n }\n\n\n}\n","import { UIRouter } from '@uirouter/core';\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nimport { Injector } from '@angular/core';\nimport { MembrsService } from './membrs.service';\n\nexport function routerConfigFn(router: UIRouter, injector: Injector) {\n\n const transitionService = router.transitionService;\n const stateService = router.stateService\n const config:MembrsConfig = injector.get(MembrsConfigService)\n const membrsService = injector.get(MembrsService)\n\n \tstateService.defaultErrorHandler(function(error) {\n\t\t \n\t\tconsole.log('Default error handler - Membrs Angular Helper')\n\t\tconsole.log(error)\n\t\t\t\n\t\tif(error.detail == 'NOT_LOGGED_IN'){\n\t\t\tmembrsService.deleteToken()\n\t\t\twindow.location.href = config.login;\n\t\t}\n\n\t\tif(error.detail == 'INSUFFICIENT_PERMISSIONS')\n\t\t\tstateService.go(config.defaultState)\n\n\t});\n\t\n}","export function retrieveToken() {\n console.log('retrieve from ls')\n return localStorage.getItem('membrs');\n}","import { NgModule, ModuleWithProviders, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MembrsService } from './membrs.service';\nimport { JwtModule, JWT_OPTIONS } from \"@auth0/angular-jwt\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { UIRouterModule } from '@uirouter/angular'\n\nimport { Ng2StateDeclaration } from '@uirouter/angular';\nimport { Transition, UIRouter } from '@uirouter/angular'\n\nimport { routerConfigFn } from './router.config';\nimport { MembrsConfig } from './config.interface';\nimport { MembrsConfigService } from './config.service';\nimport { retrieveToken } from './token';\n\nexport const validateResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: validateResolveFn\n}\n\nexport const reissueResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: reissueResolveFn\n}\n\nexport const reissueState:Ng2StateDeclaration = {\n\tname: 'reissue', \n\turl: '/reissue?token',\n\tviews: { },\n\tresolve: [\n reissueResolve\n\t]\n}\n\nexport function reissueResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('reissue promise resolve')\n console.log(transition.params().token)\n membrsService.reissue(transition.params().token).then((response)=>{\n console.log('redirect to default state')\n router.stateService.go(membrsConfig.defaultState, {}, {inherit:false})\n reject()\n }).catch(error=>{\n console.log('error in reissue resolve')\n console.log(error)\n //window.location.href = environment.login\n reject(error)\n })\n\n\t})\n}\n\nexport function validateResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('validate promise resolve')\n \n membrsService.reissue().then((response)=>{\n resolve(null)\n }).catch(error=>{\n console.log('error in validateResolveFn')\n console.log(error)\n window.location.href = membrsConfig.login\n reject(error)\n })\n\n})\n}\n\nexport function jwtOptionsFactory(config) {\n console.log('jwt options factory')\n console.log(config)\n return {\n tokenGetter: () => {\n console.log('token getter', localStorage.getItem('membrs'))\n return localStorage.getItem('membrs');\n },\n allowedDomains: [config.api]\n }\n}\n\n\n/** The top level state(s) */\nexport const STATES = [\n reissueState\n]\n\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n JwtModule\n // JwtModule.forRoot({\n // config: {\n // tokenGetter: retrieveToken\n // }\n // })\n // UIRouterModule.forChild({\n // states: STATES,\n // config: routerConfigFn,\n // }),\n // JwtModule.forRoot({})\n ]\n})\n\n\n\nexport class MembrsModule { \n static forRoot(config: MembrsConfig): ModuleWithProviders<MembrsModule> {\n\n\n const moduleProviders = UIRouterModule.forChild({\n states: STATES,\n config: routerConfigFn\n }).providers\n\n moduleProviders.push(JwtModule.forRoot({\n config: {\n tokenGetter: retrieveToken,\n allowedDomains: []\n }\n }).providers)\n \n moduleProviders.push(MembrsService)\n moduleProviders.push({provide: MembrsConfigService,useValue: config});\n \n \n return {\n ngModule: MembrsModule, \n providers: moduleProviders //[{provide: MembrsConfigService,useValue: config}]\n };\n \n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n//import { NgBusyService } from '@nakedcreativity/ng-busy';\nimport { finalize } from 'rxjs/operators';\n\n\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n constructor() {}\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n \n //this.busyService.busy()\n request = request.clone({\n setHeaders: {\n Authorization: localStorage.getItem('membrs')\n }\n });\n return next.handle(request).pipe(finalize(()=>{\n //this.busyService.finished()\n }));\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MembrsConfig as ɵb} from './lib/config.interface';\nexport {MembrsConfigService as ɵa} from './lib/config.service';"],"names":["InjectionToken","JwtHelperService","BehaviorSubject","Injectable","HttpClient","Inject","Transition","UIRouter","UIRouterModule","JwtModule","NgModule","CommonModule","HttpClientModule","finalize"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@angular/core"),require("@auth0/angular-jwt"),require("@angular/common/http"),require("@angular/common"),require("@uirouter/angular"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@nakedcreativity/membrs-angular-helper",["exports","@angular/core","@auth0/angular-jwt","@angular/common/http","@angular/common","@uirouter/angular","rxjs/operators"],o):o(((e=e||self).nakedcreativity=e.nakedcreativity||{},e.nakedcreativity["membrs-angular-helper"]={}),e.ng.core,e.angularJwt,e.ng.common.http,e.ng.common,e.angular,e.rxjs.operators)}(this,(function(e,o,t,n,r,i,s){"use strict";var a=new o.InjectionToken("MembrsConfig"),
|
|
1
|
+
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports,require("@angular/core"),require("@auth0/angular-jwt"),require("@angular/common/http"),require("rxjs"),require("@angular/common"),require("@uirouter/angular"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@nakedcreativity/membrs-angular-helper",["exports","@angular/core","@auth0/angular-jwt","@angular/common/http","rxjs","@angular/common","@uirouter/angular","rxjs/operators"],o):o(((e="undefined"!=typeof globalThis?globalThis:e||self).nakedcreativity=e.nakedcreativity||{},e.nakedcreativity["membrs-angular-helper"]={}),e.ng.core,e.angularJwt,e.ng.common.http,e.rxjs,e.ng.common,e.angular,e.rxjs.operators)}(this,(function(e,o,t,n,r,i,s,l){"use strict";var a=new o.InjectionToken("MembrsConfig"),u=new t.JwtHelperService,c=function(){function e(e,o){this.http=e,this.config=o,this._lsKey="membrs",this._loggedInObservable=new r.BehaviorSubject(!1),console.log("membrs constructor"),localStorage.getItem(this._lsKey)&&(this.token=localStorage.getItem(this._lsKey))}return e.prototype.reissue=function(e){var o=this;return new Promise((function(t,n){e||o._token||n("NOT_LOGGED_IN"),e&&(o.token=e);var r=o._decoded.exp-Math.floor(Date.now()/1e3);r<0&&n("NOT_LOGGED_IN"),r<300?o.http.post(o.config.apiProtocol+o.config.api+"/token/"+o._token,{}).subscribe((function(e){e.token?(o.token=e.token,o._loggedInObservable.next(!0),t(o._token)):n("NOT_LOGGED_IN")}),(function(e){n("NOT_LOGGED_IN")})):(o._loggedInObservable.next(!0),t(o._token))}))},Object.defineProperty(e.prototype,"token",{get:function(){return this._token},set:function(e){this._token=e,localStorage.setItem(this._lsKey,e),this._decoded=u.decodeToken(this._token)},enumerable:!1,configurable:!0}),e.prototype.deleteToken=function(){localStorage.removeItem(this._lsKey)},e.prototype.isLoggedIn=function(){return!!this.token},Object.defineProperty(e.prototype,"profile",{get:function(){return this._decoded},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"admin",{get:function(){return 1==this.profile.permission},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isLoggedInObservable",{get:function(){return this._loggedInObservable},enumerable:!1,configurable:!0}),e.prototype.logout=function(){var e=this;return new Promise((function(o,t){e.http.delete(e.config.apiProtocol+e.config.api+"/token/"+e._token).subscribe((function(t){e._token=null,localStorage.removeItem(e._lsKey),o(e.config.login)}),(function(e){t(e)}))}))},e}();function g(e,o){e.transitionService;var t=e.stateService,n=o.get(a),r=o.get(c);t.defaultErrorHandler((function(e){console.log("Default error handler - Membrs Angular Helper"),console.log(e),"NOT_LOGGED_IN"==e.detail&&(r.deleteToken(),window.location.href=n.login),"INSUFFICIENT_PERMISSIONS"==e.detail&&t.go(n.defaultState)}))}function f(){return console.log("retrieve from ls"),localStorage.getItem("membrs")}c.ɵprov=o.ɵɵdefineInjectable({factory:function(){return new c(o.ɵɵinject(n.HttpClient),o.ɵɵinject(a))},token:c,providedIn:"root"}),c.decorators=[{type:o.Injectable,args:[{providedIn:"root"}]}],c.ctorParameters=function(){return[{type:n.HttpClient},{type:void 0,decorators:[{type:o.Inject,args:[a]}]}]};var p={token:"reissue",deps:[s.Transition,s.UIRouter,c,a],resolveFn:h},d={token:"reissue",deps:[s.Transition,s.UIRouter,c,a],resolveFn:v},m={name:"reissue",url:"/reissue?token",views:{},resolve:[d]};function v(e,o,t,n){return new Promise((function(r,i){console.log("reissue promise resolve"),console.log(e.params().token),t.reissue(e.params().token).then((function(e){console.log("redirect to default state"),o.stateService.go(n.defaultState,{},{inherit:!1}),i()})).catch((function(e){console.log("error in reissue resolve"),console.log(e),i(e)}))}))}function h(e,o,t,n){return new Promise((function(e,o){console.log("validate promise resolve"),t.reissue().then((function(o){e(null)})).catch((function(e){console.log("error in validateResolveFn"),console.log(e),window.location.href=n.login,o(e)}))}))}var b=[m],k=function(){function e(){}return e.forRoot=function(o){var n=s.UIRouterModule.forChild({states:b,config:g}).providers;return n.push(t.JwtModule.forRoot({config:{tokenGetter:f,allowedDomains:[]}}).providers),n.push(c),n.push({provide:a,useValue:o}),{ngModule:e,providers:n}},e}();k.decorators=[{type:o.NgModule,args:[{imports:[i.CommonModule,n.HttpClientModule,t.JwtModule]}]}];var y=function(){function e(){}return e.prototype.intercept=function(e,o){return e=e.clone({setHeaders:{Authorization:localStorage.getItem("membrs")}}),o.handle(e).pipe(l.finalize((function(){})))},e}();y.decorators=[{type:o.Injectable}],y.ctorParameters=function(){return[]},e.MembrsModule=k,e.MembrsService=c,e.STATES=b,e.TokenInterceptor=y,e.jwtOptionsFactory=function(e){return console.log("jwt options factory"),console.log(e),{tokenGetter:function(){return console.log("token getter",localStorage.getItem("membrs")),localStorage.getItem("membrs")},allowedDomains:[e.api]}},e.reissueResolve=d,e.reissueResolveFn=v,e.reissueState=m,e.retrieveToken=f,e.validateResolve=p,e.validateResolveFn=h,e.ɵa=a,Object.defineProperty(e,"__esModule",{value:!0})}));
|
|
2
2
|
//# sourceMappingURL=nakedcreativity-membrs-angular-helper.umd.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../projects/membrs/src/lib/config.service.ts","../../../projects/membrs/src/lib/membrs.service.ts","../../../projects/membrs/src/lib/router.config.ts","../../../projects/membrs/src/lib/token.ts","../../../projects/membrs/src/lib/membrs.module.ts","../../../projects/membrs/src/lib/auth.interceptor.ts"],"names":["MembrsConfigService","InjectionToken","jwtService","JwtHelperService","MembrsService","http","config","this","_lsKey","console","log","localStorage","getItem","token","prototype","reissue","_this","Promise","resolve","reject","_token","reissueIn","_decoded","exp","Math","floor","Date","now","post","apiProtocol","api","subscribe","response","error","Object","defineProperty","setItem","decodeToken","deleteToken","removeItem","isLoggedIn","profile","permission","logout","delete","login","routerConfigFn","router","injector","transitionService","stateService","get","membrsService","defaultErrorHandler","detail","window","location","href","go","defaultState","retrieveToken","Injectable","args","providedIn","HttpClient","Inject","validateResolve","deps","Transition","UIRouter","resolveFn","validateResolveFn","reissueResolve","reissueResolveFn","reissueState","name","url","views","transition","membrsConfig","params","then","inherit","catch","STATES","MembrsModule","forRoot","moduleProviders","UIRouterModule","forChild","states","providers","push","JwtModule","tokenGetter","allowedDomains","provide","useValue","ngModule","NgModule","imports","CommonModule","HttpClientModule","TokenInterceptor","intercept","request","next","clone","setHeaders","Authorization","handle","pipe","finalize"],"mappings":"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","sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MembrsConfig } from './config.interface';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionTToken used to import the config object, provided from the outside\n */\nexport const MembrsConfigService = new InjectionToken<MembrsConfig>(\"MembrsConfig\");\n","import { Injectable, Inject } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { HttpClient } from '@angular/common/http'\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nconst jwtService = new JwtHelperService()\n\n@Injectable({\n providedIn: 'root'\n})\n\n\nexport class MembrsService {\n\n _token: string;\n _decoded: any;\n _lsKey: string = 'membrs';\n\n constructor(private http: HttpClient, @Inject(MembrsConfigService) private config: MembrsConfig) {\n\n console.log('membrs constructor')\n // if the token exists in local storage, retrieve it back to the service\n if(localStorage.getItem(this._lsKey)){\n this.token = localStorage.getItem(this._lsKey)\n }\n \n }\n\n reissue(token?:string){\n\n return new Promise((resolve, reject)=>{\n\n if(!token && !this._token){\n reject('NOT_LOGGED_IN')\n }\n\n if(token)\n this.token = token\n\n // check stored token has not expired, or needs to be reissued soon\n var reissueIn = this._decoded.exp - Math.floor(Date.now()/1000)\n \n // token has expired\n if(reissueIn < 0){\n reject('NOT_LOGGED_IN')\n }\n \n // token expiring soon\n if(reissueIn < 300){\n\n this.http.post(this.config.apiProtocol + this.config.api+'/token/'+this._token, {}).subscribe((response:any)=>{\n\n if(response.token){\n this.token = response.token\n resolve(this._token)\n }else {\n reject('NOT_LOGGED_IN')\n }\n \n }, error=>{\n reject('NOT_LOGGED_IN')\n })\n\n }else {\n resolve(this._token)\n }\n \n })\n \n }\n\n set token(token){\n this._token = token\n localStorage.setItem(this._lsKey, token)\n this._decoded = jwtService.decodeToken(this._token)\n }\n\n deleteToken(){\n localStorage.removeItem(this._lsKey)\n }\n\n isLoggedIn(){\n return this.token ? true : false\n }\n\n get profile(){\n return this._decoded\n }\n\n get token(){\n return this._token\n }\n\n get admin (){\n return this.profile.permission == 1\n }\n\n logout(){\n return new Promise((resolve, reject)=>{\n this.http.delete(this.config.apiProtocol+this.config.api+'/token/'+this._token).subscribe((response:any)=>{\n this._token = null;\n localStorage.removeItem(this._lsKey)\n resolve(this.config.login)\n //this.router.stateService.go('dashboard')\n }, error=>{\n reject(error)\n })\n })\n \n }\n\n\n}\n","import { UIRouter } from '@uirouter/core';\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nimport { Injector } from '@angular/core';\nimport { MembrsService } from './membrs.service';\n\nexport function routerConfigFn(router: UIRouter, injector: Injector) {\n\n const transitionService = router.transitionService;\n const stateService = router.stateService\n const config:MembrsConfig = injector.get(MembrsConfigService)\n const membrsService = injector.get(MembrsService)\n\n \tstateService.defaultErrorHandler(function(error) {\n\t\t \n\t\tconsole.log('Default error handler - Membrs Angular Helper')\n\t\tconsole.log(error)\n\t\t\t\n\t\tif(error.detail == 'NOT_LOGGED_IN'){\n\t\t\tmembrsService.deleteToken()\n\t\t\twindow.location.href = config.login;\n\t\t}\n\n\t\tif(error.detail == 'INSUFFICIENT_PERMISSIONS')\n\t\t\tstateService.go(config.defaultState)\n\n\t});\n\t\n}","export function retrieveToken() {\n console.log('retrieve from ls')\n return localStorage.getItem('membrs');\n}","import { NgModule, ModuleWithProviders, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MembrsService } from './membrs.service';\nimport { JwtModule, JWT_OPTIONS } from \"@auth0/angular-jwt\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { UIRouterModule } from '@uirouter/angular'\n\nimport { Ng2StateDeclaration } from '@uirouter/angular';\nimport { Transition, UIRouter } from '@uirouter/angular'\n\nimport { routerConfigFn } from './router.config';\nimport { MembrsConfig } from './config.interface';\nimport { MembrsConfigService } from './config.service';\nimport { retrieveToken } from './token';\n\nexport const validateResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: validateResolveFn\n}\n\nexport const reissueResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: reissueResolveFn\n}\n\nexport const reissueState:Ng2StateDeclaration = {\n\tname: 'reissue', \n\turl: '/reissue?token',\n\tviews: { },\n\tresolve: [\n reissueResolve\n\t]\n}\n\nexport function reissueResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('reissue promise resolve')\n console.log(transition.params().token)\n membrsService.reissue(transition.params().token).then((response)=>{\n console.log('redirect to default state')\n router.stateService.go(membrsConfig.defaultState, {}, {inherit:false})\n reject()\n }).catch(error=>{\n console.log('error in reissue resolve')\n console.log(error)\n //window.location.href = environment.login\n reject(error)\n })\n\n\t})\n}\n\nexport function validateResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('validate promise resolve')\n \n membrsService.reissue().then((response)=>{\n resolve()\n }).catch(error=>{\n console.log('error in validateResolveFn')\n console.log(error)\n window.location.href = membrsConfig.login\n reject(error)\n })\n\n})\n}\n\nexport function jwtOptionsFactory(config) {\n console.log('jwt options factory')\n console.log(config)\n return {\n tokenGetter: () => {\n console.log('token getter', localStorage.getItem('membrs'))\n return localStorage.getItem('membrs');\n },\n allowedDomains: [config.api]\n }\n}\n\n\n/** The top level state(s) */\nexport const STATES = [\n reissueState\n]\n\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n JwtModule\n // JwtModule.forRoot({\n // config: {\n // tokenGetter: retrieveToken\n // }\n // })\n // UIRouterModule.forChild({\n // states: STATES,\n // config: routerConfigFn,\n // }),\n // JwtModule.forRoot({})\n ]\n})\n\n\n\nexport class MembrsModule { \n static forRoot(config: MembrsConfig): ModuleWithProviders<MembrsModule> {\n\n\n const moduleProviders = UIRouterModule.forChild({\n states: STATES,\n config: routerConfigFn\n }).providers\n\n moduleProviders.push(JwtModule.forRoot({\n config: {\n tokenGetter: retrieveToken,\n allowedDomains: []\n }\n }).providers)\n \n moduleProviders.push(MembrsService)\n moduleProviders.push({provide: MembrsConfigService,useValue: config});\n \n \n return {\n ngModule: MembrsModule, \n providers: moduleProviders //[{provide: MembrsConfigService,useValue: config}]\n };\n \n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n//import { NgBusyService } from '@nakedcreativity/ng-busy';\nimport { finalize } from 'rxjs/operators';\n\n\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n constructor() {}\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n \n //this.busyService.busy()\n request = request.clone({\n setHeaders: {\n Authorization: localStorage.getItem('membrs')\n }\n });\n return next.handle(request).pipe(finalize(()=>{\n //this.busyService.finished()\n }));\n }\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../../projects/membrs/src/lib/config.service.ts","../../../projects/membrs/src/lib/membrs.service.ts","../../../projects/membrs/src/lib/router.config.ts","../../../projects/membrs/src/lib/token.ts","../../../projects/membrs/src/lib/membrs.module.ts","../../../projects/membrs/src/lib/auth.interceptor.ts"],"names":["MembrsConfigService","InjectionToken","jwtService","JwtHelperService","MembrsService","http","config","this","_lsKey","_loggedInObservable","BehaviorSubject","console","log","localStorage","getItem","token","prototype","reissue","_this","Promise","resolve","reject","_token","reissueIn","_decoded","exp","Math","floor","Date","now","post","apiProtocol","api","subscribe","response","next","error","Object","defineProperty","setItem","decodeToken","deleteToken","removeItem","isLoggedIn","profile","permission","logout","delete","login","routerConfigFn","router","injector","transitionService","stateService","get","membrsService","defaultErrorHandler","detail","window","location","href","go","defaultState","retrieveToken","Injectable","args","providedIn","HttpClient","Inject","validateResolve","deps","Transition","UIRouter","resolveFn","validateResolveFn","reissueResolve","reissueResolveFn","reissueState","name","url","views","transition","membrsConfig","params","then","inherit","catch","STATES","MembrsModule","forRoot","moduleProviders","UIRouterModule","forChild","states","providers","push","JwtModule","tokenGetter","allowedDomains","provide","useValue","ngModule","NgModule","imports","CommonModule","HttpClientModule","TokenInterceptor","intercept","request","clone","setHeaders","Authorization","handle","pipe","finalize"],"mappings":"8vBAOaA,EAAsB,IAAIC,EAAAA,eAA6B,gBCD9DC,EAAa,IAAIC,EAAAA,8BAcrB,SAAAC,EAAoBC,EAAuDC,GAAvDC,KAAAF,KAAAA,EAAuDE,KAAAD,OAAAA,EAH3EC,KAAAC,OAAiB,SACjBD,KAAAE,oBAAgD,IAAIC,EAAAA,iBAAgB,GAIlEC,QAAQC,IAAI,sBAETC,aAAaC,QAAQP,KAAKC,UAC3BD,KAAKQ,MAAQF,aAAaC,QAAQP,KAAKC,gBAK3CJ,EAAAY,UAAAC,QAAA,SAAQF,GAAR,IAAAG,EAAAX,KAEE,OAAO,IAAIY,SAAQ,SAACC,EAASC,GAEvBN,GAAUG,EAAKI,QACjBD,EAAO,iBAGNN,IACDG,EAAKH,MAAQA,GAGf,IAAIQ,EAAYL,EAAKM,SAASC,IAAMC,KAAKC,MAAMC,KAAKC,MAAM,KAGvDN,EAAY,GACbF,EAAO,iBAINE,EAAY,IAEbL,EAAKb,KAAKyB,KAAKZ,EAAKZ,OAAOyB,YAAcb,EAAKZ,OAAO0B,IAAI,UAAUd,EAAKI,OAAQ,IAAIW,WAAU,SAACC,GAE1FA,EAASnB,OACVG,EAAKH,MAAQmB,EAASnB,MACtBG,EAAKT,oBAAoB0B,MAAK,GAC9Bf,EAAQF,EAAKI,SAEbD,EAAO,oBAGR,SAAAe,GACDf,EAAO,qBAITH,EAAKT,oBAAoB0B,MAAK,GAC9Bf,EAAQF,EAAKI,aAOnBe,OAAAC,eAAIlC,EAAAY,UAAA,QAAK,KAkBT,WACE,OAAOT,KAAKe,YAnBd,SAAUP,GACRR,KAAKe,OAASP,EACdF,aAAa0B,QAAQhC,KAAKC,OAAQO,GAClCR,KAAKiB,SAAWtB,EAAWsC,YAAYjC,KAAKe,yCAG9ClB,EAAAY,UAAAyB,YAAA,WACE5B,aAAa6B,WAAWnC,KAAKC,SAG/BJ,EAAAY,UAAA2B,WAAA,WACE,QAAOpC,KAAKQ,OAGdsB,OAAAC,eAAIlC,EAAAY,UAAA,UAAO,KAAX,WACE,OAAOT,KAAKiB,0CAOda,OAAAC,eAAIlC,EAAAY,UAAA,QAAK,KAAT,WACE,OAAkC,GAA3BT,KAAKqC,QAAQC,4CAGtBR,OAAAC,eAAIlC,EAAAY,UAAA,uBAAoB,KAAxB,WACE,OAAOT,KAAKE,qDAGdL,EAAAY,UAAA8B,OAAA,WAAA,IAAA5B,EAAAX,KACE,OAAO,IAAIY,SAAQ,SAACC,EAASC,GAC3BH,EAAKb,KAAK0C,OAAO7B,EAAKZ,OAAOyB,YAAYb,EAAKZ,OAAO0B,IAAI,UAAUd,EAAKI,QAAQW,WAAU,SAACC,GACzFhB,EAAKI,OAAS,KACdT,aAAa6B,WAAWxB,EAAKV,QAC7BY,EAAQF,EAAKZ,OAAO0C,UAEnB,SAAAZ,GACDf,EAAOe,wBC3GCa,EAAeC,EAAkBC,GAErBD,EAAOE,kBAAjC,IACMC,EAAeH,EAAOG,aACtB/C,EAAsB6C,EAASG,IAAItD,GACnCuD,EAAgBJ,EAASG,IAAIlD,GAEnCiD,EAAaG,qBAAoB,SAASpB,GAE1CzB,QAAQC,IAAI,iDACZD,QAAQC,IAAIwB,GAEO,iBAAhBA,EAAMqB,SACRF,EAAcd,cACdiB,OAAOC,SAASC,KAAOtD,EAAO0C,OAGZ,4BAAhBZ,EAAMqB,QACRJ,EAAaQ,GAAGvD,EAAOwD,0BCxBVC,IAEZ,OADApD,QAAQC,IAAI,oBACLC,aAAaC,QAAQ,iKFM/BkD,EAAAA,WAAUC,KAAA,CAAC,CACVC,WAAY,oDAPLC,EAAAA,2CAkBgCC,EAAAA,OAAMH,KAAA,CAACjE,YGLnCqE,EAAkB,CAC3BtD,MAAO,UACPuD,KAAM,CAAEC,EAAAA,WAAYC,EAAAA,SAAUpE,EAAeJ,GAC7CyE,UAAWC,GAGFC,EAAiB,CAC5B5D,MAAO,UACPuD,KAAM,CAAEC,EAAAA,WAAYC,EAAAA,SAAUpE,EAAeJ,GAC7CyE,UAAWG,GAGAC,EAAmC,CAC/CC,KAAM,UACNC,IAAK,iBACLC,MAAO,GACP5D,QAAS,CACNuD,aAIYC,EAAiBK,EAAY/B,EAAQK,EAAe2B,GAGhE,OAAO,IAAI/D,SAAQ,SAACC,EAASC,GAC3BV,QAAQC,IAAI,2BACZD,QAAQC,IAAIqE,EAAWE,SAASpE,OAChCwC,EAActC,QAAQgE,EAAWE,SAASpE,OAAOqE,MAAK,SAAClD,GACnDvB,QAAQC,IAAI,6BACZsC,EAAOG,aAAaQ,GAAGqB,EAAapB,aAAc,GAAI,CAACuB,SAAQ,IAC/DhE,OACDiE,OAAM,SAAAlD,GACLzB,QAAQC,IAAI,4BACZD,QAAQC,IAAIwB,GAEZf,EAAOe,kBAMDsC,EAAkBO,EAAY/B,EAAQK,EAAe2B,GAGnE,OAAO,IAAI/D,SAAQ,SAACC,EAASC,GAC3BV,QAAQC,IAAI,4BAEZ2C,EAActC,UAAUmE,MAAK,SAAClD,GAC1Bd,EAAQ,SACTkE,OAAM,SAAAlD,GACPzB,QAAQC,IAAI,8BACZD,QAAQC,IAAIwB,GACVsB,OAAOC,SAASC,KAAOsB,EAAalC,MACpC3B,EAAOe,aAoBFmD,EAAS,CAClBV,gBAwBJ,SAAAW,YACSA,EAAAC,QAAP,SAAenF,GAGb,IAAMoF,EAAkBC,EAAAA,eAAeC,SAAS,CAC9CC,OAAQN,EACRjF,OAAQ2C,IACP6C,UAaH,OAXAJ,EAAgBK,KAAKC,EAAAA,UAAUP,QAAQ,CACrCnF,OAAQ,CACN2F,YAAalC,EACbmC,eAAgB,MAEjBJ,WAEHJ,EAAgBK,KAAK3F,GACrBsF,EAAgBK,KAAK,CAACI,QAASnG,EAAoBoG,SAAU9F,IAGtD,CACL+F,SAAUb,EACVM,UAAWJ,6BA1ChBY,EAAAA,SAAQrC,KAAA,CAAC,CACRsC,QAAS,CACPC,EAAAA,aACAC,EAAAA,iBACAT,EAAAA,gCCnFF,SAAAU,YACAA,EAAA1F,UAAA2F,UAAA,SAAUC,EAA2BzE,GAQnC,OALAyE,EAAUA,EAAQC,MAAM,CACtBC,WAAY,CACVC,cAAelG,aAAaC,QAAQ,aAGjCqB,EAAK6E,OAAOJ,GAASK,KAAKC,EAAAA,UAAS,0CAX7ClD,EAAAA,mJD8DiC1D,GAGhC,OAFAK,QAAQC,IAAI,uBACZD,QAAQC,IAAIN,GACL,CACL2F,YAAa,WAEX,OADAtF,QAAQC,IAAI,eAAiBC,aAAaC,QAAQ,WAC3CD,aAAaC,QAAQ,WAE9BoF,eAAgB,CAAC5F,EAAO0B","sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MembrsConfig } from './config.interface';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionTToken used to import the config object, provided from the outside\n */\nexport const MembrsConfigService = new InjectionToken<MembrsConfig>(\"MembrsConfig\");\n","import { Injectable, Inject } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { HttpClient } from '@angular/common/http'\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nimport { BehaviorSubject } from 'rxjs';\nconst jwtService = new JwtHelperService()\n\n@Injectable({\n providedIn: 'root'\n})\n\n\nexport class MembrsService {\n\n _token: string;\n _decoded: any;\n _lsKey: string = 'membrs';\n _loggedInObservable: BehaviorSubject<Boolean> = new BehaviorSubject(false)\n\n constructor(private http: HttpClient, @Inject(MembrsConfigService) private config: MembrsConfig) {\n\n console.log('membrs constructor')\n // if the token exists in local storage, retrieve it back to the service\n if(localStorage.getItem(this._lsKey)){\n this.token = localStorage.getItem(this._lsKey)\n }\n \n }\n\n reissue(token?:string){\n\n return new Promise((resolve, reject)=>{\n\n if(!token && !this._token){\n reject('NOT_LOGGED_IN')\n }\n\n if(token)\n this.token = token\n\n // check stored token has not expired, or needs to be reissued soon\n var reissueIn = this._decoded.exp - Math.floor(Date.now()/1000)\n \n // token has expired\n if(reissueIn < 0){\n reject('NOT_LOGGED_IN')\n }\n \n // token expiring soon\n if(reissueIn < 300){\n\n this.http.post(this.config.apiProtocol + this.config.api+'/token/'+this._token, {}).subscribe((response:any)=>{\n\n if(response.token){\n this.token = response.token\n this._loggedInObservable.next(true)\n resolve(this._token)\n }else {\n reject('NOT_LOGGED_IN')\n }\n \n }, error=>{\n reject('NOT_LOGGED_IN')\n })\n\n }else {\n this._loggedInObservable.next(true)\n resolve(this._token)\n }\n \n })\n \n }\n\n set token(token){\n this._token = token\n localStorage.setItem(this._lsKey, token)\n this._decoded = jwtService.decodeToken(this._token)\n }\n\n deleteToken(){\n localStorage.removeItem(this._lsKey)\n }\n\n isLoggedIn(){\n return this.token ? true : false\n }\n\n get profile(){\n return this._decoded\n }\n\n get token(){\n return this._token\n }\n\n get admin (){\n return this.profile.permission == 1\n }\n\n get isLoggedInObservable(){\n return this._loggedInObservable\n }\n \n logout(){\n return new Promise((resolve, reject)=>{\n this.http.delete(this.config.apiProtocol+this.config.api+'/token/'+this._token).subscribe((response:any)=>{\n this._token = null;\n localStorage.removeItem(this._lsKey)\n resolve(this.config.login)\n //this.router.stateService.go('dashboard')\n }, error=>{\n reject(error)\n })\n })\n \n }\n\n\n}\n","import { UIRouter } from '@uirouter/core';\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nimport { Injector } from '@angular/core';\nimport { MembrsService } from './membrs.service';\n\nexport function routerConfigFn(router: UIRouter, injector: Injector) {\n\n const transitionService = router.transitionService;\n const stateService = router.stateService\n const config:MembrsConfig = injector.get(MembrsConfigService)\n const membrsService = injector.get(MembrsService)\n\n \tstateService.defaultErrorHandler(function(error) {\n\t\t \n\t\tconsole.log('Default error handler - Membrs Angular Helper')\n\t\tconsole.log(error)\n\t\t\t\n\t\tif(error.detail == 'NOT_LOGGED_IN'){\n\t\t\tmembrsService.deleteToken()\n\t\t\twindow.location.href = config.login;\n\t\t}\n\n\t\tif(error.detail == 'INSUFFICIENT_PERMISSIONS')\n\t\t\tstateService.go(config.defaultState)\n\n\t});\n\t\n}","export function retrieveToken() {\n console.log('retrieve from ls')\n return localStorage.getItem('membrs');\n}","import { NgModule, ModuleWithProviders, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MembrsService } from './membrs.service';\nimport { JwtModule, JWT_OPTIONS } from \"@auth0/angular-jwt\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { UIRouterModule } from '@uirouter/angular'\n\nimport { Ng2StateDeclaration } from '@uirouter/angular';\nimport { Transition, UIRouter } from '@uirouter/angular'\n\nimport { routerConfigFn } from './router.config';\nimport { MembrsConfig } from './config.interface';\nimport { MembrsConfigService } from './config.service';\nimport { retrieveToken } from './token';\n\nexport const validateResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: validateResolveFn\n}\n\nexport const reissueResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: reissueResolveFn\n}\n\nexport const reissueState:Ng2StateDeclaration = {\n\tname: 'reissue', \n\turl: '/reissue?token',\n\tviews: { },\n\tresolve: [\n reissueResolve\n\t]\n}\n\nexport function reissueResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('reissue promise resolve')\n console.log(transition.params().token)\n membrsService.reissue(transition.params().token).then((response)=>{\n console.log('redirect to default state')\n router.stateService.go(membrsConfig.defaultState, {}, {inherit:false})\n reject()\n }).catch(error=>{\n console.log('error in reissue resolve')\n console.log(error)\n //window.location.href = environment.login\n reject(error)\n })\n\n\t})\n}\n\nexport function validateResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('validate promise resolve')\n \n membrsService.reissue().then((response)=>{\n resolve(null)\n }).catch(error=>{\n console.log('error in validateResolveFn')\n console.log(error)\n window.location.href = membrsConfig.login\n reject(error)\n })\n\n})\n}\n\nexport function jwtOptionsFactory(config) {\n console.log('jwt options factory')\n console.log(config)\n return {\n tokenGetter: () => {\n console.log('token getter', localStorage.getItem('membrs'))\n return localStorage.getItem('membrs');\n },\n allowedDomains: [config.api]\n }\n}\n\n\n/** The top level state(s) */\nexport const STATES = [\n reissueState\n]\n\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n JwtModule\n // JwtModule.forRoot({\n // config: {\n // tokenGetter: retrieveToken\n // }\n // })\n // UIRouterModule.forChild({\n // states: STATES,\n // config: routerConfigFn,\n // }),\n // JwtModule.forRoot({})\n ]\n})\n\n\n\nexport class MembrsModule { \n static forRoot(config: MembrsConfig): ModuleWithProviders<MembrsModule> {\n\n\n const moduleProviders = UIRouterModule.forChild({\n states: STATES,\n config: routerConfigFn\n }).providers\n\n moduleProviders.push(JwtModule.forRoot({\n config: {\n tokenGetter: retrieveToken,\n allowedDomains: []\n }\n }).providers)\n \n moduleProviders.push(MembrsService)\n moduleProviders.push({provide: MembrsConfigService,useValue: config});\n \n \n return {\n ngModule: MembrsModule, \n providers: moduleProviders //[{provide: MembrsConfigService,useValue: config}]\n };\n \n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n//import { NgBusyService } from '@nakedcreativity/ng-busy';\nimport { finalize } from 'rxjs/operators';\n\n\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n constructor() {}\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n \n //this.busyService.busy()\n request = request.clone({\n setHeaders: {\n Authorization: localStorage.getItem('membrs')\n }\n });\n return next.handle(request).pipe(finalize(()=>{\n //this.busyService.finished()\n }));\n }\n}"]}
|
|
@@ -19,4 +19,4 @@ TokenInterceptor.decorators = [
|
|
|
19
19
|
{ type: Injectable }
|
|
20
20
|
];
|
|
21
21
|
TokenInterceptor.ctorParameters = () => [];
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvam9yZGFuY2hpdHR5L0dpdC9tZW1icnMtYXdzL215LW1lbWJycy9wcm9qZWN0cy9tZW1icnMvc3JjLyIsInNvdXJjZXMiOlsibGliL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVEzQywyREFBMkQ7QUFDM0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSTFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsZ0JBQWUsQ0FBQztJQUNoQixTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUVwRCx5QkFBeUI7UUFDekIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDdEIsVUFBVSxFQUFFO2dCQUNWLGFBQWEsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQzthQUM5QztTQUNGLENBQUMsQ0FBQztRQUNILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUUsRUFBRTtZQUM1Qyw2QkFBNkI7UUFDL0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7OztZQWRGLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBIdHRwUmVxdWVzdCxcbiAgSHR0cEhhbmRsZXIsXG4gIEh0dHBFdmVudCxcbiAgSHR0cEludGVyY2VwdG9yXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbi8vaW1wb3J0IHsgTmdCdXN5U2VydmljZSB9IGZyb20gJ0BuYWtlZGNyZWF0aXZpdHkvbmctYnVzeSc7XG5pbXBvcnQgeyBmaW5hbGl6ZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVG9rZW5JbnRlcmNlcHRvciBpbXBsZW1lbnRzIEh0dHBJbnRlcmNlcHRvciB7XG4gIGNvbnN0cnVjdG9yKCkge31cbiAgaW50ZXJjZXB0KHJlcXVlc3Q6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xuICAgIFxuICAgIC8vdGhpcy5idXN5U2VydmljZS5idXN5KClcbiAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XG4gICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgIEF1dGhvcml6YXRpb246IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZW1icnMnKVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBuZXh0LmhhbmRsZShyZXF1ZXN0KS5waXBlKGZpbmFsaXplKCgpPT57XG4gICAgICAvL3RoaXMuYnVzeVNlcnZpY2UuZmluaXNoZWQoKVxuICAgIH0pKTtcbiAgfVxufSJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvam9yZGFuY2hpdHR5L0dpdC9tZW1icnMtYXdzL215LW1lbWJycy9wcm9qZWN0cy9tZW1icnMvc3JjLyIsInNvdXJjZXMiOlsibGliL2NvbmZpZy5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgTWVtYnJzQ29uZmlnIHtcbiAgICBncmFwaFFMOiBzdHJpbmcsXG4gICAgYXBpOiBzdHJpbmcsXG4gICAgYXBpUHJvdG9jb2w6IHN0cmluZyxcbiAgICBsb2dpbjogc3RyaW5nLFxuICAgIGRlZmF1bHRTdGF0ZTogc3RyaW5nXG59Il19
|
|
@@ -4,4 +4,4 @@ import { InjectionToken } from '@angular/core';
|
|
|
4
4
|
* It's just an InjectionTToken used to import the config object, provided from the outside
|
|
5
5
|
*/
|
|
6
6
|
export const MembrsConfigService = new InjectionToken("MembrsConfig");
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2pvcmRhbmNoaXR0eS9HaXQvbWVtYnJzLWF3cy9teS1tZW1icnMvcHJvamVjdHMvbWVtYnJzL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9jb25maWcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRy9DOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLElBQUksY0FBYyxDQUFlLGNBQWMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbWJyc0NvbmZpZyB9IGZyb20gJy4vY29uZmlnLmludGVyZmFjZSc7XG5cbi8qKlxuICogVGhpcyBpcyBub3QgYSByZWFsIHNlcnZpY2UsIGJ1dCBpdCBsb29rcyBsaWtlIGl0IGZyb20gdGhlIG91dHNpZGUuXG4gKiBJdCdzIGp1c3QgYW4gSW5qZWN0aW9uVFRva2VuIHVzZWQgdG8gaW1wb3J0IHRoZSBjb25maWcgb2JqZWN0LCBwcm92aWRlZCBmcm9tIHRoZSBvdXRzaWRlXG4gKi9cbmV4cG9ydCBjb25zdCBNZW1icnNDb25maWdTZXJ2aWNlID0gbmV3IEluamVjdGlvblRva2VuPE1lbWJyc0NvbmZpZz4oXCJNZW1icnNDb25maWdcIik7XG4iXX0=
|
|
@@ -48,7 +48,7 @@ export function validateResolveFn(transition, router, membrsService, membrsConfi
|
|
|
48
48
|
return new Promise((resolve, reject) => {
|
|
49
49
|
console.log('validate promise resolve');
|
|
50
50
|
membrsService.reissue().then((response) => {
|
|
51
|
-
resolve();
|
|
51
|
+
resolve(null);
|
|
52
52
|
}).catch(error => {
|
|
53
53
|
console.log('error in validateResolveFn');
|
|
54
54
|
console.log(error);
|
|
@@ -111,4 +111,4 @@ MembrsModule.decorators = [
|
|
|
111
111
|
]
|
|
112
112
|
},] }
|
|
113
113
|
];
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYnJzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvam9yZGFuY2hpdHR5L0dpdC9tZW1icnMtYXdzL215LW1lbWJycy9wcm9qZWN0cy9tZW1icnMvc3JjLyIsInNvdXJjZXMiOlsibGliL21lbWJycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFeEMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHO0lBQzNCLEtBQUssRUFBRSxTQUFTO0lBQ2hCLElBQUksRUFBRSxDQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLG1CQUFtQixDQUFFO0lBQ2xFLFNBQVMsRUFBRSxpQkFBaUI7Q0FDL0IsQ0FBQTtBQUVELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRztJQUM1QixLQUFLLEVBQUUsU0FBUztJQUNoQixJQUFJLEVBQUUsQ0FBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBRTtJQUNsRSxTQUFTLEVBQUUsZ0JB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QUNsQixZQUFZO0NBQ2YsQ0FBQTtBQXVCRCxNQUFNLE9BQU8sWUFBWTtJQUN2QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQW9CO1FBR2pDLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDOUMsTUFBTSxFQUFFLE1BQU07WUFDZCxNQUFNLEVBQUUsY0FBYztTQUN2QixDQUFDLENBQUMsU0FBUyxDQUFBO1FBRVosZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDO1lBQ3JDLE1BQU0sRUFBRTtnQkFDTixXQUFXLEVBQUUsYUFBYTtnQkFDMUIsY0FBYyxFQUFFLEVBQUU7YUFDbkI7U0FDRixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUE7UUFFYixlQUFlLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1FBQ25DLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7UUFHdEUsT0FBTztZQUNMLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLFNBQVMsRUFBRSxlQUFlLENBQUMsbURBQW1EO1NBQy9FLENBQUM7SUFFSixDQUFDOzs7WUE3Q0YsUUFBUSxTQUFDO2dCQUNSLE9BQU8sRUFBRTtvQkFDUCxZQUFZO29CQUNaLGdCQUFnQjtvQkFDaEIsU0FBUztvQkFDVCxzQkFBc0I7b0JBQ3RCLGNBQWM7b0JBQ2QsaUNBQWlDO29CQUNqQyxNQUFNO29CQUNOLEtBQUs7b0JBQ0wsNEJBQTRCO29CQUM1QixvQkFBb0I7b0JBQ3BCLDRCQUE0QjtvQkFDNUIsTUFBTTtvQkFDTix3QkFBd0I7aUJBQ3pCO2FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycywgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBNZW1icnNTZXJ2aWNlIH0gZnJvbSAnLi9tZW1icnMuc2VydmljZSc7XG5pbXBvcnQgeyBKd3RNb2R1bGUsIEpXVF9PUFRJT05TIH0gZnJvbSBcIkBhdXRoMC9hbmd1bGFyLWp3dFwiO1xuaW1wb3J0IHsgSHR0cENsaWVudE1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgVUlSb3V0ZXJNb2R1bGUgfSBmcm9tICdAdWlyb3V0ZXIvYW5ndWxhcidcblxuaW1wb3J0IHsgTmcyU3RhdGVEZWNsYXJhdGlvbiB9IGZyb20gJ0B1aXJvdXRlci9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zaXRpb24sIFVJUm91dGVyIH0gZnJvbSAnQHVpcm91dGVyL2FuZ3VsYXInXG5cbmltcG9ydCB7IHJvdXRlckNvbmZpZ0ZuIH0gZnJvbSAnLi9yb3V0ZXIuY29uZmlnJztcbmltcG9ydCB7IE1lbWJyc0NvbmZpZyB9IGZyb20gJy4vY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNZW1icnNDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XG5pbXBvcnQgeyByZXRyaWV2ZVRva2VuIH0gZnJvbSAnLi90b2tlbic7XG5cbmV4cG9ydCBjb25zdCB2YWxpZGF0ZVJlc29sdmUgPSB7XG4gICAgdG9rZW46ICdyZWlzc3VlJyxcbiAgICBkZXBzOiBbIFRyYW5zaXRpb24sIFVJUm91dGVyLCBNZW1icnNTZXJ2aWNlLCBNZW1icnNDb25maWdTZXJ2aWNlIF0sXG4gICAgcmVzb2x2ZUZuOiB2YWxpZGF0ZVJlc29sdmVGblxufVxuXG5leHBvcnQgY29uc3QgcmVpc3N1ZVJlc29sdmUgPSB7XG4gIHRva2VuOiAncmVpc3N1ZScsXG4gIGRlcHM6IFsgVHJhbnNpdGlvbiwgVUlSb3V0ZXIsIE1lbWJyc1NlcnZpY2UsIE1lbWJyc0NvbmZpZ1NlcnZpY2UgXSxcbiAgcmVzb2x2ZUZuOiByZWlzc3VlUmVzb2x2ZUZuXG59XG5cbmV4cG9ydCBjb25zdCByZWlzc3VlU3RhdGU6TmcyU3RhdGVEZWNsYXJhdGlvbiA9IHtcblx0bmFtZTogJ3JlaXNzdWUnLCBcblx0dXJsOiAnL3JlaXNzdWU/dG9rZW4nLFxuXHR2aWV3czogeyB9LFxuXHRyZXNvbHZlOiBbXG4gICAgcmVpc3N1ZVJlc29sdmVcblx0XVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVpc3N1ZVJlc29sdmVGbih0cmFuc2l0aW9uLCByb3V0ZXIsIG1lbWJyc1NlcnZpY2UsIG1lbWJyc0NvbmZpZzpNZW1icnNDb25maWcpIHtcbiAgICBcbiAgICAvL2NvbnNvbGUubG9nKG1lbWJyc1NlcnZpY2UpXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKCdyZWlzc3VlIHByb21pc2UgcmVzb2x2ZScpXG4gICAgICBjb25zb2xlLmxvZyh0cmFuc2l0aW9uLnBhcmFtcygpLnRva2VuKVxuICAgICAgbWVtYnJzU2VydmljZS5yZWlzc3VlKHRyYW5zaXRpb24ucGFyYW1zKCkudG9rZW4pLnRoZW4oKHJlc3BvbnNlKT0+e1xuICAgICAgICAgIGNvbnNvbGUubG9nKCdyZWRpcmVjdCB0byBkZWZhdWx0IHN0YXRlJylcbiAgICAgICAgICByb3V0ZXIuc3RhdGVTZXJ2aWNlLmdvKG1lbWJyc0NvbmZpZy5kZWZhdWx0U3RhdGUsIHt9LCB7aW5oZXJpdDpmYWxzZX0pXG4gICAgICAgICAgcmVqZWN0KClcbiAgICAgIH0pLmNhdGNoKGVycm9yPT57XG4gICAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yIGluIHJlaXNzdWUgcmVzb2x2ZScpXG4gICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpXG4gICAgICAgICAgLy93aW5kb3cubG9jYXRpb24uaHJlZiA9IGVudmlyb25tZW50LmxvZ2luXG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfSlcblxuXHR9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVSZXNvbHZlRm4odHJhbnNpdGlvbiwgcm91dGVyLCBtZW1icnNTZXJ2aWNlLCBtZW1icnNDb25maWc6TWVtYnJzQ29uZmlnKSB7XG4gIFxuICAvL2NvbnNvbGUubG9nKG1lbWJyc1NlcnZpY2UpXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc29sZS5sb2coJ3ZhbGlkYXRlIHByb21pc2UgcmVzb2x2ZScpXG4gICAgXG4gICAgbWVtYnJzU2VydmljZS5yZWlzc3VlKCkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgIHJlc29sdmUobnVsbClcbiAgICB9KS5jYXRjaChlcnJvcj0+e1xuICAgICAgY29uc29sZS5sb2coJ2Vycm9yIGluIHZhbGlkYXRlUmVzb2x2ZUZuJylcbiAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IG1lbWJyc0NvbmZpZy5sb2dpblxuICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgfSlcblxufSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGp3dE9wdGlvbnNGYWN0b3J5KGNvbmZpZykge1xuICBjb25zb2xlLmxvZygnand0IG9wdGlvbnMgZmFjdG9yeScpXG4gIGNvbnNvbGUubG9nKGNvbmZpZylcbiAgcmV0dXJuIHtcbiAgICB0b2tlbkdldHRlcjogKCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ3Rva2VuIGdldHRlcicsICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWVtYnJzJykpXG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21lbWJycycpO1xuICAgIH0sXG4gICAgYWxsb3dlZERvbWFpbnM6IFtjb25maWcuYXBpXVxuICB9XG59XG5cblxuLyoqIFRoZSB0b3AgbGV2ZWwgc3RhdGUocykgKi9cbmV4cG9ydCBjb25zdCBTVEFURVMgPSBbXG4gICAgcmVpc3N1ZVN0YXRlXG5dXG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIEp3dE1vZHVsZVxuICAgIC8vIEp3dE1vZHVsZS5mb3JSb290KHtcbiAgICAvLyAgIGNvbmZpZzoge1xuICAgIC8vICAgICB0b2tlbkdldHRlcjogcmV0cmlldmVUb2tlblxuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gICAgLy8gVUlSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQoe1xuICAgIC8vICAgc3RhdGVzOiBTVEFURVMsXG4gICAgLy8gICBjb25maWc6IHJvdXRlckNvbmZpZ0ZuLFxuICAgIC8vIH0pLFxuICAgIC8vIEp3dE1vZHVsZS5mb3JSb290KHt9KVxuICBdXG59KVxuXG5cblxuZXhwb3J0IGNsYXNzIE1lbWJyc01vZHVsZSB7IFxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IE1lbWJyc0NvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TWVtYnJzTW9kdWxlPiB7XG5cblxuICAgIGNvbnN0IG1vZHVsZVByb3ZpZGVycyA9IFVJUm91dGVyTW9kdWxlLmZvckNoaWxkKHtcbiAgICAgIHN0YXRlczogU1RBVEVTLFxuICAgICAgY29uZmlnOiByb3V0ZXJDb25maWdGblxuICAgIH0pLnByb3ZpZGVyc1xuXG4gICAgbW9kdWxlUHJvdmlkZXJzLnB1c2goSnd0TW9kdWxlLmZvclJvb3Qoe1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIHRva2VuR2V0dGVyOiByZXRyaWV2ZVRva2VuLFxuICAgICAgICBhbGxvd2VkRG9tYWluczogW11cbiAgICAgIH1cbiAgICB9KS5wcm92aWRlcnMpXG4gICAgICBcbiAgICBtb2R1bGVQcm92aWRlcnMucHVzaChNZW1icnNTZXJ2aWNlKVxuICAgIG1vZHVsZVByb3ZpZGVycy5wdXNoKHtwcm92aWRlOiBNZW1icnNDb25maWdTZXJ2aWNlLHVzZVZhbHVlOiBjb25maWd9KTtcbiAgICBcbiAgIFxuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTWVtYnJzTW9kdWxlLCBcbiAgICAgIHByb3ZpZGVyczogbW9kdWxlUHJvdmlkZXJzIC8vW3twcm92aWRlOiBNZW1icnNDb25maWdTZXJ2aWNlLHVzZVZhbHVlOiBjb25maWd9XVxuICAgIH07XG4gICAgXG4gIH1cblxufVxuIl19
|
|
@@ -2,6 +2,7 @@ import { Injectable, Inject } from '@angular/core';
|
|
|
2
2
|
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
3
3
|
import { HttpClient } from '@angular/common/http';
|
|
4
4
|
import { MembrsConfigService } from './config.service';
|
|
5
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
6
|
import * as i0 from "@angular/core";
|
|
6
7
|
import * as i1 from "@angular/common/http";
|
|
7
8
|
import * as i2 from "./config.service";
|
|
@@ -11,6 +12,7 @@ export class MembrsService {
|
|
|
11
12
|
this.http = http;
|
|
12
13
|
this.config = config;
|
|
13
14
|
this._lsKey = 'membrs';
|
|
15
|
+
this._loggedInObservable = new BehaviorSubject(false);
|
|
14
16
|
console.log('membrs constructor');
|
|
15
17
|
// if the token exists in local storage, retrieve it back to the service
|
|
16
18
|
if (localStorage.getItem(this._lsKey)) {
|
|
@@ -35,6 +37,7 @@ export class MembrsService {
|
|
|
35
37
|
this.http.post(this.config.apiProtocol + this.config.api + '/token/' + this._token, {}).subscribe((response) => {
|
|
36
38
|
if (response.token) {
|
|
37
39
|
this.token = response.token;
|
|
40
|
+
this._loggedInObservable.next(true);
|
|
38
41
|
resolve(this._token);
|
|
39
42
|
}
|
|
40
43
|
else {
|
|
@@ -45,6 +48,7 @@ export class MembrsService {
|
|
|
45
48
|
});
|
|
46
49
|
}
|
|
47
50
|
else {
|
|
51
|
+
this._loggedInObservable.next(true);
|
|
48
52
|
resolve(this._token);
|
|
49
53
|
}
|
|
50
54
|
});
|
|
@@ -69,6 +73,9 @@ export class MembrsService {
|
|
|
69
73
|
get admin() {
|
|
70
74
|
return this.profile.permission == 1;
|
|
71
75
|
}
|
|
76
|
+
get isLoggedInObservable() {
|
|
77
|
+
return this._loggedInObservable;
|
|
78
|
+
}
|
|
72
79
|
logout() {
|
|
73
80
|
return new Promise((resolve, reject) => {
|
|
74
81
|
this.http.delete(this.config.apiProtocol + this.config.api + '/token/' + this._token).subscribe((response) => {
|
|
@@ -92,4 +99,4 @@ MembrsService.ctorParameters = () => [
|
|
|
92
99
|
{ type: HttpClient },
|
|
93
100
|
{ type: undefined, decorators: [{ type: Inject, args: [MembrsConfigService,] }] }
|
|
94
101
|
];
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYnJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2pvcmRhbmNoaXR0eS9HaXQvbWVtYnJzLWF3cy9teS1tZW1icnMvcHJvamVjdHMvbWVtYnJzL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9tZW1icnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFFdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUE7QUFPekMsTUFBTSxPQUFPLGFBQWE7SUFPeEIsWUFBb0IsSUFBZ0IsRUFBdUMsTUFBb0I7UUFBM0UsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUF1QyxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBSC9GLFdBQU0sR0FBVyxRQUFRLENBQUM7UUFDMUIsd0JBQW1CLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBSXhFLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUNqQyx3RUFBd0U7UUFDeEUsSUFBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQy9DO0lBRUgsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhO1FBRW5CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFDLEVB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SUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVksRUFBQyxFQUFFO2dCQUN4RyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7Z0JBQ3BDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO2dCQUMxQiwwQ0FBMEM7WUFDNUMsQ0FBQyxFQUFFLEtBQUssQ0FBQSxFQUFFO2dCQUNSLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNmLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFFSixDQUFDOzs7O1lBN0dGLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBUlEsVUFBVTs0Q0FrQnNCLE1BQU0sU0FBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tICdAYXV0aDAvYW5ndWxhci1qd3QnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJ1xuaW1wb3J0IHsgTWVtYnJzQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnXG5pbXBvcnQgeyBNZW1icnNDb25maWcgfSBmcm9tICcuL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5jb25zdCBqd3RTZXJ2aWNlID0gbmV3IEp3dEhlbHBlclNlcnZpY2UoKVxuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcblxuXG5leHBvcnQgY2xhc3MgTWVtYnJzU2VydmljZSB7XG5cbiAgX3Rva2VuOiBzdHJpbmc7XG4gIF9kZWNvZGVkOiBhbnk7XG4gIF9sc0tleTogc3RyaW5nID0gJ21lbWJycyc7XG4gIF9sb2dnZWRJbk9ic2VydmFibGU6IEJlaGF2aW9yU3ViamVjdDxCb29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBASW5qZWN0KE1lbWJyc0NvbmZpZ1NlcnZpY2UpIHByaXZhdGUgY29uZmlnOiBNZW1icnNDb25maWcpIHtcblxuICAgIGNvbnNvbGUubG9nKCdtZW1icnMgY29uc3RydWN0b3InKVxuICAgIC8vIGlmIHRoZSB0b2tlbiBleGlzdHMgaW4gbG9jYWwgc3RvcmFnZSwgcmV0cmlldmUgaXQgYmFjayB0byB0aGUgc2VydmljZVxuICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuX2xzS2V5KSl7XG4gICAgICB0aGlzLnRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fbHNLZXkpXG4gICAgfVxuICBcbiAgfVxuXG4gIHJlaXNzdWUodG9rZW4/OnN0cmluZyl7XG5cbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcblxuICAgICAgaWYoIXRva2VuICYmICF0aGlzLl90b2tlbil7XG4gICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpXG4gICAgICB9XG5cbiAgICAgIGlmKHRva2VuKVxuICAgICAgICB0aGlzLnRva2VuID0gdG9rZW5cblxuICAgICAgLy8gY2hlY2sgc3RvcmVkIHRva2VuIGhhcyBub3QgZXhwaXJlZCwgb3IgbmVlZHMgdG8gYmUgcmVpc3N1ZWQgc29vblxuICAgICAgdmFyIHJlaXNzdWVJbiA9IHRoaXMuX2RlY29kZWQuZXhwIC0gTWF0aC5mbG9vcihEYXRlLm5vdygpLzEwMDApXG4gICAgXG4gICAgICAvLyB0b2tlbiBoYXMgZXhwaXJlZFxuICAgICAgaWYocmVpc3N1ZUluIDwgMCl7XG4gICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpXG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIHRva2VuIGV4cGlyaW5nIHNvb25cbiAgICAgIGlmKHJlaXNzdWVJbiA8IDMwMCl7XG5cbiAgICAgICAgdGhpcy5odHRwLnBvc3QodGhpcy5jb25maWcuYXBpUHJvdG9jb2wgKyB0aGlzLmNvbmZpZy5hcGkrJy90b2tlbi8nK3RoaXMuX3Rva2VuLCB7fSkuc3Vic2NyaWJlKChyZXNwb25zZTphbnkpPT57XG5cbiAgICAgICAgICBpZihyZXNwb25zZS50b2tlbil7XG4gICAgICAgICAgICB0aGlzLnRva2VuID0gcmVzcG9uc2UudG9rZW5cbiAgICAgICAgICAgIHRoaXMuX2xvZ2dlZEluT2JzZXJ2YWJsZS5uZXh0KHRydWUpXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuX3Rva2VuKVxuICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpXG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICB9LCBlcnJvcj0+e1xuICAgICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpXG4gICAgICAgIH0pXG5cbiAgICAgIH1lbHNlIHtcbiAgICAgICAgdGhpcy5fbG9nZ2VkSW5PYnNlcnZhYmxlLm5leHQodHJ1ZSlcbiAgICAgICAgcmVzb2x2ZSh0aGlzLl90b2tlbilcbiAgICAgIH1cbiAgICAgIFxuICAgIH0pXG4gICAgXG4gIH1cblxuICBzZXQgdG9rZW4odG9rZW4pe1xuICAgIHRoaXMuX3Rva2VuID0gdG9rZW5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9sc0tleSwgdG9rZW4pXG4gICAgdGhpcy5fZGVjb2RlZCA9IGp3dFNlcnZpY2UuZGVjb2RlVG9rZW4odGhpcy5fdG9rZW4pXG4gIH1cblxuICBkZWxldGVUb2tlbigpe1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuX2xzS2V5KVxuICB9XG5cbiAgaXNMb2dnZWRJbigpe1xuICAgIHJldHVybiB0aGlzLnRva2VuID8gdHJ1ZSA6IGZhbHNlXG4gIH1cblxuICBnZXQgcHJvZmlsZSgpe1xuICAgIHJldHVybiB0aGlzLl9kZWNvZGVkXG4gIH1cblxuICBnZXQgdG9rZW4oKXtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5cbiAgfVxuXG4gIGdldCBhZG1pbiAoKXtcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlLnBlcm1pc3Npb24gPT0gMVxuICB9XG5cbiAgZ2V0IGlzTG9nZ2VkSW5PYnNlcnZhYmxlKCl7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2dlZEluT2JzZXJ2YWJsZVxuICB9XG4gIFxuICBsb2dvdXQoKXtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgIHRoaXMuaHR0cC5kZWxldGUodGhpcy5jb25maWcuYXBpUHJvdG9jb2wrdGhpcy5jb25maWcuYXBpKycvdG9rZW4vJyt0aGlzLl90b2tlbikuc3Vic2NyaWJlKChyZXNwb25zZTphbnkpPT57XG4gICAgICAgIHRoaXMuX3Rva2VuID0gbnVsbDtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5fbHNLZXkpXG4gICAgICAgIHJlc29sdmUodGhpcy5jb25maWcubG9naW4pXG4gICAgICAgIC8vdGhpcy5yb3V0ZXIuc3RhdGVTZXJ2aWNlLmdvKCdkYXNoYm9hcmQnKVxuICAgICAgfSwgZXJyb3I9PntcbiAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfSlcbiAgICB9KVxuICAgIFxuICB9XG5cblxufVxuIl19
|
|
@@ -16,4 +16,4 @@ export function routerConfigFn(router, injector) {
|
|
|
16
16
|
stateService.go(config.defaultState);
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvam9yZGFuY2hpdHR5L0dpdC9tZW1icnMtYXdzL215LW1lbWJycy9wcm9qZWN0cy9tZW1icnMvc3JjLyIsInNvdXJjZXMiOlsibGliL3JvdXRlci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFHdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBZ0IsRUFBRSxRQUFrQjtJQUVqRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztJQUNuRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFBO0lBQ3hDLE1BQU0sTUFBTSxHQUFnQixRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDN0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUVqRCxZQUFZLENBQUMsbUJBQW1CLENBQUMsVUFBUyxLQUFLO1FBRS9DLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQTtRQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRWxCLElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxlQUFlLEVBQUM7WUFDbEMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDcEM7UUFFRCxJQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksMEJBQTBCO1lBQzVDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRXRDLENBQUMsQ0FBQyxDQUFDO0FBRUosQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVJUm91dGVyIH0gZnJvbSAnQHVpcm91dGVyL2NvcmUnO1xuaW1wb3J0IHsgTWVtYnJzQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnXG5pbXBvcnQgeyBNZW1icnNDb25maWcgfSBmcm9tICcuL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbWJyc1NlcnZpY2UgfSBmcm9tICcuL21lbWJycy5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJvdXRlckNvbmZpZ0ZuKHJvdXRlcjogVUlSb3V0ZXIsIGluamVjdG9yOiBJbmplY3Rvcikge1xuXG4gIGNvbnN0IHRyYW5zaXRpb25TZXJ2aWNlID0gcm91dGVyLnRyYW5zaXRpb25TZXJ2aWNlO1xuICBjb25zdCBzdGF0ZVNlcnZpY2UgPSByb3V0ZXIuc3RhdGVTZXJ2aWNlXG4gIGNvbnN0IGNvbmZpZzpNZW1icnNDb25maWcgPSBpbmplY3Rvci5nZXQoTWVtYnJzQ29uZmlnU2VydmljZSlcbiAgY29uc3QgbWVtYnJzU2VydmljZSA9IGluamVjdG9yLmdldChNZW1icnNTZXJ2aWNlKVxuXG4gXHRzdGF0ZVNlcnZpY2UuZGVmYXVsdEVycm9ySGFuZGxlcihmdW5jdGlvbihlcnJvcikge1xuXHRcdCBcblx0XHRjb25zb2xlLmxvZygnRGVmYXVsdCBlcnJvciBoYW5kbGVyIC0gTWVtYnJzIEFuZ3VsYXIgSGVscGVyJylcblx0XHRjb25zb2xlLmxvZyhlcnJvcilcblx0XHRcdFxuXHRcdGlmKGVycm9yLmRldGFpbCA9PSAnTk9UX0xPR0dFRF9JTicpe1xuXHRcdFx0bWVtYnJzU2VydmljZS5kZWxldGVUb2tlbigpXG5cdFx0XHR3aW5kb3cubG9jYXRpb24uaHJlZiA9IGNvbmZpZy5sb2dpbjtcblx0XHR9XG5cblx0XHRpZihlcnJvci5kZXRhaWwgPT0gJ0lOU1VGRklDSUVOVF9QRVJNSVNTSU9OUycpXG5cdFx0XHRzdGF0ZVNlcnZpY2UuZ28oY29uZmlnLmRlZmF1bHRTdGF0ZSlcblxuXHR9KTtcblx0XG59Il19
|
package/esm2015/lib/token.js
CHANGED
|
@@ -2,4 +2,4 @@ export function retrieveToken() {
|
|
|
2
2
|
console.log('retrieve from ls');
|
|
3
3
|
return localStorage.getItem('membrs');
|
|
4
4
|
}
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiL1VzZXJzL2pvcmRhbmNoaXR0eS9HaXQvbWVtYnJzLWF3cy9teS1tZW1icnMvcHJvamVjdHMvbWVtYnJzL3NyYy8iLCJzb3VyY2VzIjpbImxpYi90b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsYUFBYTtJQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDL0IsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcmV0cmlldmVUb2tlbigpIHtcbiAgICBjb25zb2xlLmxvZygncmV0cmlldmUgZnJvbSBscycpXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZW1icnMnKTtcbn0iXX0=
|
|
@@ -3,4 +3,4 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
5
|
export { MembrsConfigService as ɵa } from './lib/config.service';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFrZWRjcmVhdGl2aXR5LW1lbWJycy1hbmd1bGFyLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvam9yZGFuY2hpdHR5L0dpdC9tZW1icnMtYXdzL215LW1lbWJycy9wcm9qZWN0cy9tZW1icnMvc3JjLyIsInNvdXJjZXMiOlsibmFrZWRjcmVhdGl2aXR5LW1lbWJycy1hbmd1bGFyLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRzdCLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtNZW1icnNDb25maWcgYXMgybVifSBmcm9tICcuL2xpYi9jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCB7TWVtYnJzQ29uZmlnU2VydmljZSBhcyDJtWF9IGZyb20gJy4vbGliL2NvbmZpZy5zZXJ2aWNlJzsiXX0=
|
package/esm2015/public-api.js
CHANGED
|
@@ -2,4 +2,4 @@ export * from './lib/membrs.service';
|
|
|
2
2
|
export * from './lib/membrs.module';
|
|
3
3
|
export * from './lib/token';
|
|
4
4
|
export * from './lib/auth.interceptor';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIvVXNlcnMvam9yZGFuY2hpdHR5L0dpdC9tZW1icnMtYXdzL215LW1lbWJycy9wcm9qZWN0cy9tZW1icnMvc3JjLyIsInNvdXJjZXMiOlsicHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyx3QkFBd0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVtYnJzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVtYnJzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbidcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguaW50ZXJjZXB0b3InIl19
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InjectionToken, ɵɵdefineInjectable, ɵɵinject, Injectable, Inject, NgModule } from '@angular/core';
|
|
2
2
|
import { JwtHelperService, JwtModule } from '@auth0/angular-jwt';
|
|
3
3
|
import { HttpClient, HttpClientModule } from '@angular/common/http';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
4
5
|
import { CommonModule } from '@angular/common';
|
|
5
6
|
import { Transition, UIRouter, UIRouterModule } from '@uirouter/angular';
|
|
6
7
|
import { finalize } from 'rxjs/operators';
|
|
@@ -17,6 +18,7 @@ class MembrsService {
|
|
|
17
18
|
this.http = http;
|
|
18
19
|
this.config = config;
|
|
19
20
|
this._lsKey = 'membrs';
|
|
21
|
+
this._loggedInObservable = new BehaviorSubject(false);
|
|
20
22
|
console.log('membrs constructor');
|
|
21
23
|
// if the token exists in local storage, retrieve it back to the service
|
|
22
24
|
if (localStorage.getItem(this._lsKey)) {
|
|
@@ -41,6 +43,7 @@ class MembrsService {
|
|
|
41
43
|
this.http.post(this.config.apiProtocol + this.config.api + '/token/' + this._token, {}).subscribe((response) => {
|
|
42
44
|
if (response.token) {
|
|
43
45
|
this.token = response.token;
|
|
46
|
+
this._loggedInObservable.next(true);
|
|
44
47
|
resolve(this._token);
|
|
45
48
|
}
|
|
46
49
|
else {
|
|
@@ -51,6 +54,7 @@ class MembrsService {
|
|
|
51
54
|
});
|
|
52
55
|
}
|
|
53
56
|
else {
|
|
57
|
+
this._loggedInObservable.next(true);
|
|
54
58
|
resolve(this._token);
|
|
55
59
|
}
|
|
56
60
|
});
|
|
@@ -75,6 +79,9 @@ class MembrsService {
|
|
|
75
79
|
get admin() {
|
|
76
80
|
return this.profile.permission == 1;
|
|
77
81
|
}
|
|
82
|
+
get isLoggedInObservable() {
|
|
83
|
+
return this._loggedInObservable;
|
|
84
|
+
}
|
|
78
85
|
logout() {
|
|
79
86
|
return new Promise((resolve, reject) => {
|
|
80
87
|
this.http.delete(this.config.apiProtocol + this.config.api + '/token/' + this._token).subscribe((response) => {
|
|
@@ -161,7 +168,7 @@ function validateResolveFn(transition, router, membrsService, membrsConfig) {
|
|
|
161
168
|
return new Promise((resolve, reject) => {
|
|
162
169
|
console.log('validate promise resolve');
|
|
163
170
|
membrsService.reissue().then((response) => {
|
|
164
|
-
resolve();
|
|
171
|
+
resolve(null);
|
|
165
172
|
}).catch(error => {
|
|
166
173
|
console.log('error in validateResolveFn');
|
|
167
174
|
console.log(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nakedcreativity-membrs-angular-helper.js","sources":["../../../projects/membrs/src/lib/config.service.ts","../../../projects/membrs/src/lib/membrs.service.ts","../../../projects/membrs/src/lib/router.config.ts","../../../projects/membrs/src/lib/token.ts","../../../projects/membrs/src/lib/membrs.module.ts","../../../projects/membrs/src/lib/auth.interceptor.ts","../../../projects/membrs/src/nakedcreativity-membrs-angular-helper.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MembrsConfig } from './config.interface';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionTToken used to import the config object, provided from the outside\n */\nexport const MembrsConfigService = new InjectionToken<MembrsConfig>(\"MembrsConfig\");\n","import { Injectable, Inject } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { HttpClient } from '@angular/common/http'\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nconst jwtService = new JwtHelperService()\n\n@Injectable({\n providedIn: 'root'\n})\n\n\nexport class MembrsService {\n\n _token: string;\n _decoded: any;\n _lsKey: string = 'membrs';\n\n constructor(private http: HttpClient, @Inject(MembrsConfigService) private config: MembrsConfig) {\n\n console.log('membrs constructor')\n // if the token exists in local storage, retrieve it back to the service\n if(localStorage.getItem(this._lsKey)){\n this.token = localStorage.getItem(this._lsKey)\n }\n \n }\n\n reissue(token?:string){\n\n return new Promise((resolve, reject)=>{\n\n if(!token && !this._token){\n reject('NOT_LOGGED_IN')\n }\n\n if(token)\n this.token = token\n\n // check stored token has not expired, or needs to be reissued soon\n var reissueIn = this._decoded.exp - Math.floor(Date.now()/1000)\n \n // token has expired\n if(reissueIn < 0){\n reject('NOT_LOGGED_IN')\n }\n \n // token expiring soon\n if(reissueIn < 300){\n\n this.http.post(this.config.apiProtocol + this.config.api+'/token/'+this._token, {}).subscribe((response:any)=>{\n\n if(response.token){\n this.token = response.token\n resolve(this._token)\n }else {\n reject('NOT_LOGGED_IN')\n }\n \n }, error=>{\n reject('NOT_LOGGED_IN')\n })\n\n }else {\n resolve(this._token)\n }\n \n })\n \n }\n\n set token(token){\n this._token = token\n localStorage.setItem(this._lsKey, token)\n this._decoded = jwtService.decodeToken(this._token)\n }\n\n deleteToken(){\n localStorage.removeItem(this._lsKey)\n }\n\n isLoggedIn(){\n return this.token ? true : false\n }\n\n get profile(){\n return this._decoded\n }\n\n get token(){\n return this._token\n }\n\n get admin (){\n return this.profile.permission == 1\n }\n\n logout(){\n return new Promise((resolve, reject)=>{\n this.http.delete(this.config.apiProtocol+this.config.api+'/token/'+this._token).subscribe((response:any)=>{\n this._token = null;\n localStorage.removeItem(this._lsKey)\n resolve(this.config.login)\n //this.router.stateService.go('dashboard')\n }, error=>{\n reject(error)\n })\n })\n \n }\n\n\n}\n","import { UIRouter } from '@uirouter/core';\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nimport { Injector } from '@angular/core';\nimport { MembrsService } from './membrs.service';\n\nexport function routerConfigFn(router: UIRouter, injector: Injector) {\n\n const transitionService = router.transitionService;\n const stateService = router.stateService\n const config:MembrsConfig = injector.get(MembrsConfigService)\n const membrsService = injector.get(MembrsService)\n\n \tstateService.defaultErrorHandler(function(error) {\n\t\t \n\t\tconsole.log('Default error handler - Membrs Angular Helper')\n\t\tconsole.log(error)\n\t\t\t\n\t\tif(error.detail == 'NOT_LOGGED_IN'){\n\t\t\tmembrsService.deleteToken()\n\t\t\twindow.location.href = config.login;\n\t\t}\n\n\t\tif(error.detail == 'INSUFFICIENT_PERMISSIONS')\n\t\t\tstateService.go(config.defaultState)\n\n\t});\n\t\n}","export function retrieveToken() {\n console.log('retrieve from ls')\n return localStorage.getItem('membrs');\n}","import { NgModule, ModuleWithProviders, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MembrsService } from './membrs.service';\nimport { JwtModule, JWT_OPTIONS } from \"@auth0/angular-jwt\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { UIRouterModule } from '@uirouter/angular'\n\nimport { Ng2StateDeclaration } from '@uirouter/angular';\nimport { Transition, UIRouter } from '@uirouter/angular'\n\nimport { routerConfigFn } from './router.config';\nimport { MembrsConfig } from './config.interface';\nimport { MembrsConfigService } from './config.service';\nimport { retrieveToken } from './token';\n\nexport const validateResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: validateResolveFn\n}\n\nexport const reissueResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: reissueResolveFn\n}\n\nexport const reissueState:Ng2StateDeclaration = {\n\tname: 'reissue', \n\turl: '/reissue?token',\n\tviews: { },\n\tresolve: [\n reissueResolve\n\t]\n}\n\nexport function reissueResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('reissue promise resolve')\n console.log(transition.params().token)\n membrsService.reissue(transition.params().token).then((response)=>{\n console.log('redirect to default state')\n router.stateService.go(membrsConfig.defaultState, {}, {inherit:false})\n reject()\n }).catch(error=>{\n console.log('error in reissue resolve')\n console.log(error)\n //window.location.href = environment.login\n reject(error)\n })\n\n\t})\n}\n\nexport function validateResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('validate promise resolve')\n \n membrsService.reissue().then((response)=>{\n resolve()\n }).catch(error=>{\n console.log('error in validateResolveFn')\n console.log(error)\n window.location.href = membrsConfig.login\n reject(error)\n })\n\n})\n}\n\nexport function jwtOptionsFactory(config) {\n console.log('jwt options factory')\n console.log(config)\n return {\n tokenGetter: () => {\n console.log('token getter', localStorage.getItem('membrs'))\n return localStorage.getItem('membrs');\n },\n allowedDomains: [config.api]\n }\n}\n\n\n/** The top level state(s) */\nexport const STATES = [\n reissueState\n]\n\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n JwtModule\n // JwtModule.forRoot({\n // config: {\n // tokenGetter: retrieveToken\n // }\n // })\n // UIRouterModule.forChild({\n // states: STATES,\n // config: routerConfigFn,\n // }),\n // JwtModule.forRoot({})\n ]\n})\n\n\n\nexport class MembrsModule { \n static forRoot(config: MembrsConfig): ModuleWithProviders<MembrsModule> {\n\n\n const moduleProviders = UIRouterModule.forChild({\n states: STATES,\n config: routerConfigFn\n }).providers\n\n moduleProviders.push(JwtModule.forRoot({\n config: {\n tokenGetter: retrieveToken,\n allowedDomains: []\n }\n }).providers)\n \n moduleProviders.push(MembrsService)\n moduleProviders.push({provide: MembrsConfigService,useValue: config});\n \n \n return {\n ngModule: MembrsModule, \n providers: moduleProviders //[{provide: MembrsConfigService,useValue: config}]\n };\n \n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n//import { NgBusyService } from '@nakedcreativity/ng-busy';\nimport { finalize } from 'rxjs/operators';\n\n\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n constructor() {}\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n \n //this.busyService.busy()\n request = request.clone({\n setHeaders: {\n Authorization: localStorage.getItem('membrs')\n }\n });\n return next.handle(request).pipe(finalize(()=>{\n //this.busyService.finished()\n }));\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MembrsConfig as ɵb} from './lib/config.interface';\nexport {MembrsConfigService as ɵa} from './lib/config.service';"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"nakedcreativity-membrs-angular-helper.js","sources":["../../../projects/membrs/src/lib/config.service.ts","../../../projects/membrs/src/lib/membrs.service.ts","../../../projects/membrs/src/lib/router.config.ts","../../../projects/membrs/src/lib/token.ts","../../../projects/membrs/src/lib/membrs.module.ts","../../../projects/membrs/src/lib/auth.interceptor.ts","../../../projects/membrs/src/nakedcreativity-membrs-angular-helper.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\nimport { MembrsConfig } from './config.interface';\n\n/**\n * This is not a real service, but it looks like it from the outside.\n * It's just an InjectionTToken used to import the config object, provided from the outside\n */\nexport const MembrsConfigService = new InjectionToken<MembrsConfig>(\"MembrsConfig\");\n","import { Injectable, Inject } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { HttpClient } from '@angular/common/http'\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nimport { BehaviorSubject } from 'rxjs';\nconst jwtService = new JwtHelperService()\n\n@Injectable({\n providedIn: 'root'\n})\n\n\nexport class MembrsService {\n\n _token: string;\n _decoded: any;\n _lsKey: string = 'membrs';\n _loggedInObservable: BehaviorSubject<Boolean> = new BehaviorSubject(false)\n\n constructor(private http: HttpClient, @Inject(MembrsConfigService) private config: MembrsConfig) {\n\n console.log('membrs constructor')\n // if the token exists in local storage, retrieve it back to the service\n if(localStorage.getItem(this._lsKey)){\n this.token = localStorage.getItem(this._lsKey)\n }\n \n }\n\n reissue(token?:string){\n\n return new Promise((resolve, reject)=>{\n\n if(!token && !this._token){\n reject('NOT_LOGGED_IN')\n }\n\n if(token)\n this.token = token\n\n // check stored token has not expired, or needs to be reissued soon\n var reissueIn = this._decoded.exp - Math.floor(Date.now()/1000)\n \n // token has expired\n if(reissueIn < 0){\n reject('NOT_LOGGED_IN')\n }\n \n // token expiring soon\n if(reissueIn < 300){\n\n this.http.post(this.config.apiProtocol + this.config.api+'/token/'+this._token, {}).subscribe((response:any)=>{\n\n if(response.token){\n this.token = response.token\n this._loggedInObservable.next(true)\n resolve(this._token)\n }else {\n reject('NOT_LOGGED_IN')\n }\n \n }, error=>{\n reject('NOT_LOGGED_IN')\n })\n\n }else {\n this._loggedInObservable.next(true)\n resolve(this._token)\n }\n \n })\n \n }\n\n set token(token){\n this._token = token\n localStorage.setItem(this._lsKey, token)\n this._decoded = jwtService.decodeToken(this._token)\n }\n\n deleteToken(){\n localStorage.removeItem(this._lsKey)\n }\n\n isLoggedIn(){\n return this.token ? true : false\n }\n\n get profile(){\n return this._decoded\n }\n\n get token(){\n return this._token\n }\n\n get admin (){\n return this.profile.permission == 1\n }\n\n get isLoggedInObservable(){\n return this._loggedInObservable\n }\n \n logout(){\n return new Promise((resolve, reject)=>{\n this.http.delete(this.config.apiProtocol+this.config.api+'/token/'+this._token).subscribe((response:any)=>{\n this._token = null;\n localStorage.removeItem(this._lsKey)\n resolve(this.config.login)\n //this.router.stateService.go('dashboard')\n }, error=>{\n reject(error)\n })\n })\n \n }\n\n\n}\n","import { UIRouter } from '@uirouter/core';\nimport { MembrsConfigService } from './config.service'\nimport { MembrsConfig } from './config.interface';\nimport { Injector } from '@angular/core';\nimport { MembrsService } from './membrs.service';\n\nexport function routerConfigFn(router: UIRouter, injector: Injector) {\n\n const transitionService = router.transitionService;\n const stateService = router.stateService\n const config:MembrsConfig = injector.get(MembrsConfigService)\n const membrsService = injector.get(MembrsService)\n\n \tstateService.defaultErrorHandler(function(error) {\n\t\t \n\t\tconsole.log('Default error handler - Membrs Angular Helper')\n\t\tconsole.log(error)\n\t\t\t\n\t\tif(error.detail == 'NOT_LOGGED_IN'){\n\t\t\tmembrsService.deleteToken()\n\t\t\twindow.location.href = config.login;\n\t\t}\n\n\t\tif(error.detail == 'INSUFFICIENT_PERMISSIONS')\n\t\t\tstateService.go(config.defaultState)\n\n\t});\n\t\n}","export function retrieveToken() {\n console.log('retrieve from ls')\n return localStorage.getItem('membrs');\n}","import { NgModule, ModuleWithProviders, Injector } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MembrsService } from './membrs.service';\nimport { JwtModule, JWT_OPTIONS } from \"@auth0/angular-jwt\";\nimport { HttpClientModule } from \"@angular/common/http\";\nimport { UIRouterModule } from '@uirouter/angular'\n\nimport { Ng2StateDeclaration } from '@uirouter/angular';\nimport { Transition, UIRouter } from '@uirouter/angular'\n\nimport { routerConfigFn } from './router.config';\nimport { MembrsConfig } from './config.interface';\nimport { MembrsConfigService } from './config.service';\nimport { retrieveToken } from './token';\n\nexport const validateResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: validateResolveFn\n}\n\nexport const reissueResolve = {\n token: 'reissue',\n deps: [ Transition, UIRouter, MembrsService, MembrsConfigService ],\n resolveFn: reissueResolveFn\n}\n\nexport const reissueState:Ng2StateDeclaration = {\n\tname: 'reissue', \n\turl: '/reissue?token',\n\tviews: { },\n\tresolve: [\n reissueResolve\n\t]\n}\n\nexport function reissueResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('reissue promise resolve')\n console.log(transition.params().token)\n membrsService.reissue(transition.params().token).then((response)=>{\n console.log('redirect to default state')\n router.stateService.go(membrsConfig.defaultState, {}, {inherit:false})\n reject()\n }).catch(error=>{\n console.log('error in reissue resolve')\n console.log(error)\n //window.location.href = environment.login\n reject(error)\n })\n\n\t})\n}\n\nexport function validateResolveFn(transition, router, membrsService, membrsConfig:MembrsConfig) {\n \n //console.log(membrsService)\n return new Promise((resolve, reject) => {\n console.log('validate promise resolve')\n \n membrsService.reissue().then((response)=>{\n resolve(null)\n }).catch(error=>{\n console.log('error in validateResolveFn')\n console.log(error)\n window.location.href = membrsConfig.login\n reject(error)\n })\n\n})\n}\n\nexport function jwtOptionsFactory(config) {\n console.log('jwt options factory')\n console.log(config)\n return {\n tokenGetter: () => {\n console.log('token getter', localStorage.getItem('membrs'))\n return localStorage.getItem('membrs');\n },\n allowedDomains: [config.api]\n }\n}\n\n\n/** The top level state(s) */\nexport const STATES = [\n reissueState\n]\n\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n JwtModule\n // JwtModule.forRoot({\n // config: {\n // tokenGetter: retrieveToken\n // }\n // })\n // UIRouterModule.forChild({\n // states: STATES,\n // config: routerConfigFn,\n // }),\n // JwtModule.forRoot({})\n ]\n})\n\n\n\nexport class MembrsModule { \n static forRoot(config: MembrsConfig): ModuleWithProviders<MembrsModule> {\n\n\n const moduleProviders = UIRouterModule.forChild({\n states: STATES,\n config: routerConfigFn\n }).providers\n\n moduleProviders.push(JwtModule.forRoot({\n config: {\n tokenGetter: retrieveToken,\n allowedDomains: []\n }\n }).providers)\n \n moduleProviders.push(MembrsService)\n moduleProviders.push({provide: MembrsConfigService,useValue: config});\n \n \n return {\n ngModule: MembrsModule, \n providers: moduleProviders //[{provide: MembrsConfigService,useValue: config}]\n };\n \n }\n\n}\n","import { Injectable } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor\n} from '@angular/common/http';\nimport { Observable } from 'rxjs';\n//import { NgBusyService } from '@nakedcreativity/ng-busy';\nimport { finalize } from 'rxjs/operators';\n\n\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n constructor() {}\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n \n //this.busyService.busy()\n request = request.clone({\n setHeaders: {\n Authorization: localStorage.getItem('membrs')\n }\n });\n return next.handle(request).pipe(finalize(()=>{\n //this.busyService.finished()\n }));\n }\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {MembrsConfig as ɵb} from './lib/config.interface';\nexport {MembrsConfigService as ɵa} from './lib/config.service';"],"names":[],"mappings":"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"}
|
package/lib/membrs.service.d.ts
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { MembrsConfig } from './config.interface';
|
|
3
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
4
|
export declare class MembrsService {
|
|
4
5
|
private http;
|
|
5
6
|
private config;
|
|
6
7
|
_token: string;
|
|
7
8
|
_decoded: any;
|
|
8
9
|
_lsKey: string;
|
|
10
|
+
_loggedInObservable: BehaviorSubject<Boolean>;
|
|
9
11
|
constructor(http: HttpClient, config: MembrsConfig);
|
|
10
12
|
reissue(token?: string): Promise<unknown>;
|
|
11
13
|
set token(token: string);
|
|
@@ -14,5 +16,6 @@ export declare class MembrsService {
|
|
|
14
16
|
get profile(): any;
|
|
15
17
|
get token(): string;
|
|
16
18
|
get admin(): boolean;
|
|
19
|
+
get isLoggedInObservable(): BehaviorSubject<Boolean>;
|
|
17
20
|
logout(): Promise<unknown>;
|
|
18
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"MembrsService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"MembrsService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":41},"arguments":[{"__symbolic":"reference","name":"ɵa"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":20,"character":28},{"__symbolic":"reference","name":"ɵb"}]}],"reissue":[{"__symbolic":"method"}],"deleteToken":[{"__symbolic":"method"}],"isLoggedIn":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"validateResolve":{"token":"reissue","deps":[{"__symbolic":"reference","module":"@uirouter/angular","name":"Transition","line":17,"character":12},{"__symbolic":"reference","module":"@uirouter/angular","name":"UIRouter","line":17,"character":24},{"__symbolic":"reference","name":"MembrsService"},{"__symbolic":"reference","name":"ɵa"}],"resolveFn":{"__symbolic":"reference","name":"validateResolveFn"}},"reissueResolve":{"token":"reissue","deps":[{"__symbolic":"reference","module":"@uirouter/angular","name":"Transition","line":23,"character":10},{"__symbolic":"reference","module":"@uirouter/angular","name":"UIRouter","line":23,"character":22},{"__symbolic":"reference","name":"MembrsService"},{"__symbolic":"reference","name":"ɵa"}],"resolveFn":{"__symbolic":"reference","name":"reissueResolveFn"}},"reissueState":{"name":"reissue","url":"/reissue?token","views":{},"resolve":[{"__symbolic":"reference","name":"reissueResolve"}]},"reissueResolveFn":{"__symbolic":"function","parameters":["transition","router","membrsService","membrsConfig"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Promise"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":39,"character":23,"module":"./lib/membrs.module"}]}},"validateResolveFn":{"__symbolic":"function","parameters":["transition","router","membrsService","membrsConfig"],"value":{"__symbolic":"new","expression":{"__symbolic":"reference","name":"Promise"},"arguments":[{"__symbolic":"error","message":"Lambda not supported","line":59,"character":21,"module":"./lib/membrs.module"}]}},"jwtOptionsFactory":{"__symbolic":"function"},"STATES":[{"__symbolic":"reference","name":"reissueState"}],"MembrsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":93,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":95,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":96,"character":4},{"__symbolic":"reference","module":"@auth0/angular-jwt","name":"JwtModule","line":97,"character":4}]}]}],"members":{}},"retrieveToken":{"__symbolic":"function"},"TokenInterceptor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"intercept":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":7,"character":39},"arguments":["MembrsConfig"]},"ɵb":{"__symbolic":"interface"}},"origins":{"MembrsService":"./lib/membrs.service","validateResolve":"./lib/membrs.module","reissueResolve":"./lib/membrs.module","reissueState":"./lib/membrs.module","reissueResolveFn":"./lib/membrs.module","validateResolveFn":"./lib/membrs.module","jwtOptionsFactory":"./lib/membrs.module","STATES":"./lib/membrs.module","MembrsModule":"./lib/membrs.module","retrieveToken":"./lib/token","TokenInterceptor":"./lib/auth.interceptor","ɵa":"./lib/config.service","ɵb":"./lib/config.interface"},"importAs":"@nakedcreativity/membrs-angular-helper"}
|