@nakedcreativity/membrs-angular-helper 0.1.4 → 0.1.7
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/esm2022/lib/auth.interceptor.mjs +66 -0
- package/esm2022/lib/membrs.module.mjs +155 -0
- package/esm2022/lib/membrs.service.mjs +128 -0
- package/{fesm2020 → fesm2022}/nakedcreativity-membrs-angular-helper.mjs +129 -57
- package/fesm2022/nakedcreativity-membrs-angular-helper.mjs.map +1 -0
- package/lib/auth.interceptor.d.ts +9 -3
- package/lib/membrs.service.d.ts +3 -0
- package/package.json +8 -14
- package/esm2020/lib/auth.interceptor.mjs +0 -25
- package/esm2020/lib/membrs.module.mjs +0 -150
- package/esm2020/lib/membrs.service.mjs +0 -101
- package/fesm2015/nakedcreativity-membrs-angular-helper.mjs +0 -299
- package/fesm2015/nakedcreativity-membrs-angular-helper.mjs.map +0 -1
- package/fesm2020/nakedcreativity-membrs-angular-helper.mjs.map +0 -1
- /package/{esm2020 → esm2022}/lib/config.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/config.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/router.config.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/token.mjs +0 -0
- /package/{esm2020 → esm2022}/nakedcreativity-membrs-angular-helper.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { from, throwError } from "rxjs";
|
|
3
|
+
import { switchMap, catchError, finalize, tap } from "rxjs/operators";
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@auth0/angular-jwt";
|
|
6
|
+
import * as i2 from "./membrs.service";
|
|
7
|
+
import * as i3 from "@uirouter/angular";
|
|
8
|
+
export class TokenInterceptor {
|
|
9
|
+
jwtHelper;
|
|
10
|
+
membrsService;
|
|
11
|
+
stateService;
|
|
12
|
+
constructor(jwtHelper, membrsService, stateService) {
|
|
13
|
+
this.jwtHelper = jwtHelper;
|
|
14
|
+
this.membrsService = membrsService;
|
|
15
|
+
this.stateService = stateService;
|
|
16
|
+
}
|
|
17
|
+
intercept(request, next) {
|
|
18
|
+
const token = localStorage.getItem("membrs");
|
|
19
|
+
if (token && this.jwtHelper.isTokenExpired(token)) {
|
|
20
|
+
console.log("Token expired. Attempting to reissue.");
|
|
21
|
+
return from(this.membrsService.reissue()).pipe(switchMap(() => {
|
|
22
|
+
const refreshedToken = localStorage.getItem("membrs");
|
|
23
|
+
if (refreshedToken && !this.jwtHelper.isTokenExpired(refreshedToken)) {
|
|
24
|
+
console.log("Token successfully reissued.");
|
|
25
|
+
request = request.clone({
|
|
26
|
+
setHeaders: {
|
|
27
|
+
Authorization: refreshedToken,
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
return next.handle(request);
|
|
32
|
+
}), catchError((err) => {
|
|
33
|
+
console.warn("Token refresh failed. Logging out.");
|
|
34
|
+
this.membrsService.logout();
|
|
35
|
+
this.stateService.go("");
|
|
36
|
+
return throwError(() => err);
|
|
37
|
+
}), finalize(() => {
|
|
38
|
+
// this.busyService.finished()
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
if (token && !this.jwtHelper.isTokenExpired(token)) {
|
|
42
|
+
request = request.clone({
|
|
43
|
+
setHeaders: {
|
|
44
|
+
Authorization: token,
|
|
45
|
+
},
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return next.handle(request).pipe(tap((event) => {
|
|
49
|
+
// If this is an HttpResponse, check for x-new-token header
|
|
50
|
+
if (event && event.type === 4 && event.headers) {
|
|
51
|
+
const newToken = event.headers.get('x-new-token');
|
|
52
|
+
if (newToken) {
|
|
53
|
+
localStorage.setItem('membrs', newToken);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}), finalize(() => {
|
|
57
|
+
// this.busyService.finished()
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TokenInterceptor, deps: [{ token: i1.JwtHelperService }, { token: i2.MembrsService }, { token: i3.StateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
61
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TokenInterceptor });
|
|
62
|
+
}
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: TokenInterceptor, decorators: [{
|
|
64
|
+
type: Injectable
|
|
65
|
+
}], ctorParameters: () => [{ type: i1.JwtHelperService }, { type: i2.MembrsService }, { type: i3.StateService }] });
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21lbWJycy9zcmMvbGliL2F1dGguaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQWMsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7O0FBS3RFLE1BQU0sT0FBTyxnQkFBZ0I7SUFDUDtJQUFxQztJQUFzQztJQUEvRixZQUFvQixTQUEyQixFQUFVLGFBQTRCLEVBQVUsWUFBMEI7UUFBckcsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFBVSxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFjO0lBQUcsQ0FBQztJQUU3SCxTQUFTLENBQUMsT0FBeUIsRUFBRSxJQUFpQjtRQUNwRCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRTdDLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pELE9BQU8sQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUMsQ0FBQztZQUNyRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUM1QyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNiLE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3RELElBQUksY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUU7b0JBQ3BFLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQztvQkFDNUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7d0JBQ3RCLFVBQVUsRUFBRTs0QkFDVixhQUFhLEVBQUUsY0FBYzt5QkFDOUI7cUJBQ0YsQ0FBQyxDQUFDO2lCQUNKO2dCQUNELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5QixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2dCQUNuRCxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekIsT0FBTyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDL0IsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtnQkFDWiw4QkFBOEI7WUFDaEMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztTQUNIO1FBRUQsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRCxPQUFPLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDdEIsVUFBVSxFQUFFO29CQUNWLGFBQWEsRUFBRSxLQUFLO2lCQUNyQjthQUNGLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDOUIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDWiwyREFBMkQ7WUFDM0QsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDOUMsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQ2xELElBQUksUUFBUSxFQUFFO29CQUNaLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2lCQUMxQzthQUNGO1FBQ0gsQ0FBQyxDQUFDLEVBQ0YsUUFBUSxDQUFDLEdBQUcsRUFBRTtZQUNaLDhCQUE4QjtRQUNoQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQzt3R0F2RFUsZ0JBQWdCOzRHQUFoQixnQkFBZ0I7OzRGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSBcIkBhdXRoMC9hbmd1bGFyLWp3dFwiO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBIdHRwUmVxdWVzdCwgSHR0cEhhbmRsZXIsIEh0dHBFdmVudCwgSHR0cEludGVyY2VwdG9yIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmcm9tLCB0aHJvd0Vycm9yIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHN3aXRjaE1hcCwgY2F0Y2hFcnJvciwgZmluYWxpemUsIHRhcCB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgTWVtYnJzU2VydmljZSB9IGZyb20gXCIuL21lbWJycy5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTdGF0ZVNlcnZpY2UgfSBmcm9tIFwiQHVpcm91dGVyL2FuZ3VsYXJcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFRva2VuSW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGp3dEhlbHBlcjogSnd0SGVscGVyU2VydmljZSwgcHJpdmF0ZSBtZW1icnNTZXJ2aWNlOiBNZW1icnNTZXJ2aWNlLCBwcml2YXRlIHN0YXRlU2VydmljZTogU3RhdGVTZXJ2aWNlKSB7fVxuXG4gIGludGVyY2VwdChyZXF1ZXN0OiBIdHRwUmVxdWVzdDxhbnk+LCBuZXh0OiBIdHRwSGFuZGxlcik6IE9ic2VydmFibGU8SHR0cEV2ZW50PGFueT4+IHtcbiAgICBjb25zdCB0b2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibWVtYnJzXCIpO1xuXG4gICAgaWYgKHRva2VuICYmIHRoaXMuand0SGVscGVyLmlzVG9rZW5FeHBpcmVkKHRva2VuKSkge1xuICAgICAgY29uc29sZS5sb2coXCJUb2tlbiBleHBpcmVkLiBBdHRlbXB0aW5nIHRvIHJlaXNzdWUuXCIpO1xuICAgICAgcmV0dXJuIGZyb20odGhpcy5tZW1icnNTZXJ2aWNlLnJlaXNzdWUoKSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICBjb25zdCByZWZyZXNoZWRUb2tlbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibWVtYnJzXCIpO1xuICAgICAgICAgIGlmIChyZWZyZXNoZWRUb2tlbiAmJiAhdGhpcy5qd3RIZWxwZXIuaXNUb2tlbkV4cGlyZWQocmVmcmVzaGVkVG9rZW4pKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlRva2VuIHN1Y2Nlc3NmdWxseSByZWlzc3VlZC5cIik7XG4gICAgICAgICAgICByZXF1ZXN0ID0gcmVxdWVzdC5jbG9uZSh7XG4gICAgICAgICAgICAgIHNldEhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICBBdXRob3JpemF0aW9uOiByZWZyZXNoZWRUb2tlbixcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCk7XG4gICAgICAgIH0pLFxuICAgICAgICBjYXRjaEVycm9yKChlcnIpID0+IHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXCJUb2tlbiByZWZyZXNoIGZhaWxlZC4gTG9nZ2luZyBvdXQuXCIpO1xuICAgICAgICAgIHRoaXMubWVtYnJzU2VydmljZS5sb2dvdXQoKTtcbiAgICAgICAgICB0aGlzLnN0YXRlU2VydmljZS5nbyhcIlwiKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlcnIpO1xuICAgICAgICB9KSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIC8vIHRoaXMuYnVzeVNlcnZpY2UuZmluaXNoZWQoKVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodG9rZW4gJiYgIXRoaXMuand0SGVscGVyLmlzVG9rZW5FeHBpcmVkKHRva2VuKSkge1xuICAgICAgcmVxdWVzdCA9IHJlcXVlc3QuY2xvbmUoe1xuICAgICAgICBzZXRIZWFkZXJzOiB7XG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogdG9rZW4sXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dC5oYW5kbGUocmVxdWVzdCkucGlwZShcbiAgICAgIHRhcCgoZXZlbnQpID0+IHtcbiAgICAgICAgLy8gSWYgdGhpcyBpcyBhbiBIdHRwUmVzcG9uc2UsIGNoZWNrIGZvciB4LW5ldy10b2tlbiBoZWFkZXJcbiAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnR5cGUgPT09IDQgJiYgZXZlbnQuaGVhZGVycykge1xuICAgICAgICAgIGNvbnN0IG5ld1Rva2VuID0gZXZlbnQuaGVhZGVycy5nZXQoJ3gtbmV3LXRva2VuJyk7XG4gICAgICAgICAgaWYgKG5ld1Rva2VuKSB7XG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWVtYnJzJywgbmV3VG9rZW4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgIC8vIHRoaXMuYnVzeVNlcnZpY2UuZmluaXNoZWQoKVxuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { MembrsService } from './membrs.service';
|
|
4
|
+
import { JwtModule } from "@auth0/angular-jwt";
|
|
5
|
+
import { HttpClientModule } from "@angular/common/http";
|
|
6
|
+
import { UIRouterModule } from '@uirouter/angular';
|
|
7
|
+
import { Transition, UIRouter } from '@uirouter/angular';
|
|
8
|
+
import { routerConfigFn } from './router.config';
|
|
9
|
+
import { MembrsConfigService } from './config.service';
|
|
10
|
+
import { retrieveToken } from './token';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export const validateResolve = {
|
|
13
|
+
token: 'reissue',
|
|
14
|
+
deps: [Transition, UIRouter, MembrsService, MembrsConfigService],
|
|
15
|
+
resolveFn: validateResolveFn
|
|
16
|
+
};
|
|
17
|
+
export const reissueResolve = {
|
|
18
|
+
token: 'reissue',
|
|
19
|
+
deps: [Transition, UIRouter, MembrsService, MembrsConfigService],
|
|
20
|
+
resolveFn: reissueResolveFn
|
|
21
|
+
};
|
|
22
|
+
export const reissueState = {
|
|
23
|
+
name: 'reissue',
|
|
24
|
+
url: '/reissue?token',
|
|
25
|
+
views: {},
|
|
26
|
+
resolve: [
|
|
27
|
+
reissueResolve
|
|
28
|
+
]
|
|
29
|
+
};
|
|
30
|
+
export function reissueResolveFn(transition, router, membrsService, membrsConfig) {
|
|
31
|
+
//console.log(membrsService)
|
|
32
|
+
return new Promise((resolve, reject) => {
|
|
33
|
+
// console.log('reissue promise resolve')
|
|
34
|
+
// console.log(transition.params().token)
|
|
35
|
+
membrsService.reissue(transition.params().token).then((response) => {
|
|
36
|
+
if (localStorage.getItem('redirectUrlAfterLogin')) {
|
|
37
|
+
const redirect = localStorage.getItem('redirectUrlAfterLogin');
|
|
38
|
+
localStorage.removeItem('redirectUrlAfterLogin');
|
|
39
|
+
window.location.pathname = redirect;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
router.stateService.go(membrsConfig.defaultState, {}, { inherit: false });
|
|
43
|
+
}
|
|
44
|
+
reject();
|
|
45
|
+
}).catch(error => {
|
|
46
|
+
//console.log('error in reissue resolve')
|
|
47
|
+
//console.log(error)
|
|
48
|
+
//window.location.href = environment.login
|
|
49
|
+
reject(error);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
export function validateResolveFn(transition, router, membrsService, membrsConfig) {
|
|
54
|
+
//console.log(membrsService)
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
// console.log('validate promise resolve')
|
|
57
|
+
membrsService.reissue().then((response) => {
|
|
58
|
+
if (localStorage.getItem('redirectUrlAfterLogin')) {
|
|
59
|
+
const redirect = localStorage.getItem('redirectUrlAfterLogin');
|
|
60
|
+
localStorage.removeItem('redirectUrlAfterLogin');
|
|
61
|
+
window.location.pathname = redirect;
|
|
62
|
+
}
|
|
63
|
+
resolve(null);
|
|
64
|
+
}).catch(error => {
|
|
65
|
+
localStorage.setItem('redirectUrlAfterLogin', window.location.pathname);
|
|
66
|
+
window.location.href = membrsConfig.login;
|
|
67
|
+
reject(error);
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
export function jwtOptionsFactory(config) {
|
|
72
|
+
// console.log('jwt options factory')
|
|
73
|
+
// console.log(config)
|
|
74
|
+
return {
|
|
75
|
+
tokenGetter: () => {
|
|
76
|
+
console.log('token getter', localStorage.getItem('membrs'));
|
|
77
|
+
return localStorage.getItem('membrs');
|
|
78
|
+
},
|
|
79
|
+
allowedDomains: [config.api]
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/** The top level state(s) */
|
|
83
|
+
export const STATES = [
|
|
84
|
+
reissueState
|
|
85
|
+
];
|
|
86
|
+
export class MembrsModule {
|
|
87
|
+
static forRoot(config) {
|
|
88
|
+
const moduleProviders = UIRouterModule.forChild({
|
|
89
|
+
states: STATES,
|
|
90
|
+
config: routerConfigFn
|
|
91
|
+
}).providers;
|
|
92
|
+
moduleProviders.push(JwtModule.forRoot({
|
|
93
|
+
config: {
|
|
94
|
+
tokenGetter: retrieveToken,
|
|
95
|
+
allowedDomains: []
|
|
96
|
+
}
|
|
97
|
+
}).providers);
|
|
98
|
+
moduleProviders.push(MembrsService);
|
|
99
|
+
moduleProviders.push({ provide: MembrsConfigService, useValue: config });
|
|
100
|
+
return {
|
|
101
|
+
ngModule: MembrsModule,
|
|
102
|
+
providers: moduleProviders //[{provide: MembrsConfigService,useValue: config}]
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MembrsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
106
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: MembrsModule, imports: [CommonModule,
|
|
107
|
+
HttpClientModule,
|
|
108
|
+
JwtModule
|
|
109
|
+
// JwtModule.forRoot({
|
|
110
|
+
// config: {
|
|
111
|
+
// tokenGetter: retrieveToken
|
|
112
|
+
// }
|
|
113
|
+
// })
|
|
114
|
+
// UIRouterModule.forChild({
|
|
115
|
+
// states: STATES,
|
|
116
|
+
// config: routerConfigFn,
|
|
117
|
+
// }),
|
|
118
|
+
// JwtModule.forRoot({})
|
|
119
|
+
] });
|
|
120
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MembrsModule, imports: [CommonModule,
|
|
121
|
+
HttpClientModule,
|
|
122
|
+
JwtModule
|
|
123
|
+
// JwtModule.forRoot({
|
|
124
|
+
// config: {
|
|
125
|
+
// tokenGetter: retrieveToken
|
|
126
|
+
// }
|
|
127
|
+
// })
|
|
128
|
+
// UIRouterModule.forChild({
|
|
129
|
+
// states: STATES,
|
|
130
|
+
// config: routerConfigFn,
|
|
131
|
+
// }),
|
|
132
|
+
// JwtModule.forRoot({})
|
|
133
|
+
] });
|
|
134
|
+
}
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MembrsModule, decorators: [{
|
|
136
|
+
type: NgModule,
|
|
137
|
+
args: [{
|
|
138
|
+
imports: [
|
|
139
|
+
CommonModule,
|
|
140
|
+
HttpClientModule,
|
|
141
|
+
JwtModule
|
|
142
|
+
// JwtModule.forRoot({
|
|
143
|
+
// config: {
|
|
144
|
+
// tokenGetter: retrieveToken
|
|
145
|
+
// }
|
|
146
|
+
// })
|
|
147
|
+
// UIRouterModule.forChild({
|
|
148
|
+
// states: STATES,
|
|
149
|
+
// config: routerConfigFn,
|
|
150
|
+
// }),
|
|
151
|
+
// JwtModule.forRoot({})
|
|
152
|
+
]
|
|
153
|
+
}]
|
|
154
|
+
}] });
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYnJzLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21lbWJycy9zcmMvbGliL21lbWJycy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBaUMsTUFBTSxlQUFlLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sb0JBQW9CLENBQUM7QUFDNUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFeEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRXhDLE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRztJQUMzQixLQUFLLEVBQUUsU0FBUztJQUNoQixJQUFJLEVBQUUsQ0FBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsQ0FBRTtJQUNsRSxTQUFTLEVBQUUsaUJBQWlCO0NBQy9CLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUc7SUFDNUIsS0FBSyxFQUFFLFNBQVM7SUFDaEIsSUFBSSxFQUFFLENBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsbUJBQW1CLENBQUU7SUFDbEUsU0FBUyxFQUFFLGdCQUFnQjtDQUM1QixDQUFBO0FBRUQsTUFBTSxDQUFDLE1B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Q04sS0FBSztZQUNMLDRCQUE0QjtZQUM1QixvQkFBb0I7WUFDcEIsNEJBQTRCO1lBQzVCLE1BQU07WUFDTix3QkFBd0I7Ozs0RkFNZixZQUFZO2tCQXBCeEIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFNBQVM7d0JBQ1Qsc0JBQXNCO3dCQUN0QixjQUFjO3dCQUNkLGlDQUFpQzt3QkFDakMsTUFBTTt3QkFDTixLQUFLO3dCQUNMLDRCQUE0Qjt3QkFDNUIsb0JBQW9CO3dCQUNwQiw0QkFBNEI7d0JBQzVCLE1BQU07d0JBQ04sd0JBQXdCO3FCQUN6QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE1lbWJyc1NlcnZpY2UgfSBmcm9tICcuL21lbWJycy5zZXJ2aWNlJztcbmltcG9ydCB7IEp3dE1vZHVsZSwgSldUX09QVElPTlMgfSBmcm9tIFwiQGF1dGgwL2FuZ3VsYXItand0XCI7XG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBVSVJvdXRlck1vZHVsZSB9IGZyb20gJ0B1aXJvdXRlci9hbmd1bGFyJ1xuXG5pbXBvcnQgeyBOZzJTdGF0ZURlY2xhcmF0aW9uIH0gZnJvbSAnQHVpcm91dGVyL2FuZ3VsYXInO1xuaW1wb3J0IHsgVHJhbnNpdGlvbiwgVUlSb3V0ZXIgfSBmcm9tICdAdWlyb3V0ZXIvYW5ndWxhcidcblxuaW1wb3J0IHsgcm91dGVyQ29uZmlnRm4gfSBmcm9tICcuL3JvdXRlci5jb25maWcnO1xuaW1wb3J0IHsgTWVtYnJzQ29uZmlnIH0gZnJvbSAnLi9jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1lbWJyc0NvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCB7IHJldHJpZXZlVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcblxuZXhwb3J0IGNvbnN0IHZhbGlkYXRlUmVzb2x2ZSA9IHtcbiAgICB0b2tlbjogJ3JlaXNzdWUnLFxuICAgIGRlcHM6IFsgVHJhbnNpdGlvbiwgVUlSb3V0ZXIsIE1lbWJyc1NlcnZpY2UsIE1lbWJyc0NvbmZpZ1NlcnZpY2UgXSxcbiAgICByZXNvbHZlRm46IHZhbGlkYXRlUmVzb2x2ZUZuXG59XG5cbmV4cG9ydCBjb25zdCByZWlzc3VlUmVzb2x2ZSA9IHtcbiAgdG9rZW46ICdyZWlzc3VlJyxcbiAgZGVwczogWyBUcmFuc2l0aW9uLCBVSVJvdXRlciwgTWVtYnJzU2VydmljZSwgTWVtYnJzQ29uZmlnU2VydmljZSBdLFxuICByZXNvbHZlRm46IHJlaXNzdWVSZXNvbHZlRm5cbn1cblxuZXhwb3J0IGNvbnN0IHJlaXNzdWVTdGF0ZTpOZzJTdGF0ZURlY2xhcmF0aW9uID0ge1xuXHRuYW1lOiAncmVpc3N1ZScsIFxuXHR1cmw6ICcvcmVpc3N1ZT90b2tlbicsXG5cdHZpZXdzOiB7IH0sXG5cdHJlc29sdmU6IFtcbiAgICByZWlzc3VlUmVzb2x2ZVxuXHRdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWlzc3VlUmVzb2x2ZUZuKHRyYW5zaXRpb24sIHJvdXRlciwgbWVtYnJzU2VydmljZSwgbWVtYnJzQ29uZmlnOk1lbWJyc0NvbmZpZykge1xuICAgIFxuICAgIC8vY29uc29sZS5sb2cobWVtYnJzU2VydmljZSlcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgLy8gY29uc29sZS5sb2coJ3JlaXNzdWUgcHJvbWlzZSByZXNvbHZlJylcbiAgICAgIC8vIGNvbnNvbGUubG9nKHRyYW5zaXRpb24ucGFyYW1zKCkudG9rZW4pXG4gICAgICBtZW1icnNTZXJ2aWNlLnJlaXNzdWUodHJhbnNpdGlvbi5wYXJhbXMoKS50b2tlbikudGhlbigocmVzcG9uc2UpPT57XG4gICAgICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlZGlyZWN0VXJsQWZ0ZXJMb2dpbicpKXtcbiAgICAgICAgICAgIGNvbnN0IHJlZGlyZWN0ID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3JlZGlyZWN0VXJsQWZ0ZXJMb2dpbicpXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgncmVkaXJlY3RVcmxBZnRlckxvZ2luJylcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSA9IHJlZGlyZWN0XG4gICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgICAgcm91dGVyLnN0YXRlU2VydmljZS5nbyhtZW1icnNDb25maWcuZGVmYXVsdFN0YXRlLCB7fSwge2luaGVyaXQ6ZmFsc2V9KVxuICAgICAgICAgIH1cbiAgICAgICAgICByZWplY3QoKVxuICAgICAgfSkuY2F0Y2goZXJyb3I9PntcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKCdlcnJvciBpbiByZWlzc3VlIHJlc29sdmUnKVxuICAgICAgICAgIC8vY29uc29sZS5sb2coZXJyb3IpXG4gICAgICAgICAgLy93aW5kb3cubG9jYXRpb24uaHJlZiA9IGVudmlyb25tZW50LmxvZ2luXG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxuICAgICAgfSlcblxuXHR9KVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVSZXNvbHZlRm4odHJhbnNpdGlvbiwgcm91dGVyLCBtZW1icnNTZXJ2aWNlLCBtZW1icnNDb25maWc6TWVtYnJzQ29uZmlnKSB7XG4gIFxuICAvL2NvbnNvbGUubG9nKG1lbWJyc1NlcnZpY2UpXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgLy8gY29uc29sZS5sb2coJ3ZhbGlkYXRlIHByb21pc2UgcmVzb2x2ZScpXG4gICAgXG4gICAgbWVtYnJzU2VydmljZS5yZWlzc3VlKCkudGhlbigocmVzcG9uc2UpPT57XG4gICAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncmVkaXJlY3RVcmxBZnRlckxvZ2luJykpe1xuICAgICAgICBjb25zdCByZWRpcmVjdCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdyZWRpcmVjdFVybEFmdGVyTG9naW4nKVxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgncmVkaXJlY3RVcmxBZnRlckxvZ2luJylcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lID0gcmVkaXJlY3RcbiAgICAgIH1cbiAgICAgIHJlc29sdmUobnVsbClcbiAgICB9KS5jYXRjaChlcnJvcj0+e1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3JlZGlyZWN0VXJsQWZ0ZXJMb2dpbicsIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSlcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbWVtYnJzQ29uZmlnLmxvZ2luXG4gICAgICByZWplY3QoZXJyb3IpXG4gICAgfSlcblxufSlcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGp3dE9wdGlvbnNGYWN0b3J5KGNvbmZpZykge1xuICAvLyBjb25zb2xlLmxvZygnand0IG9wdGlvbnMgZmFjdG9yeScpXG4gIC8vIGNvbnNvbGUubG9nKGNvbmZpZylcbiAgcmV0dXJuIHtcbiAgICB0b2tlbkdldHRlcjogKCkgPT4ge1xuICAgICAgY29uc29sZS5sb2coJ3Rva2VuIGdldHRlcicsICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWVtYnJzJykpXG4gICAgICByZXR1cm4gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21lbWJycycpO1xuICAgIH0sXG4gICAgYWxsb3dlZERvbWFpbnM6IFtjb25maWcuYXBpXVxuICB9XG59XG5cblxuLyoqIFRoZSB0b3AgbGV2ZWwgc3RhdGUocykgKi9cbmV4cG9ydCBjb25zdCBTVEFURVMgPSBbXG4gICAgcmVpc3N1ZVN0YXRlXG5dXG5cblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIEp3dE1vZHVsZVxuICAgIC8vIEp3dE1vZHVsZS5mb3JSb290KHtcbiAgICAvLyAgIGNvbmZpZzoge1xuICAgIC8vICAgICB0b2tlbkdldHRlcjogcmV0cmlldmVUb2tlblxuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gICAgLy8gVUlSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQoe1xuICAgIC8vICAgc3RhdGVzOiBTVEFURVMsXG4gICAgLy8gICBjb25maWc6IHJvdXRlckNvbmZpZ0ZuLFxuICAgIC8vIH0pLFxuICAgIC8vIEp3dE1vZHVsZS5mb3JSb290KHt9KVxuICBdXG59KVxuXG5cblxuZXhwb3J0IGNsYXNzIE1lbWJyc01vZHVsZSB7IFxuICBzdGF0aWMgZm9yUm9vdChjb25maWc6IE1lbWJyc0NvbmZpZyk6IE1vZHVsZVdpdGhQcm92aWRlcnM8TWVtYnJzTW9kdWxlPiB7XG5cblxuICAgIGNvbnN0IG1vZHVsZVByb3ZpZGVycyA9IFVJUm91dGVyTW9kdWxlLmZvckNoaWxkKHtcbiAgICAgIHN0YXRlczogU1RBVEVTLFxuICAgICAgY29uZmlnOiByb3V0ZXJDb25maWdGblxuICAgIH0pLnByb3ZpZGVyc1xuXG4gICAgbW9kdWxlUHJvdmlkZXJzLnB1c2goSnd0TW9kdWxlLmZvclJvb3Qoe1xuICAgICAgY29uZmlnOiB7XG4gICAgICAgIHRva2VuR2V0dGVyOiByZXRyaWV2ZVRva2VuLFxuICAgICAgICBhbGxvd2VkRG9tYWluczogW11cbiAgICAgIH1cbiAgICB9KS5wcm92aWRlcnMpXG4gICAgICBcbiAgICBtb2R1bGVQcm92aWRlcnMucHVzaChNZW1icnNTZXJ2aWNlKVxuICAgIG1vZHVsZVByb3ZpZGVycy5wdXNoKHtwcm92aWRlOiBNZW1icnNDb25maWdTZXJ2aWNlLHVzZVZhbHVlOiBjb25maWd9KTtcbiAgICBcbiAgIFxuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogTWVtYnJzTW9kdWxlLCBcbiAgICAgIHByb3ZpZGVyczogbW9kdWxlUHJvdmlkZXJzIC8vW3twcm92aWRlOiBNZW1icnNDb25maWdTZXJ2aWNlLHVzZVZhbHVlOiBjb25maWd9XVxuICAgIH07XG4gICAgXG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
3
|
+
import { MembrsConfigService } from './config.service';
|
|
4
|
+
import { BehaviorSubject } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
const jwtService = new JwtHelperService();
|
|
8
|
+
export class MembrsService {
|
|
9
|
+
http;
|
|
10
|
+
config;
|
|
11
|
+
_token;
|
|
12
|
+
_decoded;
|
|
13
|
+
decodedReady = new BehaviorSubject(null);
|
|
14
|
+
_lsKey = 'membrs';
|
|
15
|
+
_loggedInObservable = new BehaviorSubject(false);
|
|
16
|
+
constructor(http, config) {
|
|
17
|
+
this.http = http;
|
|
18
|
+
this.config = config;
|
|
19
|
+
// console.log('membrs constructor')
|
|
20
|
+
// if the token exists in local storage, retrieve it back to the service
|
|
21
|
+
if (localStorage.getItem(this._lsKey)) {
|
|
22
|
+
this.token = localStorage.getItem(this._lsKey);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
reissue(token) {
|
|
26
|
+
console.log('Reissuing token...'); // Log function entry
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
if (!token && !this._token) {
|
|
29
|
+
console.log('No token provided and no token found.'); // Log missing token
|
|
30
|
+
reject('NOT_LOGGED_IN');
|
|
31
|
+
}
|
|
32
|
+
if (token) {
|
|
33
|
+
console.log(`Token provided: ${token}`); // Log provided token
|
|
34
|
+
this.token = token;
|
|
35
|
+
}
|
|
36
|
+
// check stored token has not expired, or needs to be reissued soon
|
|
37
|
+
var reissueIn = this._decoded.exp - Math.floor(Date.now() / 1000);
|
|
38
|
+
// token has expired
|
|
39
|
+
if (reissueIn < 0) {
|
|
40
|
+
console.log('Token has expired.'); // Log expired token
|
|
41
|
+
reject('NOT_LOGGED_IN');
|
|
42
|
+
}
|
|
43
|
+
// token expiring soon
|
|
44
|
+
if (reissueIn < 300) {
|
|
45
|
+
console.log('Token expiring soon. Reissuing...'); // Log imminent expiration
|
|
46
|
+
this.http.post(this.config.apiProtocol + this.config.api + '/token/' + this._token, {}).subscribe((response) => {
|
|
47
|
+
if (response.token) {
|
|
48
|
+
this.token = response.token;
|
|
49
|
+
this._loggedInObservable.next(true);
|
|
50
|
+
console.log('Token successfully reissued.'); // Log success
|
|
51
|
+
resolve(this._token);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
console.log('Failed to reissue token.'); // Log failure
|
|
55
|
+
reject('NOT_LOGGED_IN');
|
|
56
|
+
}
|
|
57
|
+
}, (error) => {
|
|
58
|
+
console.log('Error reissuing token:', error); // Log error details
|
|
59
|
+
reject('NOT_LOGGED_IN');
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
this._loggedInObservable.next(true);
|
|
64
|
+
console.log('Token is valid. No need to reissue.'); // Log valid token
|
|
65
|
+
resolve(this._token);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
set token(token) {
|
|
70
|
+
this._token = token;
|
|
71
|
+
console.log('Token set.');
|
|
72
|
+
localStorage.setItem(this._lsKey, token);
|
|
73
|
+
this._decoded = jwtService.decodeToken(this._token);
|
|
74
|
+
}
|
|
75
|
+
deleteToken() {
|
|
76
|
+
localStorage.removeItem(this._lsKey);
|
|
77
|
+
}
|
|
78
|
+
isLoggedIn() {
|
|
79
|
+
return this.token ? true : false;
|
|
80
|
+
}
|
|
81
|
+
get profile() {
|
|
82
|
+
return this._decoded;
|
|
83
|
+
}
|
|
84
|
+
setProfile(decodedData) {
|
|
85
|
+
this._decoded = decodedData;
|
|
86
|
+
this.decodedReady.next(decodedData); // Emit the new value when profile is set
|
|
87
|
+
console.log(this.decodedReady);
|
|
88
|
+
}
|
|
89
|
+
get decodedReady$() {
|
|
90
|
+
return this.decodedReady.asObservable();
|
|
91
|
+
}
|
|
92
|
+
get token() {
|
|
93
|
+
return this._token;
|
|
94
|
+
}
|
|
95
|
+
get admin() {
|
|
96
|
+
return this.profile.permission == 1;
|
|
97
|
+
}
|
|
98
|
+
get isLoggedInObservable() {
|
|
99
|
+
return this._loggedInObservable;
|
|
100
|
+
}
|
|
101
|
+
logout() {
|
|
102
|
+
return new Promise((resolve, reject) => {
|
|
103
|
+
this.http.delete(this.config.apiProtocol + this.config.api + '/token/' + this._token).subscribe((response) => {
|
|
104
|
+
this._token = null;
|
|
105
|
+
localStorage.removeItem(this._lsKey);
|
|
106
|
+
resolve(this.config.login);
|
|
107
|
+
}, error => {
|
|
108
|
+
// If the API call fails (e.g. token already invalid/expired), still clear local state
|
|
109
|
+
console.warn('Logout API call failed, clearing local token anyway', error);
|
|
110
|
+
this._token = null;
|
|
111
|
+
localStorage.removeItem(this._lsKey);
|
|
112
|
+
resolve(this.config.login);
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MembrsService, deps: [{ token: i1.HttpClient }, { token: MembrsConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
117
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MembrsService, providedIn: 'root' });
|
|
118
|
+
}
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MembrsService, decorators: [{
|
|
120
|
+
type: Injectable,
|
|
121
|
+
args: [{
|
|
122
|
+
providedIn: 'root'
|
|
123
|
+
}]
|
|
124
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
125
|
+
type: Inject,
|
|
126
|
+
args: [MembrsConfigService]
|
|
127
|
+
}] }] });
|
|
128
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYnJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tZW1icnMvc3JjL2xpYi9tZW1icnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFBO0FBT3pDLE1BQU0sT0FBTyxhQUFhO0lBVUo7SUFBdUQ7SUFSM0UsTUFBTSxDQUFTO0lBQ2YsUUFBUSxDQUFNO0lBRVAsWUFBWSxHQUFHLElBQUksZUFBZSxDQUFNLElBQUksQ0FBQyxDQUFDO0lBRXJELE1BQU0sR0FBVyxRQUFRLENBQUM7SUFDMUIsbUJBQW1CLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBRTFFLFlBQW9CLElBQWdCLEVBQXVDLE1BQW9CO1FBQTNFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBdUMsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUU3RixvQ0FBb0M7UUFDcEMsd0VBQXdFO1FBQ3hFLElBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUMvQztJQUVILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYztRQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxxQkFBcUI7UUFFeEQsT0FBTyxJQUFJLE9B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O2dCQUNuQixZQUFZLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDN0IsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNULHNGQUFzRjtnQkFDdEYsT0FBTyxDQUFDLElBQUksQ0FBQyxxREFBcUQsRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDM0UsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNyQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt3R0EvSFUsYUFBYSw0Q0FVc0IsbUJBQW1COzRHQVZ0RCxhQUFhLGNBSlosTUFBTTs7NEZBSVAsYUFBYTtrQkFMekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWF3QyxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSnd0SGVscGVyU2VydmljZSB9IGZyb20gJ0BhdXRoMC9hbmd1bGFyLWp3dCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBNZW1icnNDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSdcbmltcG9ydCB7IE1lbWJyc0NvbmZpZyB9IGZyb20gJy4vY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmNvbnN0IGp3dFNlcnZpY2UgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuXG5cbmV4cG9ydCBjbGFzcyBNZW1icnNTZXJ2aWNlIHtcblxuICBfdG9rZW46IHN0cmluZztcbiAgX2RlY29kZWQ6IGFueTtcblxuICBwdWJsaWMgZGVjb2RlZFJlYWR5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KG51bGwpO1xuXG4gIF9sc0tleTogc3RyaW5nID0gJ21lbWJycyc7XG4gIF9sb2dnZWRJbk9ic2VydmFibGU6IEJlaGF2aW9yU3ViamVjdDxCb29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBASW5qZWN0KE1lbWJyc0NvbmZpZ1NlcnZpY2UpIHByaXZhdGUgY29uZmlnOiBNZW1icnNDb25maWcpIHtcblxuICAgIC8vIGNvbnNvbGUubG9nKCdtZW1icnMgY29uc3RydWN0b3InKVxuICAgIC8vIGlmIHRoZSB0b2tlbiBleGlzdHMgaW4gbG9jYWwgc3RvcmFnZSwgcmV0cmlldmUgaXQgYmFjayB0byB0aGUgc2VydmljZVxuICAgIGlmKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuX2xzS2V5KSl7XG4gICAgICB0aGlzLnRva2VuID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fbHNLZXkpXG4gICAgfVxuICBcbiAgfVxuXG4gIHJlaXNzdWUodG9rZW4/OiBzdHJpbmcpIHtcbiAgICBjb25zb2xlLmxvZygnUmVpc3N1aW5nIHRva2VuLi4uJyk7IC8vIExvZyBmdW5jdGlvbiBlbnRyeVxuICAgIFxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRva2VuICYmICF0aGlzLl90b2tlbikge1xuICAgICAgICBjb25zb2xlLmxvZygnTm8gdG9rZW4gcHJvdmlkZWQgYW5kIG5vIHRva2VuIGZvdW5kLicpOyAvLyBMb2cgbWlzc2luZyB0b2tlblxuICAgICAgICByZWplY3QoJ05PVF9MT0dHRURfSU4nKTtcbiAgICAgIH1cbiAgXG4gICAgICBpZiAodG9rZW4pIHtcbiAgICAgICAgY29uc29sZS5sb2coYFRva2VuIHByb3ZpZGVkOiAke3Rva2VufWApOyAvLyBMb2cgcHJvdmlkZWQgdG9rZW5cbiAgICAgICAgdGhpcy50b2tlbiA9IHRva2VuO1xuICAgICAgfVxuICBcbiAgICAgIC8vIGNoZWNrIHN0b3JlZCB0b2tlbiBoYXMgbm90IGV4cGlyZWQsIG9yIG5lZWRzIHRvIGJlIHJlaXNzdWVkIHNvb25cbiAgICAgIHZhciByZWlzc3VlSW4gPSB0aGlzLl9kZWNvZGVkLmV4cCAtIE1hdGguZmxvb3IoRGF0ZS5ub3coKSAvIDEwMDApO1xuICBcbiAgICAgIC8vIHRva2VuIGhhcyBleHBpcmVkXG4gICAgICBpZiAocmVpc3N1ZUluIDwgMCkge1xuICAgICAgICBjb25zb2xlLmxvZygnVG9rZW4gaGFzIGV4cGlyZWQuJyk7IC8vIExvZyBleHBpcmVkIHRva2VuXG4gICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpO1xuICAgICAgfVxuICBcbiAgICAgIC8vIHRva2VuIGV4cGlyaW5nIHNvb25cbiAgICAgIGlmIChyZWlzc3VlSW4gPCAzMDApIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1Rva2VuIGV4cGlyaW5nIHNvb24uIFJlaXNzdWluZy4uLicpOyAvLyBMb2cgaW1taW5lbnQgZXhwaXJhdGlvblxuICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmNvbmZpZy5hcGlQcm90b2NvbCArIHRoaXMuY29uZmlnLmFwaSArICcvdG9rZW4vJyArIHRoaXMuX3Rva2VuLCB7fSkuc3Vic2NyaWJlKFxuICAgICAgICAgIChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UudG9rZW4pIHtcbiAgICAgICAgICAgICAgdGhpcy50b2tlbiA9IHJlc3BvbnNlLnRva2VuO1xuICAgICAgICAgICAgICB0aGlzLl9sb2dnZWRJbk9ic2VydmFibGUubmV4dCh0cnVlKTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ1Rva2VuIHN1Y2Nlc3NmdWxseSByZWlzc3VlZC4nKTsgLy8gTG9nIHN1Y2Nlc3NcbiAgICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLl90b2tlbik7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZygnRmFpbGVkIHRvIHJlaXNzdWUgdG9rZW4uJyk7IC8vIExvZyBmYWlsdXJlXG4gICAgICAgICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnRXJyb3IgcmVpc3N1aW5nIHRva2VuOicsIGVycm9yKTsgLy8gTG9nIGVycm9yIGRldGFpbHNcbiAgICAgICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlZEluT2JzZXJ2YWJsZS5uZXh0KHRydWUpO1xuICAgICAgICBjb25zb2xlLmxvZygnVG9rZW4gaXMgdmFsaWQuIE5vIG5lZWQgdG8gcmVpc3N1ZS4nKTsgLy8gTG9nIHZhbGlkIHRva2VuXG4gICAgICAgIHJlc29sdmUodGhpcy5fdG9rZW4pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIFxuXG4gIHNldCB0b2tlbih0b2tlbil7XG4gICAgdGhpcy5fdG9rZW4gPSB0b2tlblxuICAgIGNvbnNvbGUubG9nKCdUb2tlbiBzZXQuJyk7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fbHNLZXksIHRva2VuKVxuICAgIHRoaXMuX2RlY29kZWQgPSBqd3RTZXJ2aWNlLmRlY29kZVRva2VuKHRoaXMuX3Rva2VuKVxuICB9XG5cbiAgZGVsZXRlVG9rZW4oKXtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLl9sc0tleSlcbiAgfVxuXG4gIGlzTG9nZ2VkSW4oKXtcbiAgICByZXR1cm4gdGhpcy50b2tlbiA/IHRydWUgOiBmYWxzZVxuICB9XG5cbiAgZ2V0IHByb2ZpbGUoKXtcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlZFxuICB9XG5cbiAgc2V0UHJvZmlsZShkZWNvZGVkRGF0YSkge1xuICAgIHRoaXMuX2RlY29kZWQgPSBkZWNvZGVkRGF0YTtcbiAgICB0aGlzLmRlY29kZWRSZWFkeS5uZXh0KGRlY29kZWREYXRhKTsgLy8gRW1pdCB0aGUgbmV3IHZhbHVlIHdoZW4gcHJvZmlsZSBpcyBzZXRcbiAgICBjb25zb2xlLmxvZyh0aGlzLmRlY29kZWRSZWFkeSk7XG4gIH1cblxuICBnZXQgZGVjb2RlZFJlYWR5JCgpIHtcbiAgICByZXR1cm4gdGhpcy5kZWNvZGVkUmVhZHkuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBnZXQgdG9rZW4oKXtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5cbiAgfVxuXG4gIGdldCBhZG1pbiAoKXtcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlLnBlcm1pc3Npb24gPT0gMVxuICB9XG5cbiAgZ2V0IGlzTG9nZ2VkSW5PYnNlcnZhYmxlKCl7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2dlZEluT2JzZXJ2YWJsZVxuICB9XG4gIFxuICBsb2dvdXQoKXtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgIHRoaXMuaHR0cC5kZWxldGUodGhpcy5jb25maWcuYXBpUHJvdG9jb2wgKyB0aGlzLmNvbmZpZy5hcGkgKyAnL3Rva2VuLycgKyB0aGlzLl90b2tlbikuc3Vic2NyaWJlKChyZXNwb25zZTphbnkpPT57XG4gICAgICAgIHRoaXMuX3Rva2VuID0gbnVsbDtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5fbHNLZXkpO1xuICAgICAgICByZXNvbHZlKHRoaXMuY29uZmlnLmxvZ2luKTtcbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgLy8gSWYgdGhlIEFQSSBjYWxsIGZhaWxzIChlLmcuIHRva2VuIGFscmVhZHkgaW52YWxpZC9leHBpcmVkKSwgc3RpbGwgY2xlYXIgbG9jYWwgc3RhdGVcbiAgICAgICAgY29uc29sZS53YXJuKCdMb2dvdXQgQVBJIGNhbGwgZmFpbGVkLCBjbGVhcmluZyBsb2NhbCB0b2tlbiBhbnl3YXknLCBlcnJvcik7XG4gICAgICAgIHRoaXMuX3Rva2VuID0gbnVsbDtcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0odGhpcy5fbHNLZXkpO1xuICAgICAgICByZXNvbHZlKHRoaXMuY29uZmlnLmxvZ2luKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cblxufVxuIl19
|