valtech-components 4.0.42 → 4.0.43

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,7 +1,10 @@
1
- import { Component } from '@angular/core';
1
+ import { Component, Inject, Optional } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
+ import { VALTECH_AUTH_CONFIG } from './config';
3
4
  import { SplashComponent } from '../../components/atoms/splash/splash.component';
4
5
  import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/router";
7
+ import * as i2 from "./auth.service";
5
8
  /**
6
9
  * Componente de callback para OAuth.
7
10
  *
@@ -26,7 +29,10 @@ import * as i0 from "@angular/core";
26
29
  * `/auth/oauth/callback?error=INVALID_CODE&error_description=...`
27
30
  */
28
31
  export class OAuthCallbackComponent {
29
- constructor() {
32
+ constructor(router, authService, config) {
33
+ this.router = router;
34
+ this.authService = authService;
35
+ this.config = config;
30
36
  this.message = 'Procesando autenticación...';
31
37
  /**
32
38
  * Nonce que el opener generó y pasó por el flujo (round-trip backend). Se
@@ -38,6 +44,36 @@ export class OAuthCallbackComponent {
38
44
  ngOnInit() {
39
45
  this.processCallback();
40
46
  }
47
+ /**
48
+ * Indica si este callback corre como la VENTANA PRINCIPAL (flujo redirect),
49
+ * no como popup. El popup se abre con window.name 'oauth'/'oauth-link'
50
+ * (OAuthService), nombre que persiste aunque COOP anule window.opener tras el
51
+ * bounce cross-origin. En la ventana principal nadie consume el localStorage,
52
+ * así que el callback debe instalar la sesión y navegar él mismo.
53
+ */
54
+ isMainWindow() {
55
+ if (window.name === 'oauth' || window.name === 'oauth-link')
56
+ return false;
57
+ return !window.opener && window.parent === window;
58
+ }
59
+ /**
60
+ * Completa el login en la ventana principal: instala la sesión desde los
61
+ * tokens del callback y navega al home.
62
+ */
63
+ completeInMainWindow(result) {
64
+ if (!this.authService)
65
+ return false;
66
+ this.authService.setExternalAuth({
67
+ accessToken: result.accessToken,
68
+ refreshToken: result.refreshToken,
69
+ firebaseToken: result.firebaseToken,
70
+ expiresIn: result.expiresIn,
71
+ roles: result.roles,
72
+ permissions: result.permissions,
73
+ });
74
+ this.router.navigateByUrl(this.config?.homeRoute || '/', { replaceUrl: true });
75
+ return true;
76
+ }
41
77
  processCallback() {
42
78
  const params = new URLSearchParams(window.location.search);
43
79
  this.clientNonce = params.get('client_nonce');
@@ -135,6 +171,11 @@ export class OAuthCallbackComponent {
135
171
  type: 'oauth-callback',
136
172
  tokens: result,
137
173
  });
174
+ // Flujo redirect (ventana principal, sin opener que consuma el localStorage):
175
+ // instalar la sesión acá mismo y navegar al home, en vez de quedar pegado.
176
+ if (this.isMainWindow() && this.completeInMainWindow(result)) {
177
+ return;
178
+ }
138
179
  this.message = 'Autenticación exitosa';
139
180
  this.closeAfterDelay();
140
181
  }
@@ -180,7 +221,7 @@ export class OAuthCallbackComponent {
180
221
  }
181
222
  }, 500);
182
223
  }
183
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAuthCallbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAuthCallbackComponent, deps: [{ token: i1.Router }, { token: i2.AuthService, optional: true }, { token: VALTECH_AUTH_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
184
225
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: OAuthCallbackComponent, isStandalone: true, selector: "val-oauth-callback", ngImport: i0, template: `<val-splash />`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SplashComponent, selector: "val-splash", inputs: ["logoLight", "logoDark", "alt"] }] }); }
185
226
  }
186
227
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAuthCallbackComponent, decorators: [{
@@ -193,5 +234,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
193
234
  // casi-duplicado: el callback OAuth es una carga fundamental y debe verse igual.
194
235
  template: `<val-splash />`,
195
236
  }]
196
- }] });
197
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtY2FsbGJhY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL29hdXRoLWNhbGxiYWNrLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7O0FBRWpGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBU0gsTUFBTSxPQUFPLHNCQUFzQjtJQVJuQztRQVNFLFlBQU8sR0FBRyw2QkFBNkIsQ0FBQztRQUV4Qzs7OztXQUlHO1FBQ0ssZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO0tBOEozQztJQTVKQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTyxlQUFlO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBRTlDLGlDQUFpQztRQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLHNDQUFzQyxFQUFFO1lBQ2xELEdBQUcsRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDekIsY0FBYyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDO1lBQzFDLGVBQWUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUM1QyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1lBQzlDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMs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LEVBQUU7WUFDZCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDOytHQXJLVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiw4RUFGdkIsZ0JBQWdCLDJEQUhoQixZQUFZLCtCQUFFLGVBQWU7OzRGQUs1QixzQkFBc0I7a0JBUmxDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxlQUFlLENBQUM7b0JBQ3hDLCtFQUErRTtvQkFDL0UsaUZBQWlGO29CQUNqRixRQUFRLEVBQUUsZ0JBQWdCO2lCQUMzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTUZBTWV0aG9kLCBPQXV0aENhbGxiYWNrRGF0YSwgT0F1dGhSZXN1bHQsIE9BdXRoRXJyb3IgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IFNwbGFzaENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvYXRvbXMvc3BsYXNoL3NwbGFzaC5jb21wb25lbnQnO1xuXG4vKipcbiAqIENvbXBvbmVudGUgZGUgY2FsbGJhY2sgcGFyYSBPQXV0aC5cbiAqXG4gKiBFc3RlIGNvbXBvbmVudGUgcHJvY2VzYSBsYSByZXNwdWVzdGEgZGVsIHNlcnZpZG9yIE9BdXRoIHkgZW52w61hXG4gKiBsb3MgdG9rZW5zIGEgbGEgdmVudGFuYSBwYWRyZSB2aWEgcG9zdE1lc3NhZ2UuXG4gKlxuICogRGViZSBhZ3JlZ2Fyc2UgYSBsYXMgcnV0YXMgZGUgbGEgYXBsaWNhY2nDs246XG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBhcHAucm91dGVzLnRzXG4gKiBpbXBvcnQgeyBPQXV0aENhbGxiYWNrQ29tcG9uZW50IH0gZnJvbSAndmFsdGVjaC1jb21wb25lbnRzJztcbiAqXG4gKiBleHBvcnQgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gKiAgIHsgcGF0aDogJ2F1dGgvb2F1dGgvY2FsbGJhY2snLCBjb21wb25lbnQ6IE9BdXRoQ2FsbGJhY2tDb21wb25lbnQgfSxcbiAqICAgLy8gLi4uIG90cmFzIHJ1dGFzXG4gKiBdO1xuICogYGBgXG4gKlxuICogRWwgYmFja2VuZCByZWRpcmlnZSBhIGVzdGEgcnV0YSBjb24gbG9zIHRva2VucyBlbiBxdWVyeSBwYXJhbXM6XG4gKiBgL2F1dGgvb2F1dGgvY2FsbGJhY2s/YWNjZXNzX3Rva2VuPXh4eCZyZWZyZXNoX3Rva2VuPXh4eCZleHBpcmVzX2luPTkwMGBcbiAqXG4gKiBPIGNvbiBlcnJvcjpcbiAqIGAvYXV0aC9vYXV0aC9jYWxsYmFjaz9lcnJvcj1JTlZBTElEX0NPREUmZXJyb3JfZGVzY3JpcHRpb249Li4uYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtb2F1dGgtY2FsbGJhY2snLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBTcGxhc2hDb21wb25lbnRdLFxuICAvLyBNaXNtbyBzcGxhc2ggZGUgYXJyYW5xdWUgZGUgbGEgYXBwIChsb2dvICsgcHVsc2UpIGVuIHZleiBkZSB1biBsb2FkZXIgcHJvcGlvXG4gIC8vIGNhc2ktZHVwbGljYWRvOiBlbCBjYWxsYmFjayBPQXV0aCBlcyB1bmEgY2FyZ2EgZnVuZGFtZW50YWwgeSBkZWJlIHZlcnNlIGlndWFsLlxuICB0ZW1wbGF0ZTogYDx2YWwtc3BsYXNoIC8+YCxcbn0pXG5leHBvcnQgY2xhc3MgT0F1dGhDYWxsYmFja0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIG1lc3NhZ2UgPSAnUHJvY2VzYW5kbyBhdXRlbnRpY2FjacOzbi4uLic7XG5cbiAgLyoqXG4gICAqIE5vbmNlIHF1ZSBlbCBvcGVuZXIgZ2VuZXLDsyB5IHBhc8OzIHBvciBlbCBmbHVqbyAocm91bmQtdHJpcCBiYWNrZW5kKS4gU2VcbiAgICogcmVlbnbDrWEgYWwgb3BlbmVyIGVuIGNhZGEgbWVuc2FqZSBwYXJhIHF1ZSB2ZXJpZmlxdWUgZWwgb3JpZ2VuIGRlbCBjYWxsYmFja1xuICAgKiB5IHJlY2hhY2UgdW4gb2F1dGhfY2FsbGJhY2tfZGF0YSBmb3JqYWRvIGVuIGxvY2FsU3RvcmFnZSBwb3IgWFNTIChNLTA3KS5cbiAgICovXG4gIHByaXZhdGUgY2xpZW50Tm9uY2U6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucHJvY2Vzc0NhbGxiYWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHByb2Nlc3NDYWxsYmFjaygpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIHRoaXMuY2xpZW50Tm9uY2UgPSBwYXJhbXMuZ2V0KCdjbGllbnRfbm9uY2UnKTtcblxuICAgIC8vIERFQlVHOiBMb2cgYWxsIHJlY2VpdmVkIHBhcmFtc1xuICAgIGNvbnNvbGUubG9nKCdbT0F1dGhDYWxsYmFja10gVVJMIHBhcmFtcyByZWNlaXZlZDonLCB7XG4gICAgICB1cmw6IHdpbmRvdy5sb2NhdGlvbi5ocmVmLFxuICAgICAgaGFzQWNjZXNzVG9rZW46IHBhcmFtcy5oYXMoJ2FjY2Vzc190b2tlbicpLFxuICAgICAgaGFzUmVmcmVzaFRva2VuOiBwYXJhbXMuaGFzKCdyZWZyZXNoX3Rva2VuJyksXG4gICAgICBoYXNGaXJlYmFzZVRva2VuOiBwYXJhbXMuaGFzKCdmaXJlYmFzZV90b2tlbicpLFxuICAgICAgZmlyZWJhc2VUb2tlbkxlbmd0aDogcGFyYW1zLmdldCgnZmlyZWJhc2VfdG9rZW4nKT8ubGVuZ3RoIHx8IDAsXG4gICAgICBlcnJvcjogcGFyYW1zLmdldCgnZXJyb3InKSxcbiAgICB9KTtcblxuICAgIC8vIFZlcmlmaWNhciBzaSBoYXkgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHBhcmFtcy5nZXQoJ2Vycm9yJyk7XG4gICAgaWYgKGVycm9yKSB7XG4gICAgICB0aGlzLnNlbmRUb1BhcmVudCh7XG4gICAgICAgIHR5cGU6ICdvYXV0aC1jYWxsYmFjaycsXG4gICAgICAgIGVycm9yOiB7XG4gICAgICAgICAgY29kZTogZXJyb3IsXG4gICAgICAgICAgbWVzc2FnZTogcGFyYW1zLmdldCgnZXJyb3JfZGVzY3JpcHRpb24nKSB8fCAnRXJyb3IgZGUgYXV0ZW50aWNhY2nDs24nLFxuICAgICAgICB9IGFzIE9BdXRoRXJyb3IsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubWVzc2FnZSA9ICdFcnJvciBkZSBhdXRlbnRpY2FjacOzbic7XG4gICAgICB0aGlzLmNsb3NlQWZ0ZXJEZWxheSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIE1GQSByZXF1ZXJpZG8g4oCUIGVsIGJhY2tlbmQgcmVkaXJpZ2Ugc2luIHRva2VucywgY29uIG1mYV90b2tlbi4gRWwgZmx1am9cbiAgICAvLyBjb250aW7DumEgY29uIGVsIGNoYWxsZW5nZSBNRkEgKEF1dGhTZXJ2aWNlLnNldE1GQVBlbmRpbmcg4oaSIG1vZGFsIHZlcmlmeSkuXG4gICAgaWYgKHBhcmFtcy5nZXQoJ21mYV9yZXF1aXJlZCcpID09PSAndHJ1ZScpIHtcbiAgICAgIHRoaXMuc2VuZFRvUGFyZW50KHtcbiAgICAgICAgdHlwZTogJ29hdXRoLWNhbGxiYWNrJyxcbiAgICAgICAgdG9rZW5zOiB7XG4gICAgICAgICAgYWNjZXNzVG9rZW46ICcnLFxuICAgICAgICAgIHJlZnJlc2hUb2tlbjogJycsXG4gICAgICAgICAgZXhwaXJlc0luOiAwLFxuICAgICAgICAgIG1mYVJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgIG1mYVRva2VuOiBwYXJhbXMuZ2V0KCdtZmFfdG9rZW4nKSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgbWZhTWV0aG9kOiAocGFyYW1zLmdldCgnbWZhX21ldGhvZCcpIGFzIE1GQU1ldGhvZCkgfHwgdW5kZWZpbmVkLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLm1lc3NhZ2UgPSAnVmVyaWZpY2FjacOzbiBhZGljaW9uYWwgcmVxdWVyaWRhJztcbiAgICAgIHRoaXMuY2xvc2VBZnRlckRlbGF5KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRXh0cmFlciB0b2tlbnNcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IHBhcmFtcy5nZXQoJ2FjY2Vzc190b2tlbicpO1xuICAgIGNvbnN0IHJlZnJlc2hUb2tlbiA9IHBhcmFtcy5nZXQoJ3JlZnJlc2hfdG9rZW4nKTtcbiAgICBjb25zdCBleHBpcmVzSW4gPSBwYXJhbXMuZ2V0KCdleHBpcmVzX2luJyk7XG4gICAgY29uc3QgZmlyZWJhc2VUb2tlbiA9IHBhcmFtcy5nZXQoJ2ZpcmViYXNlX3Rva2VuJyk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuIHx8ICFyZWZyZXNoVG9rZW4pIHtcbiAgICAgIHRoaXMuc2VuZFRvUGFyZW50KHtcbiAgICAgICAgdHlwZTogJ29hdXRoLWNhbGxiYWNrJyxcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBjb2RlOiAnTUlTU0lOR19UT0tFTlMnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdObyBzZSByZWNpYmllcm9uIGxvcyB0b2tlbnMgZGUgYXV0ZW50aWNhY2nDs24nLFxuICAgICAgICB9IGFzIE9BdXRoRXJyb3IsXG4gICAgICB9KTtcbiAgICAgIHRoaXMubWVzc2FnZSA9ICdFcnJvcjogdG9rZW5zIG5vIHJlY2liaWRvcyc7XG4gICAgICB0aGlzLmNsb3NlQWZ0ZXJEZWxheSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIEV4dHJhZXIgcm9sZXMgeSBwZXJtaXNvcyAocHVlZGVuIHZlbmlyIGNvbW8gSlNPTiBlbiBiYXNlNjQpXG4gICAgbGV0IHJvbGVzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcbiAgICBsZXQgcGVybWlzc2lvbnM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuXG4gICAgY29uc3Qgcm9sZXNQYXJhbSA9IHBhcmFtcy5nZXQoJ3JvbGVzJyk7XG4gICAgY29uc3QgcGVybWlzc2lvbnNQYXJhbSA9IHBhcmFtcy5nZXQoJ3Blcm1pc3Npb25zJyk7XG5cbiAgICBpZiAocm9sZXNQYXJhbSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcm9sZXMgPSBKU09OLnBhcnNlKGF0b2Iocm9sZXNQYXJhbSkpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJvbGVzID0gcm9sZXNQYXJhbS5zcGxpdCgnLCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChwZXJtaXNzaW9uc1BhcmFtKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwZXJtaXNzaW9ucyA9IEpTT04ucGFyc2UoYXRvYihwZXJtaXNzaW9uc1BhcmFtKSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcGVybWlzc2lvbnMgPSBwZXJtaXNzaW9uc1BhcmFtLnNwbGl0KCcsJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRW52aWFyIHRva2VucyBhIGxhIHZlbnRhbmEgcGFkcmVcbiAgICBjb25zdCByZXN1bHQ6IE9BdXRoUmVzdWx0ID0ge1xuICAgICAgYWNjZXNzVG9rZW4sXG4gICAgICByZWZyZXNoVG9rZW4sXG4gICAgICBleHBpcmVzSW46IGV4cGlyZXNJbiA/IHBhcnNlSW50KGV4cGlyZXNJbiwgMTApIDogOTAwLFxuICAgICAgZmlyZWJhc2VUb2tlbjogZmlyZWJhc2VUb2tlbiB8fCB1bmRlZmluZWQsXG4gICAgICByb2xlcyxcbiAgICAgIHBlcm1pc3Npb25zLFxuICAgICAgaXNOZXdVc2VyOiBwYXJhbXMuZ2V0KCdpc19uZXdfdXNlcicpID09PSAndHJ1ZScsXG4gICAgICBsaW5rZWQ6IHBhcmFtcy5nZXQoJ2xpbmtlZCcpID09PSAndHJ1ZScsXG4gICAgfTtcblxuICAgIHRoaXMuc2VuZFRvUGFyZW50KHtcbiAgICAgIHR5cGU6ICdvYXV0aC1jYWxsYmFjaycsXG4gICAgICB0b2tlbnM6IHJlc3VsdCxcbiAgICB9KTtcblxuICAgIHRoaXMubWVzc2FnZSA9ICdBdXRlbnRpY2FjacOzbiBleGl0b3NhJztcbiAgICB0aGlzLmNsb3NlQWZ0ZXJEZWxheSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kVG9QYXJlbnQoZGF0YTogT0F1dGhDYWxsYmFja0RhdGEpOiB2b2lkIHtcbiAgICAvLyBBZGp1bnRhciBlbCBub25jZSBkZWwgb3BlbmVyIChNLTA3KSBhIFRPRE8gbWVuc2FqZSAoc3VjY2VzcywgTUZBLCBlcnJvcilcbiAgICAvLyBwYXJhIHF1ZSBlbCBvcGVuZXIgdmVyaWZpcXVlIHF1ZSBlbCBjYWxsYmFjayBlcyBkZSBzdSBwcm9waW8gZmx1am8uXG4gICAgaWYgKHRoaXMuY2xpZW50Tm9uY2UpIHtcbiAgICAgIGRhdGEubm9uY2UgPSB0aGlzLmNsaWVudE5vbmNlO1xuICAgIH1cblxuICAgIC8vIFNpZW1wcmUgZ3VhcmRhciBlbiBsb2NhbFN0b3JhZ2UgY29tbyBmYWxsYmFjayAocGFyYSBDT09QIGlzc3VlcylcbiAgICB0cnkge1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ29hdXRoX2NhbGxiYWNrX2RhdGEnLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnb2F1dGhfY2FsbGJhY2tfdGltZXN0YW1wJywgRGF0ZS5ub3coKS50b1N0cmluZygpKTtcbiAgICAgIGNvbnNvbGUubG9nKCdbT0F1dGhDYWxsYmFja10gU2F2ZWQgdG8gbG9jYWxTdG9yYWdlIGFzIGZhbGxiYWNrJyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdbT0F1dGhDYWxsYmFja10gQ291bGQgbm90IHNhdmUgdG8gbG9jYWxTdG9yYWdlOicsIGUpO1xuICAgIH1cblxuICAgIC8vIEludGVudGFyIHBvc3RNZXNzYWdlIChwdWVkZSBmYWxsYXIgcG9yIENPT1ApXG4gICAgdHJ5IHtcbiAgICAgIGlmICh3aW5kb3cub3BlbmVyICYmICF3aW5kb3cub3BlbmVyLmNsb3NlZCkge1xuICAgICAgICB3aW5kb3cub3BlbmVyLnBvc3RNZXNzYWdlKGRhdGEsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO1xuICAgICAgICBjb25zb2xlLmxvZygnW09BdXRoQ2FsbGJhY2tdIHBvc3RNZXNzYWdlIHNlbnQgdG8gb3BlbmVyJyk7XG4gICAgICB9IGVsc2UgaWYgKHdpbmRvdy5wYXJlbnQgIT09IHdpbmRvdykge1xuICAgICAgICB3aW5kb3cucGFyZW50LnBvc3RNZXNzYWdlKGRhdGEsIHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pO1xuICAgICAgICBjb25zb2xlLmxvZygnW09BdXRoQ2FsbGJhY2tdIHBvc3RNZXNzYWdlIHNlbnQgdG8gcGFyZW50Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zb2xlLmxvZygnW09BdXRoQ2FsbGJhY2tdIE5vIG9wZW5lci9wYXJlbnQgYXZhaWxhYmxlLCB1c2luZyBsb2NhbFN0b3JhZ2Ugb25seScpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIENPT1AgYmxvY2tzIHBvc3RNZXNzYWdlIC0gbG9jYWxTdG9yYWdlIGZhbGxiYWNrIGFscmVhZHkgc2F2ZWRcbiAgICAgIGNvbnNvbGUud2FybignW09BdXRoQ2FsbGJhY2tdIHBvc3RNZXNzYWdlIGJsb2NrZWQgKENPT1ApLCB1c2luZyBsb2NhbFN0b3JhZ2UgZmFsbGJhY2s6JywgZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9zZUFmdGVyRGVsYXkoKTogdm9pZCB7XG4gICAgLy8gRGFyIHRpZW1wbyBwYXJhIHF1ZSBlbCBtZW5zYWplIHNlIGVudsOtZSBhbnRlcyBkZSBjZXJyYXJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh3aW5kb3cub3BlbmVyKSB7XG4gICAgICAgIHdpbmRvdy5jbG9zZSgpO1xuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cbn1cbiJdfQ==
237
+ }], ctorParameters: () => [{ type: i1.Router }, { type: i2.AuthService, decorators: [{
238
+ type: Optional
239
+ }] }, { type: undefined, decorators: [{
240
+ type: Optional
241
+ }, {
242
+ type: Inject,
243
+ args: [VALTECH_AUTH_CONFIG]
244
+ }] }] });
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtY2FsbGJhY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9hdXRoL29hdXRoLWNhbGxiYWNrLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUUvQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7Ozs7QUFFakY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFTSCxNQUFNLE9BQU8sc0JBQXNCO0lBVWpDLFlBQ1UsTUFBYyxFQUNGLFdBQStCLEVBQ0YsTUFBZ0M7UUFGekUsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNGLGdCQUFXLEdBQVgsV0FBVyxDQUFvQjtRQUNGLFdBQU0sR0FBTixNQUFNLENBQTBCO1FBWm5GLFlBQU8sR0FBRyw2QkFBNkIsQ0FBQztRQUV4Qzs7OztXQUlHO1FBQ0ssZ0JBQVcsR0FBa0IsSUFBSSxDQUFDO0lBTXZDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSyxZQUFZO1FBQ2xCLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxZQUFZO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDMUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUM7SUFDcEQsQ0FBQztJQUVEOzs7T0FHRztJQUNLLG9CQUFvQixDQUFDLE1BQW1CO1FBQzlDLElBQUks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QUFDO0lBQ0gsQ0FBQztJQUVPLGVBQWU7UUFDckIsMERBQTBEO1FBQzFELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbEIsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDVixDQUFDOytHQS9NVSxzQkFBc0IsbUZBYVgsbUJBQW1CO21HQWI5QixzQkFBc0IsOEVBRnZCLGdCQUFnQiwyREFIaEIsWUFBWSwrQkFBRSxlQUFlOzs0RkFLNUIsc0JBQXNCO2tCQVJsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxvQkFBb0I7b0JBQzlCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDO29CQUN4QywrRUFBK0U7b0JBQy9FLGlGQUFpRjtvQkFDakYsUUFBUSxFQUFFLGdCQUFnQjtpQkFDM0I7OzBCQWFJLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTUZBTWV0aG9kLCBPQXV0aENhbGxiYWNrRGF0YSwgT0F1dGhSZXN1bHQsIE9BdXRoRXJyb3IsIFZhbHRlY2hBdXRoQ29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBWQUxURUNIX0FVVEhfQ09ORklHIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBTcGxhc2hDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2F0b21zL3NwbGFzaC9zcGxhc2guY29tcG9uZW50JztcblxuLyoqXG4gKiBDb21wb25lbnRlIGRlIGNhbGxiYWNrIHBhcmEgT0F1dGguXG4gKlxuICogRXN0ZSBjb21wb25lbnRlIHByb2Nlc2EgbGEgcmVzcHVlc3RhIGRlbCBzZXJ2aWRvciBPQXV0aCB5IGVudsOtYVxuICogbG9zIHRva2VucyBhIGxhIHZlbnRhbmEgcGFkcmUgdmlhIHBvc3RNZXNzYWdlLlxuICpcbiAqIERlYmUgYWdyZWdhcnNlIGEgbGFzIHJ1dGFzIGRlIGxhIGFwbGljYWNpw7NuOlxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gYXBwLnJvdXRlcy50c1xuICogaW1wb3J0IHsgT0F1dGhDYWxsYmFja0NvbXBvbmVudCB9IGZyb20gJ3ZhbHRlY2gtY29tcG9uZW50cyc7XG4gKlxuICogZXhwb3J0IGNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICogICB7IHBhdGg6ICdhdXRoL29hdXRoL2NhbGxiYWNrJywgY29tcG9uZW50OiBPQXV0aENhbGxiYWNrQ29tcG9uZW50IH0sXG4gKiAgIC8vIC4uLiBvdHJhcyBydXRhc1xuICogXTtcbiAqIGBgYFxuICpcbiAqIEVsIGJhY2tlbmQgcmVkaXJpZ2UgYSBlc3RhIHJ1dGEgY29uIGxvcyB0b2tlbnMgZW4gcXVlcnkgcGFyYW1zOlxuICogYC9hdXRoL29hdXRoL2NhbGxiYWNrP2FjY2Vzc190b2tlbj14eHgmcmVmcmVzaF90b2tlbj14eHgmZXhwaXJlc19pbj05MDBgXG4gKlxuICogTyBjb24gZXJyb3I6XG4gKiBgL2F1dGgvb2F1dGgvY2FsbGJhY2s/ZXJyb3I9SU5WQUxJRF9DT0RFJmVycm9yX2Rlc2NyaXB0aW9uPS4uLmBcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW9hdXRoLWNhbGxiYWNrJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgU3BsYXNoQ29tcG9uZW50XSxcbiAgLy8gTWlzbW8gc3BsYXNoIGRlIGFycmFucXVlIGRlIGxhIGFwcCAobG9nbyArIHB1bHNlKSBlbiB2ZXogZGUgdW4gbG9hZGVyIHByb3Bpb1xuICAvLyBjYXNpLWR1cGxpY2FkbzogZWwgY2FsbGJhY2sgT0F1dGggZXMgdW5hIGNhcmdhIGZ1bmRhbWVudGFsIHkgZGViZSB2ZXJzZSBpZ3VhbC5cbiAgdGVtcGxhdGU6IGA8dmFsLXNwbGFzaCAvPmAsXG59KVxuZXhwb3J0IGNsYXNzIE9BdXRoQ2FsbGJhY2tDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBtZXNzYWdlID0gJ1Byb2Nlc2FuZG8gYXV0ZW50aWNhY2nDs24uLi4nO1xuXG4gIC8qKlxuICAgKiBOb25jZSBxdWUgZWwgb3BlbmVyIGdlbmVyw7MgeSBwYXPDsyBwb3IgZWwgZmx1am8gKHJvdW5kLXRyaXAgYmFja2VuZCkuIFNlXG4gICAqIHJlZW52w61hIGFsIG9wZW5lciBlbiBjYWRhIG1lbnNhamUgcGFyYSBxdWUgdmVyaWZpcXVlIGVsIG9yaWdlbiBkZWwgY2FsbGJhY2tcbiAgICogeSByZWNoYWNlIHVuIG9hdXRoX2NhbGxiYWNrX2RhdGEgZm9yamFkbyBlbiBsb2NhbFN0b3JhZ2UgcG9yIFhTUyAoTS0wNykuXG4gICAqL1xuICBwcml2YXRlIGNsaWVudE5vbmNlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlIHwgbnVsbCxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQXV0aENvbmZpZyB8IG51bGxcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMucHJvY2Vzc0NhbGxiYWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhIHNpIGVzdGUgY2FsbGJhY2sgY29ycmUgY29tbyBsYSBWRU5UQU5BIFBSSU5DSVBBTCAoZmx1am8gcmVkaXJlY3QpLFxuICAgKiBubyBjb21vIHBvcHVwLiBFbCBwb3B1cCBzZSBhYnJlIGNvbiB3aW5kb3cubmFtZSAnb2F1dGgnLydvYXV0aC1saW5rJ1xuICAgKiAoT0F1dGhTZXJ2aWNlKSwgbm9tYnJlIHF1ZSBwZXJzaXN0ZSBhdW5xdWUgQ09PUCBhbnVsZSB3aW5kb3cub3BlbmVyIHRyYXMgZWxcbiAgICogYm91bmNlIGNyb3NzLW9yaWdpbi4gRW4gbGEgdmVudGFuYSBwcmluY2lwYWwgbmFkaWUgY29uc3VtZSBlbCBsb2NhbFN0b3JhZ2UsXG4gICAqIGFzw60gcXVlIGVsIGNhbGxiYWNrIGRlYmUgaW5zdGFsYXIgbGEgc2VzacOzbiB5IG5hdmVnYXIgw6lsIG1pc21vLlxuICAgKi9cbiAgcHJpdmF0ZSBpc01haW5XaW5kb3coKTogYm9vbGVhbiB7XG4gICAgaWYgKHdpbmRvdy5uYW1lID09PSAnb2F1dGgnIHx8IHdpbmRvdy5uYW1lID09PSAnb2F1dGgtbGluaycpIHJldHVybiBmYWxzZTtcbiAgICByZXR1cm4gIXdpbmRvdy5vcGVuZXIgJiYgd2luZG93LnBhcmVudCA9PT0gd2luZG93O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbXBsZXRhIGVsIGxvZ2luIGVuIGxhIHZlbnRhbmEgcHJpbmNpcGFsOiBpbnN0YWxhIGxhIHNlc2nDs24gZGVzZGUgbG9zXG4gICAqIHRva2VucyBkZWwgY2FsbGJhY2sgeSBuYXZlZ2EgYWwgaG9tZS5cbiAgICovXG4gIHByaXZhdGUgY29tcGxldGVJbk1haW5XaW5kb3cocmVzdWx0OiBPQXV0aFJlc3VsdCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5hdXRoU2VydmljZSkgcmV0dXJuIGZhbHNlO1xuICAgIHRoaXMuYXV0aFNlcnZpY2Uuc2V0RXh0ZXJuYWxBdXRoKHtcbiAgICAgIGFjY2Vzc1Rva2VuOiByZXN1bHQuYWNjZXNzVG9rZW4sXG4gICAgICByZWZyZXNoVG9rZW46IHJlc3VsdC5yZWZyZXNoVG9rZW4sXG4gICAgICBmaXJlYmFzZVRva2VuOiByZXN1bHQuZmlyZWJhc2VUb2tlbixcbiAgICAgIGV4cGlyZXNJbjogcmVzdWx0LmV4cGlyZXNJbixcbiAgICAgIHJvbGVzOiByZXN1bHQucm9sZXMsXG4gICAgICBwZXJtaXNzaW9uczogcmVzdWx0LnBlcm1pc3Npb25zLFxuICAgIH0pO1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodGhpcy5jb25maWc/LmhvbWVSb3V0ZSB8fCAnLycsIHsgcmVwbGFjZVVybDogdHJ1ZSB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHByaXZhdGUgcHJvY2Vzc0NhbGxiYWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgdGhpcy5jbGllbnROb25jZSA9IHBhcmFtcy5nZXQoJ2NsaWVudF9ub25jZScpO1xuXG4gICAgLy8gREVCVUc6IExvZyBhbGwgcmVjZWl2ZWQgcGFyYW1zXG4gICAgY29uc29sZS5sb2coJ1tPQXV0aENhbGxiYWNrXSBVUkwgcGFyYW1zIHJlY2VpdmVkOicsIHtcbiAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICBoYXNBY2Nlc3NUb2tlbjogcGFyYW1zLmhhcygnYWNjZXNzX3Rva2VuJyksXG4gICAgICBoYXNSZWZyZXNoVG9rZW46IHBhcmFtcy5oYXMoJ3JlZnJlc2hfdG9rZW4nKSxcbiAgICAgIGhhc0ZpcmViYXNlVG9rZW46IHBhcmFtcy5oYXMoJ2ZpcmViYXNlX3Rva2VuJyksXG4gICAgICBmaXJlYmFzZVRva2VuTGVuZ3RoOiBwYXJhbXMuZ2V0KCdmaXJlYmFzZV90b2tlbicpPy5sZW5ndGggfHwgMCxcbiAgICAgIGVycm9yOiBwYXJhbXMuZ2V0KCdlcnJvcicpLFxuICAgIH0pO1xuXG4gICAgLy8gVmVyaWZpY2FyIHNpIGhheSBlcnJvclxuICAgIGNvbnN0IGVycm9yID0gcGFyYW1zLmdldCgnZXJyb3InKTtcbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIHRoaXMuc2VuZFRvUGFyZW50KHtcbiAgICAgICAgdHlwZTogJ29hdXRoLWNhbGxiYWNrJyxcbiAgICAgICAgZXJyb3I6IHtcbiAgICAgICAgICBjb2RlOiBlcnJvcixcbiAgICAgICAgICBtZXNzYWdlOiBwYXJhbXMuZ2V0KCdlcnJvcl9kZXNjcmlwdGlvbicpIHx8ICdFcnJvciBkZSBhdXRlbnRpY2FjacOzbicsXG4gICAgICAgIH0gYXMgT0F1dGhFcnJvcixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5tZXNzYWdlID0gJ0Vycm9yIGRlIGF1dGVudGljYWNpw7NuJztcbiAgICAgIHRoaXMuY2xvc2VBZnRlckRlbGF5KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gTUZBIHJlcXVlcmlkbyDigJQgZWwgYmFja2VuZCByZWRpcmlnZSBzaW4gdG9rZW5zLCBjb24gbWZhX3Rva2VuLiBFbCBmbHVqb1xuICAgIC8vIGNvbnRpbsO6YSBjb24gZWwgY2hhbGxlbmdlIE1GQSAoQXV0aFNlcnZpY2Uuc2V0TUZBUGVuZGluZyDihpIgbW9kYWwgdmVyaWZ5KS5cbiAgICBpZiAocGFyYW1zLmdldCgnbWZhX3JlcXVpcmVkJykgPT09ICd0cnVlJykge1xuICAgICAgdGhpcy5zZW5kVG9QYXJlbnQoe1xuICAgICAgICB0eXBlOiAnb2F1dGgtY2FsbGJhY2snLFxuICAgICAgICB0b2tlbnM6IHtcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogJycsXG4gICAgICAgICAgcmVmcmVzaFRva2VuOiAnJyxcbiAgICAgICAgICBleHBpcmVzSW46IDAsXG4gICAgICAgICAgbWZhUmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgbWZhVG9rZW46IHBhcmFtcy5nZXQoJ21mYV90b2tlbicpIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICBtZmFNZXRob2Q6IChwYXJhbXMuZ2V0KCdtZmFfbWV0aG9kJykgYXMgTUZBTWV0aG9kKSB8fCB1bmRlZmluZWQsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHRoaXMubWVzc2FnZSA9ICdWZXJpZmljYWNpw7NuIGFkaWNpb25hbCByZXF1ZXJpZGEnO1xuICAgICAgdGhpcy5jbG9zZUFmdGVyRGVsYXkoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBFeHRyYWVyIHRva2Vuc1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gcGFyYW1zLmdldCgnYWNjZXNzX3Rva2VuJyk7XG4gICAgY29uc3QgcmVmcmVzaFRva2VuID0gcGFyYW1zLmdldCgncmVmcmVzaF90b2tlbicpO1xuICAgIGNvbnN0IGV4cGlyZXNJbiA9IHBhcmFtcy5nZXQoJ2V4cGlyZXNfaW4nKTtcbiAgICBjb25zdCBmaXJlYmFzZVRva2VuID0gcGFyYW1zLmdldCgnZmlyZWJhc2VfdG9rZW4nKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4gfHwgIXJlZnJlc2hUb2tlbikge1xuICAgICAgdGhpcy5zZW5kVG9QYXJlbnQoe1xuICAgICAgICB0eXBlOiAnb2F1dGgtY2FsbGJhY2snLFxuICAgICAgICBlcnJvcjoge1xuICAgICAgICAgIGNvZGU6ICdNSVNTSU5HX1RPS0VOUycsXG4gICAgICAgICAgbWVzc2FnZTogJ05vIHNlIHJlY2liaWVyb24gbG9zIHRva2VucyBkZSBhdXRlbnRpY2FjacOzbicsXG4gICAgICAgIH0gYXMgT0F1dGhFcnJvcixcbiAgICAgIH0pO1xuICAgICAgdGhpcy5tZXNzYWdlID0gJ0Vycm9yOiB0b2tlbnMgbm8gcmVjaWJpZG9zJztcbiAgICAgIHRoaXMuY2xvc2VBZnRlckRlbGF5KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gRXh0cmFlciByb2xlcyB5IHBlcm1pc29zIChwdWVkZW4gdmVuaXIgY29tbyBKU09OIGVuIGJhc2U2NClcbiAgICBsZXQgcm9sZXM6IHN0cmluZ1tdIHwgdW5kZWZpbmVkO1xuICAgIGxldCBwZXJtaXNzaW9uczogc3RyaW5nW10gfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByb2xlc1BhcmFtID0gcGFyYW1zLmdldCgncm9sZXMnKTtcbiAgICBjb25zdCBwZXJtaXNzaW9uc1BhcmFtID0gcGFyYW1zLmdldCgncGVybWlzc2lvbnMnKTtcblxuICAgIGlmIChyb2xlc1BhcmFtKSB7XG4gICAgICB0cnkge1xuICAgICAgICByb2xlcyA9IEpTT04ucGFyc2UoYXRvYihyb2xlc1BhcmFtKSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcm9sZXMgPSByb2xlc1BhcmFtLnNwbGl0KCcsJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBlcm1pc3Npb25zUGFyYW0pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHBlcm1pc3Npb25zID0gSlNPTi5wYXJzZShhdG9iKHBlcm1pc3Npb25zUGFyYW0pKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICBwZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zUGFyYW0uc3BsaXQoJywnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFbnZpYXIgdG9rZW5zIGEgbGEgdmVudGFuYSBwYWRyZVxuICAgIGNvbnN0IHJlc3VsdDogT0F1dGhSZXN1bHQgPSB7XG4gICAgICBhY2Nlc3NUb2tlbixcbiAgICAgIHJlZnJlc2hUb2tlbixcbiAgICAgIGV4cGlyZXNJbjogZXhwaXJlc0luID8gcGFyc2VJbnQoZXhwaXJlc0luLCAxMCkgOiA5MDAsXG4gICAgICBmaXJlYmFzZVRva2VuOiBmaXJlYmFzZVRva2VuIHx8IHVuZGVmaW5lZCxcbiAgICAgIHJvbGVzLFxuICAgICAgcGVybWlzc2lvbnMsXG4gICAgICBpc05ld1VzZXI6IHBhcmFtcy5nZXQoJ2lzX25ld191c2VyJykgPT09ICd0cnVlJyxcbiAgICAgIGxpbmtlZDogcGFyYW1zLmdldCgnbGlua2VkJykgPT09ICd0cnVlJyxcbiAgICB9O1xuXG4gICAgdGhpcy5zZW5kVG9QYXJlbnQoe1xuICAgICAgdHlwZTogJ29hdXRoLWNhbGxiYWNrJyxcbiAgICAgIHRva2VuczogcmVzdWx0LFxuICAgIH0pO1xuXG4gICAgLy8gRmx1am8gcmVkaXJlY3QgKHZlbnRhbmEgcHJpbmNpcGFsLCBzaW4gb3BlbmVyIHF1ZSBjb25zdW1hIGVsIGxvY2FsU3RvcmFnZSk6XG4gICAgLy8gaW5zdGFsYXIgbGEgc2VzacOzbiBhY8OhIG1pc21vIHkgbmF2ZWdhciBhbCBob21lLCBlbiB2ZXogZGUgcXVlZGFyIHBlZ2Fkby5cbiAgICBpZiAodGhpcy5pc01haW5XaW5kb3coKSAmJiB0aGlzLmNvbXBsZXRlSW5NYWluV2luZG93KHJlc3VsdCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLm1lc3NhZ2UgPSAnQXV0ZW50aWNhY2nDs24gZXhpdG9zYSc7XG4gICAgdGhpcy5jbG9zZUFmdGVyRGVsYXkoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2VuZFRvUGFyZW50KGRhdGE6IE9BdXRoQ2FsbGJhY2tEYXRhKTogdm9pZCB7XG4gICAgLy8gQWRqdW50YXIgZWwgbm9uY2UgZGVsIG9wZW5lciAoTS0wNykgYSBUT0RPIG1lbnNhamUgKHN1Y2Nlc3MsIE1GQSwgZXJyb3IpXG4gICAgLy8gcGFyYSBxdWUgZWwgb3BlbmVyIHZlcmlmaXF1ZSBxdWUgZWwgY2FsbGJhY2sgZXMgZGUgc3UgcHJvcGlvIGZsdWpvLlxuICAgIGlmICh0aGlzLmNsaWVudE5vbmNlKSB7XG4gICAgICBkYXRhLm5vbmNlID0gdGhpcy5jbGllbnROb25jZTtcbiAgICB9XG5cbiAgICAvLyBTaWVtcHJlIGd1YXJkYXIgZW4gbG9jYWxTdG9yYWdlIGNvbW8gZmFsbGJhY2sgKHBhcmEgQ09PUCBpc3N1ZXMpXG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdvYXV0aF9jYWxsYmFja19kYXRhJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ29hdXRoX2NhbGxiYWNrX3RpbWVzdGFtcCcsIERhdGUubm93KCkudG9TdHJpbmcoKSk7XG4gICAgICBjb25zb2xlLmxvZygnW09BdXRoQ2FsbGJhY2tdIFNhdmVkIHRvIGxvY2FsU3RvcmFnZSBhcyBmYWxsYmFjaycpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUud2FybignW09BdXRoQ2FsbGJhY2tdIENvdWxkIG5vdCBzYXZlIHRvIGxvY2FsU3RvcmFnZTonLCBlKTtcbiAgICB9XG5cbiAgICAvLyBJbnRlbnRhciBwb3N0TWVzc2FnZSAocHVlZGUgZmFsbGFyIHBvciBDT09QKVxuICAgIHRyeSB7XG4gICAgICBpZiAod2luZG93Lm9wZW5lciAmJiAhd2luZG93Lm9wZW5lci5jbG9zZWQpIHtcbiAgICAgICAgd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShkYXRhLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1tPQXV0aENhbGxiYWNrXSBwb3N0TWVzc2FnZSBzZW50IHRvIG9wZW5lcicpO1xuICAgICAgfSBlbHNlIGlmICh3aW5kb3cucGFyZW50ICE9PSB3aW5kb3cpIHtcbiAgICAgICAgd2luZG93LnBhcmVudC5wb3N0TWVzc2FnZShkYXRhLCB3aW5kb3cubG9jYXRpb24ub3JpZ2luKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1tPQXV0aENhbGxiYWNrXSBwb3N0TWVzc2FnZSBzZW50IHRvIHBhcmVudCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coJ1tPQXV0aENhbGxiYWNrXSBObyBvcGVuZXIvcGFyZW50IGF2YWlsYWJsZSwgdXNpbmcgbG9jYWxTdG9yYWdlIG9ubHknKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBDT09QIGJsb2NrcyBwb3N0TWVzc2FnZSAtIGxvY2FsU3RvcmFnZSBmYWxsYmFjayBhbHJlYWR5IHNhdmVkXG4gICAgICBjb25zb2xlLndhcm4oJ1tPQXV0aENhbGxiYWNrXSBwb3N0TWVzc2FnZSBibG9ja2VkIChDT09QKSwgdXNpbmcgbG9jYWxTdG9yYWdlIGZhbGxiYWNrOicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VBZnRlckRlbGF5KCk6IHZvaWQge1xuICAgIC8vIERhciB0aWVtcG8gcGFyYSBxdWUgZWwgbWVuc2FqZSBzZSBlbnbDrWUgYW50ZXMgZGUgY2VycmFyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAod2luZG93Lm9wZW5lcikge1xuICAgICAgICB3aW5kb3cuY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG59XG4iXX0=
@@ -2,5 +2,5 @@
2
2
  * Current version of valtech-components.
3
3
  * This is automatically updated during the publish process.
4
4
  */
5
- export const VERSION = '4.0.42';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC40Mic7XG4iXX0=
5
+ export const VERSION = '4.0.43';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC40Myc7XG4iXX0=
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
56
56
  * Current version of valtech-components.
57
57
  * This is automatically updated during the publish process.
58
58
  */
59
- const VERSION = '4.0.42';
59
+ const VERSION = '4.0.43';
60
60
 
61
61
  // Control de estado de refresco (singleton a nivel de módulo)
62
62
  let isRefreshing = false;
@@ -33036,7 +33036,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
33036
33036
  * `/auth/oauth/callback?error=INVALID_CODE&error_description=...`
33037
33037
  */
33038
33038
  class OAuthCallbackComponent {
33039
- constructor() {
33039
+ constructor(router, authService, config) {
33040
+ this.router = router;
33041
+ this.authService = authService;
33042
+ this.config = config;
33040
33043
  this.message = 'Procesando autenticación...';
33041
33044
  /**
33042
33045
  * Nonce que el opener generó y pasó por el flujo (round-trip backend). Se
@@ -33048,6 +33051,36 @@ class OAuthCallbackComponent {
33048
33051
  ngOnInit() {
33049
33052
  this.processCallback();
33050
33053
  }
33054
+ /**
33055
+ * Indica si este callback corre como la VENTANA PRINCIPAL (flujo redirect),
33056
+ * no como popup. El popup se abre con window.name 'oauth'/'oauth-link'
33057
+ * (OAuthService), nombre que persiste aunque COOP anule window.opener tras el
33058
+ * bounce cross-origin. En la ventana principal nadie consume el localStorage,
33059
+ * así que el callback debe instalar la sesión y navegar él mismo.
33060
+ */
33061
+ isMainWindow() {
33062
+ if (window.name === 'oauth' || window.name === 'oauth-link')
33063
+ return false;
33064
+ return !window.opener && window.parent === window;
33065
+ }
33066
+ /**
33067
+ * Completa el login en la ventana principal: instala la sesión desde los
33068
+ * tokens del callback y navega al home.
33069
+ */
33070
+ completeInMainWindow(result) {
33071
+ if (!this.authService)
33072
+ return false;
33073
+ this.authService.setExternalAuth({
33074
+ accessToken: result.accessToken,
33075
+ refreshToken: result.refreshToken,
33076
+ firebaseToken: result.firebaseToken,
33077
+ expiresIn: result.expiresIn,
33078
+ roles: result.roles,
33079
+ permissions: result.permissions,
33080
+ });
33081
+ this.router.navigateByUrl(this.config?.homeRoute || '/', { replaceUrl: true });
33082
+ return true;
33083
+ }
33051
33084
  processCallback() {
33052
33085
  const params = new URLSearchParams(window.location.search);
33053
33086
  this.clientNonce = params.get('client_nonce');
@@ -33145,6 +33178,11 @@ class OAuthCallbackComponent {
33145
33178
  type: 'oauth-callback',
33146
33179
  tokens: result,
33147
33180
  });
33181
+ // Flujo redirect (ventana principal, sin opener que consuma el localStorage):
33182
+ // instalar la sesión acá mismo y navegar al home, en vez de quedar pegado.
33183
+ if (this.isMainWindow() && this.completeInMainWindow(result)) {
33184
+ return;
33185
+ }
33148
33186
  this.message = 'Autenticación exitosa';
33149
33187
  this.closeAfterDelay();
33150
33188
  }
@@ -33190,7 +33228,7 @@ class OAuthCallbackComponent {
33190
33228
  }
33191
33229
  }, 500);
33192
33230
  }
33193
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAuthCallbackComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
33231
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAuthCallbackComponent, deps: [{ token: i1$4.Router }, { token: AuthService, optional: true }, { token: VALTECH_AUTH_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
33194
33232
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: OAuthCallbackComponent, isStandalone: true, selector: "val-oauth-callback", ngImport: i0, template: `<val-splash />`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SplashComponent, selector: "val-splash", inputs: ["logoLight", "logoDark", "alt"] }] }); }
33195
33233
  }
33196
33234
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: OAuthCallbackComponent, decorators: [{
@@ -33203,7 +33241,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
33203
33241
  // casi-duplicado: el callback OAuth es una carga fundamental y debe verse igual.
33204
33242
  template: `<val-splash />`,
33205
33243
  }]
33206
- }] });
33244
+ }], ctorParameters: () => [{ type: i1$4.Router }, { type: AuthService, decorators: [{
33245
+ type: Optional
33246
+ }] }, { type: undefined, decorators: [{
33247
+ type: Optional
33248
+ }, {
33249
+ type: Inject,
33250
+ args: [VALTECH_AUTH_CONFIG]
33251
+ }] }] });
33207
33252
 
33208
33253
  /**
33209
33254
  * Name of the query param that carries the handoff token. Apps may override