@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
|
@@ -1,101 +0,0 @@
|
|
|
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
|
-
constructor(http, config) {
|
|
10
|
-
this.http = http;
|
|
11
|
-
this.config = config;
|
|
12
|
-
this._lsKey = 'membrs';
|
|
13
|
-
this._loggedInObservable = new BehaviorSubject(false);
|
|
14
|
-
// console.log('membrs constructor')
|
|
15
|
-
// if the token exists in local storage, retrieve it back to the service
|
|
16
|
-
if (localStorage.getItem(this._lsKey)) {
|
|
17
|
-
this.token = localStorage.getItem(this._lsKey);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
reissue(token) {
|
|
21
|
-
return new Promise((resolve, reject) => {
|
|
22
|
-
if (!token && !this._token) {
|
|
23
|
-
reject('NOT_LOGGED_IN');
|
|
24
|
-
}
|
|
25
|
-
if (token)
|
|
26
|
-
this.token = token;
|
|
27
|
-
// check stored token has not expired, or needs to be reissued soon
|
|
28
|
-
var reissueIn = this._decoded.exp - Math.floor(Date.now() / 1000);
|
|
29
|
-
// token has expired
|
|
30
|
-
if (reissueIn < 0) {
|
|
31
|
-
reject('NOT_LOGGED_IN');
|
|
32
|
-
}
|
|
33
|
-
// token expiring soon
|
|
34
|
-
if (reissueIn < 300) {
|
|
35
|
-
this.http.post(this.config.apiProtocol + this.config.api + '/token/' + this._token, {}).subscribe((response) => {
|
|
36
|
-
if (response.token) {
|
|
37
|
-
this.token = response.token;
|
|
38
|
-
this._loggedInObservable.next(true);
|
|
39
|
-
resolve(this._token);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
reject('NOT_LOGGED_IN');
|
|
43
|
-
}
|
|
44
|
-
}, error => {
|
|
45
|
-
reject('NOT_LOGGED_IN');
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this._loggedInObservable.next(true);
|
|
50
|
-
resolve(this._token);
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
set token(token) {
|
|
55
|
-
this._token = token;
|
|
56
|
-
localStorage.setItem(this._lsKey, token);
|
|
57
|
-
this._decoded = jwtService.decodeToken(this._token);
|
|
58
|
-
}
|
|
59
|
-
deleteToken() {
|
|
60
|
-
localStorage.removeItem(this._lsKey);
|
|
61
|
-
}
|
|
62
|
-
isLoggedIn() {
|
|
63
|
-
return this.token ? true : false;
|
|
64
|
-
}
|
|
65
|
-
get profile() {
|
|
66
|
-
return this._decoded;
|
|
67
|
-
}
|
|
68
|
-
get token() {
|
|
69
|
-
return this._token;
|
|
70
|
-
}
|
|
71
|
-
get admin() {
|
|
72
|
-
return this.profile.permission == 1;
|
|
73
|
-
}
|
|
74
|
-
get isLoggedInObservable() {
|
|
75
|
-
return this._loggedInObservable;
|
|
76
|
-
}
|
|
77
|
-
logout() {
|
|
78
|
-
return new Promise((resolve, reject) => {
|
|
79
|
-
this.http.delete(this.config.apiProtocol + this.config.api + '/token/' + this._token).subscribe((response) => {
|
|
80
|
-
this._token = null;
|
|
81
|
-
localStorage.removeItem(this._lsKey);
|
|
82
|
-
resolve(this.config.login);
|
|
83
|
-
//this.router.stateService.go('dashboard')
|
|
84
|
-
}, error => {
|
|
85
|
-
reject(error);
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
MembrsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembrsService, deps: [{ token: i1.HttpClient }, { token: MembrsConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
91
|
-
MembrsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembrsService, providedIn: 'root' });
|
|
92
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembrsService, decorators: [{
|
|
93
|
-
type: Injectable,
|
|
94
|
-
args: [{
|
|
95
|
-
providedIn: 'root'
|
|
96
|
-
}]
|
|
97
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
98
|
-
type: Inject,
|
|
99
|
-
args: [MembrsConfigService]
|
|
100
|
-
}] }]; } });
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYnJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tZW1icnMvc3JjL2xpYi9tZW1icnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFBO0FBT3pDLE1BQU0sT0FBTyxhQUFhO0lBT3hCLFlBQW9CLElBQWdCLEVBQXVDLE1BQW9CO1FBQTNFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBdUMsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUgvRixXQUFNLEdBQVcsUUFBUSxDQUFDO1FBQzFCLHdCQUFtQixHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUl4RSxvQ0FBb0M7UUFDcEMsd0VBQXdFO1FBQ3hFLElBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUM7WUFDbkMsSUFBSSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtTQUMvQztJQUVILENBQUM7SUFFRCxPQUFPLENBQUMsS0FBYTtRQUVuQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxFQUFFO1lBRXBDLElBQUcsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFDO2dCQUN4QixNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7YUFDeEI7WUFFRCxJQUFHLEtBQUs7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QyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDMUIsMENBQTBDO1lBQzVDLENBQUMsRUFBRSxLQUFLLENBQUEsRUFBRTtnQkFDUixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDZixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUosQ0FBQzs7MEdBeEdVLGFBQWEsNENBT3NCLG1CQUFtQjs4R0FQdEQsYUFBYSxjQUpaLE1BQU07MkZBSVAsYUFBYTtrQkFMekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQVV3QyxNQUFNOzJCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSnd0SGVscGVyU2VydmljZSB9IGZyb20gJ0BhdXRoMC9hbmd1bGFyLWp3dCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5pbXBvcnQgeyBNZW1icnNDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSdcbmltcG9ydCB7IE1lbWJyc0NvbmZpZyB9IGZyb20gJy4vY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmNvbnN0IGp3dFNlcnZpY2UgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuXG5cbmV4cG9ydCBjbGFzcyBNZW1icnNTZXJ2aWNlIHtcblxuICBfdG9rZW46IHN0cmluZztcbiAgX2RlY29kZWQ6IGFueTtcbiAgX2xzS2V5OiBzdHJpbmcgPSAnbWVtYnJzJztcbiAgX2xvZ2dlZEluT2JzZXJ2YWJsZTogQmVoYXZpb3JTdWJqZWN0PEJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSlcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIEBJbmplY3QoTWVtYnJzQ29uZmlnU2VydmljZSkgcHJpdmF0ZSBjb25maWc6IE1lbWJyc0NvbmZpZykge1xuXG4gICAgLy8gY29uc29sZS5sb2coJ21lbWJycyBjb25zdHJ1Y3RvcicpXG4gICAgLy8gaWYgdGhlIHRva2VuIGV4aXN0cyBpbiBsb2NhbCBzdG9yYWdlLCByZXRyaWV2ZSBpdCBiYWNrIHRvIHRoZSBzZXJ2aWNlXG4gICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fbHNLZXkpKXtcbiAgICAgIHRoaXMudG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLl9sc0tleSlcbiAgICB9XG4gIFxuICB9XG5cbiAgcmVpc3N1ZSh0b2tlbj86c3RyaW5nKXtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuXG4gICAgICBpZighdG9rZW4gJiYgIXRoaXMuX3Rva2VuKXtcbiAgICAgICAgcmVqZWN0KCdOT1RfTE9HR0VEX0lOJylcbiAgICAgIH1cblxuICAgICAgaWYodG9rZW4pXG4gICAgICAgIHRoaXMudG9rZW4gPSB0b2tlblxuXG4gICAgICAvLyBjaGVjayBzdG9yZWQgdG9rZW4gaGFzIG5vdCBleHBpcmVkLCBvciBuZWVkcyB0byBiZSByZWlzc3VlZCBzb29uXG4gICAgICB2YXIgcmVpc3N1ZUluID0gdGhpcy5fZGVjb2RlZC5leHAgLSBNYXRoLmZsb29yKERhdGUubm93KCkvMTAwMClcblxuICAgICAgLy8gdG9rZW4gaGFzIGV4cGlyZWRcbiAgICAgIGlmKHJlaXNzdWVJbiA8IDApe1xuICAgICAgICByZWplY3QoJ05PVF9MT0dHRURfSU4nKVxuICAgICAgfVxuICAgICAgXG4gICAgICAvLyB0b2tlbiBleHBpcmluZyBzb29uXG4gICAgICBpZihyZWlzc3VlSW4gPCAzMDApe1xuXG4gICAgICAgIHRoaXMuaHR0cC5wb3N0KHRoaXMuY29uZmlnLmFwaVByb3RvY29sICsgdGhpcy5jb25maWcuYXBpKycvdG9rZW4vJyt0aGlzLl90b2tlbiwge30pLnN1YnNjcmliZSgocmVzcG9uc2U6YW55KT0+e1xuXG4gICAgICAgICAgaWYocmVzcG9uc2UudG9rZW4pe1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHJlc3BvbnNlLnRva2VuXG4gICAgICAgICAgICB0aGlzLl9sb2dnZWRJbk9ic2VydmFibGUubmV4dCh0cnVlKVxuICAgICAgICAgICAgcmVzb2x2ZSh0aGlzLl90b2tlbilcbiAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICByZWplY3QoJ05PVF9MT0dHRURfSU4nKVxuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgfSwgZXJyb3I9PntcbiAgICAgICAgICByZWplY3QoJ05PVF9MT0dHRURfSU4nKVxuICAgICAgICB9KVxuXG4gICAgICB9ZWxzZSB7XG4gICAgICAgIHRoaXMuX2xvZ2dlZEluT2JzZXJ2YWJsZS5uZXh0KHRydWUpXG4gICAgICAgIHJlc29sdmUodGhpcy5fdG9rZW4pXG4gICAgICB9XG4gICAgICBcbiAgICB9KVxuICAgIFxuICB9XG5cbiAgc2V0IHRva2VuKHRva2VuKXtcbiAgICB0aGlzLl90b2tlbiA9IHRva2VuXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0odGhpcy5fbHNLZXksIHRva2VuKVxuICAgIHRoaXMuX2RlY29kZWQgPSBqd3RTZXJ2aWNlLmRlY29kZVRva2VuKHRoaXMuX3Rva2VuKVxuICB9XG5cbiAgZGVsZXRlVG9rZW4oKXtcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLl9sc0tleSlcbiAgfVxuXG4gIGlzTG9nZ2VkSW4oKXtcbiAgICByZXR1cm4gdGhpcy50b2tlbiA/IHRydWUgOiBmYWxzZVxuICB9XG5cbiAgZ2V0IHByb2ZpbGUoKXtcbiAgICByZXR1cm4gdGhpcy5fZGVjb2RlZFxuICB9XG5cbiAgZ2V0IHRva2VuKCl7XG4gICAgcmV0dXJuIHRoaXMuX3Rva2VuXG4gIH1cblxuICBnZXQgYWRtaW4gKCl7XG4gICAgcmV0dXJuIHRoaXMucHJvZmlsZS5wZXJtaXNzaW9uID09IDFcbiAgfVxuXG4gIGdldCBpc0xvZ2dlZEluT2JzZXJ2YWJsZSgpe1xuICAgIHJldHVybiB0aGlzLl9sb2dnZWRJbk9ic2VydmFibGVcbiAgfVxuICBcbiAgbG9nb3V0KCl7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICB0aGlzLmh0dHAuZGVsZXRlKHRoaXMuY29uZmlnLmFwaVByb3RvY29sK3RoaXMuY29uZmlnLmFwaSsnL3Rva2VuLycrdGhpcy5fdG9rZW4pLnN1YnNjcmliZSgocmVzcG9uc2U6YW55KT0+e1xuICAgICAgICB0aGlzLl90b2tlbiA9IG51bGw7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuX2xzS2V5KVxuICAgICAgICByZXNvbHZlKHRoaXMuY29uZmlnLmxvZ2luKVxuICAgICAgICAvL3RoaXMucm91dGVyLnN0YXRlU2VydmljZS5nbygnZGFzaGJvYXJkJylcbiAgICAgIH0sIGVycm9yPT57XG4gICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgIH0pXG4gICAgfSlcbiAgICBcbiAgfVxuXG5cbn1cbiJdfQ==
|
|
@@ -1,299 +0,0 @@
|
|
|
1
|
-
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, Injectable, Inject, NgModule } from '@angular/core';
|
|
3
|
-
import { JwtHelperService, JwtModule } from '@auth0/angular-jwt';
|
|
4
|
-
import { BehaviorSubject } from 'rxjs';
|
|
5
|
-
import * as i1 from '@angular/common/http';
|
|
6
|
-
import { HttpClientModule } from '@angular/common/http';
|
|
7
|
-
import { CommonModule } from '@angular/common';
|
|
8
|
-
import { Transition, UIRouter, UIRouterModule } from '@uirouter/angular';
|
|
9
|
-
import { finalize } from 'rxjs/operators';
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* This is not a real service, but it looks like it from the outside.
|
|
13
|
-
* It's just an InjectionTToken used to import the config object, provided from the outside
|
|
14
|
-
*/
|
|
15
|
-
const MembrsConfigService = new InjectionToken("MembrsConfig");
|
|
16
|
-
|
|
17
|
-
const jwtService = new JwtHelperService();
|
|
18
|
-
class MembrsService {
|
|
19
|
-
constructor(http, config) {
|
|
20
|
-
this.http = http;
|
|
21
|
-
this.config = config;
|
|
22
|
-
this._lsKey = 'membrs';
|
|
23
|
-
this._loggedInObservable = new BehaviorSubject(false);
|
|
24
|
-
// console.log('membrs constructor')
|
|
25
|
-
// if the token exists in local storage, retrieve it back to the service
|
|
26
|
-
if (localStorage.getItem(this._lsKey)) {
|
|
27
|
-
this.token = localStorage.getItem(this._lsKey);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
reissue(token) {
|
|
31
|
-
return new Promise((resolve, reject) => {
|
|
32
|
-
if (!token && !this._token) {
|
|
33
|
-
reject('NOT_LOGGED_IN');
|
|
34
|
-
}
|
|
35
|
-
if (token)
|
|
36
|
-
this.token = token;
|
|
37
|
-
// check stored token has not expired, or needs to be reissued soon
|
|
38
|
-
var reissueIn = this._decoded.exp - Math.floor(Date.now() / 1000);
|
|
39
|
-
// token has expired
|
|
40
|
-
if (reissueIn < 0) {
|
|
41
|
-
reject('NOT_LOGGED_IN');
|
|
42
|
-
}
|
|
43
|
-
// token expiring soon
|
|
44
|
-
if (reissueIn < 300) {
|
|
45
|
-
this.http.post(this.config.apiProtocol + this.config.api + '/token/' + this._token, {}).subscribe((response) => {
|
|
46
|
-
if (response.token) {
|
|
47
|
-
this.token = response.token;
|
|
48
|
-
this._loggedInObservable.next(true);
|
|
49
|
-
resolve(this._token);
|
|
50
|
-
}
|
|
51
|
-
else {
|
|
52
|
-
reject('NOT_LOGGED_IN');
|
|
53
|
-
}
|
|
54
|
-
}, error => {
|
|
55
|
-
reject('NOT_LOGGED_IN');
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
this._loggedInObservable.next(true);
|
|
60
|
-
resolve(this._token);
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
set token(token) {
|
|
65
|
-
this._token = token;
|
|
66
|
-
localStorage.setItem(this._lsKey, token);
|
|
67
|
-
this._decoded = jwtService.decodeToken(this._token);
|
|
68
|
-
}
|
|
69
|
-
deleteToken() {
|
|
70
|
-
localStorage.removeItem(this._lsKey);
|
|
71
|
-
}
|
|
72
|
-
isLoggedIn() {
|
|
73
|
-
return this.token ? true : false;
|
|
74
|
-
}
|
|
75
|
-
get profile() {
|
|
76
|
-
return this._decoded;
|
|
77
|
-
}
|
|
78
|
-
get token() {
|
|
79
|
-
return this._token;
|
|
80
|
-
}
|
|
81
|
-
get admin() {
|
|
82
|
-
return this.profile.permission == 1;
|
|
83
|
-
}
|
|
84
|
-
get isLoggedInObservable() {
|
|
85
|
-
return this._loggedInObservable;
|
|
86
|
-
}
|
|
87
|
-
logout() {
|
|
88
|
-
return new Promise((resolve, reject) => {
|
|
89
|
-
this.http.delete(this.config.apiProtocol + this.config.api + '/token/' + this._token).subscribe((response) => {
|
|
90
|
-
this._token = null;
|
|
91
|
-
localStorage.removeItem(this._lsKey);
|
|
92
|
-
resolve(this.config.login);
|
|
93
|
-
//this.router.stateService.go('dashboard')
|
|
94
|
-
}, error => {
|
|
95
|
-
reject(error);
|
|
96
|
-
});
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
MembrsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembrsService, deps: [{ token: i1.HttpClient }, { token: MembrsConfigService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
101
|
-
MembrsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembrsService, providedIn: 'root' });
|
|
102
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembrsService, decorators: [{
|
|
103
|
-
type: Injectable,
|
|
104
|
-
args: [{
|
|
105
|
-
providedIn: 'root'
|
|
106
|
-
}]
|
|
107
|
-
}], ctorParameters: function () {
|
|
108
|
-
return [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
109
|
-
type: Inject,
|
|
110
|
-
args: [MembrsConfigService]
|
|
111
|
-
}] }];
|
|
112
|
-
} });
|
|
113
|
-
|
|
114
|
-
function routerConfigFn(router, injector) {
|
|
115
|
-
const transitionService = router.transitionService;
|
|
116
|
-
const stateService = router.stateService;
|
|
117
|
-
const config = injector.get(MembrsConfigService);
|
|
118
|
-
const membrsService = injector.get(MembrsService);
|
|
119
|
-
stateService.defaultErrorHandler(function (error) {
|
|
120
|
-
if (error.detail == 'NOT_LOGGED_IN') {
|
|
121
|
-
membrsService.deleteToken();
|
|
122
|
-
window.location.href = config.login;
|
|
123
|
-
}
|
|
124
|
-
if (error.detail == 'INSUFFICIENT_PERMISSIONS')
|
|
125
|
-
stateService.go(config.defaultState);
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
function retrieveToken() {
|
|
130
|
-
// console.log('retrieve from ls')
|
|
131
|
-
return localStorage.getItem('membrs');
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
const validateResolve = {
|
|
135
|
-
token: 'reissue',
|
|
136
|
-
deps: [Transition, UIRouter, MembrsService, MembrsConfigService],
|
|
137
|
-
resolveFn: validateResolveFn
|
|
138
|
-
};
|
|
139
|
-
const reissueResolve = {
|
|
140
|
-
token: 'reissue',
|
|
141
|
-
deps: [Transition, UIRouter, MembrsService, MembrsConfigService],
|
|
142
|
-
resolveFn: reissueResolveFn
|
|
143
|
-
};
|
|
144
|
-
const reissueState = {
|
|
145
|
-
name: 'reissue',
|
|
146
|
-
url: '/reissue?token',
|
|
147
|
-
views: {},
|
|
148
|
-
resolve: [
|
|
149
|
-
reissueResolve
|
|
150
|
-
]
|
|
151
|
-
};
|
|
152
|
-
function reissueResolveFn(transition, router, membrsService, membrsConfig) {
|
|
153
|
-
//console.log(membrsService)
|
|
154
|
-
return new Promise((resolve, reject) => {
|
|
155
|
-
// console.log('reissue promise resolve')
|
|
156
|
-
// console.log(transition.params().token)
|
|
157
|
-
membrsService.reissue(transition.params().token).then((response) => {
|
|
158
|
-
if (localStorage.getItem('redirectUrlAfterLogin')) {
|
|
159
|
-
const redirect = localStorage.getItem('redirectUrlAfterLogin');
|
|
160
|
-
localStorage.removeItem('redirectUrlAfterLogin');
|
|
161
|
-
window.location.pathname = redirect;
|
|
162
|
-
}
|
|
163
|
-
else {
|
|
164
|
-
router.stateService.go(membrsConfig.defaultState, {}, { inherit: false });
|
|
165
|
-
}
|
|
166
|
-
reject();
|
|
167
|
-
}).catch(error => {
|
|
168
|
-
//console.log('error in reissue resolve')
|
|
169
|
-
//console.log(error)
|
|
170
|
-
//window.location.href = environment.login
|
|
171
|
-
reject(error);
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
}
|
|
175
|
-
function validateResolveFn(transition, router, membrsService, membrsConfig) {
|
|
176
|
-
//console.log(membrsService)
|
|
177
|
-
return new Promise((resolve, reject) => {
|
|
178
|
-
// console.log('validate promise resolve')
|
|
179
|
-
membrsService.reissue().then((response) => {
|
|
180
|
-
resolve(null);
|
|
181
|
-
}).catch(error => {
|
|
182
|
-
localStorage.setItem('redirectUrlAfterLogin', window.location.pathname);
|
|
183
|
-
window.location.href = membrsConfig.login;
|
|
184
|
-
reject(error);
|
|
185
|
-
});
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
function jwtOptionsFactory(config) {
|
|
189
|
-
// console.log('jwt options factory')
|
|
190
|
-
// console.log(config)
|
|
191
|
-
return {
|
|
192
|
-
tokenGetter: () => {
|
|
193
|
-
console.log('token getter', localStorage.getItem('membrs'));
|
|
194
|
-
return localStorage.getItem('membrs');
|
|
195
|
-
},
|
|
196
|
-
allowedDomains: [config.api]
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
/** The top level state(s) */
|
|
200
|
-
const STATES = [
|
|
201
|
-
reissueState
|
|
202
|
-
];
|
|
203
|
-
class MembrsModule {
|
|
204
|
-
static forRoot(config) {
|
|
205
|
-
const moduleProviders = UIRouterModule.forChild({
|
|
206
|
-
states: STATES,
|
|
207
|
-
config: routerConfigFn
|
|
208
|
-
}).providers;
|
|
209
|
-
moduleProviders.push(JwtModule.forRoot({
|
|
210
|
-
config: {
|
|
211
|
-
tokenGetter: retrieveToken,
|
|
212
|
-
allowedDomains: []
|
|
213
|
-
}
|
|
214
|
-
}).providers);
|
|
215
|
-
moduleProviders.push(MembrsService);
|
|
216
|
-
moduleProviders.push({ provide: MembrsConfigService, useValue: config });
|
|
217
|
-
return {
|
|
218
|
-
ngModule: MembrsModule,
|
|
219
|
-
providers: moduleProviders //[{provide: MembrsConfigService,useValue: config}]
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
MembrsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembrsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
224
|
-
MembrsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: MembrsModule, imports: [CommonModule,
|
|
225
|
-
HttpClientModule,
|
|
226
|
-
JwtModule
|
|
227
|
-
// JwtModule.forRoot({
|
|
228
|
-
// config: {
|
|
229
|
-
// tokenGetter: retrieveToken
|
|
230
|
-
// }
|
|
231
|
-
// })
|
|
232
|
-
// UIRouterModule.forChild({
|
|
233
|
-
// states: STATES,
|
|
234
|
-
// config: routerConfigFn,
|
|
235
|
-
// }),
|
|
236
|
-
// JwtModule.forRoot({})
|
|
237
|
-
] });
|
|
238
|
-
MembrsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembrsModule, imports: [CommonModule,
|
|
239
|
-
HttpClientModule,
|
|
240
|
-
JwtModule
|
|
241
|
-
// JwtModule.forRoot({
|
|
242
|
-
// config: {
|
|
243
|
-
// tokenGetter: retrieveToken
|
|
244
|
-
// }
|
|
245
|
-
// })
|
|
246
|
-
// UIRouterModule.forChild({
|
|
247
|
-
// states: STATES,
|
|
248
|
-
// config: routerConfigFn,
|
|
249
|
-
// }),
|
|
250
|
-
// JwtModule.forRoot({})
|
|
251
|
-
] });
|
|
252
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: MembrsModule, decorators: [{
|
|
253
|
-
type: NgModule,
|
|
254
|
-
args: [{
|
|
255
|
-
imports: [
|
|
256
|
-
CommonModule,
|
|
257
|
-
HttpClientModule,
|
|
258
|
-
JwtModule
|
|
259
|
-
// JwtModule.forRoot({
|
|
260
|
-
// config: {
|
|
261
|
-
// tokenGetter: retrieveToken
|
|
262
|
-
// }
|
|
263
|
-
// })
|
|
264
|
-
// UIRouterModule.forChild({
|
|
265
|
-
// states: STATES,
|
|
266
|
-
// config: routerConfigFn,
|
|
267
|
-
// }),
|
|
268
|
-
// JwtModule.forRoot({})
|
|
269
|
-
]
|
|
270
|
-
}]
|
|
271
|
-
}] });
|
|
272
|
-
|
|
273
|
-
class TokenInterceptor {
|
|
274
|
-
constructor() { }
|
|
275
|
-
intercept(request, next) {
|
|
276
|
-
console.log('intercept request', localStorage.getItem('membrs'));
|
|
277
|
-
//this.busyService.busy()
|
|
278
|
-
request = request.clone({
|
|
279
|
-
setHeaders: {
|
|
280
|
-
Authorization: localStorage.getItem('membrs')
|
|
281
|
-
}
|
|
282
|
-
});
|
|
283
|
-
return next.handle(request).pipe(finalize(() => {
|
|
284
|
-
//this.busyService.finished()
|
|
285
|
-
}));
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
TokenInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TokenInterceptor, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
289
|
-
TokenInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TokenInterceptor });
|
|
290
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TokenInterceptor, decorators: [{
|
|
291
|
-
type: Injectable
|
|
292
|
-
}], ctorParameters: function () { return []; } });
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Generated bundle index. Do not edit.
|
|
296
|
-
*/
|
|
297
|
-
|
|
298
|
-
export { MembrsModule, MembrsService, STATES, TokenInterceptor, jwtOptionsFactory, reissueResolve, reissueResolveFn, reissueState, retrieveToken, validateResolve, validateResolveFn };
|
|
299
|
-
//# sourceMappingURL=nakedcreativity-membrs-angular-helper.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nakedcreativity-membrs-angular-helper.mjs","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 \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 if(localStorage.getItem('redirectUrlAfterLogin')){\n const redirect = localStorage.getItem('redirectUrlAfterLogin')\n localStorage.removeItem('redirectUrlAfterLogin')\n window.location.pathname = redirect\n }else {\n router.stateService.go(membrsConfig.defaultState, {}, {inherit:false})\n }\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 localStorage.setItem('redirectUrlAfterLogin', window.location.pathname)\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 console.log('intercept request', localStorage.getItem('membrs'))\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"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"nakedcreativity-membrs-angular-helper.mjs","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 \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 if(localStorage.getItem('redirectUrlAfterLogin')){\n const redirect = localStorage.getItem('redirectUrlAfterLogin')\n localStorage.removeItem('redirectUrlAfterLogin')\n window.location.pathname = redirect\n }else {\n router.stateService.go(membrsConfig.defaultState, {}, {inherit:false})\n }\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 localStorage.setItem('redirectUrlAfterLogin', window.location.pathname)\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 console.log('intercept request', localStorage.getItem('membrs'))\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"],"names":[],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|