@valtimo/keycloak 12.14.0 → 13.0.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.
@@ -1,23 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 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
- const STORAGE_KEYS = {
17
- urlBeforeExpiration: 'urlBeforeExpiration',
18
- urlBeforeExpirationParams: 'urlBeforeExpirationParams',
19
- redirectTo: 'redirectTo',
20
- redirectToParams: 'redirectToParams',
21
- };
22
- export { STORAGE_KEYS };
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1rZXlzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9rZXljbG9hay9zcmMvbGliL2NvbnN0YW50cy9zdG9yYWdlLWtleXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxNQUFNLFlBQVksR0FBRztJQUNuQixtQkFBbUIsRUFBRSxxQkFBcUI7SUFDMUMseUJBQXlCLEVBQUUsMkJBQTJCO0lBQ3RELFVBQVUsRUFBRSxZQUFZO0lBQ3hCLGdCQUFnQixFQUFFLGtCQUFrQjtDQUNyQyxDQUFDO0FBRUYsT0FBTyxFQUFDLFlBQVksRUFBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuY29uc3QgU1RPUkFHRV9LRVlTID0ge1xuICB1cmxCZWZvcmVFeHBpcmF0aW9uOiAndXJsQmVmb3JlRXhwaXJhdGlvbicsXG4gIHVybEJlZm9yZUV4cGlyYXRpb25QYXJhbXM6ICd1cmxCZWZvcmVFeHBpcmF0aW9uUGFyYW1zJyxcbiAgcmVkaXJlY3RUbzogJ3JlZGlyZWN0VG8nLFxuICByZWRpcmVjdFRvUGFyYW1zOiAncmVkaXJlY3RUb1BhcmFtcycsXG59O1xuXG5leHBvcnQge1NUT1JBR0VfS0VZU307XG4iXX0=
@@ -1,41 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 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 { NgModule } from '@angular/core';
17
- import { RouterModule } from '@angular/router';
18
- import { CallbackComponent } from './callback.component';
19
- import { CommonModule } from '@angular/common';
20
- import * as i0 from "@angular/core";
21
- import * as i1 from "@angular/router";
22
- const routes = [
23
- {
24
- path: 'keycloak/callback',
25
- component: CallbackComponent,
26
- data: { title: 'Loading...' },
27
- },
28
- ];
29
- export class KeycloakRoutingModule {
30
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
31
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: KeycloakRoutingModule, imports: [CommonModule, i1.RouterModule], exports: [RouterModule] }); }
32
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakRoutingModule, imports: [CommonModule, RouterModule.forChild(routes), RouterModule] }); }
33
- }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakRoutingModule, decorators: [{
35
- type: NgModule,
36
- args: [{
37
- imports: [CommonModule, RouterModule.forChild(routes)],
38
- exports: [RouterModule],
39
- }]
40
- }] });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWstcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2tleWNsb2FrL3NyYy9saWIva2V5Y2xvYWstcm91dGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7OztBQUU3QyxNQUFNLE1BQU0sR0FBVztJQUNyQjtRQUNFLElBQUksRUFBRSxtQkFBbUI7UUFDekIsU0FBUyxFQUFFLGlCQUFpQjtRQUM1QixJQUFJLEVBQUUsRUFBQyxLQUFLLEVBQUUsWUFBWSxFQUFDO0tBQzVCO0NBQ0YsQ0FBQztBQU1GLE1BQU0sT0FBTyxxQkFBcUI7K0dBQXJCLHFCQUFxQjtnSEFBckIscUJBQXFCLFlBSHRCLFlBQVksOEJBQ1osWUFBWTtnSEFFWCxxQkFBcUIsWUFIdEIsWUFBWSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzNDLFlBQVk7OzRGQUVYLHFCQUFxQjtrQkFKakMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDdEQsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGUsIFJvdXRlc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Q2FsbGJhY2tDb21wb25lbnR9IGZyb20gJy4vY2FsbGJhY2suY29tcG9uZW50JztcbmltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICdrZXljbG9hay9jYWxsYmFjaycsXG4gICAgY29tcG9uZW50OiBDYWxsYmFja0NvbXBvbmVudCxcbiAgICBkYXRhOiB7dGl0bGU6ICdMb2FkaW5nLi4uJ30sXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBLZXljbG9ha1JvdXRpbmdNb2R1bGUge31cbiJdfQ==
@@ -1,48 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 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 { KeycloakService } from 'keycloak-angular';
17
- import { KeycloakOptionsService, KeycloakStorageService, KeycloakUserService } from './services';
18
- import { NGXLogger } from 'ngx-logger';
19
- import { STORAGE_KEYS } from './constants';
20
- export function keycloakInitializer(injector) {
21
- const keycloakService = injector.get(KeycloakService);
22
- const keycloakUserService = injector.get(KeycloakUserService);
23
- const optionsService = injector.get(KeycloakOptionsService); // TODO possible removal of abstraction
24
- const storageService = injector.get(KeycloakStorageService);
25
- const logger = injector.get(NGXLogger);
26
- return async () => {
27
- try {
28
- logger.debug('Keycloak initializer before init');
29
- const keycloakOptions = optionsService.keycloakOptions;
30
- const currentUrl = window.location.href.split('#')[0];
31
- if (keycloakOptions.initOptions.redirectUri !== currentUrl) {
32
- const redirectTo = storageService.getCurrentUrl();
33
- logger.debug('Setting redirectTo =', redirectTo);
34
- window.sessionStorage.setItem(STORAGE_KEYS.redirectTo, redirectTo);
35
- window.sessionStorage.setItem(STORAGE_KEYS.redirectToParams, storageService.getCurrentUrlParams());
36
- }
37
- const initResult = await keycloakService.init(keycloakOptions);
38
- logger.debug('Keycloak initializer after init');
39
- keycloakUserService.init();
40
- return initResult;
41
- }
42
- catch (error) {
43
- logger.debug('Keycloak initializer error', error);
44
- throw error;
45
- }
46
- };
47
- }
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWsuaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8va2V5Y2xvYWsvc3JjL2xpYi9rZXljbG9hay5pbml0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBQyxzQkFBc0IsRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUUvRixPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBQ3JDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFFekMsTUFBTSxVQUFVLG1CQUFtQixDQUFDLFFBQWtCO0lBQ3BELE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQWtCLGVBQWUsQ0FBQyxDQUFDO0lBQ3ZFLE1BQU0sbUJBQW1CLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBc0IsbUJBQW1CLENBQUMsQ0FBQztJQUNuRixNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUF5QixzQkFBc0IsQ0FBQyxDQUFDLENBQUMsdUNBQXVDO0lBQzVILE1BQU0sY0FBYyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQXlCLHNCQUFzQixDQUFDLENBQUM7SUFDcEYsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBWSxTQUFTLENBQUMsQ0FBQztJQUVsRCxPQUFPLEtBQUssSUFBa0IsRUFBRTtRQUM5QixJQUFJLENBQUM7WUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUM7WUFFakQsTUFBTSxlQUFlLEdBQUcsY0FBYyxDQUFDLGVBQWUsQ0FBQztZQUN2RCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFdEQsSUFBSSxlQUFlLENBQUMsV0FBVyxDQUFDLFdBQVcsS0FBSyxVQUFVLEVBQUUsQ0FBQztnQkFDM0QsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNqRCxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDO2dCQUNuRSxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FDM0IsWUFBWSxDQUFDLGdCQUFnQixFQUM3QixjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FDckMsQ0FBQztZQUNKLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDL0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO1lBRWhELG1CQUFtQixDQUFDLElBQUksRUFBRSxDQUFDO1lBRTNCLE9BQU8sVUFBVSxDQUFDO1FBQ3BCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUNsRCxNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtLZXljbG9ha1NlcnZpY2V9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xuaW1wb3J0IHtLZXljbG9ha09wdGlvbnNTZXJ2aWNlLCBLZXljbG9ha1N0b3JhZ2VTZXJ2aWNlLCBLZXljbG9ha1VzZXJTZXJ2aWNlfSBmcm9tICcuL3NlcnZpY2VzJztcbmltcG9ydCB7SW5qZWN0b3J9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuaW1wb3J0IHtTVE9SQUdFX0tFWVN9IGZyb20gJy4vY29uc3RhbnRzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGtleWNsb2FrSW5pdGlhbGl6ZXIoaW5qZWN0b3I6IEluamVjdG9yKTogKCkgPT4gUHJvbWlzZTxhbnk+IHtcbiAgY29uc3Qga2V5Y2xvYWtTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0PEtleWNsb2FrU2VydmljZT4oS2V5Y2xvYWtTZXJ2aWNlKTtcbiAgY29uc3Qga2V5Y2xvYWtVc2VyU2VydmljZSA9IGluamVjdG9yLmdldDxLZXljbG9ha1VzZXJTZXJ2aWNlPihLZXljbG9ha1VzZXJTZXJ2aWNlKTtcbiAgY29uc3Qgb3B0aW9uc1NlcnZpY2UgPSBpbmplY3Rvci5nZXQ8S2V5Y2xvYWtPcHRpb25zU2VydmljZT4oS2V5Y2xvYWtPcHRpb25zU2VydmljZSk7IC8vIFRPRE8gcG9zc2libGUgcmVtb3ZhbCBvZiBhYnN0cmFjdGlvblxuICBjb25zdCBzdG9yYWdlU2VydmljZSA9IGluamVjdG9yLmdldDxLZXljbG9ha1N0b3JhZ2VTZXJ2aWNlPihLZXljbG9ha1N0b3JhZ2VTZXJ2aWNlKTtcbiAgY29uc3QgbG9nZ2VyID0gaW5qZWN0b3IuZ2V0PE5HWExvZ2dlcj4oTkdYTG9nZ2VyKTtcblxuICByZXR1cm4gYXN5bmMgKCk6IFByb21pc2U8YW55PiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnS2V5Y2xvYWsgaW5pdGlhbGl6ZXIgYmVmb3JlIGluaXQnKTtcblxuICAgICAgY29uc3Qga2V5Y2xvYWtPcHRpb25zID0gb3B0aW9uc1NlcnZpY2Uua2V5Y2xvYWtPcHRpb25zO1xuICAgICAgY29uc3QgY3VycmVudFVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLnNwbGl0KCcjJylbMF07XG5cbiAgICAgIGlmIChrZXljbG9ha09wdGlvbnMuaW5pdE9wdGlvbnMucmVkaXJlY3RVcmkgIT09IGN1cnJlbnRVcmwpIHtcbiAgICAgICAgY29uc3QgcmVkaXJlY3RUbyA9IHN0b3JhZ2VTZXJ2aWNlLmdldEN1cnJlbnRVcmwoKTtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKCdTZXR0aW5nIHJlZGlyZWN0VG8gPScsIHJlZGlyZWN0VG8pO1xuICAgICAgICB3aW5kb3cuc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShTVE9SQUdFX0tFWVMucmVkaXJlY3RUbywgcmVkaXJlY3RUbyk7XG4gICAgICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICAgIFNUT1JBR0VfS0VZUy5yZWRpcmVjdFRvUGFyYW1zLFxuICAgICAgICAgIHN0b3JhZ2VTZXJ2aWNlLmdldEN1cnJlbnRVcmxQYXJhbXMoKVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBpbml0UmVzdWx0ID0gYXdhaXQga2V5Y2xvYWtTZXJ2aWNlLmluaXQoa2V5Y2xvYWtPcHRpb25zKTtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnS2V5Y2xvYWsgaW5pdGlhbGl6ZXIgYWZ0ZXIgaW5pdCcpO1xuXG4gICAgICBrZXljbG9ha1VzZXJTZXJ2aWNlLmluaXQoKTtcblxuICAgICAgcmV0dXJuIGluaXRSZXN1bHQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnS2V5Y2xvYWsgaW5pdGlhbGl6ZXIgZXJyb3InLCBlcnJvcik7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH07XG59XG4iXX0=
@@ -1,37 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 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 { NgModule } from '@angular/core';
17
- import { KeycloakAngularModule } from 'keycloak-angular';
18
- import { CallbackComponent } from './callback.component';
19
- import { KeycloakRoutingModule } from './keycloak-routing.module';
20
- import { TranslateModule } from '@ngx-translate/core';
21
- import { DatePipe } from '@angular/common';
22
- import * as i0 from "@angular/core";
23
- export class KeycloakModule {
24
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
25
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: KeycloakModule, declarations: [CallbackComponent], imports: [KeycloakRoutingModule, KeycloakAngularModule, TranslateModule], exports: [CallbackComponent] }); }
26
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakModule, providers: [DatePipe], imports: [KeycloakRoutingModule, KeycloakAngularModule, TranslateModule] }); }
27
- }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakModule, decorators: [{
29
- type: NgModule,
30
- args: [{
31
- declarations: [CallbackComponent],
32
- imports: [KeycloakRoutingModule, KeycloakAngularModule, TranslateModule],
33
- exports: [CallbackComponent],
34
- providers: [DatePipe],
35
- }]
36
- }] });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWsubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9rZXljbG9hay9zcmMvbGliL2tleWNsb2FrLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFDLHFCQUFxQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDaEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQzs7QUFRekMsTUFBTSxPQUFPLGNBQWM7K0dBQWQsY0FBYztnSEFBZCxjQUFjLGlCQUxWLGlCQUFpQixhQUN0QixxQkFBcUIsRUFBRSxxQkFBcUIsRUFBRSxlQUFlLGFBQzdELGlCQUFpQjtnSEFHaEIsY0FBYyxhQUZkLENBQUMsUUFBUSxDQUFDLFlBRlgscUJBQXFCLEVBQUUscUJBQXFCLEVBQUUsZUFBZTs7NEZBSTVELGNBQWM7a0JBTjFCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsaUJBQWlCLENBQUM7b0JBQ2pDLE9BQU8sRUFBRSxDQUFDLHFCQUFxQixFQUFFLHFCQUFxQixFQUFFLGVBQWUsQ0FBQztvQkFDeEUsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7b0JBQzVCLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztpQkFDdEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7S2V5Y2xvYWtBbmd1bGFyTW9kdWxlfSBmcm9tICdrZXljbG9hay1hbmd1bGFyJztcbmltcG9ydCB7Q2FsbGJhY2tDb21wb25lbnR9IGZyb20gJy4vY2FsbGJhY2suY29tcG9uZW50JztcbmltcG9ydCB7S2V5Y2xvYWtSb3V0aW5nTW9kdWxlfSBmcm9tICcuL2tleWNsb2FrLXJvdXRpbmcubW9kdWxlJztcbmltcG9ydCB7VHJhbnNsYXRlTW9kdWxlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NhbGxiYWNrQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0tleWNsb2FrUm91dGluZ01vZHVsZSwgS2V5Y2xvYWtBbmd1bGFyTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGVdLFxuICBleHBvcnRzOiBbQ2FsbGJhY2tDb21wb25lbnRdLFxuICBwcm92aWRlcnM6IFtEYXRlUGlwZV0sXG59KVxuZXhwb3J0IGNsYXNzIEtleWNsb2FrTW9kdWxlIHt9XG4iXX0=
@@ -1,17 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 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
- export * from './keycloak.config';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2tleWNsb2FrL3NyYy9saWIvbW9kZWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBRUgsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4va2V5Y2xvYWsuY29uZmlnJztcbiJdfQ==
@@ -1,17 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 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
- export {};
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWsuY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9rZXljbG9hay9zcmMvbGliL21vZGVscy9rZXljbG9hay5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0tleWNsb2FrT3B0aW9uc30gZnJvbSAna2V5Y2xvYWstYW5ndWxhcic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdGltb0tleWNsb2FrT3B0aW9ucyB7XG4gIGtleWNsb2FrT3B0aW9uczogS2V5Y2xvYWtPcHRpb25zO1xuICBsb2dvdXRSZWRpcmVjdFVyaTogc3RyaW5nO1xufVxuIl19
@@ -1,20 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 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
- export * from './keycloak-auth-guard.service';
17
- export * from './keycloak-options.service';
18
- export * from './keycloak-user.service';
19
- export * from './keycloak-storage.service';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2tleWNsb2FrL3NyYy9saWIvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNEJBQTRCLENBQUM7QUFDM0MsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9rZXljbG9hay1hdXRoLWd1YXJkLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXljbG9hay1vcHRpb25zLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXljbG9hay11c2VyLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9rZXljbG9hay1zdG9yYWdlLnNlcnZpY2UnO1xuIl19
@@ -1,59 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 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 { KeycloakAuthGuard } from 'keycloak-angular';
18
- import * as i0 from "@angular/core";
19
- import * as i1 from "@angular/router";
20
- import * as i2 from "keycloak-angular";
21
- import * as i3 from "ngx-logger";
22
- export class KeycloakAuthGuardService extends KeycloakAuthGuard {
23
- constructor(router, keycloakAngular, logger) {
24
- super(router, keycloakAngular);
25
- this.router = router;
26
- this.keycloakAngular = keycloakAngular;
27
- this.logger = logger;
28
- this.logger.debug('KeycloakAuthGuardService: ctor');
29
- }
30
- isAccessAllowed(route, state) {
31
- this.logger.debug('KeycloakAuthGuardService: isAccessAllowed');
32
- return new Promise((resolve, reject) => {
33
- this.logger.debug('KeycloakAuthGuardService: isAccessAllowed checking access');
34
- if (!this.authenticated) {
35
- this.keycloakAngular
36
- .login()
37
- .catch(e => `KeycloakAuthGuardService error: ${this.logger.error(e)}`);
38
- return reject(false);
39
- }
40
- const requiredRoles = route.data.roles;
41
- if (!requiredRoles || requiredRoles.length === 0) {
42
- return resolve(true);
43
- }
44
- if (!this.roles || this.roles.length === 0) {
45
- resolve(false);
46
- }
47
- resolve(requiredRoles.some(role => this.roles.includes(role)));
48
- });
49
- }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakAuthGuardService, deps: [{ token: i1.Router }, { token: i2.KeycloakService }, { token: i3.NGXLogger }], target: i0.ɵɵFactoryTarget.Injectable }); }
51
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakAuthGuardService, providedIn: 'root' }); }
52
- }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakAuthGuardService, decorators: [{
54
- type: Injectable,
55
- args: [{
56
- providedIn: 'root',
57
- }]
58
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.KeycloakService }, { type: i3.NGXLogger }] });
59
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWstYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9rZXljbG9hay9zcmMvbGliL3NlcnZpY2VzL2tleWNsb2FrLWF1dGgtZ3VhcmQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFDLGlCQUFpQixFQUFrQixNQUFNLGtCQUFrQixDQUFDOzs7OztBQU9wRSxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsaUJBQWlCO0lBQzdELFlBQ1ksTUFBYyxFQUNkLGVBQWdDLEVBQ2xDLE1BQWlCO1FBRXpCLEtBQUssQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFKckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNsQyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBR3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVELGVBQWUsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7UUFDL0QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyREFBMkQsQ0FBQyxDQUFDO1lBQy9FLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxlQUFlO3FCQUNqQixLQUFLLEVBQUU7cUJBQ1AsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsbUNBQW1DLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDekUsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUVELE1BQU0sYUFBYSxHQUFhLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBRWpELElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDakIsQ0FBQztZQUNELE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FoQ1Usd0JBQXdCO21IQUF4Qix3QkFBd0IsY0FGdkIsTUFBTTs7NEZBRVAsd0JBQXdCO2tCQUhwQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0tleWNsb2FrQXV0aEd1YXJkLCBLZXljbG9ha1NlcnZpY2V9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBDYW5BY3RpdmF0ZSwgUm91dGVyLCBSb3V0ZXJTdGF0ZVNuYXBzaG90fSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHtOR1hMb2dnZXJ9IGZyb20gJ25neC1sb2dnZXInO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgS2V5Y2xvYWtBdXRoR3VhcmRTZXJ2aWNlIGV4dGVuZHMgS2V5Y2xvYWtBdXRoR3VhcmQgaW1wbGVtZW50cyBDYW5BY3RpdmF0ZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByb3V0ZXI6IFJvdXRlcixcbiAgICBwcm90ZWN0ZWQga2V5Y2xvYWtBbmd1bGFyOiBLZXljbG9ha1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBsb2dnZXI6IE5HWExvZ2dlclxuICApIHtcbiAgICBzdXBlcihyb3V0ZXIsIGtleWNsb2FrQW5ndWxhcik7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ0tleWNsb2FrQXV0aEd1YXJkU2VydmljZTogY3RvcicpO1xuICB9XG5cbiAgaXNBY2Nlc3NBbGxvd2VkKHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdLZXljbG9ha0F1dGhHdWFyZFNlcnZpY2U6IGlzQWNjZXNzQWxsb3dlZCcpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnS2V5Y2xvYWtBdXRoR3VhcmRTZXJ2aWNlOiBpc0FjY2Vzc0FsbG93ZWQgY2hlY2tpbmcgYWNjZXNzJyk7XG4gICAgICBpZiAoIXRoaXMuYXV0aGVudGljYXRlZCkge1xuICAgICAgICB0aGlzLmtleWNsb2FrQW5ndWxhclxuICAgICAgICAgIC5sb2dpbigpXG4gICAgICAgICAgLmNhdGNoKGUgPT4gYEtleWNsb2FrQXV0aEd1YXJkU2VydmljZSBlcnJvcjogJHt0aGlzLmxvZ2dlci5lcnJvcihlKX1gKTtcbiAgICAgICAgcmV0dXJuIHJlamVjdChmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlcXVpcmVkUm9sZXM6IHN0cmluZ1tdID0gcm91dGUuZGF0YS5yb2xlcztcblxuICAgICAgaWYgKCFyZXF1aXJlZFJvbGVzIHx8IHJlcXVpcmVkUm9sZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlKHRydWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMucm9sZXMgfHwgdGhpcy5yb2xlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICB9XG4gICAgICByZXNvbHZlKHJlcXVpcmVkUm9sZXMuc29tZShyb2xlID0+IHRoaXMucm9sZXMuaW5jbHVkZXMocm9sZSkpKTtcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,24 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@valtimo/config";
4
- export class KeycloakOptionsService {
5
- constructor(configService) {
6
- this.configService = configService;
7
- this.valtimoKeycloakOptions = configService.config.authentication.options;
8
- }
9
- get keycloakOptions() {
10
- return this.valtimoKeycloakOptions.keycloakOptions;
11
- }
12
- get logoutRedirectUri() {
13
- return this.valtimoKeycloakOptions.logoutRedirectUri;
14
- }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakOptionsService, deps: [{ token: i1.ConfigService }], target: i0.ɵɵFactoryTarget.Injectable }); }
16
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakOptionsService, providedIn: 'root' }); }
17
- }
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakOptionsService, decorators: [{
19
- type: Injectable,
20
- args: [{
21
- providedIn: 'root',
22
- }]
23
- }], ctorParameters: () => [{ type: i1.ConfigService }] });
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWstb3B0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9rZXljbG9hay9zcmMvbGliL3NlcnZpY2VzL2tleWNsb2FrLW9wdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFpQkEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7O0FBTXpDLE1BQU0sT0FBTyxzQkFBc0I7SUFHakMsWUFBb0IsYUFBNEI7UUFBNUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDOUMsSUFBSSxDQUFDLHNCQUFzQixHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsaUJBQWlCLENBQUM7SUFDdkQsQ0FBQzsrR0FiVSxzQkFBc0I7bUhBQXRCLHNCQUFzQixjQUZyQixNQUFNOzs0RkFFUCxzQkFBc0I7a0JBSGxDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtWYWx0aW1vS2V5Y2xvYWtPcHRpb25zfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29uZmlnU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vY29uZmlnJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEtleWNsb2FrT3B0aW9uc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IHZhbHRpbW9LZXljbG9ha09wdGlvbnM6IFZhbHRpbW9LZXljbG9ha09wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjb25maWdTZXJ2aWNlOiBDb25maWdTZXJ2aWNlKSB7XG4gICAgdGhpcy52YWx0aW1vS2V5Y2xvYWtPcHRpb25zID0gY29uZmlnU2VydmljZS5jb25maWcuYXV0aGVudGljYXRpb24ub3B0aW9ucztcbiAgfVxuXG4gIGdldCBrZXljbG9ha09wdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdGltb0tleWNsb2FrT3B0aW9ucy5rZXljbG9ha09wdGlvbnM7XG4gIH1cblxuICBnZXQgbG9nb3V0UmVkaXJlY3RVcmkoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdGltb0tleWNsb2FrT3B0aW9ucy5sb2dvdXRSZWRpcmVjdFVyaTtcbiAgfVxufVxuIl19
@@ -1,43 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 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 * as i0 from "@angular/core";
18
- export class KeycloakStorageService {
19
- getCurrentUrlParams() {
20
- const urlSearchParams = new URLSearchParams(window.location.search);
21
- const params = Object.fromEntries(urlSearchParams.entries());
22
- return JSON.stringify(params);
23
- }
24
- getCurrentUrl() {
25
- return window.location.pathname;
26
- }
27
- parseSavedParams(savedParams) {
28
- return ((savedParams &&
29
- typeof savedParams === 'string' &&
30
- savedParams.length > 2 &&
31
- JSON.parse(savedParams)) ||
32
- {});
33
- }
34
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
35
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakStorageService, providedIn: 'root' }); }
36
- }
37
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakStorageService, decorators: [{
38
- type: Injectable,
39
- args: [{
40
- providedIn: 'root',
41
- }]
42
- }] });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWstc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9rZXljbG9hay9zcmMvbGliL3NlcnZpY2VzL2tleWNsb2FrLXN0b3JhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBS3pDLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsbUJBQW1CO1FBQ2pCLE1BQU0sZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEUsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxXQUFnQjtRQUMvQixPQUFPLENBQ0wsQ0FBQyxXQUFXO1lBQ1YsT0FBTyxXQUFXLEtBQUssUUFBUTtZQUMvQixXQUFXLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMxQixFQUFFLENBQ0gsQ0FBQztJQUNKLENBQUM7K0dBbkJVLHNCQUFzQjttSEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07OzRGQUVQLHNCQUFzQjtrQkFIbEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgS2V5Y2xvYWtTdG9yYWdlU2VydmljZSB7XG4gIGdldEN1cnJlbnRVcmxQYXJhbXMoKTogc3RyaW5nIHtcbiAgICBjb25zdCB1cmxTZWFyY2hQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IHBhcmFtcyA9IE9iamVjdC5mcm9tRW50cmllcyh1cmxTZWFyY2hQYXJhbXMuZW50cmllcygpKTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkocGFyYW1zKTtcbiAgfVxuXG4gIGdldEN1cnJlbnRVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lO1xuICB9XG5cbiAgcGFyc2VTYXZlZFBhcmFtcyhzYXZlZFBhcmFtczogYW55KToge1trZXk6IHN0cmluZ106IHN0cmluZ30ge1xuICAgIHJldHVybiAoXG4gICAgICAoc2F2ZWRQYXJhbXMgJiZcbiAgICAgICAgdHlwZW9mIHNhdmVkUGFyYW1zID09PSAnc3RyaW5nJyAmJlxuICAgICAgICBzYXZlZFBhcmFtcy5sZW5ndGggPiAyICYmXG4gICAgICAgIEpTT04ucGFyc2Uoc2F2ZWRQYXJhbXMpKSB8fFxuICAgICAge31cbiAgICApO1xuICB9XG59XG4iXX0=
@@ -1,178 +0,0 @@
1
- /*
2
- * Copyright 2015-2024 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, ReplaySubject, Subject, switchMap, timer } from 'rxjs';
18
- import { KeycloakEventType } from 'keycloak-angular';
19
- import { ValtimoUserIdentity } from '@valtimo/config';
20
- import { jwtDecode } from 'jwt-decode';
21
- import { take } from 'rxjs/operators';
22
- import { STORAGE_KEYS } from '../constants';
23
- import * as i0 from "@angular/core";
24
- import * as i1 from "keycloak-angular";
25
- import * as i2 from "./keycloak-options.service";
26
- import * as i3 from "ngx-logger";
27
- import * as i4 from "@valtimo/components";
28
- import * as i5 from "@ngx-translate/core";
29
- import * as i6 from "@angular/common";
30
- import * as i7 from "@valtimo/config";
31
- import * as i8 from "@angular/router";
32
- import * as i9 from "./keycloak-storage.service";
33
- export class KeycloakUserService {
34
- constructor(keycloakService, keycloakOptionsService, logger, promptService, translateService, datePipe, configService, router, keycloakStorageService) {
35
- this.keycloakService = keycloakService;
36
- this.keycloakOptionsService = keycloakOptionsService;
37
- this.logger = logger;
38
- this.promptService = promptService;
39
- this.translateService = translateService;
40
- this.datePipe = datePipe;
41
- this.configService = configService;
42
- this.router = router;
43
- this.keycloakStorageService = keycloakStorageService;
44
- this._refreshToken$ = new Subject();
45
- this.FIVE_MINUTES_MS = 300000;
46
- this.EXPIRE_TOKEN_CONFIRMATION = 'EXPIRE_TOKEN_CONFIRMATION';
47
- this.openTokenRefreshSubscription();
48
- this.openRefreshTokenSubscription();
49
- }
50
- ngOnDestroy() {
51
- this.tokenRefreshSubscription?.unsubscribe();
52
- this.refreshTokenSubscription?.unsubscribe();
53
- this.closeExpiryTimerSubscription();
54
- }
55
- init() {
56
- this.userIdentity = new ReplaySubject();
57
- this.keycloakService.loadUserProfile().then(user => {
58
- this.logger.debug('KeycloakUserService: loadUserProfile = ', user);
59
- const roles = [];
60
- this.keycloakService.getUserRoles(true).forEach(role => roles.push(role));
61
- const valtimoUserIdentity = new ValtimoUserIdentity(user.email, user.firstName, user.lastName, roles, user.username, user.id);
62
- this.logger.debug('KeycloakUserService: loaded user identity', valtimoUserIdentity);
63
- this.userIdentity.next(valtimoUserIdentity);
64
- });
65
- this.setRefreshToken();
66
- }
67
- getUserSubject() {
68
- this.logger.debug('KeycloakUserService: getUserIdentity');
69
- return this.userIdentity;
70
- }
71
- logout() {
72
- this.logger.debug('KeycloakUserService: logout');
73
- this.keycloakService.logout(this.keycloakOptionsService.logoutRedirectUri);
74
- }
75
- async getToken() {
76
- this.logger.debug('KeycloakUserService: getToken');
77
- return this.keycloakService.getToken();
78
- }
79
- async updateToken(minValidity) {
80
- this.logger.debug('KeycloakUserService: updateToken');
81
- return this.keycloakService.updateToken(minValidity);
82
- }
83
- openTokenRefreshSubscription() {
84
- this.tokenRefreshSubscription = this.keycloakService.keycloakEvents$.subscribe(keycloakEvent => {
85
- if (keycloakEvent.type === KeycloakEventType.OnAuthRefreshSuccess) {
86
- this.setRefreshToken();
87
- }
88
- });
89
- }
90
- get _expiryTimeMs() {
91
- return this._tokenExp - Date.now() - 1000;
92
- }
93
- openRefreshTokenSubscription() {
94
- this.refreshTokenSubscription = this._refreshToken$.subscribe(refreshToken => {
95
- const decodedRefreshToken = jwtDecode(refreshToken);
96
- this._tokenExp = decodedRefreshToken.exp * 1000;
97
- this.closeExpiryTimerSubscription();
98
- this.openExpiryTimerSubscription();
99
- });
100
- }
101
- setRefreshToken() {
102
- const refreshToken = this.keycloakService.getKeycloakInstance()?.refreshToken;
103
- if (refreshToken)
104
- this._refreshToken$.next(refreshToken);
105
- }
106
- openExpiryTimerSubscription() {
107
- this.expiryTimerSubscription = timer(0, 1000)
108
- .pipe(switchMap(() => {
109
- if (this._expiryTimeMs <= this.FIVE_MINUTES_MS) {
110
- this._counter = new Date(0, 0, 0, 0, 0, 0);
111
- this._counter.setSeconds(this._expiryTimeMs / 1000);
112
- }
113
- return combineLatest([
114
- this.promptService.promptVisible$,
115
- this.translateService.stream('keycloak.expiryPromptTitle'),
116
- this.translateService.stream('keycloak.expiryPromptDescription', {
117
- expiryTime: this.datePipe.transform(this._counter, 'mm:ss'),
118
- }),
119
- this.translateService.stream('keycloak.expiryPromptCancel'),
120
- this.translateService.stream('keycloak.expiryPromptConfirm'),
121
- ]);
122
- }))
123
- .subscribe(([promptVisible, headerText, bodyText, cancelButtonText, confirmButtonText]) => {
124
- this.promptService.identifier$.pipe(take(1)).subscribe(identifier => {
125
- if ((!promptVisible || identifier !== this.EXPIRE_TOKEN_CONFIRMATION) &&
126
- this._expiryTimeMs <= this.FIVE_MINUTES_MS) {
127
- this.openConfirmationPrompt(headerText, bodyText, cancelButtonText, confirmButtonText);
128
- }
129
- if (promptVisible && identifier === this.EXPIRE_TOKEN_CONFIRMATION) {
130
- this.promptService.setBodyText(bodyText);
131
- }
132
- });
133
- if (this._expiryTimeMs < 2000) {
134
- this.saveUrl();
135
- this.logout();
136
- }
137
- });
138
- }
139
- closeExpiryTimerSubscription() {
140
- this.expiryTimerSubscription?.unsubscribe();
141
- }
142
- openConfirmationPrompt(headerText, bodyText, cancelButtonText, confirmButtonText) {
143
- this.promptService.openPrompt({
144
- identifier: this.EXPIRE_TOKEN_CONFIRMATION,
145
- headerText,
146
- bodyText,
147
- cancelButtonText,
148
- confirmButtonText,
149
- cancelMdiIcon: 'logout',
150
- confirmMdiIcon: 'check',
151
- closeOnConfirm: true,
152
- closeOnCancel: false,
153
- cancelCallbackFunction: () => {
154
- this.keycloakService.logout();
155
- },
156
- confirmCallBackFunction: () => {
157
- this.closeExpiryTimerSubscription();
158
- this.updateToken(20);
159
- },
160
- });
161
- }
162
- saveUrl() {
163
- const returnToLastUrlAfterTokenExpiration = this.configService?.config?.featureToggles?.returnToLastUrlAfterTokenExpiration;
164
- if (returnToLastUrlAfterTokenExpiration) {
165
- sessionStorage.setItem(STORAGE_KEYS.urlBeforeExpiration, this.keycloakStorageService.getCurrentUrl());
166
- sessionStorage.setItem(STORAGE_KEYS.urlBeforeExpirationParams, this.keycloakStorageService.getCurrentUrlParams());
167
- }
168
- }
169
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakUserService, deps: [{ token: i1.KeycloakService }, { token: i2.KeycloakOptionsService }, { token: i3.NGXLogger }, { token: i4.PromptService }, { token: i5.TranslateService }, { token: i6.DatePipe }, { token: i7.ConfigService }, { token: i8.Router }, { token: i9.KeycloakStorageService }], target: i0.ɵɵFactoryTarget.Injectable }); }
170
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakUserService, providedIn: 'root' }); }
171
- }
172
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: KeycloakUserService, decorators: [{
173
- type: Injectable,
174
- args: [{
175
- providedIn: 'root',
176
- }]
177
- }], ctorParameters: () => [{ type: i1.KeycloakService }, { type: i2.KeycloakOptionsService }, { type: i3.NGXLogger }, { type: i4.PromptService }, { type: i5.TranslateService }, { type: i6.DatePipe }, { type: i7.ConfigService }, { type: i8.Router }, { type: i9.KeycloakStorageService }] });
178
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5Y2xvYWstdXNlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9rZXljbG9hay9zcmMvbGliL3NlcnZpY2VzL2tleWNsb2FrLXVzZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFBQyxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFDLGFBQWEsRUFBTyxhQUFhLEVBQUUsT0FBTyxFQUFnQixTQUFTLEVBQUUsS0FBSyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBRWhHLE9BQU8sRUFBQyxpQkFBaUIsRUFBa0IsTUFBTSxrQkFBa0IsQ0FBQztBQUNwRSxPQUFPLEVBQTJDLG1CQUFtQixFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFFOUYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUdyQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFcEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7Ozs7QUFPMUMsTUFBTSxPQUFPLG1CQUFtQjtJQWdCOUIsWUFDbUIsZUFBZ0MsRUFDaEMsc0JBQThDLEVBQzlDLE1BQWlCLEVBQ2pCLGFBQTRCLEVBQzVCLGdCQUFrQyxFQUNsQyxRQUFrQixFQUNsQixhQUE0QixFQUM1QixNQUFjLEVBQ2Qsc0JBQThDO1FBUjlDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVC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O1lBQ0YsY0FBYyxDQUFDLE9BQU8sQ0FDcEIsWUFBWSxDQUFDLHlCQUF5QixFQUN0QyxJQUFJLENBQUMsc0JBQXNCLENBQUMsbUJBQW1CLEVBQUUsQ0FDbEQsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOytHQS9MVSxtQkFBbUI7bUhBQW5CLG1CQUFtQixjQUZsQixNQUFNOzs0RkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlLCBPbkRlc3Ryb3l9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtjb21iaW5lTGF0ZXN0LCBtYXAsIFJlcGxheVN1YmplY3QsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwLCB0aW1lcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge05HWExvZ2dlcn0gZnJvbSAnbmd4LWxvZ2dlcic7XG5pbXBvcnQge0tleWNsb2FrRXZlbnRUeXBlLCBLZXljbG9ha1NlcnZpY2V9IGZyb20gJ2tleWNsb2FrLWFuZ3VsYXInO1xuaW1wb3J0IHtDb25maWdTZXJ2aWNlLCBVc2VySWRlbnRpdHksIFVzZXJTZXJ2aWNlLCBWYWx0aW1vVXNlcklkZW50aXR5fSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtLZXljbG9ha09wdGlvbnNTZXJ2aWNlfSBmcm9tICcuL2tleWNsb2FrLW9wdGlvbnMuc2VydmljZSc7XG5pbXBvcnQge2p3dERlY29kZX0gZnJvbSAnand0LWRlY29kZSc7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtEYXRlUGlwZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7dGFrZX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtSb3V0ZXJ9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQge1NUT1JBR0VfS0VZU30gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7S2V5Y2xvYWtTdG9yYWdlU2VydmljZX0gZnJvbSAnLi9rZXljbG9hay1zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHtQcm9tcHRTZXJ2aWNlfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEtleWNsb2FrVXNlclNlcnZpY2UgaW1wbGVtZW50cyBVc2VyU2VydmljZSwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSB1c2VySWRlbnRpdHk6IFJlcGxheVN1YmplY3Q8VXNlcklkZW50aXR5PjtcblxuICBwcml2YXRlIHRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSByZWZyZXNoVG9rZW5TdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgZXhwaXJ5VGltZXJTdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaFRva2VuJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcblxuICBwcml2YXRlIF90b2tlbkV4cCE6IG51bWJlcjtcblxuICBwcml2YXRlIHJlYWRvbmx5IEZJVkVfTUlOVVRFU19NUyA9IDMwMDAwMDtcbiAgcHJpdmF0ZSByZWFkb25seSBFWFBJUkVfVE9LRU5fQ09ORklSTUFUSU9OID0gJ0VYUElSRV9UT0tFTl9DT05GSVJNQVRJT04nO1xuXG4gIHByaXZhdGUgX2NvdW50ZXIhOiBEYXRlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkga2V5Y2xvYWtTZXJ2aWNlOiBLZXljbG9ha1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBrZXljbG9ha09wdGlvbnNTZXJ2aWNlOiBLZXljbG9ha09wdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyOiBOR1hMb2dnZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9tcHRTZXJ2aWNlOiBQcm9tcHRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGtleWNsb2FrU3RvcmFnZVNlcnZpY2U6IEtleWNsb2FrU3RvcmFnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5vcGVuVG9rZW5SZWZyZXNoU3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5vcGVuUmVmcmVzaFRva2VuU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnRva2VuUmVmcmVzaFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLnJlZnJlc2hUb2tlblN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmNsb3NlRXhwaXJ5VGltZXJTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIGluaXQoKTogdm9pZCB7XG4gICAgdGhpcy51c2VySWRlbnRpdHkgPSBuZXcgUmVwbGF5U3ViamVjdCgpO1xuICAgIHRoaXMua2V5Y2xvYWtTZXJ2aWNlLmxvYWRVc2VyUHJvZmlsZSgpLnRoZW4odXNlciA9PiB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnS2V5Y2xvYWtVc2VyU2VydmljZTogbG9hZFVzZXJQcm9maWxlID0gJywgdXNlcik7XG4gICAgICBjb25zdCByb2xlczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICAgICAgdGhpcy5rZXljbG9ha1NlcnZpY2UuZ2V0VXNlclJvbGVzKHRydWUpLmZvckVhY2gocm9sZSA9PiByb2xlcy5wdXNoKHJvbGUpKTtcbiAgICAgIGNvbnN0IHZhbHRpbW9Vc2VySWRlbnRpdHkgPSBuZXcgVmFsdGltb1VzZXJJZGVudGl0eShcbiAgICAgICAgdXNlci5lbWFpbCxcbiAgICAgICAgdXNlci5maXJzdE5hbWUsXG4gICAgICAgIHVzZXIubGFzdE5hbWUsXG4gICAgICAgIHJvbGVzLFxuICAgICAgICB1c2VyLnVzZXJuYW1lLFxuICAgICAgICB1c2VyLmlkXG4gICAgICApO1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0tleWNsb2FrVXNlclNlcnZpY2U6IGxvYWRlZCB1c2VyIGlkZW50aXR5JywgdmFsdGltb1VzZXJJZGVudGl0eSk7XG4gICAgICB0aGlzLnVzZXJJZGVudGl0eS5uZXh0KHZhbHRpbW9Vc2VySWRlbnRpdHkpO1xuICAgIH0pO1xuICAgIHRoaXMuc2V0UmVmcmVzaFRva2VuKCk7XG4gIH1cblxuICBnZXRVc2VyU3ViamVjdCgpOiBSZXBsYXlTdWJqZWN0PFVzZXJJZGVudGl0eT4ge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdLZXljbG9ha1VzZXJTZXJ2aWNlOiBnZXRVc2VySWRlbnRpdHknKTtcbiAgICByZXR1cm4gdGhpcy51c2VySWRlbnRpdHk7XG4gIH1cblxuICBsb2dvdXQoKTogdm9pZCB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ0tleWNsb2FrVXNlclNlcnZpY2U6IGxvZ291dCcpO1xuICAgIHRoaXMua2V5Y2xvYWtTZXJ2aWNlLmxvZ291dCh0aGlzLmtleWNsb2FrT3B0aW9uc1NlcnZpY2UubG9nb3V0UmVkaXJlY3RVcmkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VG9rZW4oKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnS2V5Y2xvYWtVc2VyU2VydmljZTogZ2V0VG9rZW4nKTtcbiAgICByZXR1cm4gdGhpcy5rZXljbG9ha1NlcnZpY2UuZ2V0VG9rZW4oKTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVRva2VuKG1pblZhbGlkaXR5OiBudW1iZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnS2V5Y2xvYWtVc2VyU2VydmljZTogdXBkYXRlVG9rZW4nKTtcbiAgICByZXR1cm4gdGhpcy5rZXljbG9ha1NlcnZpY2UudXBkYXRlVG9rZW4obWluVmFsaWRpdHkpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuVG9rZW5SZWZyZXNoU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMudG9rZW5SZWZyZXNoU3Vic2NyaXB0aW9uID0gdGhpcy5rZXljbG9ha1NlcnZpY2Uua2V5Y2xvYWtFdmVudHMkLnN1YnNjcmliZShcbiAgICAgIGtleWNsb2FrRXZlbnQgPT4ge1xuICAgICAgICBpZiAoa2V5Y2xvYWtFdmVudC50eXBlID09PSBLZXljbG9ha0V2ZW50VHlwZS5PbkF1dGhSZWZyZXNoU3VjY2Vzcykge1xuICAgICAgICAgIHRoaXMuc2V0UmVmcmVzaFRva2VuKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgX2V4cGlyeVRpbWVNcygpIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5FeHAgLSBEYXRlLm5vdygpIC0gMTAwMDtcbiAgfVxuXG4gIHByaXZhdGUgb3BlblJlZnJlc2hUb2tlblN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJlZnJlc2hUb2tlblN1YnNjcmlwdGlvbiA9IHRoaXMuX3JlZnJlc2hUb2tlbiQuc3Vic2NyaWJlKHJlZnJlc2hUb2tlbiA9PiB7XG4gICAgICBjb25zdCBkZWNvZGVkUmVmcmVzaFRva2VuID0gand0RGVjb2RlKHJlZnJlc2hUb2tlbik7XG4gICAgICB0aGlzLl90b2tlbkV4cCA9IGRlY29kZWRSZWZyZXNoVG9rZW4uZXhwICogMTAwMDtcblxuICAgICAgdGhpcy5jbG9zZUV4cGlyeVRpbWVyU3Vic2NyaXB0aW9uKCk7XG4gICAgICB0aGlzLm9wZW5FeHBpcnlUaW1lclN1YnNjcmlwdGlvbigpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRSZWZyZXNoVG9rZW4oKTogdm9pZCB7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gdGhpcy5rZXljbG9ha1NlcnZpY2UuZ2V0S2V5Y2xvYWtJbnN0YW5jZSgpPy5yZWZyZXNoVG9rZW47XG4gICAgaWYgKHJlZnJlc2hUb2tlbikgdGhpcy5fcmVmcmVzaFRva2VuJC5uZXh0KHJlZnJlc2hUb2tlbik7XG4gIH1cblxuICBwcml2YXRlIG9wZW5FeHBpcnlUaW1lclN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLmV4cGlyeVRpbWVyU3Vic2NyaXB0aW9uID0gdGltZXIoMCwgMTAwMClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLl9leHBpcnlUaW1lTXMgPD0gdGhpcy5GSVZFX01JTlVURVNfTVMpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvdW50ZXIgPSBuZXcgRGF0ZSgwLCAwLCAwLCAwLCAwLCAwKTtcbiAgICAgICAgICAgIHRoaXMuX2NvdW50ZXIuc2V0U2Vjb25kcyh0aGlzLl9leHBpcnlUaW1lTXMgLyAxMDAwKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgICAgICB0aGlzLnByb21wdFNlcnZpY2UucHJvbXB0VmlzaWJsZSQsXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXljbG9hay5leHBpcnlQcm9tcHRUaXRsZScpLFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5Y2xvYWsuZXhwaXJ5UHJvbXB0RGVzY3JpcHRpb24nLCB7XG4gICAgICAgICAgICAgIGV4cGlyeVRpbWU6IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuX2NvdW50ZXIsICdtbTpzcycpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXljbG9hay5leHBpcnlQcm9tcHRDYW5jZWwnKSxcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleWNsb2FrLmV4cGlyeVByb21wdENvbmZpcm0nKSxcbiAgICAgICAgICBdKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKFtwcm9tcHRWaXNpYmxlLCBoZWFkZXJUZXh0LCBib2R5VGV4dCwgY2FuY2VsQnV0dG9uVGV4dCwgY29uZmlybUJ1dHRvblRleHRdKSA9PiB7XG4gICAgICAgIHRoaXMucHJvbXB0U2VydmljZS5pZGVudGlmaWVyJC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShpZGVudGlmaWVyID0+IHtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAoIXByb21wdFZpc2libGUgfHwgaWRlbnRpZmllciAhPT0gdGhpcy5FWFBJUkVfVE9LRU5fQ09ORklSTUFUSU9OKSAmJlxuICAgICAgICAgICAgdGhpcy5fZXhwaXJ5VGltZU1zIDw9IHRoaXMuRklWRV9NSU5VVEVTX01TXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Db25maXJtYXRpb25Qcm9tcHQoaGVhZGVyVGV4dCwgYm9keVRleHQsIGNhbmNlbEJ1dHRvblRleHQsIGNvbmZpcm1CdXR0b25UZXh0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAocHJvbXB0VmlzaWJsZSAmJiBpZGVudGlmaWVyID09PSB0aGlzLkVYUElSRV9UT0tFTl9DT05GSVJNQVRJT04pIHtcbiAgICAgICAgICAgIHRoaXMucHJvbXB0U2VydmljZS5zZXRCb2R5VGV4dChib2R5VGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAodGhpcy5fZXhwaXJ5VGltZU1zIDwgMjAwMCkge1xuICAgICAgICAgIHRoaXMuc2F2ZVVybCgpO1xuICAgICAgICAgIHRoaXMubG9nb3V0KCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUV4cGlyeVRpbWVyU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuZXhwaXJ5VGltZXJTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5Db25maXJtYXRpb25Qcm9tcHQoXG4gICAgaGVhZGVyVGV4dDogc3RyaW5nLFxuICAgIGJvZHlUZXh0OiBzdHJpbmcsXG4gICAgY2FuY2VsQnV0dG9uVGV4dDogc3RyaW5nLFxuICAgIGNvbmZpcm1CdXR0b25UZXh0OiBzdHJpbmdcbiAgKTogdm9pZCB7XG4gICAgdGhpcy5wcm9tcHRTZXJ2aWNlLm9wZW5Qcm9tcHQoe1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5FWFBJUkVfVE9LRU5fQ09ORklSTUFUSU9OLFxuICAgICAgaGVhZGVyVGV4dCxcbiAgICAgIGJvZHlUZXh0LFxuICAgICAgY2FuY2VsQnV0dG9uVGV4dCxcbiAgICAgIGNvbmZpcm1CdXR0b25UZXh0LFxuICAgICAgY2FuY2VsTWRpSWNvbjogJ2xvZ291dCcsXG4gICAgICBjb25maXJtTWRpSWNvbjogJ2NoZWNrJyxcbiAgICAgIGNsb3NlT25Db25maXJtOiB0cnVlLFxuICAgICAgY2xvc2VPbkNhbmNlbDogZmFsc2UsXG4gICAgICBjYW5jZWxDYWxsYmFja0Z1bmN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMua2V5Y2xvYWtTZXJ2aWNlLmxvZ291dCgpO1xuICAgICAgfSxcbiAgICAgIGNvbmZpcm1DYWxsQmFja0Z1bmN0aW9uOiAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VFeHBpcnlUaW1lclN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLnVwZGF0ZVRva2VuKDIwKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNhdmVVcmwoKTogdm9pZCB7XG4gICAgY29uc3QgcmV0dXJuVG9MYXN0VXJsQWZ0ZXJUb2tlbkV4cGlyYXRpb24gPVxuICAgICAgdGhpcy5jb25maWdTZXJ2aWNlPy5jb25maWc/LmZlYXR1cmVUb2dnbGVzPy5yZXR1cm5Ub0xhc3RVcmxBZnRlclRva2VuRXhwaXJhdGlvbjtcblxuICAgIGlmIChyZXR1cm5Ub0xhc3RVcmxBZnRlclRva2VuRXhwaXJhdGlvbikge1xuICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgU1RPUkFHRV9LRVlTLnVybEJlZm9yZUV4cGlyYXRpb24sXG4gICAgICAgIHRoaXMua2V5Y2xvYWtTdG9yYWdlU2VydmljZS5nZXRDdXJyZW50VXJsKClcbiAgICAgICk7XG4gICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFxuICAgICAgICBTVE9SQUdFX0tFWVMudXJsQmVmb3JlRXhwaXJhdGlvblBhcmFtcyxcbiAgICAgICAgdGhpcy5rZXljbG9ha1N0b3JhZ2VTZXJ2aWNlLmdldEN1cnJlbnRVcmxQYXJhbXMoKVxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==