verben-authentication-ui 0.1.5 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/sign-in/sign-in.component.mjs +7 -2
- package/esm2022/lib/components/sign-up/sign-up.component.mjs +28 -3
- package/esm2022/lib/components/sso/helper.mjs +2 -2
- package/esm2022/lib/components/user-management/helper.mjs +2 -2
- package/esm2022/lib/components/user-management/user-management.component.mjs +20 -20
- package/esm2022/lib/components/user-request/user-request.component.mjs +35 -27
- package/esm2022/lib/components/user-request-approval/facades/user-access-request.facade.mjs +110 -0
- package/esm2022/lib/components/user-request-approval/helper.mjs +2 -2
- package/esm2022/lib/components/user-request-approval/services/user-access-request.service.mjs +62 -0
- package/esm2022/lib/components/user-request-approval/states/user-access-request.state.mjs +59 -0
- package/esm2022/lib/components/user-request-approval/user-request-approval.component.mjs +29 -11
- package/esm2022/lib/components/user-request-approval/user-request-approval.service.mjs +2 -2
- package/esm2022/lib/models/UserRequest.mjs +7 -2
- package/esm2022/lib/models/base.mjs +1 -1
- package/esm2022/lib/models/query-params.mjs +2 -0
- package/esm2022/lib/models/sign-up.mjs +1 -1
- package/esm2022/lib/services/http-web-request.service.mjs +20 -25
- package/fesm2022/verben-authentication-ui.mjs +369 -94
- package/fesm2022/verben-authentication-ui.mjs.map +1 -1
- package/lib/components/user-management/user-management.component.d.ts +0 -1
- package/lib/components/user-request/user-request.component.d.ts +1 -1
- package/lib/components/user-request-approval/facades/user-access-request.facade.d.ts +22 -0
- package/lib/components/user-request-approval/services/user-access-request.service.d.ts +42 -0
- package/lib/components/user-request-approval/states/user-access-request.state.d.ts +21 -0
- package/lib/components/user-request-approval/user-request-approval.component.d.ts +5 -2
- package/lib/models/UserRequest.d.ts +12 -3
- package/lib/models/base.d.ts +1 -1
- package/lib/models/query-params.d.ts +7 -0
- package/lib/models/sign-up.d.ts +3 -2
- package/lib/services/http-web-request.service.d.ts +6 -3
- package/package.json +2 -2
|
@@ -3,15 +3,28 @@ import { ErrorResponse } from '../models/ErrorResponse';
|
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@angular/common/http";
|
|
5
5
|
import * as i2 from "./environment.service";
|
|
6
|
+
import * as i3 from "verben-ng-ui";
|
|
6
7
|
export class HttpWebRequestService {
|
|
7
8
|
http;
|
|
8
9
|
envSvc;
|
|
10
|
+
notificationService;
|
|
9
11
|
isProd = false;
|
|
10
|
-
constructor(http, envSvc) {
|
|
12
|
+
constructor(http, envSvc, notificationService) {
|
|
11
13
|
this.http = http;
|
|
12
14
|
this.envSvc = envSvc;
|
|
15
|
+
this.notificationService = notificationService;
|
|
13
16
|
this.isProd = this.envSvc.environment.production;
|
|
14
17
|
}
|
|
18
|
+
handleError(err) {
|
|
19
|
+
this.notificationService.error('An error occurred.', { timeout: 3000 });
|
|
20
|
+
return new ErrorResponse(err.error
|
|
21
|
+
? err.error.ErrorMsg
|
|
22
|
+
? err.error.ErrorMsg
|
|
23
|
+
: err.error.errors
|
|
24
|
+
? err.error.errors.values.toString()
|
|
25
|
+
: ''
|
|
26
|
+
: err.status + ' ' + err.statusText);
|
|
27
|
+
}
|
|
15
28
|
get(url, baseUrl = this.envSvc.environment.AuthenticationAPI) {
|
|
16
29
|
const URL = baseUrl + `/${url}`;
|
|
17
30
|
return new Promise((resolve, reject) => {
|
|
@@ -23,13 +36,7 @@ export class HttpWebRequestService {
|
|
|
23
36
|
})
|
|
24
37
|
.subscribe({
|
|
25
38
|
next: (data) => resolve(data),
|
|
26
|
-
error: (err) => resolve(
|
|
27
|
-
? err.error.ErrorMsg
|
|
28
|
-
? err.error.ErrorMsg
|
|
29
|
-
: err.error.errors
|
|
30
|
-
? err.error.errors.values.toString()
|
|
31
|
-
: ''
|
|
32
|
-
: err.status + ' ' + err.statusText)),
|
|
39
|
+
error: (err) => resolve(this.handleError(err)),
|
|
33
40
|
});
|
|
34
41
|
});
|
|
35
42
|
}
|
|
@@ -43,13 +50,7 @@ export class HttpWebRequestService {
|
|
|
43
50
|
})
|
|
44
51
|
.subscribe({
|
|
45
52
|
next: (data) => resolve(data),
|
|
46
|
-
error: (err) => resolve(
|
|
47
|
-
? err.error.ErrorMsg
|
|
48
|
-
? err.error.ErrorMsg
|
|
49
|
-
: err.error.errors
|
|
50
|
-
? err.error.errors.values.toString()
|
|
51
|
-
: ''
|
|
52
|
-
: err.status + ' ' + err.statusText)),
|
|
53
|
+
error: (err) => resolve(this.handleError(err)),
|
|
53
54
|
});
|
|
54
55
|
});
|
|
55
56
|
}
|
|
@@ -57,13 +58,7 @@ export class HttpWebRequestService {
|
|
|
57
58
|
return new Promise((resolve, reject) => {
|
|
58
59
|
this.http.post(baseUrl + '/' + url, formData).subscribe({
|
|
59
60
|
next: (data) => resolve(data),
|
|
60
|
-
error: (err) => resolve(
|
|
61
|
-
? err.error.ErrorMsg
|
|
62
|
-
? err.error.ErrorMsg
|
|
63
|
-
: err.error.errors
|
|
64
|
-
? err.error.errors.values.toString()
|
|
65
|
-
: ''
|
|
66
|
-
: err.status + ' ' + err.statusText)),
|
|
61
|
+
error: (err) => resolve(this.handleError(err)),
|
|
67
62
|
});
|
|
68
63
|
});
|
|
69
64
|
}
|
|
@@ -73,7 +68,7 @@ export class HttpWebRequestService {
|
|
|
73
68
|
delete(url, baseUrl = this.envSvc.environment.AuthenticationAPI) {
|
|
74
69
|
return this.http.delete(baseUrl + '/' + url);
|
|
75
70
|
}
|
|
76
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: HttpWebRequestService, deps: [{ token: i1.HttpClient }, { token: i2.EnvironmentService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
71
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: HttpWebRequestService, deps: [{ token: i1.HttpClient }, { token: i2.EnvironmentService }, { token: i3.NotificationService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
77
72
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: HttpWebRequestService, providedIn: 'root' });
|
|
78
73
|
}
|
|
79
74
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImport: i0, type: HttpWebRequestService, decorators: [{
|
|
@@ -81,5 +76,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.11", ngImpo
|
|
|
81
76
|
args: [{
|
|
82
77
|
providedIn: 'root',
|
|
83
78
|
}]
|
|
84
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.EnvironmentService }] });
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.EnvironmentService }, { type: i3.NotificationService }] });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC13ZWItcmVxdWVzdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmVyYmVuLWF1dGhlbnRpY2F0aW9uLXVpL3NyYy9saWIvc2VydmljZXMvaHR0cC13ZWItcmVxdWVzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7OztBQU94RCxNQUFNLE9BQU8scUJBQXFCO0lBSXRCO0lBQ0E7SUFDQTtJQUxWLE1BQU0sR0FBWSxLQUFLLENBQUM7SUFFeEIsWUFDVSxJQUFnQixFQUNoQixNQUEwQixFQUMxQixtQkFBd0M7UUFGeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBRWhELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO0lBQ25ELENBQUM7SUFFTyxXQUFXLENBQUMsR0FBUTtRQUMxQixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDeEUsT0FBTyxJQUFJLGFBQWEsQ0FDdEIsR0FBRyxDQUFDLEtBQUs7WUFDUCxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRO2dCQUNsQixDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxRQUFRO2dCQUNwQixDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNO29CQUNsQixDQUFDLENBQUUsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBbUIsQ0FBQyxRQUFRLEVBQUU7b0JBQ2xELENB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RyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDL0MsQ0FBQzt3R0F4RlUscUJBQXFCOzRHQUFyQixxQkFBcUIsY0FGcEIsTUFBTTs7NEZBRVAscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vbW9kZWxzL0Vycm9yUmVzcG9uc2UnO1xuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICd2ZXJiZW4tbmctdWknO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgSHR0cFdlYlJlcXVlc3RTZXJ2aWNlIHtcbiAgaXNQcm9kOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByaXZhdGUgZW52U3ZjOiBFbnZpcm9ubWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb25TZXJ2aWNlOiBOb3RpZmljYXRpb25TZXJ2aWNlXG4gICAgKSB7XG4gICAgdGhpcy5pc1Byb2QgPSB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVFcnJvcihlcnI6IGFueSk6IEVycm9yUmVzcG9uc2Uge1xuICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcignQW4gZXJyb3Igb2NjdXJyZWQuJywgeyB0aW1lb3V0OiAzMDAwIH0pO1xuICAgIHJldHVybiBuZXcgRXJyb3JSZXNwb25zZShcbiAgICAgIGVyci5lcnJvclxuICAgICAgICA/IGVyci5lcnJvci5FcnJvck1zZ1xuICAgICAgICAgID8gZXJyLmVycm9yLkVycm9yTXNnXG4gICAgICAgICAgOiBlcnIuZXJyb3IuZXJyb3JzXG4gICAgICAgICAgPyAoZXJyLmVycm9yLmVycm9ycy52YWx1ZXMgYXMgc3RyaW5nW10pLnRvU3RyaW5nKClcbiAgICAgICAgICA6ICcnXG4gICAgICAgIDogZXJyLnN0YXR1cyArICcgJyArIGVyci5zdGF0dXNUZXh0XG4gICAgKTtcbiAgfVxuXG4gIGdldChcbiAgICB1cmw6IHN0cmluZyxcbiAgICBiYXNlVXJsOiBzdHJpbmcgPSB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BdXRoZW50aWNhdGlvbkFQSVxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IFVSTCA9IGJhc2VVcmwgKyBgLyR7dXJsfWA7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAuZ2V0PEFycmF5PGFueT4+KFVSTCwge1xuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKGRhdGEpID0+IHJlc29sdmUoZGF0YSksXG4gICAgICAgICAgZXJyb3I6IChlcnIpID0+IHJlc29sdmUodGhpcy5oYW5kbGVFcnJvcihlcnIpKSxcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBwb3N0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSxcbiAgICBiYXNlVXJsOiBzdHJpbmcgPSB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BdXRoZW50aWNhdGlvbkFQSVxuICApOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmh0dHBcbiAgICAgICAgLnBvc3QoYmFzZVVybCArICcvJyArIHVybCwgSlNPTi5zdHJpbmdpZnkoYm9keSksIHtcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IChkYXRhKSA9PiByZXNvbHZlKGRhdGEpLFxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiByZXNvbHZlKHRoaXMuaGFuZGxlRXJyb3IoZXJyKSksXG4gICAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcG9zdEZpbGUoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgZm9ybURhdGE6IEZvcm1EYXRhLFxuICAgIGJhc2VVcmw6IHN0cmluZyA9IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkF1dGhlbnRpY2F0aW9uQVBJXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuaHR0cC5wb3N0KGJhc2VVcmwgKyAnLycgKyB1cmwsIGZvcm1EYXRhKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZGF0YSkgPT4gcmVzb2x2ZShkYXRhKSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHJlc29sdmUodGhpcy5oYW5kbGVFcnJvcihlcnIpKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHV0KFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJvZHk6IGFueSxcbiAgICBiYXNlVXJsOiBzdHJpbmcgPSB0aGlzLmVudlN2Yy5lbnZpcm9ubWVudC5BdXRoZW50aWNhdGlvbkFQSVxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGJhc2VVcmwgKyAnLycgKyB1cmwsIGJvZHkpO1xuICB9XG5cbiAgZGVsZXRlKFxuICAgIHVybDogc3RyaW5nLFxuICAgIGJhc2VVcmw6IHN0cmluZyA9IHRoaXMuZW52U3ZjLmVudmlyb25tZW50LkF1dGhlbnRpY2F0aW9uQVBJXG4gICk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYmFzZVVybCArICcvJyArIHVybCk7XG4gIH1cbn1cbiJdfQ==
|