@trudb/tru-common-lib 0.0.697 → 0.0.700
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/esm2020/lib/components/login/classes/tru-auth-jwt-strategy.mjs +17 -9
- package/esm2020/lib/components/login/classes/tru-auth-token.mjs +5 -3
- package/esm2020/lib/components/login/services/tru-auth.mjs +6 -4
- package/fesm2015/trudb-tru-common-lib.mjs +21 -14
- package/fesm2015/trudb-tru-common-lib.mjs.map +1 -1
- package/fesm2020/trudb-tru-common-lib.mjs +21 -11
- package/fesm2020/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/components/login/classes/tru-auth-jwt-strategy.d.ts +4 -1
- package/lib/components/login/classes/tru-auth-token.d.ts +4 -2
- package/lib/components/login/services/tru-auth.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1,26 +1,34 @@
|
|
|
1
1
|
import { of } from "rxjs";
|
|
2
|
+
import { JwtHelperService } from "@auth0/angular-jwt";
|
|
3
|
+
const helper = new JwtHelperService();
|
|
2
4
|
export class TruAuthJwtStrategy {
|
|
3
5
|
constructor() {
|
|
4
|
-
this.
|
|
6
|
+
this.JWT_ACCESS_TOKEN = "ACCESS_TOKEN";
|
|
7
|
+
this.JWT_REFRESH_TOKEN = "REFRESH_TOKEN";
|
|
8
|
+
this.USER_CLAIMS = "USER_CLAIMS";
|
|
5
9
|
}
|
|
6
10
|
doLoginUser(token) {
|
|
7
|
-
localStorage.setItem(this.
|
|
11
|
+
localStorage.setItem(this.JWT_ACCESS_TOKEN, JSON.stringify(token.accessToken));
|
|
12
|
+
localStorage.setItem(this.JWT_REFRESH_TOKEN, JSON.stringify(token.refreshToken));
|
|
13
|
+
localStorage.setItem(this.USER_CLAIMS, JSON.stringify(token.userClaims));
|
|
8
14
|
}
|
|
9
15
|
doLogoutUser() {
|
|
10
|
-
localStorage.removeItem(this.
|
|
16
|
+
localStorage.removeItem(this.JWT_ACCESS_TOKEN);
|
|
11
17
|
}
|
|
12
18
|
getCurrentUser() {
|
|
13
|
-
|
|
14
|
-
|
|
19
|
+
return of(JSON.parse(helper.decodeToken(localStorage.getItem(this.JWT_ACCESS_TOKEN))));
|
|
20
|
+
}
|
|
21
|
+
getUserRoles() {
|
|
22
|
+
return of(helper.decodeToken(localStorage.getItem(this.JWT_ACCESS_TOKEN)));
|
|
15
23
|
}
|
|
16
24
|
isLoggedIn() {
|
|
17
25
|
return !!this.getJwtToken();
|
|
18
26
|
}
|
|
19
27
|
getJwtToken() {
|
|
20
|
-
return JSON.parse(localStorage.getItem(this.
|
|
28
|
+
return JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN));
|
|
21
29
|
}
|
|
22
30
|
getToken() {
|
|
23
|
-
var token = JSON.parse(localStorage.getItem(this.
|
|
31
|
+
var token = JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN));
|
|
24
32
|
if (token && token !== "undefined") {
|
|
25
33
|
const encodedPayload = token.split(".")[1];
|
|
26
34
|
const payloadStr = window.atob(encodedPayload);
|
|
@@ -29,11 +37,11 @@ export class TruAuthJwtStrategy {
|
|
|
29
37
|
var d = new Date();
|
|
30
38
|
var epoch = Math.round(d.getTime() / 1000);
|
|
31
39
|
if (exp < epoch) {
|
|
32
|
-
localStorage.removeItem(this.
|
|
40
|
+
localStorage.removeItem(this.JWT_ACCESS_TOKEN);
|
|
33
41
|
return null;
|
|
34
42
|
}
|
|
35
43
|
}
|
|
36
44
|
return token;
|
|
37
45
|
}
|
|
38
46
|
}
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWF1dGgtand0LXN0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJ1LWNvbW1vbi1saWIvc3JjL2xpYi9jb21wb25lbnRzL2xvZ2luL2NsYXNzZXMvdHJ1LWF1dGgtand0LXN0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO0FBRXRDLE1BQU0sT0FBTyxrQkFBa0I7SUFBL0I7UUFDbUIscUJBQWdCLEdBQUcsY0FBYyxDQUFDO1FBQ2xDLHNCQUFpQixHQUFHLGVBQWUsQ0FBQztRQUNwQyxnQkFBVyxHQUFHLGFBQWEsQ0FBQztJQStDL0MsQ0FBQztJQTdDQyxXQUFXLENBQUMsS0FBbUI7UUFDN0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztRQUMvRSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO1FBQ2pGLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxZQUFZO1FBQ1YsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBTSxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBVyxDQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBZ0IsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztJQUVELFVBQVU7UUFDUixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQVcsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBVyxDQUFDLENBQUM7UUFFOUUsSUFBSSxLQUFLLElBQUksS0FBSyxLQUFLLFdBQVcsRUFBRTtZQUNsQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzNDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7WUFFL0MsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyQyxJQUFJLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNuQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUUzQyxJQUFJLEdBQUcsR0FBRyxLQUFLLEVBQUU7Z0JBQ2YsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDL0MsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IFRydUF1dGhUb2tlbiB9IGZyb20gXCIuL3RydS1hdXRoLXRva2VuXCI7XHJcbmltcG9ydCB7IFRydVVzZXIgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJ1LXVzZXJcIjtcclxuaW1wb3J0IHsgVHJ1QXV0aFN0cmF0ZWd5IH0gZnJvbSBcIi4vdHJ1LWF1dGgtY29uZmlnXCI7XHJcbmltcG9ydCB7IEp3dEhlbHBlclNlcnZpY2UgfSBmcm9tIFwiQGF1dGgwL2FuZ3VsYXItand0XCI7XHJcblxyXG5jb25zdCBoZWxwZXIgPSBuZXcgSnd0SGVscGVyU2VydmljZSgpO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRydUF1dGhKd3RTdHJhdGVneSBpbXBsZW1lbnRzIFRydUF1dGhTdHJhdGVneTxUcnVBdXRoVG9rZW4+IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IEpXVF9BQ0NFU1NfVE9LRU4gPSBcIkFDQ0VTU19UT0tFTlwiO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgSldUX1JFRlJFU0hfVE9LRU4gPSBcIlJFRlJFU0hfVE9LRU5cIjtcclxuICBwcml2YXRlIHJlYWRvbmx5IFVTRVJfQ0xBSU1TID0gXCJVU0VSX0NMQUlNU1wiO1xyXG5cclxuICBkb0xvZ2luVXNlcih0b2tlbjogVHJ1QXV0aFRva2VuKTogdm9pZCB7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkpXVF9BQ0NFU1NfVE9LRU4sIEpTT04uc3RyaW5naWZ5KHRva2VuLmFjY2Vzc1Rva2VuKSk7XHJcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSh0aGlzLkpXVF9SRUZSRVNIX1RPS0VOLCBKU09OLnN0cmluZ2lmeSh0b2tlbi5yZWZyZXNoVG9rZW4pKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuVVNFUl9DTEFJTVMsIEpTT04uc3RyaW5naWZ5KHRva2VuLnVzZXJDbGFpbXMpKTtcclxuICB9XHJcblxyXG4gIGRvTG9nb3V0VXNlcigpOiB2b2lkIHtcclxuICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuSldUX0FDQ0VTU19UT0tFTik7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50VXNlcigpOiBPYnNlcnZhYmxlPFRydVVzZXIgfCB1bmRlZmluZWQ+IHtcclxuICAgIHJldHVybiBvZihKU09OLnBhcnNlKGhlbHBlci5kZWNvZGVUb2tlbjxhbnk+KGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuSldUX0FDQ0VTU19UT0tFTikgYXMgc3RyaW5nICkpKTtcclxuICB9XHJcblxyXG4gIGdldFVzZXJSb2xlcygpOiBPYnNlcnZhYmxlPEFycmF5PHN0cmluZz4gfCBudWxsPiB7XHJcbiAgICByZXR1cm4gb2YoaGVscGVyLmRlY29kZVRva2VuPEFycmF5PHN0cmluZz4+KGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuSldUX0FDQ0VTU19UT0tFTikgYXMgc3RyaW5nKSk7XHJcbiAgfVxyXG5cclxuICBpc0xvZ2dlZEluKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICEhdGhpcy5nZXRKd3RUb2tlbigpO1xyXG4gIH1cclxuICBnZXRKd3RUb2tlbigpIHtcclxuICAgIHJldHVybiBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuSldUX0FDQ0VTU19UT0tFTikgYXMgc3RyaW5nKTtcclxuICB9XHJcblxyXG4gIGdldFRva2VuKCkge1xyXG4gICAgdmFyIHRva2VuID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSh0aGlzLkpXVF9BQ0NFU1NfVE9LRU4pIGFzIHN0cmluZyk7XHJcblxyXG4gICAgaWYgKHRva2VuICYmIHRva2VuICE9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgIGNvbnN0IGVuY29kZWRQYXlsb2FkID0gdG9rZW4uc3BsaXQoXCIuXCIpWzFdO1xyXG4gICAgICBjb25zdCBwYXlsb2FkU3RyID0gd2luZG93LmF0b2IoZW5jb2RlZFBheWxvYWQpO1xyXG5cclxuICAgICAgdmFyIHBheWxvYWQgPSBKU09OLnBhcnNlKHBheWxvYWRTdHIpO1xyXG4gICAgICB2YXIgZXhwID0gcGF5bG9hZFtcImV4cFwiXTtcclxuICAgICAgdmFyIGQgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICB2YXIgZXBvY2ggPSBNYXRoLnJvdW5kKGQuZ2V0VGltZSgpIC8gMTAwMCk7XHJcblxyXG4gICAgICBpZiAoZXhwIDwgZXBvY2gpIHtcclxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLkpXVF9BQ0NFU1NfVE9LRU4pO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiB0b2tlbjtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export class TruAuthToken {
|
|
2
|
-
constructor(
|
|
3
|
-
this.
|
|
2
|
+
constructor(accessToken, refreshToken, userClaims) {
|
|
3
|
+
this.accessToken = accessToken;
|
|
4
|
+
this.refreshToken = refreshToken;
|
|
5
|
+
this.userClaims = userClaims;
|
|
4
6
|
}
|
|
5
7
|
}
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWF1dGgtdG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbG9naW4vY2xhc3Nlcy90cnUtYXV0aC10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sWUFBWTtJQUN2QixZQUNTLFdBQW1CLEVBQ25CLFlBQW9CLEVBQ3BCLFVBQWtCO1FBRmxCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQ3BCLGVBQVUsR0FBVixVQUFVLENBQVE7SUFBSSxDQUFDO0NBQ2pDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFRydUF1dGhUb2tlbiB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgYWNjZXNzVG9rZW46IHN0cmluZyxcclxuICAgIHB1YmxpYyByZWZyZXNoVG9rZW46IHN0cmluZyxcclxuICAgIHB1YmxpYyB1c2VyQ2xhaW1zOiBzdHJpbmcpIHsgfVxyXG59XHJcbiJdfQ==
|
|
@@ -10,13 +10,15 @@ import * as i2 from "@angular/common/http";
|
|
|
10
10
|
import * as i3 from "./tru-auth-cache";
|
|
11
11
|
import * as i4 from "../../../services/tru-user";
|
|
12
12
|
import * as i5 from "../../../services/tru-app-environment";
|
|
13
|
+
import * as i6 from "@auth0/angular-jwt";
|
|
13
14
|
export class TruAuth {
|
|
14
|
-
constructor(router, http, cache, user, appEnvironment, auth) {
|
|
15
|
+
constructor(router, http, cache, user, appEnvironment, jwtHelperService, auth) {
|
|
15
16
|
this.router = router;
|
|
16
17
|
this.http = http;
|
|
17
18
|
this.cache = cache;
|
|
18
19
|
this.user = user;
|
|
19
20
|
this.appEnvironment = appEnvironment;
|
|
21
|
+
this.jwtHelperService = jwtHelperService;
|
|
20
22
|
this.auth = auth;
|
|
21
23
|
this.loggedIn = new BehaviorSubject(false);
|
|
22
24
|
this.baseUrl = '';
|
|
@@ -56,15 +58,15 @@ export class TruAuth {
|
|
|
56
58
|
this.auth.doLogoutUser();
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
|
-
TruAuth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruAuth, deps: [{ token: i1.Router }, { token: i2.HttpClient }, { token: i3.TruAuthCache }, { token: i4.TruUser }, { token: i5.TruAppEnvironment }, { token: TRU_AUTH_STRATEGY }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
61
|
+
TruAuth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruAuth, deps: [{ token: i1.Router }, { token: i2.HttpClient }, { token: i3.TruAuthCache }, { token: i4.TruUser }, { token: i5.TruAppEnvironment }, { token: i6.JwtHelperService }, { token: TRU_AUTH_STRATEGY }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
60
62
|
TruAuth.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruAuth, providedIn: "root" });
|
|
61
63
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruAuth, decorators: [{
|
|
62
64
|
type: Injectable,
|
|
63
65
|
args: [{
|
|
64
66
|
providedIn: "root",
|
|
65
67
|
}]
|
|
66
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.HttpClient }, { type: i3.TruAuthCache }, { type: i4.TruUser }, { type: i5.TruAppEnvironment }, { type: undefined, decorators: [{
|
|
68
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.HttpClient }, { type: i3.TruAuthCache }, { type: i4.TruUser }, { type: i5.TruAppEnvironment }, { type: i6.JwtHelperService }, { type: undefined, decorators: [{
|
|
67
69
|
type: Inject,
|
|
68
70
|
args: [TRU_AUTH_STRATEGY]
|
|
69
71
|
}] }]; } });
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWF1dGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbG9naW4vc2VydmljZXMvdHJ1LWF1dGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBR25ELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRS9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7QUFRdEQsTUFBTSxPQUFPLE9BQU87SUFJbEIsWUFDVSxNQUFjLEVBQ2QsSUFBZ0IsRUFDaEIsS0FBbUIsRUFDbkIsSUFBYSxFQUNiLGNBQWlDLEVBQ2pDLGdCQUFrQyxFQUNQLElBQTBCO1FBTnJELFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDbkIsU0FBSSxHQUFKLElBQUksQ0FBUztRQUNiLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNqQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ1AsU0FBSSxHQUFKLElBQUksQ0FBc0I7UUFWdkQsYUFBUSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFDO1FBQy9DLFlBQU8sR0FBVyxFQUFFLENBQUM7UUFXM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztJQUM1QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQWlDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLGVBQWUsQ0FBQyxPQUFPLFFBQVEsRUFBRSxZQUFZLENBQUM7YUFDMUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQ3BDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFDZixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUM1QztRQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsMEJBQTBCO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDM0IsQ0FBQzs7b0dBekRVLE9BQU8sc0xBV1IsaUJBQWlCO3dHQVhoQixPQUFPLGNBRk4sTUFBTTsyRkFFUCxPQUFPO2tCQUhuQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBWUksTUFBTTsyQkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIHRocm93RXJyb3IgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBUcnVBdXRoTG9naW5SZXF1ZXN0IH0gZnJvbSBcIi4uL2NsYXNzZXMvdHJ1LWF1dGgtbG9naW4tcmVxdWVzdFwiO1xyXG5pbXBvcnQgeyBUcnVBdXRoQ2FjaGUgfSBmcm9tIFwiLi90cnUtYXV0aC1jYWNoZVwiO1xyXG5pbXBvcnQgeyBUUlVfQVVUSF9TVFJBVEVHWSB9IGZyb20gXCIuLi9jbGFzc2VzL3RydS1hdXRoLWNvbmZpZ1wiO1xyXG5pbXBvcnQgeyBUcnVBdXRoU3RyYXRlZ3kgfSBmcm9tIFwiLi4vY2xhc3Nlcy90cnUtYXV0aC1jb25maWdcIjtcclxuaW1wb3J0IHsgVFJVX0FVVEhfQ09ORklHIH0gZnJvbSBcIi4uL2NsYXNzZXMvdHJ1LWF1dGgtY29uZmlnXCI7XHJcbmltcG9ydCB7IHRhcCwgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IFRydVVzZXIgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJ1LXVzZXJcIjtcclxuaW1wb3J0IHsgVHJ1QXBwRW52aXJvbm1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdHJ1LWFwcC1lbnZpcm9ubWVudFwiO1xyXG5pbXBvcnQgeyBKd3RIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQGF1dGgwL2FuZ3VsYXItand0JztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIFRydUF1dGgge1xyXG4gIHByaXZhdGUgbG9nZ2VkSW4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZyA9ICcnO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIGNhY2hlOiBUcnVBdXRoQ2FjaGUsXHJcbiAgICBwcml2YXRlIHVzZXI6IFRydVVzZXIsXHJcbiAgICBwcml2YXRlIGFwcEVudmlyb25tZW50OiBUcnVBcHBFbnZpcm9ubWVudCxcclxuICAgIHByaXZhdGUgand0SGVscGVyU2VydmljZTogSnd0SGVscGVyU2VydmljZSxcclxuICAgIEBJbmplY3QoVFJVX0FVVEhfU1RSQVRFR1kpIHByaXZhdGUgYXV0aDogVHJ1QXV0aFN0cmF0ZWd5PGFueT5cclxuICApIHtcclxuICAgIHRoaXMuYmFzZVVybCA9IHRoaXMuYXBwRW52aXJvbm1lbnQuYXBwVXJpO1xyXG4gIH1cclxuXHJcbiAgbG9naW4obG9naW5SZXF1ZXN0OiBUcnVBdXRoTG9naW5SZXF1ZXN0KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8YW55PihgJHt0aGlzLmJhc2VVcmx9JHtUUlVfQVVUSF9DT05GSUcuYXV0aFVybH0vbG9naW5gLCBsb2dpblJlcXVlc3QpXHJcbiAgICAgIC5waXBlKHRhcCgoZGF0YSkgPT4ge1xyXG4gICAgICAgIHRoaXMuYXV0aC5kb0xvZ2luVXNlcihkYXRhKTtcclxuICAgICAgICB0aGlzLmxvZ2dlZEluLm5leHQodHJ1ZSk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIGxvZ291dCgpIHtcclxuICAgIHRoaXMuZG9Mb2dvdXRVc2VyKCk7XHJcbiAgfVxyXG5cclxuICBpc0xvZ2dlZEluJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLmF1dGguZ2V0Q3VycmVudFVzZXIoKS5waXBlKFxyXG4gICAgICBtYXAoKCkgPT4gdHJ1ZSksXHJcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoZmFsc2UpKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldCBpc0xvZ2dlZEluKCkge1xyXG4gICAgaWYgKCF0aGlzLmxvZ2dlZEluLnZhbHVlKSB7XHJcbiAgICAgIHRoaXMubG9nZ2VkSW4ubmV4dCh0aGlzLmF1dGguaXNMb2dnZWRJbigpKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmxvZ2dlZEluLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VycmVudFVzZXIkKCk6IE9ic2VydmFibGU8VHJ1VXNlciB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuYXV0aC5nZXRDdXJyZW50VXNlcigpO1xyXG4gIH1cclxuXHJcbiAgZG9Mb2dvdXRBbmRSZWRpcmVjdFRvTG9naW4oKSB7XHJcbiAgICB0aGlzLmRvTG9nb3V0VXNlcigpO1xyXG4gICAgdGhpcy5sb2dnZWRJbi5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIlwiXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRvTG9nb3V0VXNlcigpIHtcclxuICAgIHRoaXMudXNlci5kZXN0cm95KCk7XHJcbiAgICB0aGlzLmNhY2hlLnBydW5lQWxsKCk7XHJcbiAgICB0aGlzLmF1dGguZG9Mb2dvdXRVc2VyKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -74,6 +74,8 @@ import { AgGridModule } from 'ag-grid-angular';
|
|
|
74
74
|
import { tap, map, catchError } from 'rxjs/operators';
|
|
75
75
|
import * as i1$6 from '@angular/router';
|
|
76
76
|
import { RouterModule } from '@angular/router';
|
|
77
|
+
import * as i6$1 from '@auth0/angular-jwt';
|
|
78
|
+
import { JwtHelperService } from '@auth0/angular-jwt';
|
|
77
79
|
import * as i1$7 from '@angular/platform-browser';
|
|
78
80
|
import { BrowserModule } from '@angular/platform-browser';
|
|
79
81
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
@@ -3713,12 +3715,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
3713
3715
|
}] });
|
|
3714
3716
|
|
|
3715
3717
|
class TruAuth {
|
|
3716
|
-
constructor(router, http, cache, user, appEnvironment, auth) {
|
|
3718
|
+
constructor(router, http, cache, user, appEnvironment, jwtHelperService, auth) {
|
|
3717
3719
|
this.router = router;
|
|
3718
3720
|
this.http = http;
|
|
3719
3721
|
this.cache = cache;
|
|
3720
3722
|
this.user = user;
|
|
3721
3723
|
this.appEnvironment = appEnvironment;
|
|
3724
|
+
this.jwtHelperService = jwtHelperService;
|
|
3722
3725
|
this.auth = auth;
|
|
3723
3726
|
this.loggedIn = new BehaviorSubject(false);
|
|
3724
3727
|
this.baseUrl = '';
|
|
@@ -3758,7 +3761,7 @@ class TruAuth {
|
|
|
3758
3761
|
this.auth.doLogoutUser();
|
|
3759
3762
|
}
|
|
3760
3763
|
}
|
|
3761
|
-
TruAuth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruAuth, deps: [{ token: i1$6.Router }, { token: i1$3.HttpClient }, { token: TruAuthCache }, { token: TruUser }, { token: TruAppEnvironment }, { token: TRU_AUTH_STRATEGY }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3764
|
+
TruAuth.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruAuth, deps: [{ token: i1$6.Router }, { token: i1$3.HttpClient }, { token: TruAuthCache }, { token: TruUser }, { token: TruAppEnvironment }, { token: i6$1.JwtHelperService }, { token: TRU_AUTH_STRATEGY }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3762
3765
|
TruAuth.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruAuth, providedIn: "root" });
|
|
3763
3766
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: TruAuth, decorators: [{
|
|
3764
3767
|
type: Injectable,
|
|
@@ -3766,7 +3769,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
3766
3769
|
providedIn: "root",
|
|
3767
3770
|
}]
|
|
3768
3771
|
}], ctorParameters: function () {
|
|
3769
|
-
return [{ type: i1$6.Router }, { type: i1$3.HttpClient }, { type: TruAuthCache }, { type: TruUser }, { type: TruAppEnvironment }, { type: undefined, decorators: [{
|
|
3772
|
+
return [{ type: i1$6.Router }, { type: i1$3.HttpClient }, { type: TruAuthCache }, { type: TruUser }, { type: TruAppEnvironment }, { type: i6$1.JwtHelperService }, { type: undefined, decorators: [{
|
|
3770
3773
|
type: Inject,
|
|
3771
3774
|
args: [TRU_AUTH_STRATEGY]
|
|
3772
3775
|
}] }];
|
|
@@ -5985,31 +5988,35 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
|
|
|
5985
5988
|
args: [{ selector: 'tru-login', template: "<div class=\"login-wrapper\">\r\n <form [formGroup]=\"loginForm\" (ngSubmit)=\"onSubmit()\">\r\n <mat-card class=\"animate-login\">\r\n <mat-card-header>\r\n <mat-card-title> loginFormTitle </mat-card-title>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-form-field>\r\n <mat-label>Username</mat-label>\r\n <input matInput formControlName=\"username\" placeholder=\"Username\">\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>Password</mat-label>\r\n <input matInput type=\"password\" formControlName=\"password\" placeholder=\"Password\">\r\n </mat-form-field>\r\n <div *ngIf=\"loginError\" class=\"animate-login-error animated rubberBand\">\r\n <p style=\"color: red; font-weight: bold;\"> {{ loginError }}</p>\r\n </div>\r\n </mat-card-content>\r\n <mat-card-actions>\r\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"isDisabled()\">Login</button>\r\n </mat-card-actions>\r\n </mat-card>\r\n </form>\r\n</div>\r\n", styles: [".login-container{display:flex;justify-content:center;align-items:center;height:100vh;margin:0;padding:0}.login-input{margin-bottom:20px}.animate-login{display:flex;flex-direction:column;justify-content:center;align-items:center;height:100%;margin-top:50px}.wrapper{display:flex;justify-content:center;align-items:center;height:100vh}mat-card{max-width:300px;width:100%;max-height:300px;padding:20px}.form-group{width:100%;max-width:400px;margin-bottom:20px}.login-wrapper{display:flex;justify-content:center;align-items:center;height:100vh}::ng-deep .login-wrapper .mat-mdc-text-field-wrapper{padding:0 16px!important}\n"] }]
|
|
5986
5989
|
}], ctorParameters: function () { return [{ type: TruAuth }]; } });
|
|
5987
5990
|
|
|
5991
|
+
const helper = new JwtHelperService();
|
|
5988
5992
|
class TruAuthJwtStrategy {
|
|
5989
5993
|
constructor() {
|
|
5990
|
-
this.
|
|
5994
|
+
this.JWT_ACCESS_TOKEN = "ACCESS_TOKEN";
|
|
5995
|
+
this.JWT_REFRESH_TOKEN = "REFRESH_TOKEN";
|
|
5996
|
+
this.USER_CLAIMS = "USER_CLAIMS";
|
|
5991
5997
|
}
|
|
5992
5998
|
doLoginUser(token) {
|
|
5993
|
-
localStorage.setItem(this.
|
|
5999
|
+
localStorage.setItem(this.JWT_ACCESS_TOKEN, JSON.stringify(token.accessToken));
|
|
6000
|
+
localStorage.setItem(this.JWT_REFRESH_TOKEN, JSON.stringify(token.refreshToken));
|
|
6001
|
+
localStorage.setItem(this.USER_CLAIMS, JSON.stringify(token.userClaims));
|
|
5994
6002
|
}
|
|
5995
6003
|
doLogoutUser() {
|
|
5996
|
-
localStorage.removeItem(this.
|
|
6004
|
+
localStorage.removeItem(this.JWT_ACCESS_TOKEN);
|
|
5997
6005
|
}
|
|
5998
6006
|
getCurrentUser() {
|
|
5999
|
-
|
|
6000
|
-
|
|
6001
|
-
|
|
6007
|
+
return of(JSON.parse(helper.decodeToken(localStorage.getItem(this.JWT_ACCESS_TOKEN))));
|
|
6008
|
+
}
|
|
6009
|
+
getUserRoles() {
|
|
6010
|
+
return of(helper.decodeToken(localStorage.getItem(this.JWT_ACCESS_TOKEN)));
|
|
6002
6011
|
}
|
|
6003
6012
|
isLoggedIn() {
|
|
6004
6013
|
return !!this.getJwtToken();
|
|
6005
6014
|
}
|
|
6006
6015
|
getJwtToken() {
|
|
6007
|
-
|
|
6008
|
-
return (_a = JSON.parse(localStorage.getItem(this.JWT_TOKEN))) === null || _a === void 0 ? void 0 : _a.jwt;
|
|
6016
|
+
return JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN));
|
|
6009
6017
|
}
|
|
6010
6018
|
getToken() {
|
|
6011
|
-
var
|
|
6012
|
-
var token = (_a = JSON.parse(localStorage.getItem(this.JWT_TOKEN))) === null || _a === void 0 ? void 0 : _a.jwt;
|
|
6019
|
+
var token = JSON.parse(localStorage.getItem(this.JWT_ACCESS_TOKEN));
|
|
6013
6020
|
if (token && token !== "undefined") {
|
|
6014
6021
|
const encodedPayload = token.split(".")[1];
|
|
6015
6022
|
const payloadStr = window.atob(encodedPayload);
|
|
@@ -6018,7 +6025,7 @@ class TruAuthJwtStrategy {
|
|
|
6018
6025
|
var d = new Date();
|
|
6019
6026
|
var epoch = Math.round(d.getTime() / 1000);
|
|
6020
6027
|
if (exp < epoch) {
|
|
6021
|
-
localStorage.removeItem(this.
|
|
6028
|
+
localStorage.removeItem(this.JWT_ACCESS_TOKEN);
|
|
6022
6029
|
return null;
|
|
6023
6030
|
}
|
|
6024
6031
|
}
|