ssi-security-commons 0.0.1
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/README.md +24 -0
- package/esm2020/lib/alert/alert.component.mjs +27 -0
- package/esm2020/lib/services/auth-interceptor.service.mjs +110 -0
- package/esm2020/lib/services/crypto.service.mjs +35 -0
- package/esm2020/lib/services/messages.service.mjs +161 -0
- package/esm2020/lib/services/session.service.mjs +77 -0
- package/esm2020/lib/ssi-security-commons.component.mjs +26 -0
- package/esm2020/lib/ssi-security-commons.module.mjs +55 -0
- package/esm2020/lib/ssi-security-commons.service.mjs +14 -0
- package/esm2020/lib/user.model.mjs +2 -0
- package/esm2020/public-api.mjs +12 -0
- package/esm2020/ssi-security-commons.mjs +5 -0
- package/fesm2015/ssi-security-commons.mjs +493 -0
- package/fesm2015/ssi-security-commons.mjs.map +1 -0
- package/fesm2020/ssi-security-commons.mjs +488 -0
- package/fesm2020/ssi-security-commons.mjs.map +1 -0
- package/lib/alert/alert.component.d.ts +19 -0
- package/lib/services/auth-interceptor.service.d.ts +28 -0
- package/lib/services/crypto.service.d.ts +13 -0
- package/lib/services/messages.service.d.ts +23 -0
- package/lib/services/session.service.d.ts +26 -0
- package/lib/ssi-security-commons.component.d.ts +8 -0
- package/lib/ssi-security-commons.module.d.ts +13 -0
- package/lib/ssi-security-commons.service.d.ts +6 -0
- package/lib/user.model.d.ts +19 -0
- package/package.json +34 -0
- package/public-api.d.ts +8 -0
- package/ssi-security-commons.d.ts +5 -0
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, Component, Inject, NgModule } from '@angular/core';
|
|
3
|
+
import * as i1 from '@angular/material/dialog';
|
|
4
|
+
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
|
|
5
|
+
import * as i3 from '@angular/material/snack-bar';
|
|
6
|
+
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
7
|
+
import * as CryptoJS from 'crypto-js';
|
|
8
|
+
import * as i2 from '@angular/material/button';
|
|
9
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
10
|
+
import * as i1$1 from '@angular/common/http';
|
|
11
|
+
import { HttpHeaders, HttpErrorResponse } from '@angular/common/http';
|
|
12
|
+
import * as i2$1 from '@angular/router';
|
|
13
|
+
import { BehaviorSubject, throwError } from 'rxjs';
|
|
14
|
+
import { catchError, switchMap, filter, take } from 'rxjs/operators';
|
|
15
|
+
|
|
16
|
+
class SsiSecurityCommonsService {
|
|
17
|
+
constructor() { }
|
|
18
|
+
}
|
|
19
|
+
SsiSecurityCommonsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SsiSecurityCommonsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
20
|
+
SsiSecurityCommonsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SsiSecurityCommonsService, providedIn: 'root' });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SsiSecurityCommonsService, decorators: [{
|
|
22
|
+
type: Injectable,
|
|
23
|
+
args: [{
|
|
24
|
+
providedIn: 'root'
|
|
25
|
+
}]
|
|
26
|
+
}], ctorParameters: function () { return []; } });
|
|
27
|
+
|
|
28
|
+
class SsiSecurityCommonsComponent {
|
|
29
|
+
constructor() { }
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
SsiSecurityCommonsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SsiSecurityCommonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
34
|
+
SsiSecurityCommonsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: SsiSecurityCommonsComponent, selector: "lib-ssi-security-commons", ngImport: i0, template: `
|
|
35
|
+
<p>
|
|
36
|
+
ssi-security-commons works!
|
|
37
|
+
</p>
|
|
38
|
+
`, isInline: true });
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SsiSecurityCommonsComponent, decorators: [{
|
|
40
|
+
type: Component,
|
|
41
|
+
args: [{
|
|
42
|
+
selector: 'lib-ssi-security-commons',
|
|
43
|
+
template: `
|
|
44
|
+
<p>
|
|
45
|
+
ssi-security-commons works!
|
|
46
|
+
</p>
|
|
47
|
+
`,
|
|
48
|
+
styles: []
|
|
49
|
+
}]
|
|
50
|
+
}], ctorParameters: function () { return []; } });
|
|
51
|
+
|
|
52
|
+
class CryptoService {
|
|
53
|
+
constructor() {
|
|
54
|
+
this.secret = '&E)H@McQfThWmZq4';
|
|
55
|
+
this.configuration = {
|
|
56
|
+
mode: CryptoJS.mode.ECB
|
|
57
|
+
};
|
|
58
|
+
const hash = CryptoJS.SHA1(this.secret);
|
|
59
|
+
this.key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));
|
|
60
|
+
}
|
|
61
|
+
encrypt(text) {
|
|
62
|
+
return CryptoJS.AES.encrypt(text, this.key, this.configuration).toString();
|
|
63
|
+
}
|
|
64
|
+
decrypt(text) {
|
|
65
|
+
return CryptoJS.AES.decrypt(text, this.key, this.configuration).toString(CryptoJS.enc.Utf8);
|
|
66
|
+
}
|
|
67
|
+
encryptWithSecret(text, secret) {
|
|
68
|
+
const hash = CryptoJS.SHA1(secret);
|
|
69
|
+
const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));
|
|
70
|
+
return CryptoJS.AES.encrypt(text, key, this.configuration).toString();
|
|
71
|
+
}
|
|
72
|
+
decryptWithSecret(text, secret) {
|
|
73
|
+
const hash = CryptoJS.SHA1(secret);
|
|
74
|
+
const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));
|
|
75
|
+
return CryptoJS.AES.decrypt(text, key, this.configuration).toString(CryptoJS.enc.Utf8);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
CryptoService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: CryptoService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
79
|
+
CryptoService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: CryptoService });
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: CryptoService, decorators: [{
|
|
81
|
+
type: Injectable
|
|
82
|
+
}], ctorParameters: function () { return []; } });
|
|
83
|
+
|
|
84
|
+
class AlertComponent {
|
|
85
|
+
constructor(dialogRef, data) {
|
|
86
|
+
this.dialogRef = dialogRef;
|
|
87
|
+
this.data = data;
|
|
88
|
+
}
|
|
89
|
+
onConfirm() {
|
|
90
|
+
this.dialogRef.close(true);
|
|
91
|
+
}
|
|
92
|
+
onCancel() {
|
|
93
|
+
this.dialogRef.close(null);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
AlertComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: AlertComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
97
|
+
AlertComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.3", type: AlertComponent, selector: "lib-app-alert", ngImport: i0, template: "<h1 mat-dialog-title>{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button *ngIf=\"data?.cancelText\" mat-button (click)=\"onCancel()\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n <button mat-button color=\"primary\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n</div>\n", styles: [""], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: AlertComponent, decorators: [{
|
|
99
|
+
type: Component,
|
|
100
|
+
args: [{ selector: 'lib-app-alert', template: "<h1 mat-dialog-title>{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button *ngIf=\"data?.cancelText\" mat-button (click)=\"onCancel()\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n <button mat-button color=\"primary\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n</div>\n", styles: [""] }]
|
|
101
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
102
|
+
type: Inject,
|
|
103
|
+
args: [MAT_DIALOG_DATA]
|
|
104
|
+
}] }]; } });
|
|
105
|
+
|
|
106
|
+
/* eslint-disable @typescript-eslint/naming-convention */
|
|
107
|
+
class SessionService {
|
|
108
|
+
constructor(http, environment) {
|
|
109
|
+
this.http = http;
|
|
110
|
+
this.endPoint = environment.endPoint;
|
|
111
|
+
}
|
|
112
|
+
setUserdata(userdata) {
|
|
113
|
+
this.userdata = userdata;
|
|
114
|
+
}
|
|
115
|
+
getUserdata() {
|
|
116
|
+
return this.userdata;
|
|
117
|
+
}
|
|
118
|
+
setRefreshToken(refreshToken) {
|
|
119
|
+
this.refreshToken = refreshToken;
|
|
120
|
+
window.localStorage.setItem('REFRESH_TOKEN', refreshToken);
|
|
121
|
+
}
|
|
122
|
+
getRefreshToken() {
|
|
123
|
+
return this.refreshToken;
|
|
124
|
+
}
|
|
125
|
+
setToken(token) {
|
|
126
|
+
this.token = token;
|
|
127
|
+
window.localStorage.setItem('TOKEN', token);
|
|
128
|
+
}
|
|
129
|
+
getToken() {
|
|
130
|
+
return this.token;
|
|
131
|
+
}
|
|
132
|
+
destroyCredentials() {
|
|
133
|
+
this.token = undefined;
|
|
134
|
+
this.refreshToken = undefined;
|
|
135
|
+
window.localStorage.removeItem('TOKEN');
|
|
136
|
+
window.localStorage.removeItem('REFRESH_TOKEN');
|
|
137
|
+
}
|
|
138
|
+
destroyUserData() {
|
|
139
|
+
this.userdata = undefined;
|
|
140
|
+
window.localStorage.removeItem('USERDATA');
|
|
141
|
+
}
|
|
142
|
+
saveCredentials(token, refreshToken) {
|
|
143
|
+
this.token = token;
|
|
144
|
+
this.refreshToken = refreshToken;
|
|
145
|
+
window.localStorage.setItem('TOKEN', token);
|
|
146
|
+
window.localStorage.setItem('REFRESH_TOKEN', refreshToken);
|
|
147
|
+
}
|
|
148
|
+
saveUserData(userdata) {
|
|
149
|
+
this.userdata = userdata;
|
|
150
|
+
window.localStorage.setItem('USERDATA', JSON.stringify(this.userdata));
|
|
151
|
+
}
|
|
152
|
+
isLoggedIn() {
|
|
153
|
+
return !!this.userdata;
|
|
154
|
+
}
|
|
155
|
+
logout() {
|
|
156
|
+
return new Promise((resolve) => {
|
|
157
|
+
this.destroyCredentials();
|
|
158
|
+
this.destroyUserData();
|
|
159
|
+
resolve(null);
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
getNewToken(refreshToken) {
|
|
163
|
+
console.log('getNewToken');
|
|
164
|
+
const httpOptions = {
|
|
165
|
+
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
|
|
166
|
+
};
|
|
167
|
+
return this.http.post(this.endPoint + '/auth/refresh-token', { refreshToken }, httpOptions);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
SessionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService, deps: [{ token: i1$1.HttpClient }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
171
|
+
SessionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService });
|
|
172
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SessionService, decorators: [{
|
|
173
|
+
type: Injectable
|
|
174
|
+
}], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: undefined, decorators: [{
|
|
175
|
+
type: Inject,
|
|
176
|
+
args: ['environment']
|
|
177
|
+
}] }]; } });
|
|
178
|
+
|
|
179
|
+
class MessagesService {
|
|
180
|
+
constructor(auth, router, snackBar, dialog) {
|
|
181
|
+
this.auth = auth;
|
|
182
|
+
this.router = router;
|
|
183
|
+
this.snackBar = snackBar;
|
|
184
|
+
this.dialog = dialog;
|
|
185
|
+
}
|
|
186
|
+
// eslint-disable-next-line max-lines-per-function
|
|
187
|
+
showErrorMessage(error) {
|
|
188
|
+
console.log('error: ', error);
|
|
189
|
+
const msgs = this.getInterceptorMessages();
|
|
190
|
+
switch (error.status) {
|
|
191
|
+
case 302: {
|
|
192
|
+
this.messageSnackError(error);
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
case 400: {
|
|
196
|
+
this.showSnackError(error.message, ['snack-error']);
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
case 403: {
|
|
200
|
+
this.goNavigateLogin(msgs);
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
case 404: {
|
|
204
|
+
this.showSnackError(msgs.auth_interceptor.not_found, ['snack-error']);
|
|
205
|
+
break;
|
|
206
|
+
}
|
|
207
|
+
case 409: {
|
|
208
|
+
this.messageAlertDialog(error, msgs);
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
case 412: {
|
|
212
|
+
this.showSnackError(error.error.responseMessage, ['snack-error']);
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
case 428: {
|
|
216
|
+
this.showSnackError(error.error.responseMessage, ['snack-error']);
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
case 500: {
|
|
220
|
+
this.messageAlertDialog(error, msgs);
|
|
221
|
+
break;
|
|
222
|
+
}
|
|
223
|
+
case 503: {
|
|
224
|
+
this.showSnackError(msgs.auth_interceptor.unavailable, ['snack-error']);
|
|
225
|
+
break;
|
|
226
|
+
}
|
|
227
|
+
case -1: {
|
|
228
|
+
this.showSnackError(msgs.auth_interceptor.connection_error);
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
case 0: {
|
|
232
|
+
this.showSnackError(msgs.auth_interceptor.connection_error);
|
|
233
|
+
break;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
messageSnackError(error) {
|
|
238
|
+
const errorMessage = error.error && error.error.responseMessage ? error.error.responseMessage :
|
|
239
|
+
error.error.message ? error.error.message : error.message;
|
|
240
|
+
this.showSnackError(errorMessage, ['snack-error']);
|
|
241
|
+
}
|
|
242
|
+
goNavigateLogin(msgs) {
|
|
243
|
+
if (this.router.url !== '/login') {
|
|
244
|
+
this.showSnackError(msgs.auth_interceptor.session_lost, ['snack-error']);
|
|
245
|
+
this.router.navigate(['/login']);
|
|
246
|
+
this.auth.destroyCredentials();
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
messageAlertDialog(error, msgs) {
|
|
250
|
+
console.log(error);
|
|
251
|
+
let message = '';
|
|
252
|
+
if (error.error.responseMessage) {
|
|
253
|
+
message = error.error.responseMessage;
|
|
254
|
+
if (error.error.exceptionId) {
|
|
255
|
+
message = message + '\n\n' + msgs.auth_interceptor.code + ': ' + error.error.exceptionId;
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else if (error.error.message) {
|
|
259
|
+
message = error.error.message;
|
|
260
|
+
if (error.error.exceptionId) {
|
|
261
|
+
message = message + '\n\n' + msgs.auth_interceptor.code + ': ' + error.error.exceptionId;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
else if (error.message) {
|
|
265
|
+
message = error.message;
|
|
266
|
+
if (error.error.exceptionId) {
|
|
267
|
+
message = message + '\n\n' + msgs.auth_interceptor.code + ': ' + error.error.exceptionId;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
else {
|
|
271
|
+
message = msgs.auth_interceptor.message;
|
|
272
|
+
}
|
|
273
|
+
this.dialog.open(AlertComponent, {
|
|
274
|
+
disableClose: true,
|
|
275
|
+
data: { title: msgs.auth_interceptor.title, message }
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
showSnackError(message, panelClass = []) {
|
|
279
|
+
console.log(message);
|
|
280
|
+
setTimeout(() => {
|
|
281
|
+
this.snackBar.open(message, undefined, {
|
|
282
|
+
duration: 5000,
|
|
283
|
+
panelClass,
|
|
284
|
+
verticalPosition: 'top'
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
setInterceptorMessages(message) {
|
|
289
|
+
this.interceptorMessages = message;
|
|
290
|
+
}
|
|
291
|
+
// eslint-disable-next-line max-lines-per-function
|
|
292
|
+
getInterceptorMessages() {
|
|
293
|
+
if (!this.interceptorMessages) {
|
|
294
|
+
const lang = window.localStorage.getItem('LANG');
|
|
295
|
+
const messagesEn = {
|
|
296
|
+
auth_interceptor: {
|
|
297
|
+
session_lost: 'Session lost, you have to login again.',
|
|
298
|
+
not_found: 'Resource not found',
|
|
299
|
+
title: 'We are sorry!',
|
|
300
|
+
message: 'We had a problem trying to process your request.',
|
|
301
|
+
code: 'Code',
|
|
302
|
+
unavailable: 'Service unavailable, please try again in a few minutes.',
|
|
303
|
+
connection_error: 'Could not connect to server, please check your network connection.'
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
const messagesEs = {
|
|
307
|
+
auth_interceptor: {
|
|
308
|
+
session_lost: 'Su sesión expiró, debe iniciar sesión nuevamente.',
|
|
309
|
+
not_found: 'Recurso no encontrado',
|
|
310
|
+
title: '¡Lo sentimos!',
|
|
311
|
+
message: 'Tuvimos un problema al tratar de procesar su solicitud.',
|
|
312
|
+
code: 'Código',
|
|
313
|
+
unavailable: 'Servicio no disponible, inténtelo de nuevo en unos minutos.',
|
|
314
|
+
connection_error: 'No se pudo conectar al servidor, verifique su conexión de red.'
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
if (lang && lang === 'es') {
|
|
318
|
+
this.interceptorMessages = messagesEs;
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
this.interceptorMessages = messagesEn;
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return this.interceptorMessages;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
MessagesService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, deps: [{ token: SessionService }, { token: i2$1.Router }, { token: i3.MatSnackBar }, { token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
328
|
+
MessagesService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService });
|
|
329
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MessagesService, decorators: [{
|
|
330
|
+
type: Injectable
|
|
331
|
+
}], ctorParameters: function () { return [{ type: SessionService }, { type: i2$1.Router }, { type: i3.MatSnackBar }, { type: i1.MatDialog }]; } });
|
|
332
|
+
|
|
333
|
+
class SsiSecurityCommonsModule {
|
|
334
|
+
static forRoot(environment) {
|
|
335
|
+
return {
|
|
336
|
+
ngModule: SsiSecurityCommonsModule,
|
|
337
|
+
providers: [{ provide: 'environment', useValue: environment }]
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
SsiSecurityCommonsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SsiSecurityCommonsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
342
|
+
SsiSecurityCommonsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SsiSecurityCommonsModule, declarations: [SsiSecurityCommonsComponent,
|
|
343
|
+
AlertComponent], imports: [MatSnackBarModule,
|
|
344
|
+
MatDialogModule,
|
|
345
|
+
MatButtonModule], exports: [SsiSecurityCommonsComponent] });
|
|
346
|
+
SsiSecurityCommonsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SsiSecurityCommonsModule, providers: [
|
|
347
|
+
MessagesService,
|
|
348
|
+
SessionService,
|
|
349
|
+
CryptoService
|
|
350
|
+
], imports: [[
|
|
351
|
+
MatSnackBarModule,
|
|
352
|
+
MatDialogModule,
|
|
353
|
+
MatButtonModule
|
|
354
|
+
]] });
|
|
355
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: SsiSecurityCommonsModule, decorators: [{
|
|
356
|
+
type: NgModule,
|
|
357
|
+
args: [{
|
|
358
|
+
declarations: [
|
|
359
|
+
SsiSecurityCommonsComponent,
|
|
360
|
+
AlertComponent
|
|
361
|
+
],
|
|
362
|
+
imports: [
|
|
363
|
+
MatSnackBarModule,
|
|
364
|
+
MatDialogModule,
|
|
365
|
+
MatButtonModule
|
|
366
|
+
],
|
|
367
|
+
exports: [
|
|
368
|
+
SsiSecurityCommonsComponent
|
|
369
|
+
],
|
|
370
|
+
providers: [
|
|
371
|
+
MessagesService,
|
|
372
|
+
SessionService,
|
|
373
|
+
CryptoService
|
|
374
|
+
]
|
|
375
|
+
}]
|
|
376
|
+
}] });
|
|
377
|
+
|
|
378
|
+
/* eslint-disable */
|
|
379
|
+
class AuthInterceptor {
|
|
380
|
+
constructor(cryptoService) {
|
|
381
|
+
this.cryptoService = cryptoService;
|
|
382
|
+
}
|
|
383
|
+
intercept(request, next) {
|
|
384
|
+
const token = window.localStorage.getItem('TOKEN');
|
|
385
|
+
console.log(request);
|
|
386
|
+
console.log(request.headers.get('encrypted'));
|
|
387
|
+
let encrypt = request.headers.get('encrypted');
|
|
388
|
+
if (encrypt && encrypt === 'true') {
|
|
389
|
+
let body = request.body;
|
|
390
|
+
let bodyStr = JSON.stringify(body);
|
|
391
|
+
var newBody = {
|
|
392
|
+
encrypted: this.cryptoService.encrypt(bodyStr)
|
|
393
|
+
};
|
|
394
|
+
request = request.clone({
|
|
395
|
+
body: newBody
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
if (token) {
|
|
399
|
+
request = request.clone({
|
|
400
|
+
setHeaders: {
|
|
401
|
+
Authorization: 'Bearer ' + token,
|
|
402
|
+
}
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
return next.handle(request);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
AuthInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: AuthInterceptor, deps: [{ token: CryptoService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
409
|
+
AuthInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: AuthInterceptor });
|
|
410
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: AuthInterceptor, decorators: [{
|
|
411
|
+
type: Injectable
|
|
412
|
+
}], ctorParameters: function () { return [{ type: CryptoService }]; } });
|
|
413
|
+
class ResponseInterceptor {
|
|
414
|
+
constructor(injector, router, sessionService) {
|
|
415
|
+
this.injector = injector;
|
|
416
|
+
this.router = router;
|
|
417
|
+
this.sessionService = sessionService;
|
|
418
|
+
this.isRefreshing = false;
|
|
419
|
+
this.refreshTokenSubject = new BehaviorSubject(null);
|
|
420
|
+
setTimeout(() => {
|
|
421
|
+
this.messages = this.injector.get(MessagesService);
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
intercept(request, next) {
|
|
425
|
+
return next.handle(request).pipe(catchError(error => {
|
|
426
|
+
if (error instanceof HttpErrorResponse) {
|
|
427
|
+
console.error(error);
|
|
428
|
+
if (error.status === 401) {
|
|
429
|
+
console.log(this.router.url);
|
|
430
|
+
if (this.router.url != '/login') {
|
|
431
|
+
console.log('401--->' + request.url);
|
|
432
|
+
return this.handle401Error(request, next);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
else {
|
|
436
|
+
this.messages?.showErrorMessage(error);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
}));
|
|
440
|
+
}
|
|
441
|
+
handle401Error(request, next) {
|
|
442
|
+
console.log('handle401Error');
|
|
443
|
+
console.log(this.isRefreshing);
|
|
444
|
+
if (!this.isRefreshing) {
|
|
445
|
+
this.isRefreshing = true;
|
|
446
|
+
this.refreshTokenSubject.next(null);
|
|
447
|
+
const refreshToken = this.sessionService.getRefreshToken();
|
|
448
|
+
console.log(refreshToken);
|
|
449
|
+
if (refreshToken) {
|
|
450
|
+
return this.sessionService.getNewToken(refreshToken).pipe(switchMap((res) => {
|
|
451
|
+
console.log(res);
|
|
452
|
+
this.isRefreshing = false;
|
|
453
|
+
this.sessionService.setToken(res.data.accessToken);
|
|
454
|
+
this.sessionService.setRefreshToken(res.data.refreshToken);
|
|
455
|
+
this.refreshTokenSubject.next(res.data.accessToken);
|
|
456
|
+
return next.handle(this.addTokenHeader(request, res.data.accessToken));
|
|
457
|
+
}), catchError((err) => {
|
|
458
|
+
this.isRefreshing = false;
|
|
459
|
+
this.sessionService.logout();
|
|
460
|
+
this.router.navigate(['/login']);
|
|
461
|
+
return throwError(err);
|
|
462
|
+
}));
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
else {
|
|
466
|
+
return this.refreshTokenSubject.pipe(filter(token => token !== null), take(1), switchMap((token) => next.handle(this.addTokenHeader(request, token))));
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
addTokenHeader(request, token) {
|
|
470
|
+
return request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) });
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
ResponseInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ResponseInterceptor, deps: [{ token: i0.Injector }, { token: i2$1.Router }, { token: SessionService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
474
|
+
ResponseInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ResponseInterceptor });
|
|
475
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: ResponseInterceptor, decorators: [{
|
|
476
|
+
type: Injectable
|
|
477
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i2$1.Router }, { type: SessionService }]; } });
|
|
478
|
+
|
|
479
|
+
/*
|
|
480
|
+
* Public API Surface of ssi-security-commons
|
|
481
|
+
*/
|
|
482
|
+
|
|
483
|
+
/**
|
|
484
|
+
* Generated bundle index. Do not edit.
|
|
485
|
+
*/
|
|
486
|
+
|
|
487
|
+
export { AuthInterceptor, CryptoService, MessagesService, ResponseInterceptor, SessionService, SsiSecurityCommonsComponent, SsiSecurityCommonsModule, SsiSecurityCommonsService };
|
|
488
|
+
//# sourceMappingURL=ssi-security-commons.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ssi-security-commons.mjs","sources":["../../../projects/ssi-security-commons/src/lib/ssi-security-commons.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.component.ts","../../../projects/ssi-security-commons/src/lib/services/crypto.service.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.ts","../../../projects/ssi-security-commons/src/lib/alert/alert.component.html","../../../projects/ssi-security-commons/src/lib/services/session.service.ts","../../../projects/ssi-security-commons/src/lib/services/messages.service.ts","../../../projects/ssi-security-commons/src/lib/ssi-security-commons.module.ts","../../../projects/ssi-security-commons/src/lib/services/auth-interceptor.service.ts","../../../projects/ssi-security-commons/src/public-api.ts","../../../projects/ssi-security-commons/src/ssi-security-commons.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class SsiSecurityCommonsService {\n\n constructor() { }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-ssi-security-commons',\n template: `\n <p>\n ssi-security-commons works!\n </p>\n `,\n styles: [\n ]\n})\nexport class SsiSecurityCommonsComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport * as CryptoJS from 'crypto-js';\n\n@Injectable()\nexport class CryptoService {\n\n private configuration: any;\n private key: any;\n private secret = '&E)H@McQfThWmZq4';\n\n constructor() {\n this.configuration = {\n mode: CryptoJS.mode.ECB\n };\n const hash = CryptoJS.SHA1(this.secret);\n this.key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n }\n\n encrypt(text: string): string {\n return CryptoJS.AES.encrypt(text, this.key, this.configuration).toString();\n }\n\n decrypt(text: string): string {\n return CryptoJS.AES.decrypt(text, this.key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n encryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.encrypt(text, key, this.configuration).toString();\n }\n\n decryptWithSecret(text: string, secret: string): string {\n const hash = CryptoJS.SHA1(secret);\n const key = CryptoJS.lib.WordArray.create(hash.words.slice(0, 16 / 4));\n return CryptoJS.AES.decrypt(text, key, this.configuration).toString(CryptoJS.enc.Utf8);\n }\n\n}\n","import { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\nexport interface DialogData {\n title?: string;\n icon?: string;\n type?: string;\n message?: string;\n okText?: string;\n cancelText?: string;\n}\n\n@Component({\n selector: 'lib-app-alert',\n templateUrl: './alert.component.html',\n styleUrls: ['./alert.component.scss']\n})\nexport class AlertComponent {\n\n constructor(\n public dialogRef: MatDialogRef<AlertComponent>,\n @Inject(MAT_DIALOG_DATA) public data: DialogData\n ) { }\n\n onConfirm(): void {\n this.dialogRef.close(true);\n }\n\n onCancel(): void {\n this.dialogRef.close(null);\n }\n}\n","<h1 mat-dialog-title>{{data.title?data.title:'Alert'}}</h1>\n<div mat-dialog-content class=\"alert-min-width\">\n <div>\n {{data.message}}\n </div>\n</div>\n<div mat-dialog-actions align=\"end\">\n <button *ngIf=\"data?.cancelText\" mat-button (click)=\"onCancel()\">{{data.cancelText ? data.cancelText : 'Cancel'}}</button>\n <button mat-button color=\"primary\" (click)=\"onConfirm()\">{{data.okText ? data.okText : 'OK'}}</button>\n</div>\n","/* eslint-disable @typescript-eslint/naming-convention */\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\nimport { User } from '../user.model';\n\n@Injectable()\nexport class SessionService {\n\n userdata: User | undefined;\n token: string | undefined;\n refreshToken: string | undefined;\n endPoint: string;\n\n constructor(private http: HttpClient,\n @Inject('environment') environment: any) {\n this.endPoint = environment.endPoint;\n }\n\n public setUserdata(userdata: any): void {\n this.userdata = userdata;\n }\n\n public getUserdata(): User | undefined {\n return this.userdata;\n }\n\n public setRefreshToken(refreshToken: any): void {\n this.refreshToken = refreshToken;\n window.localStorage.setItem('REFRESH_TOKEN', refreshToken);\n }\n\n public getRefreshToken(): string | undefined {\n return this.refreshToken;\n }\n\n public setToken(token: any): any {\n this.token = token;\n window.localStorage.setItem('TOKEN', token);\n }\n\n public getToken(): any {\n return this.token;\n }\n\n public destroyCredentials(): void {\n this.token = undefined;\n this.refreshToken = undefined;\n window.localStorage.removeItem('TOKEN');\n window.localStorage.removeItem('REFRESH_TOKEN');\n }\n\n public destroyUserData(): void {\n this.userdata = undefined;\n window.localStorage.removeItem('USERDATA');\n }\n\n public saveCredentials(token: any, refreshToken: any): void {\n this.token = token;\n this.refreshToken = refreshToken;\n window.localStorage.setItem('TOKEN', token);\n window.localStorage.setItem('REFRESH_TOKEN', refreshToken);\n }\n\n public saveUserData(userdata: any): void {\n this.userdata = userdata;\n window.localStorage.setItem('USERDATA', JSON.stringify(this.userdata));\n }\n\n public isLoggedIn(): boolean {\n return !!this.userdata;\n }\n\n logout(): Promise<any> {\n return new Promise<any>((resolve) => {\n this.destroyCredentials();\n this.destroyUserData();\n resolve(null);\n });\n }\n\n getNewToken(refreshToken: string): any {\n console.log('getNewToken');\n const httpOptions = {\n headers: new HttpHeaders({'Content-Type': 'application/json' })\n };\n return this.http.post(this.endPoint + '/auth/refresh-token', { refreshToken }, httpOptions);\n }\n\n\n}\n","/* eslint-disable quote-props */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { Router } from '@angular/router';\nimport { AlertComponent } from '../alert/alert.component';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class MessagesService {\n\n private interceptorMessages: any;\n\n constructor(\n public auth: SessionService,\n private router: Router,\n private snackBar: MatSnackBar,\n public dialog: MatDialog\n ) { }\n\n\n // eslint-disable-next-line max-lines-per-function\n showErrorMessage(error: HttpErrorResponse): void {\n console.log('error: ', error);\n const msgs: any = this.getInterceptorMessages();\n switch (error.status) {\n case 302: {\n this.messageSnackError(error);\n break;\n }\n case 400: {\n this.showSnackError(error.message, ['snack-error']);\n break;\n }\n case 403: {\n this.goNavigateLogin(msgs);\n break;\n }\n case 404: {\n this.showSnackError(msgs.auth_interceptor.not_found, ['snack-error']);\n break;\n }\n case 409: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 412: {\n this.showSnackError(error.error.responseMessage, ['snack-error']);\n break;\n }\n case 428: {\n this.showSnackError(error.error.responseMessage, ['snack-error']);\n break;\n }\n case 500: {\n this.messageAlertDialog(error, msgs);\n break;\n }\n case 503: {\n this.showSnackError(msgs.auth_interceptor.unavailable, ['snack-error']);\n break;\n }\n case -1: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n case 0: {\n this.showSnackError(msgs.auth_interceptor.connection_error);\n break;\n }\n }\n }\n\n messageSnackError(error: any): void {\n const errorMessage = error.error && error.error.responseMessage ? error.error.responseMessage :\n error.error.message ? error.error.message : error.message;\n this.showSnackError(errorMessage, ['snack-error']);\n }\n\n goNavigateLogin(msgs: any): void {\n if (this.router.url !== '/login') {\n this.showSnackError(msgs.auth_interceptor.session_lost, ['snack-error']);\n this.router.navigate(['/login']);\n this.auth.destroyCredentials();\n }\n }\n\n messageAlertDialog(error: any, msgs: any): void {\n console.log(error);\n let message = '';\n if (error.error.responseMessage) {\n message = error.error.responseMessage;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.error.message) {\n message = error.error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else if (error.message) {\n message = error.message;\n if (error.error.exceptionId)\n {message = message + '\\n\\n'+msgs.auth_interceptor.code+': ' + error.error.exceptionId;}\n } else {\n message = msgs.auth_interceptor.message;\n }\n this.dialog.open(AlertComponent, {\n disableClose: true,\n data: { title: msgs.auth_interceptor.title, message }\n });\n }\n\n showSnackError(message: any, panelClass: any[] = []): void {\n console.log(message);\n setTimeout(() => {\n this.snackBar.open(message, undefined, {\n duration: 5000,\n panelClass,\n verticalPosition: 'top'\n });\n });\n }\n\n setInterceptorMessages(message: any): void {\n this.interceptorMessages = message;\n }\n\n // eslint-disable-next-line max-lines-per-function\n getInterceptorMessages(): string {\n if (!this.interceptorMessages) {\n const lang = window.localStorage.getItem('LANG');\n const messagesEn = {\n auth_interceptor : {\n session_lost :'Session lost, you have to login again.',\n not_found: 'Resource not found',\n title: 'We are sorry!',\n message: 'We had a problem trying to process your request.',\n code:'Code',\n unavailable:'Service unavailable, please try again in a few minutes.',\n connection_error:'Could not connect to server, please check your network connection.'\n }\n };\n const messagesEs = {\n auth_interceptor: {\n session_lost: 'Su sesión expiró, debe iniciar sesión nuevamente.',\n not_found: 'Recurso no encontrado',\n title: '¡Lo sentimos!',\n message: 'Tuvimos un problema al tratar de procesar su solicitud.',\n code: 'Código',\n unavailable: 'Servicio no disponible, inténtelo de nuevo en unos minutos.',\n connection_error: 'No se pudo conectar al servidor, verifique su conexión de red.'\n }\n };\n if (lang && lang==='es') {\n this.interceptorMessages = messagesEs;\n } else {\n this.interceptorMessages = messagesEn;\n }\n }\n return this.interceptorMessages;\n }\n\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { CryptoService } from './services/crypto.service';\nimport { AlertComponent } from './alert/alert.component';\nimport { MessagesService } from './services/messages.service';\nimport { SessionService } from './services/session.service';\nimport { SsiSecurityCommonsComponent } from './ssi-security-commons.component';\nimport { MatButtonModule } from '@angular/material/button';\n\n\n@NgModule({\n declarations: [\n SsiSecurityCommonsComponent,\n AlertComponent\n ],\n imports: [\n MatSnackBarModule,\n MatDialogModule,\n MatButtonModule\n ],\n exports: [\n SsiSecurityCommonsComponent\n ],\n providers: [\n MessagesService,\n SessionService,\n CryptoService\n ]\n})\nexport class SsiSecurityCommonsModule {\n static forRoot(environment: any): ModuleWithProviders<SsiSecurityCommonsModule> {\n return {\n ngModule: SsiSecurityCommonsModule,\n providers: [{provide: 'environment', useValue: environment}]\n };\n }\n}\n","/* eslint-disable */\nimport { Injectable, Injector } from '@angular/core';\nimport {\n HttpRequest,\n HttpHandler,\n HttpEvent,\n HttpInterceptor,\n HttpErrorResponse,\n HttpResponse\n} from '@angular/common/http';\nimport { BehaviorSubject, Observable, throwError } from 'rxjs';\nimport { catchError, filter, switchMap, take, tap } from 'rxjs/operators';\nimport { MessagesService } from './messages.service';\nimport { CryptoService } from './crypto.service';\nimport { Router } from '@angular/router';\nimport { SessionService } from './session.service';\n\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n constructor(private cryptoService: CryptoService) { }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n const token = window.localStorage.getItem('TOKEN');\n\n console.log(request);\n console.log(request.headers.get('encrypted'));\n\n let encrypt = request.headers.get('encrypted');\n if(encrypt && encrypt === 'true'){\n let body = request.body;\n let bodyStr = JSON.stringify(body);\n var newBody = {\n encrypted: this.cryptoService.encrypt(bodyStr)\n }\n request = request.clone({\n body: newBody\n });\n }\n\n if (token) {\n request = request.clone({\n setHeaders: {\n Authorization: 'Bearer ' + token,\n }\n });\n }\n return next.handle(request);\n }\n}\n\n\n@Injectable()\nexport class ResponseInterceptor implements HttpInterceptor {\n\n private messages: MessagesService | undefined;\n private isRefreshing = false;\n private refreshTokenSubject: BehaviorSubject<any> = new BehaviorSubject<any>(null);\n\n constructor(private injector: Injector,\n private router: Router,\n private sessionService: SessionService) {\n setTimeout(() => {\n this.messages = this.injector.get(MessagesService);\n })\n }\n\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n\n return next.handle(request).pipe(catchError(error => {\n if (error instanceof HttpErrorResponse) {\n console.error(error);\n if (error.status === 401) {\n console.log(this.router.url);\n if (this.router.url != '/login') {\n console.log('401--->'+ request.url);\n return this.handle401Error(request, next);\n }\n } else {\n this.messages?.showErrorMessage(error);\n }\n }\n })) as Observable<HttpEvent<any>>;\n }\n\n\n private handle401Error(request: HttpRequest<any>, next: HttpHandler) {\n console.log('handle401Error');\n console.log(this.isRefreshing);\n if (!this.isRefreshing) {\n this.isRefreshing = true;\n this.refreshTokenSubject.next(null);\n const refreshToken = this.sessionService.getRefreshToken();\n console.log(refreshToken);\n if (refreshToken){\n return this.sessionService.getNewToken(refreshToken).pipe(\n switchMap((res: any) => {\n console.log(res);\n this.isRefreshing = false;\n this.sessionService.setToken(res.data.accessToken);\n this.sessionService.setRefreshToken(res.data.refreshToken);\n this.refreshTokenSubject.next(res.data.accessToken);\n return next.handle(this.addTokenHeader(request, res.data.accessToken));\n }),\n catchError((err) => {\n this.isRefreshing = false;\n this.sessionService.logout();\n this.router.navigate(['/login']);\n return throwError(err);\n })\n );\n }\n } else {\n return this.refreshTokenSubject.pipe(\n filter(token => token !== null),\n take(1),\n switchMap((token) => next.handle(this.addTokenHeader(request, token)))\n );\n }\n }\n\n private addTokenHeader(request: HttpRequest<any>, token: string) {\n return request.clone({ headers: request.headers.set('Authorization', 'Bearer ' + token) });\n }\n\n}\n\n\n\n\n","/*\n * Public API Surface of ssi-security-commons\n */\n\nexport * from './lib/ssi-security-commons.service';\nexport * from './lib/ssi-security-commons.component';\nexport * from './lib/ssi-security-commons.module';\nexport * from './lib/services/auth-interceptor.service';\nexport * from './lib/services/session.service';\nexport * from './lib/services/messages.service';\nexport * from './lib/user.model';\nexport * from './lib/services/crypto.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.SessionService","i2","i4","i1.CryptoService","i3.SessionService"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { MatDialogRef } from '@angular/material/dialog';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export interface DialogData {
|
|
4
|
+
title?: string;
|
|
5
|
+
icon?: string;
|
|
6
|
+
type?: string;
|
|
7
|
+
message?: string;
|
|
8
|
+
okText?: string;
|
|
9
|
+
cancelText?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare class AlertComponent {
|
|
12
|
+
dialogRef: MatDialogRef<AlertComponent>;
|
|
13
|
+
data: DialogData;
|
|
14
|
+
constructor(dialogRef: MatDialogRef<AlertComponent>, data: DialogData);
|
|
15
|
+
onConfirm(): void;
|
|
16
|
+
onCancel(): void;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AlertComponent, never>;
|
|
18
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<AlertComponent, "lib-app-alert", never, {}, {}, never, never>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Injector } from '@angular/core';
|
|
2
|
+
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { CryptoService } from './crypto.service';
|
|
5
|
+
import { Router } from '@angular/router';
|
|
6
|
+
import { SessionService } from './session.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export declare class AuthInterceptor implements HttpInterceptor {
|
|
9
|
+
private cryptoService;
|
|
10
|
+
constructor(cryptoService: CryptoService);
|
|
11
|
+
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
12
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuthInterceptor, never>;
|
|
13
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuthInterceptor>;
|
|
14
|
+
}
|
|
15
|
+
export declare class ResponseInterceptor implements HttpInterceptor {
|
|
16
|
+
private injector;
|
|
17
|
+
private router;
|
|
18
|
+
private sessionService;
|
|
19
|
+
private messages;
|
|
20
|
+
private isRefreshing;
|
|
21
|
+
private refreshTokenSubject;
|
|
22
|
+
constructor(injector: Injector, router: Router, sessionService: SessionService);
|
|
23
|
+
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>>;
|
|
24
|
+
private handle401Error;
|
|
25
|
+
private addTokenHeader;
|
|
26
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ResponseInterceptor, never>;
|
|
27
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<ResponseInterceptor>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class CryptoService {
|
|
3
|
+
private configuration;
|
|
4
|
+
private key;
|
|
5
|
+
private secret;
|
|
6
|
+
constructor();
|
|
7
|
+
encrypt(text: string): string;
|
|
8
|
+
decrypt(text: string): string;
|
|
9
|
+
encryptWithSecret(text: string, secret: string): string;
|
|
10
|
+
decryptWithSecret(text: string, secret: string): string;
|
|
11
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CryptoService, never>;
|
|
12
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CryptoService>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { HttpErrorResponse } from '@angular/common/http';
|
|
2
|
+
import { MatDialog } from '@angular/material/dialog';
|
|
3
|
+
import { MatSnackBar } from '@angular/material/snack-bar';
|
|
4
|
+
import { Router } from '@angular/router';
|
|
5
|
+
import { SessionService } from './session.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class MessagesService {
|
|
8
|
+
auth: SessionService;
|
|
9
|
+
private router;
|
|
10
|
+
private snackBar;
|
|
11
|
+
dialog: MatDialog;
|
|
12
|
+
private interceptorMessages;
|
|
13
|
+
constructor(auth: SessionService, router: Router, snackBar: MatSnackBar, dialog: MatDialog);
|
|
14
|
+
showErrorMessage(error: HttpErrorResponse): void;
|
|
15
|
+
messageSnackError(error: any): void;
|
|
16
|
+
goNavigateLogin(msgs: any): void;
|
|
17
|
+
messageAlertDialog(error: any, msgs: any): void;
|
|
18
|
+
showSnackError(message: any, panelClass?: any[]): void;
|
|
19
|
+
setInterceptorMessages(message: any): void;
|
|
20
|
+
getInterceptorMessages(): string;
|
|
21
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<MessagesService, never>;
|
|
22
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<MessagesService>;
|
|
23
|
+
}
|