@valtimo/keycloak 10.4.0 → 10.5.0
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/callback.component.mjs +22 -16
- package/esm2020/lib/constants/index.mjs +17 -0
- package/esm2020/lib/constants/storage-keys.mjs +23 -0
- package/esm2020/lib/keycloak-routing.module.mjs +2 -2
- package/esm2020/lib/keycloak.init.mjs +8 -9
- package/esm2020/lib/keycloak.module.mjs +2 -2
- package/esm2020/lib/models/index.mjs +2 -2
- package/esm2020/lib/models/keycloak.config.mjs +2 -2
- package/esm2020/lib/services/index.mjs +20 -0
- package/esm2020/lib/services/keycloak-auth-guard.service.mjs +61 -0
- package/esm2020/lib/services/keycloak-options.service.mjs +24 -0
- package/esm2020/lib/services/keycloak-storage.service.mjs +43 -0
- package/esm2020/lib/services/keycloak-user.service.mjs +180 -0
- package/esm2020/public_api.mjs +6 -5
- package/fesm2015/valtimo-keycloak.mjs +262 -148
- package/fesm2015/valtimo-keycloak.mjs.map +1 -1
- package/fesm2020/valtimo-keycloak.mjs +264 -151
- package/fesm2020/valtimo-keycloak.mjs.map +1 -1
- package/lib/callback.component.d.ts +3 -2
- package/lib/callback.component.d.ts.map +1 -1
- package/lib/constants/index.d.ts +2 -0
- package/lib/constants/index.d.ts.map +1 -0
- package/lib/constants/storage-keys.d.ts +8 -0
- package/lib/constants/storage-keys.d.ts.map +1 -0
- package/lib/keycloak.init.d.ts.map +1 -1
- package/lib/services/index.d.ts +5 -0
- package/lib/services/index.d.ts.map +1 -0
- package/lib/services/keycloak-auth-guard.service.d.ts.map +1 -0
- package/lib/services/keycloak-options.service.d.ts.map +1 -0
- package/lib/services/keycloak-storage.service.d.ts +11 -0
- package/lib/services/keycloak-storage.service.d.ts.map +1 -0
- package/lib/{keycloak-user.service.d.ts → services/keycloak-user.service.d.ts} +9 -2
- package/lib/services/keycloak-user.service.d.ts.map +1 -0
- package/package.json +1 -1
- package/public_api.d.ts +4 -3
- package/public_api.d.ts.map +1 -1
- package/esm2020/lib/keycloak-auth-guard.service.mjs +0 -61
- package/esm2020/lib/keycloak-options.service.mjs +0 -24
- package/esm2020/lib/keycloak-user.service.mjs +0 -162
- package/lib/keycloak-auth-guard.service.d.ts.map +0 -1
- package/lib/keycloak-options.service.d.ts.map +0 -1
- package/lib/keycloak-user.service.d.ts.map +0 -1
- /package/lib/{keycloak-auth-guard.service.d.ts → services/keycloak-auth-guard.service.d.ts} +0 -0
- /package/lib/{keycloak-options.service.d.ts → services/keycloak-options.service.d.ts} +0 -0
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2020 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { Injectable } from '@angular/core';
|
|
17
|
-
import { combineLatest, map, ReplaySubject, Subject, switchMap, timer } from 'rxjs';
|
|
18
|
-
import { KeycloakEventType } from 'keycloak-angular';
|
|
19
|
-
import { ValtimoUserIdentity } from '@valtimo/config';
|
|
20
|
-
import jwt_decode from 'jwt-decode';
|
|
21
|
-
import { take } from 'rxjs/operators';
|
|
22
|
-
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "keycloak-angular";
|
|
24
|
-
import * as i2 from "./keycloak-options.service";
|
|
25
|
-
import * as i3 from "ngx-logger";
|
|
26
|
-
import * as i4 from "@valtimo/user-interface";
|
|
27
|
-
import * as i5 from "@ngx-translate/core";
|
|
28
|
-
import * as i6 from "@angular/common";
|
|
29
|
-
export class KeycloakUserService {
|
|
30
|
-
constructor(keycloakService, keycloakOptionsService, logger, promptService, translateService, datePipe) {
|
|
31
|
-
this.keycloakService = keycloakService;
|
|
32
|
-
this.keycloakOptionsService = keycloakOptionsService;
|
|
33
|
-
this.logger = logger;
|
|
34
|
-
this.promptService = promptService;
|
|
35
|
-
this.translateService = translateService;
|
|
36
|
-
this.datePipe = datePipe;
|
|
37
|
-
this._refreshToken$ = new Subject();
|
|
38
|
-
this.FIVE_MINUTES_MS = 300000;
|
|
39
|
-
this.EXPIRE_TOKEN_CONFIRMATION = 'EXPIRE_TOKEN_CONFIRMATION';
|
|
40
|
-
this.openTokenRefreshSubscription();
|
|
41
|
-
this.openRefreshTokenSubscription();
|
|
42
|
-
}
|
|
43
|
-
ngOnDestroy() {
|
|
44
|
-
this.tokenRefreshSubscription?.unsubscribe();
|
|
45
|
-
this.refreshTokenSubscription?.unsubscribe();
|
|
46
|
-
this.closeExpiryTimerSubscription();
|
|
47
|
-
}
|
|
48
|
-
init() {
|
|
49
|
-
this.userIdentity = new ReplaySubject();
|
|
50
|
-
this.keycloakService.loadUserProfile().then(user => {
|
|
51
|
-
this.logger.debug('KeycloakUserService: loadUserProfile = ', user);
|
|
52
|
-
const roles = [];
|
|
53
|
-
this.keycloakService.getUserRoles(true).forEach(role => roles.push(role));
|
|
54
|
-
const valtimoUserIdentity = new ValtimoUserIdentity(user.email, user.firstName, user.lastName, roles, user.username);
|
|
55
|
-
this.logger.debug('KeycloakUserService: loaded user identity', valtimoUserIdentity);
|
|
56
|
-
this.userIdentity.next(valtimoUserIdentity);
|
|
57
|
-
});
|
|
58
|
-
this.setRefreshToken();
|
|
59
|
-
}
|
|
60
|
-
getUserSubject() {
|
|
61
|
-
this.logger.debug('KeycloakUserService: getUserIdentity');
|
|
62
|
-
return this.userIdentity;
|
|
63
|
-
}
|
|
64
|
-
logout() {
|
|
65
|
-
this.logger.debug('KeycloakUserService: logout');
|
|
66
|
-
this.keycloakService.logout(this.keycloakOptionsService.logoutRedirectUri);
|
|
67
|
-
}
|
|
68
|
-
async getToken() {
|
|
69
|
-
this.logger.debug('KeycloakUserService: getToken');
|
|
70
|
-
return this.keycloakService.getToken();
|
|
71
|
-
}
|
|
72
|
-
async updateToken(minValidity) {
|
|
73
|
-
this.logger.debug('KeycloakUserService: updateToken');
|
|
74
|
-
return this.keycloakService.updateToken(minValidity);
|
|
75
|
-
}
|
|
76
|
-
openTokenRefreshSubscription() {
|
|
77
|
-
this.tokenRefreshSubscription = this.keycloakService.keycloakEvents$.subscribe(keycloakEvent => {
|
|
78
|
-
if (keycloakEvent.type === KeycloakEventType.OnAuthRefreshSuccess) {
|
|
79
|
-
this.setRefreshToken();
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
openRefreshTokenSubscription() {
|
|
84
|
-
this.refreshTokenSubscription = this._refreshToken$.subscribe(refreshToken => {
|
|
85
|
-
const decodedRefreshToken = jwt_decode(refreshToken);
|
|
86
|
-
const tokenExp = decodedRefreshToken.exp * 1000;
|
|
87
|
-
const expiryTimeMs = tokenExp - Date.now() - 1000;
|
|
88
|
-
this._expiryTimeMs = expiryTimeMs;
|
|
89
|
-
this.closeExpiryTimerSubscription();
|
|
90
|
-
this.openExpiryTimerSubscription();
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
setRefreshToken() {
|
|
94
|
-
const refreshToken = this.keycloakService.getKeycloakInstance()?.refreshToken;
|
|
95
|
-
if (refreshToken)
|
|
96
|
-
this._refreshToken$.next(refreshToken);
|
|
97
|
-
}
|
|
98
|
-
openExpiryTimerSubscription() {
|
|
99
|
-
this.expiryTimerSubscription = timer(0, 1000)
|
|
100
|
-
.pipe(map(() => {
|
|
101
|
-
this._expiryTimeMs = this._expiryTimeMs - 1000;
|
|
102
|
-
return this._expiryTimeMs;
|
|
103
|
-
}), switchMap(expiryTimeMs => {
|
|
104
|
-
if (expiryTimeMs <= this.FIVE_MINUTES_MS) {
|
|
105
|
-
this._counter = new Date(0, 0, 0, 0, 0, 0);
|
|
106
|
-
this._counter.setSeconds(expiryTimeMs / 1000);
|
|
107
|
-
}
|
|
108
|
-
return combineLatest([
|
|
109
|
-
this.promptService.promptVisible$,
|
|
110
|
-
this.translateService.stream('keycloak.expiryPromptTitle'),
|
|
111
|
-
this.translateService.stream('keycloak.expiryPromptDescription', {
|
|
112
|
-
expiryTime: this.datePipe.transform(this._counter, 'mm:ss'),
|
|
113
|
-
}),
|
|
114
|
-
this.translateService.stream('keycloak.expiryPromptCancel'),
|
|
115
|
-
this.translateService.stream('keycloak.expiryPromptConfirm'),
|
|
116
|
-
]);
|
|
117
|
-
}))
|
|
118
|
-
.subscribe(([promptVisible, headerText, bodyText, cancelButtonText, confirmButtonText]) => {
|
|
119
|
-
this.promptService.identifier$.pipe(take(1)).subscribe(identifier => {
|
|
120
|
-
if ((!promptVisible || identifier !== this.EXPIRE_TOKEN_CONFIRMATION) &&
|
|
121
|
-
this._expiryTimeMs <= this.FIVE_MINUTES_MS) {
|
|
122
|
-
this.promptService.openPrompt({
|
|
123
|
-
identifier: this.EXPIRE_TOKEN_CONFIRMATION,
|
|
124
|
-
headerText,
|
|
125
|
-
bodyText,
|
|
126
|
-
cancelButtonText,
|
|
127
|
-
confirmButtonText,
|
|
128
|
-
cancelMdiIcon: 'logout',
|
|
129
|
-
confirmMdiIcon: 'check',
|
|
130
|
-
closeOnConfirm: true,
|
|
131
|
-
closeOnCancel: false,
|
|
132
|
-
cancelCallbackFunction: () => {
|
|
133
|
-
this.keycloakService.logout();
|
|
134
|
-
},
|
|
135
|
-
confirmCallBackFunction: () => {
|
|
136
|
-
this.closeExpiryTimerSubscription();
|
|
137
|
-
this.updateToken(20);
|
|
138
|
-
},
|
|
139
|
-
});
|
|
140
|
-
}
|
|
141
|
-
if (promptVisible && identifier === this.EXPIRE_TOKEN_CONFIRMATION) {
|
|
142
|
-
this.promptService.setBodyText(bodyText);
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
if (this._expiryTimeMs < 2000) {
|
|
146
|
-
this.logout();
|
|
147
|
-
}
|
|
148
|
-
});
|
|
149
|
-
}
|
|
150
|
-
closeExpiryTimerSubscription() {
|
|
151
|
-
this.expiryTimerSubscription?.unsubscribe();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
KeycloakUserService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: KeycloakUserService, deps: [{ token: i1.KeycloakService }, { token: i2.KeycloakOptionsService }, { token: i3.NGXLogger }, { token: i4.PromptService }, { token: i5.TranslateService }, { token: i6.DatePipe }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
155
|
-
KeycloakUserService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: KeycloakUserService, providedIn: 'root' });
|
|
156
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: KeycloakUserService, decorators: [{
|
|
157
|
-
type: Injectable,
|
|
158
|
-
args: [{
|
|
159
|
-
providedIn: 'root',
|
|
160
|
-
}]
|
|
161
|
-
}], ctorParameters: function () { return [{ type: i1.KeycloakService }, { type: i2.KeycloakOptionsService }, { type: i3.NGXLogger }, { type: i4.PromptService }, { type: i5.TranslateService }, { type: i6.DatePipe }]; } });
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWstdXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9rZXljbG9hay9zcmMvbGliL2tleWNsb2FrLXVzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBRSxHQUFHLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLEtBQUssRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUVoRyxPQUFPLEVBQUMsaUJBQWlCLEVBQWtCLE1BQU0sa0JBQWtCLENBQUM7QUFDcEUsT0FBTyxFQUE0QixtQkFBbUIsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRS9FLE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUlwQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7O0FBS3BDLE1BQU0sT0FBTyxtQkFBbUI7SUFnQjlCLFlBQ21CLGVBQWdDLEVBQ2hDLHNCQUE4QyxFQUM5QyxNQUFpQixFQUNqQixhQUE0QixFQUM1QixnQkFBa0MsRUFDbEMsUUFBa0I7UUFMbEIsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUNqQixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLGFBQVEsR0FBUixRQUFRLENBQVU7UUFmcEIsbUJBQWMsR0FBRyxJQUFJLE9BQU8sRUFBVSxDQUFDO1FBSXZDLG9CQUFlLEdBQUcsTUFBTSxDQUFDO1FBQ3pCLDhCQUF5QixHQUFHLDJCQUEyQixDQUFDO1FBWXZFLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxD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LDRCQUE0QixFQUFFLENBQUM7NEJBQ3BDLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7d0JBQ3ZCLENBQUM7cUJBQ0YsQ0FBQyxDQUFDO2lCQUNKO2dCQUVELElBQUksYUFBYSxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMseUJBQXlCLEVBQUU7b0JBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUMxQztZQUNILENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksRUFBRTtnQkFDN0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2Y7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyw0QkFBNEI7UUFDbEMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzlDLENBQUM7O2lIQW5LVSxtQkFBbUI7cUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGUsIE9uRGVzdHJveX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge2NvbWJpbmVMYXRlc3QsIG1hcCwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCwgU3Vic2NyaXB0aW9uLCBzd2l0Y2hNYXAsIHRpbWVyfSBmcm9tICdyeGpzJztcbmltcG9ydCB7TkdYTG9nZ2VyfSBmcm9tICduZ3gtbG9nZ2VyJztcbmltcG9ydCB7S2V5Y2xvYWtFdmVudFR5cGUsIEtleWNsb2FrU2VydmljZX0gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XG5pbXBvcnQge1VzZXJJZGVudGl0eSwgVXNlclNlcnZpY2UsIFZhbHRpbW9Vc2VySWRlbnRpdHl9IGZyb20gJ0B2YWx0aW1vL2NvbmZpZyc7XG5pbXBvcnQge0tleWNsb2FrT3B0aW9uc1NlcnZpY2V9IGZyb20gJy4va2V5Y2xvYWstb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCBqd3RfZGVjb2RlIGZyb20gJ2p3dC1kZWNvZGUnO1xuaW1wb3J0IHtQcm9tcHRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby91c2VyLWludGVyZmFjZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgS2V5Y2xvYWtVc2VyU2VydmljZSBpbXBsZW1lbnRzIFVzZXJTZXJ2aWNlLCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHVzZXJJZGVudGl0eTogUmVwbGF5U3ViamVjdDxVc2VySWRlbnRpdHk+O1xuXG4gIHByaXZhdGUgdG9rZW5SZWZyZXNoU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIHJlZnJlc2hUb2tlblN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBleHBpcnlUaW1lclN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZWZyZXNoVG9rZW4kID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgX2V4cGlyeVRpbWVNcyE6IG51bWJlcjtcblxuICBwcml2YXRlIHJlYWRvbmx5IEZJVkVfTUlOVVRFU19NUyA9IDMwMDAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBFWFBJUkVfVE9LRU5fQ09ORklSTUFUSU9OID0gJ0VYUElSRV9UT0tFTl9DT05GSVJNQVRJT04nO1xuXG4gIHByaXZhdGUgX2NvdW50ZXIhOiBEYXRlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWtTZXJ2aWNlOiBLZXljbG9ha1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXljbG9ha09wdGlvbnNTZXJ2aWNlOiBLZXljbG9ha09wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBOR1hMb2dnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVQaXBlOiBEYXRlUGlwZVxuICApIHtcbiAgICB0aGlzLm9wZW5Ub2tlblJlZnJlc2hTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLm9wZW5SZWZyZXNoVG9rZW5TdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMudG9rZW5SZWZyZXNoU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMucmVmcmVzaFRva2VuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuY2xvc2VFeHBpcnlUaW1lclN1YnNjcmlwdGlvbigpO1xuICB9XG5cbiAgaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJJZGVudGl0eSA9IG5ldyBSZXBsYXlTdWJqZWN0KCk7XG4gICAgdGhpcy5rZXljbG9ha1NlcnZpY2UubG9hZFVzZXJQcm9maWxlKCkudGhlbih1c2VyID0+IHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdLZXljbG9ha1VzZXJTZXJ2aWNlOiBsb2FkVXNlclByb2ZpbGUgPSAnLCB1c2VyKTtcbiAgICAgIGNvbnN0IHJvbGVzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gICAgICB0aGlzLmtleWNsb2FrU2VydmljZS5nZXRVc2VyUm9sZXModHJ1ZSkuZm9yRWFjaChyb2xlID0+IHJvbGVzLnB1c2gocm9sZSkpO1xuICAgICAgY29uc3QgdmFsdGltb1VzZXJJZGVudGl0eSA9IG5ldyBWYWx0aW1vVXNlcklkZW50aXR5KFxuICAgICAgICB1c2VyLmVtYWlsLFxuICAgICAgICB1c2VyLmZpcnN0TmFtZSxcbiAgICAgICAgdXNlci5sYXN0TmFtZSxcbiAgICAgICAgcm9sZXMsXG4gICAgICAgIHVzZXIudXNlcm5hbWVcbiAgICAgICk7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnS2V5Y2xvYWtVc2VyU2VydmljZTogbG9hZGVkIHVzZXIgaWRlbnRpdHknLCB2YWx0aW1vVXNlcklkZW50aXR5KTtcbiAgICAgIHRoaXMudXNlcklkZW50aXR5Lm5leHQodmFsdGltb1VzZXJJZGVudGl0eSk7XG4gICAgfSk7XG4gICAgdGhpcy5zZXRSZWZyZXNoVG9rZW4oKTtcbiAgfVxuXG4gIGdldFVzZXJTdWJqZWN0KCk6IFJlcGxheVN1YmplY3Q8VXNlcklkZW50aXR5PiB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ0tleWNsb2FrVXNlclNlcnZpY2U6IGdldFVzZXJJZGVudGl0eScpO1xuICAgIHJldHVybiB0aGlzLnVzZXJJZGVudGl0eTtcbiAgfVxuXG4gIGxvZ291dCgpOiB2b2lkIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnS2V5Y2xvYWtVc2VyU2VydmljZTogbG9nb3V0Jyk7XG4gICAgdGhpcy5rZXljbG9ha1NlcnZpY2UubG9nb3V0KHRoaXMua2V5Y2xvYWtPcHRpb25zU2VydmljZS5sb2dvdXRSZWRpcmVjdFVyaSk7XG4gIH1cblxuICBhc3luYyBnZXRUb2tlbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdLZXljbG9ha1VzZXJTZXJ2aWNlOiBnZXRUb2tlbicpO1xuICAgIHJldHVybiB0aGlzLmtleWNsb2FrU2VydmljZS5nZXRUb2tlbigpO1xuICB9XG5cbiAgYXN5bmMgdXBkYXRlVG9rZW4obWluVmFsaWRpdHk6IG51bWJlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdLZXljbG9ha1VzZXJTZXJ2aWNlOiB1cGRhdGVUb2tlbicpO1xuICAgIHJldHVybiB0aGlzLmtleWNsb2FrU2VydmljZS51cGRhdGVUb2tlbihtaW5WYWxpZGl0eSk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Ub2tlblJlZnJlc2hTdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy50b2tlblJlZnJlc2hTdWJzY3JpcHRpb24gPSB0aGlzLmtleWNsb2FrU2VydmljZS5rZXljbG9ha0V2ZW50cyQuc3Vic2NyaWJlKFxuICAgICAga2V5Y2xvYWtFdmVudCA9PiB7XG4gICAgICAgIGlmIChrZXljbG9ha0V2ZW50LnR5cGUgPT09IEtleWNsb2FrRXZlbnRUeXBlLk9uQXV0aFJlZnJlc2hTdWNjZXNzKSB7XG4gICAgICAgICAgdGhpcy5zZXRSZWZyZXNoVG9rZW4oKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5SZWZyZXNoVG9rZW5TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5yZWZyZXNoVG9rZW5TdWJzY3JpcHRpb24gPSB0aGlzLl9yZWZyZXNoVG9rZW4kLnN1YnNjcmliZShyZWZyZXNoVG9rZW4gPT4ge1xuICAgICAgY29uc3QgZGVjb2RlZFJlZnJlc2hUb2tlbjogYW55ID0gand0X2RlY29kZShyZWZyZXNoVG9rZW4pO1xuICAgICAgY29uc3QgdG9rZW5FeHAgPSBkZWNvZGVkUmVmcmVzaFRva2VuLmV4cCAqIDEwMDA7XG4gICAgICBjb25zdCBleHBpcnlUaW1lTXMgPSB0b2tlbkV4cCAtIERhdGUubm93KCkgLSAxMDAwO1xuXG4gICAgICB0aGlzLl9leHBpcnlUaW1lTXMgPSBleHBpcnlUaW1lTXM7XG4gICAgICB0aGlzLmNsb3NlRXhwaXJ5VGltZXJTdWJzY3JpcHRpb24oKTtcbiAgICAgIHRoaXMub3BlbkV4cGlyeVRpbWVyU3Vic2NyaXB0aW9uKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldFJlZnJlc2hUb2tlbigpOiB2b2lkIHtcbiAgICBjb25zdCByZWZyZXNoVG9rZW4gPSB0aGlzLmtleWNsb2FrU2VydmljZS5nZXRLZXljbG9ha0luc3RhbmNlKCk/LnJlZnJlc2hUb2tlbjtcbiAgICBpZiAocmVmcmVzaFRva2VuKSB0aGlzLl9yZWZyZXNoVG9rZW4kLm5leHQocmVmcmVzaFRva2VuKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkV4cGlyeVRpbWVyU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwaXJ5VGltZXJTdWJzY3JpcHRpb24gPSB0aW1lcigwLCAxMDAwKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5fZXhwaXJ5VGltZU1zID0gdGhpcy5fZXhwaXJ5VGltZU1zIC0gMTAwMDtcbiAgICAgICAgICByZXR1cm4gdGhpcy5fZXhwaXJ5VGltZU1zO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKGV4cGlyeVRpbWVNcyA9PiB7XG4gICAgICAgICAgaWYgKGV4cGlyeVRpbWVNcyA8PSB0aGlzLkZJVkVfTUlOVVRFU19NUykge1xuICAgICAgICAgICAgdGhpcy5fY291bnRlciA9IG5ldyBEYXRlKDAsIDAsIDAsIDAsIDAsIDApO1xuICAgICAgICAgICAgdGhpcy5fY291bnRlci5zZXRTZWNvbmRzKGV4cGlyeVRpbWVNcyAvIDEwMDApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICAgIHRoaXMucHJvbXB0U2VydmljZS5wcm9tcHRWaXNpYmxlJCxcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleWNsb2FrLmV4cGlyeVByb21wdFRpdGxlJyksXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXljbG9hay5leHBpcnlQcm9tcHREZXNjcmlwdGlvbicsIHtcbiAgICAgICAgICAgICAgZXhwaXJ5VGltZTogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5fY291bnRlciwgJ21tOnNzJyksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleWNsb2FrLmV4cGlyeVByb21wdENhbmNlbCcpLFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5Y2xvYWsuZXhwaXJ5UHJvbXB0Q29uZmlybScpLFxuICAgICAgICAgIF0pO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoW3Byb21wdFZpc2libGUsIGhlYWRlclRleHQsIGJvZHlUZXh0LCBjYW5jZWxCdXR0b25UZXh0LCBjb25maXJtQnV0dG9uVGV4dF0pID0+IHtcbiAgICAgICAgdGhpcy5wcm9tcHRTZXJ2aWNlLmlkZW50aWZpZXIkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGlkZW50aWZpZXIgPT4ge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICghcHJvbXB0VmlzaWJsZSB8fCBpZGVudGlmaWVyICE9PSB0aGlzLkVYUElSRV9UT0tFTl9DT05GSVJNQVRJT04pICYmXG4gICAgICAgICAgICB0aGlzLl9leHBpcnlUaW1lTXMgPD0gdGhpcy5GSVZFX01JTlVURVNfTVNcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMucHJvbXB0U2VydmljZS5vcGVuUHJvbXB0KHtcbiAgICAgICAgICAgICAgaWRlbnRpZmllcjogdGhpcy5FWFBJUkVfVE9LRU5fQ09ORklSTUFUSU9OLFxuICAgICAgICAgICAgICBoZWFkZXJUZXh0LFxuICAgICAgICAgICAgICBib2R5VGV4dCxcbiAgICAgICAgICAgICAgY2FuY2VsQnV0dG9uVGV4dCxcbiAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQsXG4gICAgICAgICAgICAgIGNhbmNlbE1kaUljb246ICdsb2dvdXQnLFxuICAgICAgICAgICAgICBjb25maXJtTWRpSWNvbjogJ2NoZWNrJyxcbiAgICAgICAgICAgICAgY2xvc2VPbkNvbmZpcm06IHRydWUsXG4gICAgICAgICAgICAgIGNsb3NlT25DYW5jZWw6IGZhbHNlLFxuICAgICAgICAgICAgICBjYW5jZWxDYWxsYmFja0Z1bmN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5rZXljbG9ha1NlcnZpY2UubG9nb3V0KCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIGNvbmZpcm1DYWxsQmFja0Z1bmN0aW9uOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZUV4cGlyeVRpbWVyU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUb2tlbigyMCk7XG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocHJvbXB0VmlzaWJsZSAmJiBpZGVudGlmaWVyID09PSB0aGlzLkVYUElSRV9UT0tFTl9DT05GSVJNQVRJT04pIHtcbiAgICAgICAgICAgIHRoaXMucHJvbXB0U2VydmljZS5zZXRCb2R5VGV4dChib2R5VGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5fZXhwaXJ5VGltZU1zIDwgMjAwMCkge1xuICAgICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUV4cGlyeVRpbWVyU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwaXJ5VGltZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keycloak-auth-guard.service.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/keycloak/src/lib/keycloak-auth-guard.service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAC,iBAAiB,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAC,sBAAsB,EAAE,WAAW,EAAE,MAAM,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACjG,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;;AAErC,qBAGa,wBAAyB,SAAQ,iBAAkB,YAAW,WAAW;IAElF,SAAS,CAAC,MAAM,EAAE,MAAM;IACxB,SAAS,CAAC,eAAe,EAAE,eAAe;IAC1C,OAAO,CAAC,MAAM;gBAFJ,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,eAAe,EAClC,MAAM,EAAE,SAAS;IAM3B,eAAe,CAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;yCAVjF,wBAAwB;6CAAxB,wBAAwB;CAgCpC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keycloak-options.service.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/keycloak/src/lib/keycloak-options.service.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;;AAE9C,qBAGa,sBAAsB;IAGrB,OAAO,CAAC,aAAa;IAFjC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyB;gBAE5C,aAAa,EAAE,aAAa;IAIhD,IAAI,eAAe,+CAElB;IAED,IAAI,iBAAiB,WAEpB;yCAbU,sBAAsB;6CAAtB,sBAAsB;CAclC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keycloak-user.service.d.ts","sourceRoot":"","sources":["../../../../projects/valtimo/keycloak/src/lib/keycloak-user.service.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAa,SAAS,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAqB,aAAa,EAA0C,MAAM,MAAM,CAAC;AAChG,OAAO,EAAC,SAAS,EAAC,MAAM,YAAY,CAAC;AACrC,OAAO,EAAoB,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAC,YAAY,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAC,sBAAsB,EAAC,MAAM,4BAA4B,CAAC;AAElE,OAAO,EAAC,aAAa,EAAC,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;;AAGzC,qBAGa,mBAAoB,YAAW,WAAW,EAAE,SAAS;IAiB9D,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IArB3B,OAAO,CAAC,YAAY,CAA8B;IAElD,OAAO,CAAC,wBAAwB,CAAgB;IAChD,OAAO,CAAC,wBAAwB,CAAgB;IAChD,OAAO,CAAC,uBAAuB,CAAgB;IAE/C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyB;IAExD,OAAO,CAAC,aAAa,CAAU;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA+B;IAEzE,OAAO,CAAC,QAAQ,CAAQ;gBAGL,eAAe,EAAE,eAAe,EAChC,sBAAsB,EAAE,sBAAsB,EAC9C,MAAM,EAAE,SAAS,EACjB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,QAAQ;IAMrC,WAAW,IAAI,IAAI;IAMnB,IAAI,IAAI,IAAI;IAmBZ,cAAc,IAAI,aAAa,CAAC,YAAY,CAAC;IAK7C,MAAM,IAAI,IAAI;IAKR,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAK3B,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKxD,OAAO,CAAC,4BAA4B;IAUpC,OAAO,CAAC,4BAA4B;IAYpC,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,2BAA2B;IA6DnC,OAAO,CAAC,4BAA4B;yCAjKzB,mBAAmB;6CAAnB,mBAAmB;CAoK/B"}
|
|
File without changes
|
|
File without changes
|