@nakedcreativity/membrs-angular-helper 0.0.15 → 0.0.18
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 +259 -27
- 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 +22 -0
- package/esm2015/lib/config.interface.js +1 -0
- package/esm2015/lib/config.service.js +7 -0
- package/esm2015/lib/membrs.module.js +107 -5
- package/esm2015/lib/membrs.service.js +96 -5
- package/esm2015/lib/router.config.js +19 -0
- package/esm2015/lib/token.js +5 -0
- package/esm2015/nakedcreativity-membrs-angular-helper.js +2 -1
- package/esm2015/public-api.js +3 -5
- package/fesm2015/nakedcreativity-membrs-angular-helper.js +237 -26
- package/fesm2015/nakedcreativity-membrs-angular-helper.js.map +1 -1
- package/lib/auth.interceptor.d.ts +6 -0
- package/lib/config.interface.d.ts +7 -0
- package/lib/config.service.d.ts +7 -0
- package/lib/membrs.module.d.ts +25 -0
- package/lib/membrs.service.d.ts +16 -1
- package/lib/router.config.d.ts +3 -0
- package/lib/token.d.ts +1 -0
- package/nakedcreativity-membrs-angular-helper.d.ts +2 -0
- package/nakedcreativity-membrs-angular-helper.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +2 -1
- package/esm2015/lib/membrs.component.js +0 -18
- package/lib/membrs.component.d.ts +0 -5
|
@@ -1,13 +1,104 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
3
|
+
import { HttpClient } from '@angular/common/http';
|
|
4
|
+
import { MembrsConfigService } from './config.service';
|
|
2
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
import * as i2 from "./config.service";
|
|
8
|
+
const jwtService = new JwtHelperService();
|
|
3
9
|
export class MembrsService {
|
|
4
|
-
constructor() {
|
|
10
|
+
constructor(http, config) {
|
|
11
|
+
this.http = http;
|
|
12
|
+
this.config = config;
|
|
13
|
+
this._lsKey = 'membrs';
|
|
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
|
+
console.log('reject, not logged in');
|
|
24
|
+
reject('NOT_LOGGED_IN');
|
|
25
|
+
}
|
|
26
|
+
if (token)
|
|
27
|
+
this.token = token;
|
|
28
|
+
// check stored token has not expired, or needs to be reissued soon
|
|
29
|
+
var reissueIn = this._decoded.exp - Math.floor(Date.now() / 1000);
|
|
30
|
+
// token has expired
|
|
31
|
+
if (reissueIn < 0) {
|
|
32
|
+
reject('NOT_LOGGED_IN');
|
|
33
|
+
}
|
|
34
|
+
// token expiring soon
|
|
35
|
+
if (reissueIn < 300) {
|
|
36
|
+
console.log('expires less than 300');
|
|
37
|
+
console.log(this.config);
|
|
38
|
+
this.http.post(this.config.apiProtocol + this.config.api + '/token/' + this._token, {}).subscribe((response) => {
|
|
39
|
+
console.log('reissue response');
|
|
40
|
+
console.log(response);
|
|
41
|
+
if (response.token) {
|
|
42
|
+
this.token = response.token;
|
|
43
|
+
resolve(this._token);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.log('error');
|
|
47
|
+
console.log(response);
|
|
48
|
+
reject('NOT_LOGGED_IN');
|
|
49
|
+
}
|
|
50
|
+
}, error => {
|
|
51
|
+
console.log(error);
|
|
52
|
+
reject('NOT_LOGGED_IN');
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log('token ok');
|
|
57
|
+
resolve(this._token);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
set token(token) {
|
|
62
|
+
this._token = token;
|
|
63
|
+
localStorage.setItem(this._lsKey, token);
|
|
64
|
+
this._decoded = jwtService.decodeToken(this._token);
|
|
65
|
+
}
|
|
66
|
+
deleteToken() {
|
|
67
|
+
localStorage.removeItem(this._lsKey);
|
|
68
|
+
}
|
|
69
|
+
isLoggedIn() {
|
|
70
|
+
return this.token ? true : false;
|
|
71
|
+
}
|
|
72
|
+
get profile() {
|
|
73
|
+
return this._decoded;
|
|
74
|
+
}
|
|
75
|
+
get token() {
|
|
76
|
+
return this._token;
|
|
77
|
+
}
|
|
78
|
+
get admin() {
|
|
79
|
+
return this.profile.permission == 1;
|
|
80
|
+
}
|
|
81
|
+
logout() {
|
|
82
|
+
return new Promise((resolve, reject) => {
|
|
83
|
+
this.http.post(this.config.apiProtocol + this.config.api + '/logout/' + this._token, {}).subscribe((response) => {
|
|
84
|
+
this._token = null;
|
|
85
|
+
localStorage.removeItem(this._lsKey);
|
|
86
|
+
resolve(this.config.login);
|
|
87
|
+
//this.router.stateService.go('dashboard')
|
|
88
|
+
}, error => {
|
|
89
|
+
reject(error);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
5
93
|
}
|
|
6
|
-
MembrsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MembrsService_Factory() { return new MembrsService(); }, token: MembrsService, providedIn: "root" });
|
|
94
|
+
MembrsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function MembrsService_Factory() { return new MembrsService(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(i2.MembrsConfigService)); }, token: MembrsService, providedIn: "root" });
|
|
7
95
|
MembrsService.decorators = [
|
|
8
96
|
{ type: Injectable, args: [{
|
|
9
97
|
providedIn: 'root'
|
|
10
98
|
},] }
|
|
11
99
|
];
|
|
12
|
-
MembrsService.ctorParameters = () => [
|
|
13
|
-
|
|
100
|
+
MembrsService.ctorParameters = () => [
|
|
101
|
+
{ type: HttpClient },
|
|
102
|
+
{ type: undefined, decorators: [{ type: Inject, args: [MembrsConfigService,] }] }
|
|
103
|
+
];
|
|
104
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYnJzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tZW1icnMvc3JjL2xpYi9tZW1icnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7Ozs7QUFFdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFBO0FBT3pDLE1BQU0sT0FBTyxhQUFhO0lBTXhCLFlBQW9CLElBQWdCLEVBQXVDLE1BQW9CO1FBQTNFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBdUMsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUYvRixXQUFNLEdBQVcsUUFBUSxDQUFDO1FBSXhCLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQTtRQUNqQyx3RUFBd0U7UUFDeEUsSUFBRyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBQztZQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1NBQy9DO0lBRUgsQ0FBQztJQUVELE9BQU8sQ0FBQyxLQUFhO1FBRW5CLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFDLEVBQUU7WUFFcEMsSUFBRyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUM7Z0JBQ3hCLE9BQU8sQ0FBQyxHQUFHLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtnQkFDcEMsTUFBTSxDQUFDLGVBQWUsQ0FB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QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsR0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBQyxVQUFVLEdBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFZLEVBQUMsRUFBRTtnQkFDM0csSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ25CLFlBQVksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtnQkFDMUIsMENBQTBDO1lBQzVDLENBQUMsRUFBRSxLQUFLLENBQUEsRUFBRTtnQkFDUixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7WUFDZixDQUFDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBRUosQ0FBQzs7OztZQWpIRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQVBRLFVBQVU7NENBZ0JzQixNQUFNLFNBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcbmltcG9ydCB7IE1lbWJyc0NvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJ1xuaW1wb3J0IHsgTWVtYnJzQ29uZmlnIH0gZnJvbSAnLi9jb25maWcuaW50ZXJmYWNlJztcbmNvbnN0IGp3dFNlcnZpY2UgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpXG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuXG5cbmV4cG9ydCBjbGFzcyBNZW1icnNTZXJ2aWNlIHtcblxuICBfdG9rZW46IHN0cmluZztcbiAgX2RlY29kZWQ6IGFueTtcbiAgX2xzS2V5OiBzdHJpbmcgPSAnbWVtYnJzJztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIEBJbmplY3QoTWVtYnJzQ29uZmlnU2VydmljZSkgcHJpdmF0ZSBjb25maWc6IE1lbWJyc0NvbmZpZykge1xuXG4gICAgY29uc29sZS5sb2coJ21lbWJycyBjb25zdHJ1Y3RvcicpXG4gICAgLy8gaWYgdGhlIHRva2VuIGV4aXN0cyBpbiBsb2NhbCBzdG9yYWdlLCByZXRyaWV2ZSBpdCBiYWNrIHRvIHRoZSBzZXJ2aWNlXG4gICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0odGhpcy5fbHNLZXkpKXtcbiAgICAgIHRoaXMudG9rZW4gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLl9sc0tleSlcbiAgICB9XG4gIFxuICB9XG5cbiAgcmVpc3N1ZSh0b2tlbj86c3RyaW5nKXtcblxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuXG4gICAgICBpZighdG9rZW4gJiYgIXRoaXMuX3Rva2VuKXtcbiAgICAgICAgY29uc29sZS5sb2coJ3JlamVjdCwgbm90IGxvZ2dlZCBpbicpXG4gICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpXG4gICAgICB9XG5cbiAgICAgIGlmKHRva2VuKVxuICAgICAgICB0aGlzLnRva2VuID0gdG9rZW5cblxuICAgICAgLy8gY2hlY2sgc3RvcmVkIHRva2VuIGhhcyBub3QgZXhwaXJlZCwgb3IgbmVlZHMgdG8gYmUgcmVpc3N1ZWQgc29vblxuICAgICAgdmFyIHJlaXNzdWVJbiA9IHRoaXMuX2RlY29kZWQuZXhwIC0gTWF0aC5mbG9vcihEYXRlLm5vdygpLzEwMDApXG4gICAgXG4gICAgICAvLyB0b2tlbiBoYXMgZXhwaXJlZFxuICAgICAgaWYocmVpc3N1ZUluIDwgMCl7XG4gICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpXG4gICAgICB9XG4gICAgICBcbiAgICAgIC8vIHRva2VuIGV4cGlyaW5nIHNvb25cbiAgICAgIGlmKHJlaXNzdWVJbiA8IDMwMCl7XG4gICAgICAgIFxuICAgICAgICBjb25zb2xlLmxvZygnZXhwaXJlcyBsZXNzIHRoYW4gMzAwJylcbiAgICAgICAgXG4gICAgICAgIFxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmNvbmZpZylcblxuICAgICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmNvbmZpZy5hcGlQcm90b2NvbCArIHRoaXMuY29uZmlnLmFwaSsnL3Rva2VuLycrdGhpcy5fdG9rZW4sIHt9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOmFueSk9PntcbiAgICAgICAgICBjb25zb2xlLmxvZygncmVpc3N1ZSByZXNwb25zZScpXG4gICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpXG4gICAgICAgICAgaWYocmVzcG9uc2UudG9rZW4pe1xuICAgICAgICAgICAgdGhpcy50b2tlbiA9IHJlc3BvbnNlLnRva2VuXG4gICAgICAgICAgICByZXNvbHZlKHRoaXMuX3Rva2VuKVxuICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcicpXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXNwb25zZSlcbiAgICAgICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpXG4gICAgICAgICAgfVxuICAgICAgICAgIFxuICAgICAgICB9LCBlcnJvcj0+e1xuICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICAgICAgICAgIHJlamVjdCgnTk9UX0xPR0dFRF9JTicpXG4gICAgICAgIH0pXG5cbiAgICAgIH1lbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coJ3Rva2VuIG9rJylcbiAgICAgICAgcmVzb2x2ZSh0aGlzLl90b2tlbilcbiAgICAgIH1cbiAgICAgIFxuICAgIH0pXG4gICAgXG4gIH1cblxuICBzZXQgdG9rZW4odG9rZW4pe1xuICAgIHRoaXMuX3Rva2VuID0gdG9rZW5cbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9sc0tleSwgdG9rZW4pXG4gICAgdGhpcy5fZGVjb2RlZCA9IGp3dFNlcnZpY2UuZGVjb2RlVG9rZW4odGhpcy5fdG9rZW4pXG4gIH1cblxuICBkZWxldGVUb2tlbigpe1xuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuX2xzS2V5KVxuICB9XG5cbiAgaXNMb2dnZWRJbigpe1xuICAgIHJldHVybiB0aGlzLnRva2VuID8gdHJ1ZSA6IGZhbHNlXG4gIH1cblxuICBnZXQgcHJvZmlsZSgpe1xuICAgIHJldHVybiB0aGlzLl9kZWNvZGVkXG4gIH1cblxuICBnZXQgdG9rZW4oKXtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5cbiAgfVxuXG4gIGdldCBhZG1pbiAoKXtcbiAgICByZXR1cm4gdGhpcy5wcm9maWxlLnBlcm1pc3Npb24gPT0gMVxuICB9XG5cbiAgbG9nb3V0KCl7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICB0aGlzLmh0dHAucG9zdCh0aGlzLmNvbmZpZy5hcGlQcm90b2NvbCt0aGlzLmNvbmZpZy5hcGkrJy9sb2dvdXQvJyt0aGlzLl90b2tlbiwge30pLnN1YnNjcmliZSgocmVzcG9uc2U6YW55KT0+e1xuICAgICAgICB0aGlzLl90b2tlbiA9IG51bGw7XG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuX2xzS2V5KVxuICAgICAgICByZXNvbHZlKHRoaXMuY29uZmlnLmxvZ2luKVxuICAgICAgICAvL3RoaXMucm91dGVyLnN0YXRlU2VydmljZS5nbygnZGFzaGJvYXJkJylcbiAgICAgIH0sIGVycm9yPT57XG4gICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgIH0pXG4gICAgfSlcbiAgICBcbiAgfVxuXG5cbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MembrsConfigService } from './config.service';
|
|
2
|
+
import { MembrsService } from './membrs.service';
|
|
3
|
+
export function routerConfigFn(router, injector) {
|
|
4
|
+
const transitionService = router.transitionService;
|
|
5
|
+
const stateService = router.stateService;
|
|
6
|
+
const config = injector.get(MembrsConfigService);
|
|
7
|
+
const membrsService = injector.get(MembrsService);
|
|
8
|
+
stateService.defaultErrorHandler(function (error) {
|
|
9
|
+
console.log('Default error handler - Membrs Angular Helper');
|
|
10
|
+
console.log(error);
|
|
11
|
+
if (error.detail == 'NOT_LOGGED_IN') {
|
|
12
|
+
membrsService.deleteToken();
|
|
13
|
+
window.location.href = config.login;
|
|
14
|
+
}
|
|
15
|
+
if (error.detail == 'INSUFFICIENT_PERMISSIONS')
|
|
16
|
+
stateService.go(config.defaultState);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVyLmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21lbWJycy9zcmMvbGliL3JvdXRlci5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFHdEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBZ0IsRUFBRSxRQUFrQjtJQUVqRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQztJQUNuRCxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFBO0lBQ3hDLE1BQU0sTUFBTSxHQUFnQixRQUFRLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUE7SUFDN0QsTUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUVqRCxZQUFZLENBQUMsbUJBQW1CLENBQUMsVUFBUyxLQUFLO1FBRS9DLE9BQU8sQ0FBQyxHQUFHLENBQUMsK0NBQStDLENBQUMsQ0FBQTtRQUM1RCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBRWxCLElBQUcsS0FBSyxDQUFDLE1BQU0sSUFBSSxlQUFlLEVBQUM7WUFDbEMsYUFBYSxDQUFDLFdBQVcsRUFBRSxDQUFBO1lBQzNCLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7U0FDcEM7UUFFRCxJQUFHLEtBQUssQ0FBQyxNQUFNLElBQUksMEJBQTBCO1lBQzVDLFlBQVksQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO0lBRXRDLENBQUMsQ0FBQyxDQUFDO0FBRUosQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVJUm91dGVyIH0gZnJvbSAnQHVpcm91dGVyL2NvcmUnO1xuaW1wb3J0IHsgTWVtYnJzQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnXG5pbXBvcnQgeyBNZW1icnNDb25maWcgfSBmcm9tICcuL2NvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbWJyc1NlcnZpY2UgfSBmcm9tICcuL21lbWJycy5zZXJ2aWNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJvdXRlckNvbmZpZ0ZuKHJvdXRlcjogVUlSb3V0ZXIsIGluamVjdG9yOiBJbmplY3Rvcikge1xuXG4gIGNvbnN0IHRyYW5zaXRpb25TZXJ2aWNlID0gcm91dGVyLnRyYW5zaXRpb25TZXJ2aWNlO1xuICBjb25zdCBzdGF0ZVNlcnZpY2UgPSByb3V0ZXIuc3RhdGVTZXJ2aWNlXG4gIGNvbnN0IGNvbmZpZzpNZW1icnNDb25maWcgPSBpbmplY3Rvci5nZXQoTWVtYnJzQ29uZmlnU2VydmljZSlcbiAgY29uc3QgbWVtYnJzU2VydmljZSA9IGluamVjdG9yLmdldChNZW1icnNTZXJ2aWNlKVxuXG4gXHRzdGF0ZVNlcnZpY2UuZGVmYXVsdEVycm9ySGFuZGxlcihmdW5jdGlvbihlcnJvcikge1xuXHRcdCBcblx0XHRjb25zb2xlLmxvZygnRGVmYXVsdCBlcnJvciBoYW5kbGVyIC0gTWVtYnJzIEFuZ3VsYXIgSGVscGVyJylcblx0XHRjb25zb2xlLmxvZyhlcnJvcilcblx0XHRcdFxuXHRcdGlmKGVycm9yLmRldGFpbCA9PSAnTk9UX0xPR0dFRF9JTicpe1xuXHRcdFx0bWVtYnJzU2VydmljZS5kZWxldGVUb2tlbigpXG5cdFx0XHR3aW5kb3cubG9jYXRpb24uaHJlZiA9IGNvbmZpZy5sb2dpbjtcblx0XHR9XG5cblx0XHRpZihlcnJvci5kZXRhaWwgPT0gJ0lOU1VGRklDSUVOVF9QRVJNSVNTSU9OUycpXG5cdFx0XHRzdGF0ZVNlcnZpY2UuZ28oY29uZmlnLmRlZmF1bHRTdGF0ZSlcblxuXHR9KTtcblx0XG59Il19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export function retrieveToken() {
|
|
2
|
+
console.log('retrieve from ls');
|
|
3
|
+
return localStorage.getItem('membrs');
|
|
4
|
+
}
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tZW1icnMvc3JjL2xpYi90b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLFVBQVUsYUFBYTtJQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUE7SUFDL0IsT0FBTyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcmV0cmlldmVUb2tlbigpIHtcbiAgICBjb25zb2xlLmxvZygncmV0cmlldmUgZnJvbSBscycpXG4gICAgcmV0dXJuIGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZW1icnMnKTtcbn0iXX0=
|
|
@@ -2,4 +2,5 @@
|
|
|
2
2
|
* Generated bundle index. Do not edit.
|
|
3
3
|
*/
|
|
4
4
|
export * from './public-api';
|
|
5
|
-
|
|
5
|
+
export { MembrsConfigService as ɵa } from './lib/config.service';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFrZWRjcmVhdGl2aXR5LW1lbWJycy1hbmd1bGFyLWhlbHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL21lbWJycy9zcmMvbmFrZWRjcmVhdGl2aXR5LW1lbWJycy1hbmd1bGFyLWhlbHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsY0FBYyxDQUFDO0FBRzdCLE9BQU8sRUFBQyxtQkFBbUIsSUFBSSxFQUFFLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IHtNZW1icnNDb25maWcgYXMgybVifSBmcm9tICcuL2xpYi9jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCB7TWVtYnJzQ29uZmlnU2VydmljZSBhcyDJtWF9IGZyb20gJy4vbGliL2NvbmZpZy5zZXJ2aWNlJzsiXX0=
|
package/esm2015/public-api.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of membrs
|
|
3
|
-
*/
|
|
4
1
|
export * from './lib/membrs.service';
|
|
5
|
-
export * from './lib/membrs.component';
|
|
6
2
|
export * from './lib/membrs.module';
|
|
7
|
-
|
|
3
|
+
export * from './lib/token';
|
|
4
|
+
export * from './lib/auth.interceptor';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL21lbWJycy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxjQUFjLHNCQUFzQixDQUFDO0FBQ3JDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxhQUFhLENBQUE7QUFDM0IsY0FBYyx3QkFBd0IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVtYnJzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVtYnJzLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi90b2tlbidcbmV4cG9ydCAqIGZyb20gJy4vbGliL2F1dGguaW50ZXJjZXB0b3InIl19
|
|
@@ -1,50 +1,261 @@
|
|
|
1
|
-
import { ɵɵdefineInjectable, Injectable,
|
|
1
|
+
import { InjectionToken, ɵɵdefineInjectable, ɵɵinject, Injectable, Inject, NgModule } from '@angular/core';
|
|
2
|
+
import { JwtHelperService, JwtModule } from '@auth0/angular-jwt';
|
|
3
|
+
import { HttpClient, HttpClientModule } from '@angular/common/http';
|
|
4
|
+
import { CommonModule } from '@angular/common';
|
|
5
|
+
import { Transition, UIRouter, UIRouterModule } from '@uirouter/angular';
|
|
6
|
+
import { finalize } from 'rxjs/operators';
|
|
2
7
|
|
|
8
|
+
/**
|
|
9
|
+
* This is not a real service, but it looks like it from the outside.
|
|
10
|
+
* It's just an InjectionTToken used to import the config object, provided from the outside
|
|
11
|
+
*/
|
|
12
|
+
const MembrsConfigService = new InjectionToken("MembrsConfig");
|
|
13
|
+
|
|
14
|
+
const jwtService = new JwtHelperService();
|
|
3
15
|
class MembrsService {
|
|
4
|
-
constructor() {
|
|
16
|
+
constructor(http, config) {
|
|
17
|
+
this.http = http;
|
|
18
|
+
this.config = config;
|
|
19
|
+
this._lsKey = 'membrs';
|
|
20
|
+
console.log('membrs constructor');
|
|
21
|
+
// if the token exists in local storage, retrieve it back to the service
|
|
22
|
+
if (localStorage.getItem(this._lsKey)) {
|
|
23
|
+
this.token = localStorage.getItem(this._lsKey);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
reissue(token) {
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
if (!token && !this._token) {
|
|
29
|
+
console.log('reject, not logged in');
|
|
30
|
+
reject('NOT_LOGGED_IN');
|
|
31
|
+
}
|
|
32
|
+
if (token)
|
|
33
|
+
this.token = token;
|
|
34
|
+
// check stored token has not expired, or needs to be reissued soon
|
|
35
|
+
var reissueIn = this._decoded.exp - Math.floor(Date.now() / 1000);
|
|
36
|
+
// token has expired
|
|
37
|
+
if (reissueIn < 0) {
|
|
38
|
+
reject('NOT_LOGGED_IN');
|
|
39
|
+
}
|
|
40
|
+
// token expiring soon
|
|
41
|
+
if (reissueIn < 300) {
|
|
42
|
+
console.log('expires less than 300');
|
|
43
|
+
console.log(this.config);
|
|
44
|
+
this.http.post(this.config.apiProtocol + this.config.api + '/token/' + this._token, {}).subscribe((response) => {
|
|
45
|
+
console.log('reissue response');
|
|
46
|
+
console.log(response);
|
|
47
|
+
if (response.token) {
|
|
48
|
+
this.token = response.token;
|
|
49
|
+
resolve(this._token);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log('error');
|
|
53
|
+
console.log(response);
|
|
54
|
+
reject('NOT_LOGGED_IN');
|
|
55
|
+
}
|
|
56
|
+
}, error => {
|
|
57
|
+
console.log(error);
|
|
58
|
+
reject('NOT_LOGGED_IN');
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
console.log('token ok');
|
|
63
|
+
resolve(this._token);
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
set token(token) {
|
|
68
|
+
this._token = token;
|
|
69
|
+
localStorage.setItem(this._lsKey, token);
|
|
70
|
+
this._decoded = jwtService.decodeToken(this._token);
|
|
71
|
+
}
|
|
72
|
+
deleteToken() {
|
|
73
|
+
localStorage.removeItem(this._lsKey);
|
|
74
|
+
}
|
|
75
|
+
isLoggedIn() {
|
|
76
|
+
return this.token ? true : false;
|
|
77
|
+
}
|
|
78
|
+
get profile() {
|
|
79
|
+
return this._decoded;
|
|
80
|
+
}
|
|
81
|
+
get token() {
|
|
82
|
+
return this._token;
|
|
83
|
+
}
|
|
84
|
+
get admin() {
|
|
85
|
+
return this.profile.permission == 1;
|
|
86
|
+
}
|
|
87
|
+
logout() {
|
|
88
|
+
return new Promise((resolve, reject) => {
|
|
89
|
+
this.http.post(this.config.apiProtocol + this.config.api + '/logout/' + 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
|
+
}
|
|
5
99
|
}
|
|
6
|
-
MembrsService.ɵprov = ɵɵdefineInjectable({ factory: function MembrsService_Factory() { return new MembrsService(); }, token: MembrsService, providedIn: "root" });
|
|
100
|
+
MembrsService.ɵprov = ɵɵdefineInjectable({ factory: function MembrsService_Factory() { return new MembrsService(ɵɵinject(HttpClient), ɵɵinject(MembrsConfigService)); }, token: MembrsService, providedIn: "root" });
|
|
7
101
|
MembrsService.decorators = [
|
|
8
102
|
{ type: Injectable, args: [{
|
|
9
103
|
providedIn: 'root'
|
|
10
104
|
},] }
|
|
11
105
|
];
|
|
12
|
-
MembrsService.ctorParameters = () => [
|
|
106
|
+
MembrsService.ctorParameters = () => [
|
|
107
|
+
{ type: HttpClient },
|
|
108
|
+
{ type: undefined, decorators: [{ type: Inject, args: [MembrsConfigService,] }] }
|
|
109
|
+
];
|
|
13
110
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
111
|
+
function routerConfigFn(router, injector) {
|
|
112
|
+
const transitionService = router.transitionService;
|
|
113
|
+
const stateService = router.stateService;
|
|
114
|
+
const config = injector.get(MembrsConfigService);
|
|
115
|
+
const membrsService = injector.get(MembrsService);
|
|
116
|
+
stateService.defaultErrorHandler(function (error) {
|
|
117
|
+
console.log('Default error handler - Membrs Angular Helper');
|
|
118
|
+
console.log(error);
|
|
119
|
+
if (error.detail == 'NOT_LOGGED_IN') {
|
|
120
|
+
membrsService.deleteToken();
|
|
121
|
+
window.location.href = config.login;
|
|
122
|
+
}
|
|
123
|
+
if (error.detail == 'INSUFFICIENT_PERMISSIONS')
|
|
124
|
+
stateService.go(config.defaultState);
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function retrieveToken() {
|
|
129
|
+
console.log('retrieve from ls');
|
|
130
|
+
return localStorage.getItem('membrs');
|
|
18
131
|
}
|
|
19
|
-
MembrsComponent.decorators = [
|
|
20
|
-
{ type: Component, args: [{
|
|
21
|
-
selector: 'lib-membrs',
|
|
22
|
-
template: `
|
|
23
|
-
<p>
|
|
24
|
-
membrs works!
|
|
25
|
-
</p>
|
|
26
|
-
`
|
|
27
|
-
},] }
|
|
28
|
-
];
|
|
29
|
-
MembrsComponent.ctorParameters = () => [];
|
|
30
132
|
|
|
133
|
+
const validateResolve = {
|
|
134
|
+
token: 'reissue',
|
|
135
|
+
deps: [Transition, UIRouter, MembrsService, MembrsConfigService],
|
|
136
|
+
resolveFn: validateResolveFn
|
|
137
|
+
};
|
|
138
|
+
const reissueResolve = {
|
|
139
|
+
token: 'reissue',
|
|
140
|
+
deps: [Transition, UIRouter, MembrsService, MembrsConfigService],
|
|
141
|
+
resolveFn: reissueResolveFn
|
|
142
|
+
};
|
|
143
|
+
const reissueState = {
|
|
144
|
+
name: 'reissue',
|
|
145
|
+
url: '/reissue?token',
|
|
146
|
+
views: {},
|
|
147
|
+
resolve: [
|
|
148
|
+
reissueResolve
|
|
149
|
+
]
|
|
150
|
+
};
|
|
151
|
+
function reissueResolveFn(transition, router, membrsService, membrsConfig) {
|
|
152
|
+
//console.log(membrsService)
|
|
153
|
+
return new Promise((resolve, reject) => {
|
|
154
|
+
console.log('reissue promise resolve');
|
|
155
|
+
console.log(transition.params().token);
|
|
156
|
+
membrsService.reissue(transition.params().token).then((response) => {
|
|
157
|
+
console.log('redirect to default state');
|
|
158
|
+
router.stateService.go(membrsConfig.defaultState, {}, { inherit: false });
|
|
159
|
+
reject();
|
|
160
|
+
}).catch(error => {
|
|
161
|
+
console.log('error in reissue resolve');
|
|
162
|
+
console.log(error);
|
|
163
|
+
//window.location.href = environment.login
|
|
164
|
+
reject(error);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function validateResolveFn(transition, router, membrsService, membrsConfig) {
|
|
169
|
+
//console.log(membrsService)
|
|
170
|
+
return new Promise((resolve, reject) => {
|
|
171
|
+
console.log('validate promise resolve');
|
|
172
|
+
membrsService.reissue().then((response) => {
|
|
173
|
+
resolve();
|
|
174
|
+
}).catch(error => {
|
|
175
|
+
console.log('error in validateResolveFn');
|
|
176
|
+
console.log(error);
|
|
177
|
+
//window.location.href = membrsConfig.login
|
|
178
|
+
reject(error);
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
function jwtOptionsFactory(config) {
|
|
183
|
+
console.log('jwt options factory');
|
|
184
|
+
console.log(config);
|
|
185
|
+
return {
|
|
186
|
+
tokenGetter: () => {
|
|
187
|
+
console.log('token getter', localStorage.getItem('membrs'));
|
|
188
|
+
return localStorage.getItem('membrs');
|
|
189
|
+
},
|
|
190
|
+
allowedDomains: [config.api]
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
/** The top level state(s) */
|
|
194
|
+
const STATES = [
|
|
195
|
+
reissueState
|
|
196
|
+
];
|
|
31
197
|
class MembrsModule {
|
|
198
|
+
static forRoot(config) {
|
|
199
|
+
const moduleProviders = UIRouterModule.forChild({
|
|
200
|
+
states: STATES,
|
|
201
|
+
config: routerConfigFn
|
|
202
|
+
}).providers;
|
|
203
|
+
moduleProviders.push(JwtModule.forRoot({
|
|
204
|
+
config: {
|
|
205
|
+
tokenGetter: retrieveToken,
|
|
206
|
+
allowedDomains: []
|
|
207
|
+
}
|
|
208
|
+
}).providers);
|
|
209
|
+
moduleProviders.push(MembrsService);
|
|
210
|
+
moduleProviders.push({ provide: MembrsConfigService, useValue: config });
|
|
211
|
+
return {
|
|
212
|
+
ngModule: MembrsModule,
|
|
213
|
+
providers: moduleProviders //[{provide: MembrsConfigService,useValue: config}]
|
|
214
|
+
};
|
|
215
|
+
}
|
|
32
216
|
}
|
|
33
217
|
MembrsModule.decorators = [
|
|
34
218
|
{ type: NgModule, args: [{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
219
|
+
imports: [
|
|
220
|
+
CommonModule,
|
|
221
|
+
HttpClientModule,
|
|
222
|
+
JwtModule
|
|
223
|
+
// JwtModule.forRoot({
|
|
224
|
+
// config: {
|
|
225
|
+
// tokenGetter: retrieveToken
|
|
226
|
+
// }
|
|
227
|
+
// })
|
|
228
|
+
// UIRouterModule.forChild({
|
|
229
|
+
// states: STATES,
|
|
230
|
+
// config: routerConfigFn,
|
|
231
|
+
// }),
|
|
232
|
+
// JwtModule.forRoot({})
|
|
233
|
+
]
|
|
38
234
|
},] }
|
|
39
235
|
];
|
|
40
236
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
237
|
+
class TokenInterceptor {
|
|
238
|
+
constructor() { }
|
|
239
|
+
intercept(request, next) {
|
|
240
|
+
//this.busyService.busy()
|
|
241
|
+
request = request.clone({
|
|
242
|
+
setHeaders: {
|
|
243
|
+
Authorization: localStorage.getItem('membrs')
|
|
244
|
+
}
|
|
245
|
+
});
|
|
246
|
+
return next.handle(request).pipe(finalize(() => {
|
|
247
|
+
//this.busyService.finished()
|
|
248
|
+
}));
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
TokenInterceptor.decorators = [
|
|
252
|
+
{ type: Injectable }
|
|
253
|
+
];
|
|
254
|
+
TokenInterceptor.ctorParameters = () => [];
|
|
44
255
|
|
|
45
256
|
/**
|
|
46
257
|
* Generated bundle index. Do not edit.
|
|
47
258
|
*/
|
|
48
259
|
|
|
49
|
-
export {
|
|
260
|
+
export { MembrsModule, MembrsService, STATES, TokenInterceptor, jwtOptionsFactory, reissueResolve, reissueResolveFn, reissueState, retrieveToken, validateResolve, validateResolveFn, MembrsConfigService as ɵa };
|
|
50
261
|
//# sourceMappingURL=nakedcreativity-membrs-angular-helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nakedcreativity-membrs-angular-helper.js","sources":["../../../projects/membrs/src/lib/membrs.service.ts","../../../projects/membrs/src/lib/membrs.component.ts","../../../projects/membrs/src/lib/membrs.module.ts","../../../projects/membrs/src/public-api.ts","../../../projects/membrs/src/nakedcreativity-membrs-angular-helper.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MembrsService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-membrs',\n template: `\n <p>\n membrs works!\n </p>\n `,\n styles: [\n ]\n})\nexport class MembrsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { NgModule } from '@angular/core';\nimport { MembrsComponent } from './membrs.component';\n\n\n\n@NgModule({\n declarations: [MembrsComponent],\n imports: [\n ],\n exports: [MembrsComponent]\n})\nexport class MembrsModule { }\n","/*\n * Public API Surface of membrs\n */\n\nexport * from './lib/membrs.service';\nexport * from './lib/membrs.component';\nexport * from './lib/membrs.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;MAKa,aAAa;IAExB,iBAAiB;;;;YALlB,UAAU,SAAC;gBACV,UAAU,EAAE,MAAM;aACnB;;;;MCQY,eAAe;IAE1B,iBAAiB;IAEjB,QAAQ;KACP;;;YAfF,SAAS,SAAC;gBACT,QAAQ,EAAE,YAAY;gBACtB,QAAQ,EAAE;;;;GAIT;aAGF;;;;MCAY,YAAY;;;YANxB,QAAQ,SAAC;gBACR,YAAY,EAAE,CAAC,eAAe,CAAC;gBAC/B,OAAO,EAAE,EACR;gBACD,OAAO,EAAE,CAAC,eAAe,CAAC;aAC3B;;;ACVD;;;;ACAA;;;;;;"}
|
|
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 console.log('reject, not logged in')\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 console.log('expires less than 300')\n \n \n console.log(this.config)\n\n this.http.post(this.config.apiProtocol + this.config.api+'/token/'+this._token, {}).subscribe((response:any)=>{\n console.log('reissue response')\n console.log(response)\n if(response.token){\n this.token = response.token\n resolve(this._token)\n }else {\n console.log('error')\n console.log(response)\n reject('NOT_LOGGED_IN')\n }\n \n }, error=>{\n console.log(error)\n reject('NOT_LOGGED_IN')\n })\n\n }else {\n console.log('token ok')\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.post(this.config.apiProtocol+this.config.api+'/logout/'+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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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
export declare class TokenInterceptor implements HttpInterceptor {
|
|
4
|
+
constructor();
|
|
5
|
+
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { InjectionToken } from '@angular/core';
|
|
2
|
+
import { MembrsConfig } from './config.interface';
|
|
3
|
+
/**
|
|
4
|
+
* This is not a real service, but it looks like it from the outside.
|
|
5
|
+
* It's just an InjectionTToken used to import the config object, provided from the outside
|
|
6
|
+
*/
|
|
7
|
+
export declare const MembrsConfigService: InjectionToken<MembrsConfig>;
|
package/lib/membrs.module.d.ts
CHANGED
|
@@ -1,2 +1,27 @@
|
|
|
1
|
+
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
+
import { MembrsService } from './membrs.service';
|
|
3
|
+
import { Ng2StateDeclaration } from '@uirouter/angular';
|
|
4
|
+
import { Transition, UIRouter } from '@uirouter/angular';
|
|
5
|
+
import { MembrsConfig } from './config.interface';
|
|
6
|
+
export declare const validateResolve: {
|
|
7
|
+
token: string;
|
|
8
|
+
deps: (import("@angular/core").InjectionToken<MembrsConfig> | typeof MembrsService | typeof Transition | typeof UIRouter)[];
|
|
9
|
+
resolveFn: typeof validateResolveFn;
|
|
10
|
+
};
|
|
11
|
+
export declare const reissueResolve: {
|
|
12
|
+
token: string;
|
|
13
|
+
deps: (import("@angular/core").InjectionToken<MembrsConfig> | typeof MembrsService | typeof Transition | typeof UIRouter)[];
|
|
14
|
+
resolveFn: typeof reissueResolveFn;
|
|
15
|
+
};
|
|
16
|
+
export declare const reissueState: Ng2StateDeclaration;
|
|
17
|
+
export declare function reissueResolveFn(transition: any, router: any, membrsService: any, membrsConfig: MembrsConfig): Promise<unknown>;
|
|
18
|
+
export declare function validateResolveFn(transition: any, router: any, membrsService: any, membrsConfig: MembrsConfig): Promise<unknown>;
|
|
19
|
+
export declare function jwtOptionsFactory(config: any): {
|
|
20
|
+
tokenGetter: () => string;
|
|
21
|
+
allowedDomains: any[];
|
|
22
|
+
};
|
|
23
|
+
/** The top level state(s) */
|
|
24
|
+
export declare const STATES: Ng2StateDeclaration[];
|
|
1
25
|
export declare class MembrsModule {
|
|
26
|
+
static forRoot(config: MembrsConfig): ModuleWithProviders<MembrsModule>;
|
|
2
27
|
}
|
package/lib/membrs.service.d.ts
CHANGED
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { MembrsConfig } from './config.interface';
|
|
1
3
|
export declare class MembrsService {
|
|
2
|
-
|
|
4
|
+
private http;
|
|
5
|
+
private config;
|
|
6
|
+
_token: string;
|
|
7
|
+
_decoded: any;
|
|
8
|
+
_lsKey: string;
|
|
9
|
+
constructor(http: HttpClient, config: MembrsConfig);
|
|
10
|
+
reissue(token?: string): Promise<unknown>;
|
|
11
|
+
set token(token: string);
|
|
12
|
+
deleteToken(): void;
|
|
13
|
+
isLoggedIn(): boolean;
|
|
14
|
+
get profile(): any;
|
|
15
|
+
get token(): string;
|
|
16
|
+
get admin(): boolean;
|
|
17
|
+
logout(): Promise<unknown>;
|
|
3
18
|
}
|
package/lib/token.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function retrieveToken(): string;
|
|
@@ -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":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":18,"character":41},"arguments":[{"__symbolic":"reference","name":"ɵa"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":18,"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"}
|
package/package.json
CHANGED