{"version":3,"file":"lacuna-spa.mjs","sources":["../../../../../../lacuna-spa/lib/lacuna-spa/src/api/configuration.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/api/enums.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/classes/injection-tokens.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/spa-api-headers.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/logger.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/cookie-storage.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/message/message.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/message/message.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-title/dialog-title.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-title/dialog-title.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-error-messages/dialog-error-messages.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-error-messages/dialog-error-messages.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/message.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/spa-control.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-fancy-confirm/dialog-fancy-confirm.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-fancy-confirm/dialog-fancy-confirm.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-subscription-selector/dialog-subscription-selector.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-subscription-selector/dialog-subscription-selector.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-confirm-with-checkbox/dialog-confirm-with-checkbox.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-confirm-with-checkbox/dialog-confirm-with-checkbox.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-alert/dialog-alert.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-alert/dialog-alert.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-show-value/dialog-show-value.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-show-value/dialog-show-value.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-validation-results/dialog-validation-results.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-validation-results/dialog-validation-results.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-mobile-authorization-required/dialog-mobile-authorization-required.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-mobile-authorization-required/dialog-mobile-authorization-required.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-view-file/dialog-view-file.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-view-file/dialog-view-file.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/submit-button/submit-button.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/submit-button/submit-button.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-root-login/dialog-root-login.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-root-login/dialog-root-login.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/spa-language.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/classes/language-and-locale-code-map.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-language-selector/dialog-language-selector.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-language-selector/dialog-language-selector.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/prop/prop.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/prop/prop.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/agent-lookup.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/agent.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/entity-icon.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/entity-lookup.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/entity-name.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/event-type.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/subscription.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/locale-sensitive.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/spa-date.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/entity-type.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-event-details/dialog-event-details.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-event-details/dialog-event-details.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-confirm-with-reason/dialog-confirm-with-reason.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-confirm-with-reason/dialog-confirm-with-reason.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/dialog.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/no-access/no-access.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/no-access/no-access.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/sign-in/sign-in.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/sign-in/sign-in.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/sign-out/sign-out.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/sign-out/sign-out.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/private-area-unavailable/private-area-unavailable.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/private-area-unavailable/private-area-unavailable.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dummy/dummy.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dummy/dummy.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/private-area/private-area.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/private-area/private-area.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/application-insights.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/google-analytics.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/faro.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/startup.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/http-intercept.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/route-helper.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/spa-entity-navigation.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/service-unavailable/service-unavailable.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/service-unavailable/service-unavailable.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/cpf.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/roles.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/captcha.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/captcha/providers/base-captcha.provider.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/captcha/providers/hcaptcha.provider.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/captcha/providers/turnstile.provider.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/captcha/providers/recaptcha.provider.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/captcha/captcha.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/root/root.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/root/root.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/lacuna-footer/lacuna-footer.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/lacuna-footer/lacuna-footer.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/auth-management.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/event.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/box/box.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/box/box.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/user.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/event-entity-cell/event-entity-cell.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/event-entity-cell/event-entity-cell.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/event-list/event-list.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/event-list/event-list.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-actions/application-actions.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-actions/application-actions.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/application.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/agent.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-detail/application-detail.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-detail/application-detail.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-edit/application-edit.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-edit/application-edit.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-events/application-events.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-events/application-events.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/application-key.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-key-create/application-key-create.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-key-create/application-key-create.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-keys/application-keys.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-keys/application-keys.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-list/application-list.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-list/application-list.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/applications/applications.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/applications/applications.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/close-button/close-button.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/close-button/close-button.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/events/events.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/events/events.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/invite.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/invite-detail/invite-detail.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/invite-detail/invite-detail.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/invite-edit/invite-edit.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/invite-edit/invite-edit.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/invite-list/invite-list.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/invite-list/invite-list.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/subscription.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscription-list/subscription-list.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscription-list/subscription-list.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/classes/utils.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscriptions/subscriptions.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscriptions/subscriptions.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-access-edit/user-access-edit.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-access-edit/user-access-edit.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-actions/user-actions.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-actions/user-actions.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/parent-redirect.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-detail/user-detail.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-detail/user-detail.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-events/user-events.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-events/user-events.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/api/invites.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-invite/user-invite.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-invite/user-invite.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-list/user-list.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-list/user-list.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/users/users.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/users/users.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-create/application-create.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/application-create/application-create.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscription-form/subscription-form.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscription-form/subscription-form.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscription-create/subscription-create.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscription-create/subscription-create.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscription-detail/subscription-detail.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscription-detail/subscription-detail.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscription-edit/subscription-edit.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/subscription-edit/subscription-edit.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/breadcrumb.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/breadcrumb/breadcrumb.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/breadcrumb/breadcrumb.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/api/files.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-upload-error/dialog-upload-error.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/dialog-upload-error/dialog-upload-error.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/upload.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/file-size.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/directives/dnd.directive.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/files/files.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/files/files.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/success-panel/success-anim.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/success-panel/success-panel.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/success-panel/success-panel.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/spa-error-handling.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/http-transloco.loader.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/language-button/language-button.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/language-button/language-button.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/language-selector/language-selector.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/language-selector/language-selector.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/spa-currency.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/spa-decimal.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/spa-percent.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-edit/user-edit.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/user-edit/user-edit.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/breadcrumb-name/breadcrumb-name.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/breadcrumb-name/breadcrumb-name.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/pipes/safe.pipe.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/spa-event-viewing.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/transloco-intlmessageformat/intlmessageformat.config.ts","../../../../../../lacuna-spa/lib/lacuna-spa/transloco-intlmessageformat/intlmessageformat.factory.ts","../../../../../../lacuna-spa/lib/lacuna-spa/transloco-intlmessageformat/intlmessageformat.transpiler.ts","../../../../../../lacuna-spa/lib/lacuna-spa/transloco-intlmessageformat/intlmessageformat.module.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/server.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/servers-list/servers-list.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/servers-list/servers-list.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/inputs/spa-date/spa-date.input.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/inputs/spa-date/spa-date.input.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/clickable-area/clickable-area.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/clickable-area/clickable-area.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/link-button/link-button.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/link-button/link-button.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/captcha/captcha-value-accessor.directive.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/access-locked/access-locked.component.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/components/access-locked/access-locked.component.html","../../../../../../lacuna-spa/lib/lacuna-spa/src/lacuna-spa.module.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/spa-init.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/authenticated.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/fill-subscription.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/subscription-access.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/not-authenticated.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/sign-out.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/no-access.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/claim-access.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/init.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/private-access.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/can-deactivate.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/user-access-edit.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/root-access.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/parent-integration.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/child-redirect.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/translation-loaded.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/access-not-locked.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/access-locked.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/routing.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/classes/spa-validators.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/guards/subscription-selected.guard.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/global-search.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/src/services/latest-events.service.ts","../../../../../../lacuna-spa/lib/lacuna-spa/public_api.ts","../../../../../../lacuna-spa/lib/lacuna-spa/lacuna-spa.ts"],"sourcesContent":["import { CaptchaProviders, GrammaticalGender, UserDiscoveryPolicies } from './enums';\r\n\r\nexport interface SpaConfigurationModel {\r\n\toidc: OidcConfigModel;\r\n\trootAuthenticationEnabled: boolean;\r\n\tpublicUploadEnabled: boolean;\r\n\tsubscriptionHeader: string;\r\n\tsubscriptionRoot: string;\r\n\tsubscriptionNoFilter: string;\r\n\temailEnabled: boolean;\r\n\tsiteName: string;\r\n\twebPki: WebPkiConfig;\r\n\tmaxFileSize: number;\r\n\tmaxFilenameSize: number;\r\n\tmaxShowingSubscriptions: number;\r\n\tlabels: LabelsConfigModel;\r\n\thasParentIntegration: boolean;\r\n\tparentUrl: string;\r\n\tparentName: string;\r\n\tappInsightsConnectionString: string;\r\n\tgoogleAnalyticsTrackingId: string;\r\n\ttheme: string;\r\n\tsegmentedUploadThreshold: number;\r\n\tuploadSegmentLength: number;\r\n\tcaptcha: CaptchaConfigModel;\r\n\tcdnUrl: string;\r\n\tfaro: FaroConfigModel;\r\n\tuserDiscoveryPolicy?: UserDiscoveryPolicies;\r\n}\r\n\r\nexport interface OidcConfigModel {\r\n\tenabled: boolean;\r\n\tauthority: string;\r\n\tclientId: string;\r\n\tapiName: string;\r\n\tcustomScopes: string;\r\n\tnameClaim: string;\r\n\temailAddressClaim: string;\r\n\tcpfClaim: string;\r\n\taudienceParamName: string;\r\n\tskipIssuerCheck: boolean;\r\n\tstrictDiscoveryDocumentValidation: boolean;\r\n\tjwks: JwkModel[];\r\n\trequireHttps: boolean;\r\n\tredirectUri: string;\r\n\tpostLogoutRedirectUri: string;\r\n\tsessionCheckEnabled: boolean;\r\n\tculture: string;\r\n}\r\n\r\nexport interface JwkModel {\r\n\tkty: string;\r\n\tuse: string;\r\n\tkid: string;\r\n\tx5t: string;\r\n\tn: string;\r\n\te: string;\r\n\tx5c: string[];\r\n}\r\n\r\nexport interface WebPkiConfig {\r\n\tlicense: string;\r\n\tbrand: string;\r\n}\r\n\r\nexport interface LabelsConfigModel {\r\n\tsubscription: string;\r\n\ttheSubscription: string;\r\n\tsubscriptions: string;\r\n\tallSubscriptions: string;\r\n\tsubscriptionGender: GrammaticalGender;\r\n}\r\n\r\nexport interface CaptchaConfigModel {\r\n\tenabled: true;\r\n\tprovider: CaptchaProviders;\r\n\tsiteKey: string;\r\n}\r\n\r\nexport interface FaroConfigModel {\r\n\tenabled: boolean;\r\n\turl: string;\r\n\tapiKey: string;\r\n\tapp: FaroAppIdentificationModel;\r\n\tsamplingRate: number;\r\n\tpropagateTraceHeadersCorsUrls: string[];\r\n\tignoreUrls: string[];\r\n}\r\n\r\nexport interface FaroAppIdentificationModel {\r\n\tname: string;\r\n\tversion: string;\r\n\tenvironment: string;\r\n}\r\n\r\nexport class SpaConfiguration {\r\n\r\n\tprivate initialized: boolean = false;\r\n\tprivate _oidc: OidcConfigModel;\r\n\tprivate _rootAuthenticationEnabled: boolean;\r\n\tprivate _publicUploadEnabled: boolean;\r\n\tprivate _subscriptionHeader: string;\r\n\tprivate _subscriptionRoot: string;\r\n\tprivate _subscriptionNoFilter: string;\r\n\tprivate _emailEnabled: boolean;\r\n\tprivate _siteName: string;\r\n\tprivate _webPki: WebPkiConfig;\r\n\tprivate _maxFileSize: number;\r\n\tprivate _maxFilenameSize: number;\r\n\tprivate _maxShowingSubscriptions: number = 5;\r\n\tprivate _labels: LabelsConfigModel;\r\n\tprivate _hasParentIntegration: boolean;\r\n\tprivate _parentUrl: string;\r\n\tprivate _parentName: string;\r\n\tprivate _appInsightsConnectionString: string;\r\n\tprivate _googleAnalyticsTrackingId: string;\r\n\tprivate _theme: string;\r\n\tprivate _segmentedUploadThreshold: number;\r\n\tprivate _uploadSegmentLength: number;\r\n\tprivate _captcha: CaptchaConfigModel;\r\n\tprivate _cdnUrl: string;\r\n\tprivate _userDiscoveryPolicy: UserDiscoveryPolicies;\r\n\r\n\tinitialize(model: SpaConfigurationModel) {\r\n\t\tthis._oidc = model.oidc;\r\n\t\tthis._rootAuthenticationEnabled = model.rootAuthenticationEnabled;\r\n\t\tthis._publicUploadEnabled = model.publicUploadEnabled;\r\n\t\tthis._subscriptionHeader = model.subscriptionHeader;\r\n\t\tthis._subscriptionRoot = model.subscriptionRoot;\r\n\t\tthis._subscriptionNoFilter = model.subscriptionNoFilter;\r\n\t\tthis._emailEnabled = model.emailEnabled;\r\n\t\tthis._siteName = model.siteName;\r\n\t\tthis._webPki = model.webPki;\r\n\t\tthis._maxFileSize = model.maxFileSize;\r\n\t\tthis._maxFilenameSize = model.maxFilenameSize;\r\n\t\tthis._maxShowingSubscriptions = model.maxShowingSubscriptions;\r\n\t\tthis._labels = model.labels;\r\n\t\tthis._hasParentIntegration = model.hasParentIntegration;\r\n\t\tthis._parentUrl = model.parentUrl;\r\n\t\tthis._parentName = model.parentName;\r\n\t\tthis._appInsightsConnectionString = model.appInsightsConnectionString;\r\n\t\tthis._googleAnalyticsTrackingId = model.googleAnalyticsTrackingId;\r\n\t\tthis._theme = model.theme;\r\n\t\tthis._segmentedUploadThreshold = model.segmentedUploadThreshold;\r\n\t\tthis._uploadSegmentLength = model.uploadSegmentLength;\r\n\t\tthis._captcha = model.captcha;\r\n\t\tthis._cdnUrl = model.cdnUrl;\r\n\t\tthis._userDiscoveryPolicy = model.userDiscoveryPolicy;\r\n\t\tthis.initialized = true;\r\n\t}\r\n\r\n\tget oidc(): OidcConfigModel {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._oidc;\r\n\t}\r\n\r\n\tget rootAuthenticationEnabled(): boolean {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._rootAuthenticationEnabled;\r\n\t}\r\n\r\n\tget publicUploadEnabled(): boolean {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._publicUploadEnabled;\r\n\t}\r\n\r\n\tget subscriptionHeader(): string {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._subscriptionHeader;\r\n\t}\r\n\r\n\tget subscriptionRoot(): string {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._subscriptionRoot;\r\n\t}\r\n\r\n\tget subscriptionNoFilter(): string {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._subscriptionNoFilter;\r\n\t}\r\n\r\n\tget emailEnabled(): boolean {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._emailEnabled;\r\n\t}\r\n\r\n\tget siteName(): string {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._siteName;\r\n\t}\r\n\r\n\tget webPki(): WebPkiConfig {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._webPki;\r\n\t}\r\n\r\n\tget maxFileSize(): number {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._maxFileSize;\r\n\t}\r\n\r\n\tget maxFilenameSize(): number {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._maxFilenameSize;\r\n\t}\r\n\r\n\tget maxShowingSubscriptions(): number {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._maxShowingSubscriptions;\r\n\t}\r\n\r\n\tget labels(): LabelsConfigModel {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._labels;\r\n\t}\r\n\r\n\tget hasParentIntegration(): boolean {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._hasParentIntegration;\r\n\t}\r\n\r\n\tget parentUrl(): string {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._parentUrl;\r\n\t}\r\n\r\n\tget parentName(): string {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._parentName;\r\n\t}\r\n\r\n\tget appInsightsConnectionString(): string {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._appInsightsConnectionString;\r\n\t}\r\n\r\n\tget googleAnalyticsTrackingId(): string {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._googleAnalyticsTrackingId;\r\n\t}\r\n\r\n\tget theme(): string {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._theme;\r\n\t}\r\n\r\n\tget segmentedUploadThreshold(): number {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._segmentedUploadThreshold;\r\n\t}\r\n\r\n\tget uploadSegmentLength(): number {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._uploadSegmentLength;\r\n\t}\r\n\r\n\tget captcha(): CaptchaConfigModel {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._captcha;\r\n\t}\r\n\r\n\tget cdnUrl(): string {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._cdnUrl;\r\n\t}\r\n\r\n\tget userDiscoveryPolicy(): UserDiscoveryPolicies {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._userDiscoveryPolicy;\r\n\t}\r\n\r\n\tprivate ensureInitialized() {\r\n\t\tif (!this.initialized) {\r\n\t\t\tthrow 'The configuration has not been initialized';\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport const Config: SpaConfiguration = new SpaConfiguration();\r\n","export const enum ErrorCodes {\r\n\tUnknown = \"Unknown\",\r\n\tBadAlgorithm = \"BadAlgorithm\",\r\n\tSubscriptionNotFound = \"SubscriptionNotFound\",\r\n\tSubscriptionRequired = \"SubscriptionRequired\",\r\n\tApplicationNotFound = \"ApplicationNotFound\",\r\n\tBadSubscription = \"BadSubscription\",\r\n\tNormalSubscriptionRequired = \"NormalSubscriptionRequired\",\r\n\tNotRegistered = \"NotRegistered\",\r\n\tAgentNotFound = 'AgentNotFound',\r\n\tAgentIsNotUser = 'AgentIsNotUser',\r\n\tInviteNotFound = 'InviteNotFound',\r\n\tApplicationKeyNotFound = 'ApplicationKeyNotFound',\r\n\tApplicationDeleted = 'ApplicationDeleted',\r\n\tApplicationNameExists = 'ApplicationNameExists',\r\n\tUserNotFound = 'UserNotFound',\r\n\tInvalidClaimCode = 'InvalidClaimCode',\r\n\tSearchNotSupported = 'SearchNotSupported',\r\n\tEmailDisabled = 'EmailDisabled',\r\n\tHttpsRequired = 'HttpsRequired',\r\n\tRoleMissing = 'RoleMissing',\r\n\tUploadNotFound = 'UploadNotFound',\r\n\tPublicKeyAuthenticationExpired = 'PublicKeyAuthenticationExpired',\r\n\tNonceReused = 'NonceReused',\r\n\tInvalidNonceSignature = 'InvalidNonceSignature',\r\n\tPublicKeyAuthenticationSessionMissing = 'PublicKeyAuthenticationSessionMissing',\r\n\tInvalidPublicKeyAuthenticationSession = 'InvalidPublicKeyAuthenticationSession',\r\n\tChildNamespaceNotFound = 'ChildNamespaceNotFound',\r\n\tOidcDisabled = 'OidcDisabled',\r\n\tRootPasswordHashNotFound = 'RootPasswordHashNotFound',\r\n\tGrantIdError = 'GrantIdError',\r\n}\r\n\r\nexport const enum Roles {\r\n\tDummy = \"Dummy\", // This property is here ONLY to let the application know that this is a string enum. The client app should extend this enum, and fulfill it with its own elements.\r\n}\r\n\r\nexport const enum RootRoles {\r\n\tDummy = \"Dummy\", // This property is here ONLY to let the application know that this is a string enum. The client app should extend this enum, and fulfill it with its own elements.\r\n}\r\n\r\nexport const enum Permissions {\r\n\tRead = \"Read\",\r\n\tWrite = \"Write\",\r\n\tManageAgents = \"ManageAgents\",\r\n\tHangfireAccess = \"HangfireAccess\",\r\n\tLookup = 'Lookup',\r\n\tViewChildRoles = 'ViewChildRoles',\r\n\tContactWebhooks = 'ContactWebhooks',\r\n\tEditUsers = 'EditUsers',\r\n\tViewAgentEvents = 'ViewAgentEvents',\r\n\tViewAgentActions = 'ViewAgentActions',\r\n\tViewSubscriptionEvents = 'ViewSubscriptionEvents',\r\n\tViewInvites = 'ViewInvites',\r\n\tViewUsers = 'ViewUsers',\r\n\tViewApplications = 'ViewApplications',\r\n}\r\n\r\nexport const enum EntityTypes {\r\n\tSubscription = \"Subscription\",\r\n\tUser = \"User\",\r\n\tApplication = \"Application\",\r\n\tInvite = \"Invite\",\r\n}\r\n\r\nexport const enum AgentTypes {\r\n\tUser = 'User',\r\n\tApplication = 'Application'\r\n}\r\n\r\nexport const enum EventTypes {\r\n\tSubscriptionCreated = 'SubscriptionCreated',\r\n\tSubscriptionUpdated = 'SubscriptionUpdated',\r\n\tSubscriptionDeleted = 'SubscriptionDeleted',\r\n\tApplicationKeyCreated = 'ApplicationKeyCreated',\r\n\tApplicationKeyDeleted = 'ApplicationKeyDeleted',\r\n\tApplicationCreated = 'ApplicationCreated',\r\n\tApplicationDeleted = 'ApplicationDeleted',\r\n\tSubscriptionAccessUpdated = 'SubscriptionAccessUpdated',\r\n\tUserRegistered = 'UserRegistered',\r\n\tInviteCreated = 'InviteCreated',\r\n\tInviteUpdated = 'InviteUpdated',\r\n\tInviteDeleted = 'InviteDeleted',\r\n\tInviteFulfilled = 'InviteFulfilled',\r\n\tUserLocked = 'UserLocked',\r\n\tApplicationLocked = 'ApplicationLocked',\r\n\tUserUnlocked = 'UserUnlocked',\r\n\tApplicationUnlocked = 'ApplicationUnlocked',\r\n}\r\n\r\nexport const enum NamedRoutes {\r\n\t// areas\r\n\tHome = 'Home',\r\n\tPrivate = 'Private',\r\n\tSub = 'Sub',\r\n\tSysAdmin = 'SysAdmin',\r\n\tAccessLocked = 'AccessLocked',\r\n\r\n\t// admin components\r\n\tSubscriptions = 'Subscriptions',\r\n\tSubscriptionCreate = 'SubscriptionCreate',\r\n\tSubscriptionDetail = 'SubscriptionDetail',\r\n\tSubscriptionEdit = 'SubscriptionEdit',\r\n\tUsers = 'Users',\r\n\tUserDetail = 'UserDetail',\r\n\tUserEvents = 'UserEvents',\r\n\tUserActions = 'UserActions',\r\n\tUserEdit = 'UserEdit',\r\n\tUserAccessEdit = 'UserAccessEdit',\r\n\tInvite = 'Invite',\r\n\tInviteDetail = 'InviteDetail',\r\n\tInviteEdit = 'InviteEdit',\r\n\tApplications = 'Applications',\r\n\tApplicationCreate = 'ApplicationCreate',\r\n\tApplicationDetail = 'ApplicationDetail',\r\n\tApplicationEdit = 'ApplicationEdit',\r\n\tApplicationActions = 'ApplicationActions',\r\n\tApplicationEvents = 'ApplicationEvents',\r\n\tApplicationKeys = 'ApplicationKeys',\r\n\tApplicationKeyCreate = 'ApplicationKeyCreate',\r\n\tEvents = 'Events',\r\n\tServersList = 'ServersList',\r\n}\r\n\r\nexport enum UserModes {\r\n\tParent = 'parent',\r\n\tApp = 'app'\r\n}\r\n\r\nexport enum ChildRedirectTypes {\r\n    Invite = \"invite\",\r\n    UserDetails = \"user-detail\",\r\n    UserEditAccess = \"user-edit-access\"\r\n}\r\n\r\nexport enum GrammaticalGender {\r\n\tFeminine = \"Feminine\",\r\n\tMasculine = \"Masculine\",\r\n}\r\n\r\nexport enum RootLoginResult {\r\n\tSuccess = \"Success\",\r\n\tInvalidPassword = \"InvalidPassword\"\r\n}\r\n\r\nexport enum CaptchaProviders {\r\n\tRecaptcha = \"Recaptcha\",\r\n\tTurnstile = \"Turnstile\",\r\n\tHCaptcha = \"HCaptcha\",\r\n}\r\n\r\nexport enum UserDiscoveryPolicies {\r\n\tNone = \"None\",\r\n\tRestrictSubscription = \"RestrictSubscription\",\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { RequiredIdClaims, EntityNavigator, GetEventTypeNameFunction, GetEntityIconFunction, GetRoleNameFunction, OnApiErrorFunction, GetBreadcrumbDisplayNameFunction, EventViewer } from './types';\r\nimport { HashMap } from '@ngneat/transloco';\r\n\r\nexport const LIST_OF_ROLES = new InjectionToken<string[]>('List of Roles, used to iterate over this const enum.');\r\nexport const LIST_OF_ROOT_ROLES = new InjectionToken<string[]>('List of RootRoles, used to iterate over this const enum.');\r\nexport const REQUIRED_ID_CLAIMS = new InjectionToken<RequiredIdClaims>('Required Identity Claims. These claims will be verified and reinforced in SpaControlService.');\r\nexport const ASYNC_INIT = new InjectionToken<boolean>('Tells if the application only resolves after or before knowing the authentication state of the user.');\r\nexport const ENTITY_NAVIGATOR = new InjectionToken<EntityNavigator>('Service that can be provided to tell the application how to navigate to some entity');\r\nexport const EVENT_VIEWER = new InjectionToken<EventViewer>('Service that can be provided to tell the application how to display an event');\r\nexport const GET_ENTITY_ICON = new InjectionToken<GetEntityIconFunction>('A function that receives an entity type and returns its corresponding material icon.');\r\nexport const GET_EVENT_TYPE_NAME = new InjectionToken<GetEventTypeNameFunction>('A function that receives an event type and returns the name that will actually be shown in the browser.');\r\nexport const GET_ROLE_NAME = new InjectionToken<GetRoleNameFunction>('A function that receives a role and returns the its display name, which is the one that will actually be shown in the browser.');\r\nexport const LIST_OF_UNASSIGNABLE_ROLES = new InjectionToken<string[]>('List of Roles that should not be assignable on user-details page.');\r\nexport const GET_BREADCRUMB_DISPLAY_NAME = new InjectionToken<GetBreadcrumbDisplayNameFunction>('A function that receives a named route and returns the its display name. This function can be used to override the display names of the routes from within lacuna-spa.');\r\nexport const ON_API_ERROR = new InjectionToken<OnApiErrorFunction>('A function that will be called right when an API error occurs.');\r\nexport const LANGUAGE_ROUTE_ENABLED = new InjectionToken<boolean>('Tells if the usage of a heading language route segment should be used or not.');\r\nexport const LANGUAGE_TO_LOCALES_MAPPING = new InjectionToken<HashMap<string[]>>('Object that maps a language to its respective locales');\r\nexport const OIDC_REDIRECT_PATH = new InjectionToken<HashMap<string[]>>('Object that maps a language to its respective locales');\r\nexport const SPA_ACCESS_LOCKED_SHOW_RETURN_TO_HOME_BUTTON = new InjectionToken<HashMap<string[]>>('Show return to home button on access locked screen');\r\nexport const SPA_INVISIBLE_CAPTCHA_ENABLED = new InjectionToken<boolean>('Tells if the invisible captcha should be used in the application. If false, the captcha could be used in the form as a regular captcha');\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SpaApiHeadersService {\r\n\r\n\tapiHeaders: ApiHeaders;\r\n\r\n\tconstructor() {\t}\r\n}\r\n\r\nexport type ApiHeaders = {\r\n\t[name: string]: string | string[];\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nexport enum LogLevels {\r\n\tTrace = 0,\r\n\tDebug = 1,\r\n\tInformation = 2,\r\n\tWarning = 3,\r\n\tError = 4,\r\n\tCritical = 5,\r\n}\r\n\r\nconst minLevelKey = 'logLevel';\r\nconst defaultMinLevel = LogLevels.Warning;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class Logger {\r\n\r\n\tprivate minLevel: LogLevels;\r\n\r\n\tconstructor() {\r\n\r\n\t\tlet sessionMinLevel = this.tryGetMinLevelFrom(sessionStorage);\r\n\t\tlet localMinLevel = this.tryGetMinLevelFrom(localStorage);\r\n\r\n\t\tif (sessionMinLevel != null && localMinLevel != null && sessionMinLevel != localMinLevel) {\r\n\t\t\tthis.minLevel = Math.min(sessionMinLevel, localMinLevel);\r\n\t\t\tthis.logWarning(`Found conflicting minimum log levels (local: ${this.getLevelName(localMinLevel)}, session: ${this.getLevelName(sessionMinLevel)}), using lower level (${this.getLevelName(this.minLevel)})`);\r\n\t\t} else {\r\n\t\t\tthis.minLevel = sessionMinLevel ?? localMinLevel ?? defaultMinLevel;\r\n\t\t\tthis.logInformation(`Minimum log level set to ${this.getLevelName(this.minLevel)}`);\r\n\t\t}\r\n\t}\r\n\r\n\tlogTrace(...args: any[]): void {\r\n\t\tthis.log(LogLevels.Trace, args);\r\n\t}\r\n\r\n\tlogDebug(...args: any[]): void {\r\n\t\tthis.log(LogLevels.Debug, args);\r\n\t}\r\n\r\n\tlogInformation(...args: any[]): void {\r\n\t\tthis.log(LogLevels.Information, args);\r\n\t}\r\n\r\n\tlogWarning(...args: any[]): void {\r\n\t\tthis.log(LogLevels.Warning, args);\r\n\t}\r\n\r\n\tlogError(...args: any[]): void {\r\n\t\tthis.log(LogLevels.Error, args);\r\n\t}\r\n\r\n\tlogCritical(...args: any[]): void {\r\n\t\tthis.log(LogLevels.Critical, args);\r\n\t}\r\n\r\n\tprivate log(level: LogLevels, args: any[]) {\r\n\t\tif (level >= this.minLevel) {\r\n\t\t\tthis.writeLog(level, args);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate writeLog(level: LogLevels, args: any[]) {\r\n\t\tconsole.log(`[${this.getLevelLabel(level)}]`, ...args.map(arg => this.stringifyArg(arg)));\r\n\t}\r\n\r\n\t// Objects passed as arguments would otherwise be rendered as \"[object Object]\" once the log\r\n\t// line is coerced to a string (e.g. when forwarded to a string-based sink). Stringify them\r\n\t// here so every call site gets readable output without having to call JSON.stringify itself.\r\n\tprivate stringifyArg(arg: any): any {\r\n\t\tif (arg == null || typeof arg !== 'object') {\r\n\t\t\treturn arg;\r\n\t\t}\r\n\t\tif (arg instanceof Error) {\r\n\t\t\treturn arg.stack ?? arg.toString();\r\n\t\t}\r\n\t\ttry {\r\n\t\t\treturn JSON.stringify(arg);\r\n\t\t} catch {\r\n\t\t\t// JSON.stringify throws on circular structures (e.g. HttpErrorResponse / HttpRequest)\r\n\t\t\treturn String(arg);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getLevelLabel(level: LogLevels): string {\r\n\t\tswitch (level) {\r\n\t\t\tcase LogLevels.Trace:\r\n\t\t\t\treturn 'TRC';\r\n\t\t\tcase LogLevels.Debug:\r\n\t\t\t\treturn 'DBG';\r\n\t\t\tcase LogLevels.Information:\r\n\t\t\t\treturn 'INF';\r\n\t\t\tcase LogLevels.Warning:\r\n\t\t\t\treturn 'WRN';\r\n\t\t\tcase LogLevels.Error:\r\n\t\t\t\treturn 'ERR';\r\n\t\t\tcase LogLevels.Critical:\r\n\t\t\t\treturn 'CRT';\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getLevelName(level: LogLevels): string {\r\n\t\tswitch (level) {\r\n\t\t\tcase LogLevels.Trace:\r\n\t\t\t\treturn 'Trace';\r\n\t\t\tcase LogLevels.Debug:\r\n\t\t\t\treturn 'Debug';\r\n\t\t\tcase LogLevels.Information:\r\n\t\t\t\treturn 'Information';\r\n\t\t\tcase LogLevels.Warning:\r\n\t\t\t\treturn 'Warning';\r\n\t\t\tcase LogLevels.Error:\r\n\t\t\t\treturn 'Error';\r\n\t\t\tcase LogLevels.Critical:\r\n\t\t\t\treturn 'Critical';\r\n\t\t}\r\n\t}\r\n\r\n\tprivate parseLogLevel(s: string) {\r\n\r\n\t\ts = (s ?? '').trim();\r\n\t\tif (s == '' || s == 'null') {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet i = parseInt(s);\r\n\r\n\t\tfor (let level = LogLevels.Trace; level <= LogLevels.Critical; level++) {\r\n\t\t\tif (\r\n\t\t\t\ti == level\r\n\t\t\t\t|| s.toLowerCase() == this.getLevelName(level).toLowerCase()\r\n\t\t\t\t|| s.toLowerCase() == this.getLevelLabel(level).toLowerCase()\r\n\t\t\t) {\r\n\t\t\t\treturn level;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// It's too soon to use `this.log()` or `this.logWarning()` since `this.minLevel` has not been set yet\r\n\t\tthis.writeLog(LogLevels.Warning, [`Unrecognized log level: '${s}'`]);\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate tryGetMinLevelFrom(storage: Storage) {\r\n\t\ttry {\r\n\t\t\treturn this.parseLogLevel(storage.getItem(minLevelKey));\r\n\t\t} catch {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { OAuthStorage } from 'lacuna-oauth2-oidc';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class CookieStorageService extends OAuthStorage {\r\n\tconstructor(\r\n\t\tprivate cookieService: CookieService\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tgetItem(key: string): string {\r\n\t\treturn this.cookieService.get(key);\r\n\t}\r\n\r\n\tremoveItem(key: string, path: string = '/', domain: string = null): void {\r\n\t\tthis.cookieService.delete(key, path, domain);\r\n\t}\r\n\r\n\tsetItem(key: string, data: string, expires: number | Date = null, path: string = '/', domain: string = null, secure: boolean = false, sameSite: \"Lax\" | \"Strict\" = \"Lax\"): void {\r\n\t\tthis.cookieService.set(key, data, expires, path, domain, secure, sameSite);\r\n\t}\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatSnackBar, MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';\r\nimport { Logger } from '../../services/logger.service';\r\n\r\n@Component({\r\n    selector: 'spa-message',\r\n    templateUrl: './message.component.html',\r\n    styleUrls: ['./message.component.scss'],\r\n    standalone: false\r\n})\r\nexport class MessageComponent implements OnInit {\r\n\r\n\tmessage: string;\r\n\tisClickable: boolean;\r\n\ticon: string;\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_SNACK_BAR_DATA) public data: any,\r\n\t\tpublic ref: MatSnackBarRef<MessageComponent>,\r\n\t\tprivate logger: Logger\r\n\t) {\r\n\t\tthis.message = data.message;\r\n\t\tthis.isClickable = data.isClickable;\r\n\t\tthis.icon = data.icon;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tdetails() {\r\n\t\tif (this.isClickable) {\r\n\t\t\tthis.logger.logTrace('MessagesComponent -- component clicked; dismissing snackbar and showing details...');\r\n\t\t\tthis.ref.dismissWithAction();\r\n\t\t}\r\n\t}\r\n\r\n\tdismiss() {\r\n\t\tthis.logger.logTrace('MessagesComponent -- dismiss button clicked; dismissing snackbar...');\r\n\t\tthis.ref.dismiss();\r\n\t}\r\n\r\n}\r\n","<div class=\"message-notification text-white justify-content-between\">\r\n\t<div class=\"d-flex\" [ngClass]=\"{'cursor-click': isClickable}\" (click)=\"details()\">\r\n\t\t@if (icon) {\r\n\t\t\t<mat-icon>{{icon}}</mat-icon>\r\n\t\t}\r\n\t\t<div class=\"mx-2 mt-1 full-width notification-text\">{{message}}</div>\r\n\t</div>\r\n\t<div class=\"ms-auto\">\r\n\t\t<button class=\"dismiss-button\" (click)=\"dismiss()\"><mat-icon>close</mat-icon></button>\r\n\t</div>\r\n</div>\r\n","import { coerceBooleanProperty } from \"@angular/cdk/coercion\";\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n    selector: 'spa-dialog-title',\r\n    templateUrl: './dialog-title.component.html',\r\n    styleUrl: './dialog-title.component.scss',\r\n    standalone: false\r\n})\r\nexport class SpaDialogTitleComponent {\r\n\r\n\t@Input({transform: coerceBooleanProperty}) disableClose: boolean;\r\n\r\n\t@Input({transform: coerceBooleanProperty}) customClose: boolean;\r\n\r\n\t@Output() closeClicked: EventEmitter<void> = new EventEmitter();\r\n}\r\n","<div mat-dialog-title class=\"d-flex align-items-center spa-dialog-title mb-2\">\r\n\t<div>\r\n\t\t<ng-content></ng-content>\r\n\t</div>\r\n\t@if (!disableClose) {\r\n\t\t@if (customClose) {\r\n\t\t\t<button mat-icon-button (click)=\"closeClicked.emit()\" class=\"ms-auto\" aria-label=\"Close\">\r\n\t\t\t\t<mat-icon>close</mat-icon>\r\n\t\t\t</button>\r\n\t\t} @else {\r\n\t\t\t<button mat-icon-button mat-dialog-close class=\"ms-auto\" aria-label=\"Close\">\r\n\t\t\t\t<mat-icon>close</mat-icon>\r\n\t\t\t</button>\r\n\t\t}\r\n\t}\r\n</div>\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { FileUploadErrorInfo, FileUploadError } from '../../api/files';\r\nimport { Config } from '../../api/configuration';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-error-messages',\r\n    templateUrl: './dialog-error-messages.component.html',\r\n    styleUrls: ['./dialog-error-messages.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogErrorMessagesComponent implements OnInit {\r\n\r\n\ttitle: string;\r\n\terrorMessages: string[] = [];\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate transloco: TranslocoService\r\n\t) {\r\n\t\tthis.title = data.title || this.transloco.translate('common.errors');\r\n\t\tthis.errorMessages = data.errorMessages;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n}\r\n","<spa-dialog-title [disableClose]=\"data.disableClose\">{{title}}</spa-dialog-title>\r\n\r\n<div mat-dialog-content>\r\n\t@for (errorMessage of errorMessages; track $index) {\r\n\t\t<div>\r\n\t\t\t<div class=\"d-flex\">\r\n\t\t\t\t<mat-icon class=\"text-warn me-3\">error</mat-icon>\r\n\t\t\t\t<p>{{errorMessage}}</p>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n</div>\r\n\r\n<div mat-dialog-actions *transloco=\"let t\">\r\n\t<button mat-flat-button mat-dialog-close color=\"primary\">{{t('common.close')}}</button>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { MatSnackBar, MatSnackBarRef } from '@angular/material/snack-bar';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { MessageComponent } from '../components/message/message.component';\r\nimport { DialogErrorMessagesComponent } from '../components/dialog-error-messages/dialog-error-messages.component';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class MessageService {\r\n\r\n\terrorMessages: string[] = [];\r\n\tlastSnackBar: MatSnackBarRef<MessageComponent>;\r\n\r\n\tconstructor(\r\n\t\tprivate snackBar: MatSnackBar,\r\n\t\tprivate dialog: MatDialog,\r\n\t) { }\r\n\r\n\tshowSuccess(message: string, args?: { duration?: number }) {\r\n\t\tlet ref = this.snackBar.openFromComponent(MessageComponent, {\r\n\t\t\tduration: (args ? (args.duration != null ? args.duration : 3000) : 3000),\r\n\t\t\thorizontalPosition: 'right',\r\n\t\t\tverticalPosition: 'top',\r\n\t\t\tpanelClass: ['snackbar-success', 'snackbar-margin'],\r\n\t\t\tdata: {\r\n\t\t\t\tmessage: message,\r\n\t\t\t\tisClickable: false,\r\n\t\t\t\ticon: 'check_circle',\r\n\t\t\t},\r\n\t\t});\r\n\t\tthis.lastSnackBar = ref;\r\n\t\treturn ref;\r\n\t}\r\n\r\n\tshowInfo(message: string, args?: { duration?: number }) {\r\n\t\tlet ref = this.snackBar.openFromComponent(MessageComponent, {\r\n\t\t\tduration: (args ? (args.duration != null ? args.duration : 3000) : 3000),\r\n\t\t\thorizontalPosition: 'right',\r\n\t\t\tverticalPosition: 'top',\r\n\t\t\tpanelClass: ['snackbar-primary', 'snackbar-margin'],\r\n\t\t\tdata: {\r\n\t\t\t\tmessage: message,\r\n\t\t\t\tisClickable: false,\r\n\t\t\t\ticon: 'info',\r\n\t\t\t},\r\n\t\t});\r\n\t\tthis.lastSnackBar = ref;\r\n\t\treturn ref;\r\n\t}\r\n\r\n\tshowWarning(message: string, args?: { duration?: number }) {\r\n\t\tlet ref = this.snackBar.openFromComponent(MessageComponent, {\r\n\t\t\tduration: (args ? (args.duration != null ? args.duration : 3000) : 3000),\r\n\t\t\thorizontalPosition: 'right',\r\n\t\t\tverticalPosition: 'top',\r\n\t\t\tpanelClass: ['snackbar-glow', 'snackbar-margin'],\r\n\t\t\tdata: {\r\n\t\t\t\tmessage: message,\r\n\t\t\t\tisClickable: false,\r\n\t\t\t\ticon: 'warning',\r\n\t\t\t},\r\n\t\t});\r\n\t\tthis.lastSnackBar = ref;\r\n\t\treturn ref;\r\n\t}\r\n\r\n\tshowError(message: string, args?: { duration?: number }) {\r\n\t\tthis.errorMessages.push(message);\r\n\t\tlet ref = this.snackBar.openFromComponent(MessageComponent, {\r\n\t\t\tduration: (args ? (args.duration != null ? args.duration : 0) : 0),\r\n\t\t\thorizontalPosition: 'right',\r\n\t\t\tverticalPosition: 'top',\r\n\t\t\tpanelClass: ['snackbar-warn', 'snackbar-margin'],\r\n\t\t\tdata: {\r\n\t\t\t\tmessage: message,\r\n\t\t\t\tisClickable: true,\r\n\t\t\t\ticon: 'error',\r\n\t\t\t},\r\n\t\t});\r\n\t\tref.onAction().subscribe(() => this.showAllErrors(this.errorMessages));\r\n\t\tthis.lastSnackBar = ref;\r\n\t\treturn ref;\r\n\t}\r\n\r\n\tdismiss() {\r\n\t\tif (this.lastSnackBar) {\r\n\t\t\tthis.lastSnackBar.dismiss();\r\n\t\t}\r\n\t}\r\n\r\n\t// This method replicates DialogService.showAllErrors\r\n\t// We did this to avoid depending on DialogService, which may wasily cause cyclic dependency\r\n\tprivate showAllErrors(errorMessages: string[], title?: string) {\r\n\t\tlet dialogRef = this.dialog.open(DialogErrorMessagesComponent, {\r\n\t\t\twidth: '500px',\r\n\t\t\tdata: {\r\n\t\t\t\ttitle: title,\r\n\t\t\t\terrorMessages: errorMessages,\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t}\r\n}\r\n","import { Injectable, Optional, Inject, NgZone } from '@angular/core';\r\nimport { Observable, AsyncSubject, BehaviorSubject, of, config } from 'rxjs';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { OAuthService, OAuthSuccessEvent, OAuthEvent, OAuthErrorEvent } from 'lacuna-oauth2-oidc';\r\nimport { JwksValidationHandler } from 'lacuna-oauth2-oidc-jwks';\r\nimport * as momentJs from 'moment'; const moment = momentJs[\"default\"]; // https://github.com/ng-packagr/ng-packagr/issues/217#issuecomment-360176759\r\nimport { Logger } from './logger.service';\r\nimport { Config } from '../api/configuration';\r\nimport { tap, map, filter, catchError } from 'rxjs/operators';\r\nimport { Profile } from '../api/profile';\r\nimport { ErrorCodes, RootRoles, Permissions, RootLoginResult } from '../api/enums';\r\nimport { SubscriptionAccess } from '../api/authorization';\r\nimport base64url from 'base64url';\r\nimport { LIST_OF_ROLES, LIST_OF_ROOT_ROLES, REQUIRED_ID_CLAIMS, LIST_OF_UNASSIGNABLE_ROLES, OIDC_REDIRECT_PATH } from '../classes/injection-tokens';\r\nimport { RequiredIdClaims } from '../classes/types';\r\nimport { CookieStorageService } from './cookie-storage.service';\r\nimport { SpaApiHeadersService } from './spa-api-headers.service';\r\nimport { RootAuthenticationRequest, RootAuthenticationResponse } from '../api/root-authentication';\r\nimport { MessageService } from './message.service';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\nconst lastLoginAttemptKey = 'last_login_attempt';\r\nconst dateRegisteredKey = 'date_registered';\r\nconst subscriptionFilterKey = 'subscription_filter';\r\nconst rootTokenKey = 'root_token';\r\nconst rootTokenExpirationKey = 'root_token_expiration';\r\nconst loginLoopThreshold = 15000; // 15 seconds\r\n\r\nexport class UserProfile {\r\n\tconstructor(\r\n\t\tpublic id: string,\r\n\t\tpublic name: string,\r\n\t\tpublic emailAddress: string,\r\n\t\tpublic cpf: string,\r\n\t\tpublic customClaims: object,\r\n\t\tpublic subscriptions: SubscriptionAccess[],\r\n\t\tpublic adminRoles: RootRoles[],\r\n\t\tpublic permissionsOnRoot: Permissions[],\r\n\t\tpublic isLocked: boolean,\r\n\t) { }\r\n}\r\n\r\nexport interface SubscriptionPermissionsModel extends SubscriptionAccess {\r\n\tsub: string,\r\n\tpermissions: Permissions[]\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SpaControlService {\r\n\r\n\t_initialized: boolean;\r\n\tinitError: any = null;\r\n\tsignInError: any = null;\r\n\r\n\tprivate initializedSubject: AsyncSubject<any> = new AsyncSubject<any>();\r\n\tinitialized: Observable<any> = this.initializedSubject.asObservable();\r\n\r\n\tprivate subscriptionSubject: BehaviorSubject<SubscriptionPermissionsModel> = new BehaviorSubject<SubscriptionPermissionsModel>({ sub: '', subscription: null, roles: [], permissions: [] });\r\n\tselectedSubscription: Observable<SubscriptionPermissionsModel> = this.subscriptionSubject.asObservable();\r\n\tget selectedSubscriptionSnapshot(): SubscriptionPermissionsModel { return this.subscriptionSubject.value; }\r\n\tallSubscriptionsSelected: Observable<boolean> = this.selectedSubscription.pipe(map(s => s.sub === Config.subscriptionNoFilter));\r\n\tprivate sessionCheckEventListener: EventListener;\r\n\tprivate sessionCheckStartupTimeout: any;\r\n\r\n\tget userProfile(): UserProfile {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._userProfile;\r\n\t}\r\n\r\n\tprivate _userProfile: UserProfile;\r\n\tprivate pendingReturnUrl: string;\r\n\tprivate userPermissionsOnSubs: {\r\n\t\t[subId: string]: AsyncSubject<Permissions[]>\r\n\t} = {};\r\n\r\n\tprivate _rootToken: string;\r\n\tprivate _rootTokenExpiresOn: momentJs.Moment;\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate oauthService: OAuthService,\r\n\t\tprivate spaApiHeadersService: SpaApiHeadersService,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate cookieStorage: CookieStorageService,\r\n\t\tprivate ngZone: NgZone,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\t@Inject(LIST_OF_ROLES) private listOfRoles: string[],\r\n\t\t@Inject(LIST_OF_ROOT_ROLES) private listOfRootRoles: string[],\r\n\t\t@Optional() @Inject(REQUIRED_ID_CLAIMS) private requiredIdClaims: RequiredIdClaims,\r\n\t\t@Inject(LIST_OF_UNASSIGNABLE_ROLES) private listOfUnassignableRoles: string[],\r\n\t\t@Inject(OIDC_REDIRECT_PATH) private oidcRedirectPath: string,\r\n\t) {\r\n\t}\r\n\r\n\tinit(): Promise<any> {\r\n\r\n\t\treturn new Promise<any>((resolve) => { // no \"reject\" argument because we MUST NOT REJECT this promise\r\n\r\n\t\t\tlet done = () => {\r\n\t\t\t\tthis._initialized = true;\r\n\t\t\t\tthis.initializedSubject.next(null);\r\n\t\t\t\tthis.initializedSubject.complete();\r\n\t\t\t\tresolve(null);\r\n\t\t\t};\r\n\r\n\t\t\tlet initError = (logMessage: string, message: string, err: any) => {\r\n\t\t\t\tthis.logger.logCritical(logMessage, err);\r\n\t\t\t\tthis.messageService.showError(message);\r\n\t\t\t\tthis.initError = err;\r\n\t\t\t\tdone();\r\n\t\t\t};\r\n\r\n\t\t\tlet signInError = (logMessage: string, message: string, err?: any) => {\r\n\t\t\t\tthis.logger.logError(logMessage, err);\r\n\t\t\t\tthis.messageService.showError(message);\r\n\t\t\t\tthis.signInError = err || message;\r\n\t\t\t\tdone();\r\n\t\t\t};\r\n\r\n\t\t\t// Initialize root authentication, if enabled. (fetch data from cookies, ...)\r\n\t\t\tthis.initRootAuth().then(rootProfile => {\r\n\t\t\t\tif (rootProfile) {\r\n\t\t\t\t\tthis.logger.logDebug('SpaControlService -- root profile fetched');\r\n\t\t\t\t\tthis._userProfile = this.instantiateRootUserProfile(rootProfile);\r\n\t\t\t\t}\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.logger.logDebug('SpaControlService -- cleaning root info (calling root logout), since an error occurred during root auth initialization. Error: ', err);\r\n\t\t\t\tthis.rootLogout();\r\n\t\t\t}).then(() => {\r\n\t\t\t\t// Initialize OIDC\r\n\t\t\t\tif (!Config.oidc.enabled) {\r\n\t\t\t\t\tthis.logger.logInformation('SpaControlService -- OIDC is disabled. Not initializing it...');\r\n\t\t\t\t\tdone();\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.initOidcAuth().then(() => {\r\n\t\t\t\t\t\tthis.logger.logDebug('SpaControlService -- processing authentication state');\r\n\t\t\t\t\t\tthis.oauthService.tryLogin().then(_ => {\r\n\r\n\t\t\t\t\t\t\tlet hasAccessToken = this.oauthService.hasValidAccessToken();\r\n\t\t\t\t\t\t\tthis.logger.logDebug(`SpaControlService -- OAuth login processed, hasValidAccessToken: ${hasAccessToken}`);\r\n\r\n\t\t\t\t\t\t\tif (!hasAccessToken) {\r\n\r\n\t\t\t\t\t\t\t\tdone();\r\n\r\n\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\tvar processSession = () => {\r\n\t\t\t\t\t\t\t\t\tthis.logger.logDebug(\"SpaControlService -- Processing session\");\r\n\r\n\t\t\t\t\t\t\t\t\tlet idClaims = this.oauthService.getIdentityClaims();\r\n\t\t\t\t\t\t\t\t\tthis.logger.logDebug('SpaControlService -- User identity claims: ', idClaims);\r\n\r\n\r\n\t\t\t\t\t\t\t\t\t// This way, the user is always redirected to grantid when the session has changed\r\n\t\t\t\t\t\t\t\t\tthis.oauthService.events.pipe(filter(e => e.type == 'session_changed')).subscribe(e => {\r\n\t\t\t\t\t\t\t\t\t\tthis.handleSessionChanged();\r\n\t\t\t\t\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\t\t\t\t// verify and reinforce required id claims\r\n\t\t\t\t\t\t\t\t\tif (this.requiredIdClaims) {\r\n\t\t\t\t\t\t\t\t\t\tif (this.requiredIdClaims.name && !idClaims[Config.oidc.nameClaim]) {\r\n\t\t\t\t\t\t\t\t\t\t\tsignInError('SpaControlService -- An error has occurred while processing your authentication (blank name). Please try again.',\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.transloco.translate('services.spa-control.error-claim-is-blank', { claim: 'name' }));\r\n\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (this.requiredIdClaims.cpf && !idClaims[Config.oidc.cpfClaim]) {\r\n\t\t\t\t\t\t\t\t\t\t\tsignInError('SpaControlService -- An error has occurred while processing your authentication (blank cpf). Please try again.',\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.transloco.translate('services.spa-control.error-claim-is-blank', { claim: 'CPF' }));\r\n\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (this.requiredIdClaims.emailAddress && !idClaims[Config.oidc.emailAddressClaim]) {\r\n\t\t\t\t\t\t\t\t\t\t\tsignInError('SpaControlService -- An error has occurred while processing your authentication (blank email address). Please try again.',\r\n\t\t\t\t\t\t\t\t\t\t\t\tthis.transloco.translate('services.spa-control.error-claim-is-blank', { claim: 'email address' }));\r\n\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t// check if the other claims are also filled\r\n\t\t\t\t\t\t\t\t\t\tif (this.requiredIdClaims.customClaims) {\r\n\t\t\t\t\t\t\t\t\t\t\tfor (let requiredClaim of this.requiredIdClaims.customClaims) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (!idClaims[requiredClaim]) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsignInError(`SpaControlService -- An error has occurred while processing your authentication (blank ${requiredClaim}). Please try again.`,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.transloco.translate('services.spa-control.error-claim-is-blank', { claim: requiredClaim }));\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\tthis.setApiHeaders(); // really needed?\r\n\t\t\t\t\t\t\t\t\tthis.oauthService.setupAutomaticSilentRefresh(this.getAuthParams());\r\n\r\n\t\t\t\t\t\t\t\t\tlet oauthState = this.getOAuthState();\r\n\t\t\t\t\t\t\t\t\tthis.pendingReturnUrl = oauthState['returnUrl'];\r\n\r\n\t\t\t\t\t\t\t\t\tthis.registerAndFetchProfile().then(p => {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// generate a new object for the claims and remove the main claims from it\r\n\t\t\t\t\t\t\t\t\t\tlet customClaims = { ...idClaims };\r\n\t\t\t\t\t\t\t\t\t\tdelete customClaims[Config.oidc.nameClaim];\r\n\t\t\t\t\t\t\t\t\t\tdelete customClaims[Config.oidc.emailAddressClaim];\r\n\t\t\t\t\t\t\t\t\t\tdelete customClaims[Config.oidc.cpfClaim];\r\n\r\n\t\t\t\t\t\t\t\t\t\tthis.logger.logInformation('SpaControlService -- user profile fetched: ', p);\r\n\t\t\t\t\t\t\t\t\t\tthis._userProfile = new UserProfile(\r\n\t\t\t\t\t\t\t\t\t\t\tp.id,\r\n\t\t\t\t\t\t\t\t\t\t\tidClaims[Config.oidc.nameClaim],\r\n\t\t\t\t\t\t\t\t\t\t\tidClaims[Config.oidc.emailAddressClaim],\r\n\t\t\t\t\t\t\t\t\t\t\tidClaims[Config.oidc.cpfClaim],\r\n\t\t\t\t\t\t\t\t\t\t\tcustomClaims,\r\n\t\t\t\t\t\t\t\t\t\t\tp.subscriptions,\r\n\t\t\t\t\t\t\t\t\t\t\tp.adminRoles,\r\n\t\t\t\t\t\t\t\t\t\t\tp.permissionsOnRoot,\r\n\t\t\t\t\t\t\t\t\t\t\tp.isLocked\r\n\t\t\t\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t\t\t\t\tdone();\r\n\t\t\t\t\t\t\t\t\t}, err => {\r\n\t\t\t\t\t\t\t\t\t\t// Error fetching user profile or registering\r\n\t\t\t\t\t\t\t\t\t\tsignInError('SpaControlService -- An error has occurred while fetching your user profile. Please try again.',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.transloco.translate('services.spa-control.error-fetching-user-profile'), err);\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (Config.oidc.sessionCheckEnabled && !this.isSafari13()) {\r\n\t\t\t\t\t\t\t\t\tthis.logger.logDebug(\"SpaControlService -- Starting checksession\");\r\n\t\t\t\t\t\t\t\t\tthis.checkSession().then(processSession , err => {\r\n\t\t\t\t\t\t\t\t\t\tthis.logger.logDebug(\"SpaControlService -- Check session error\");\r\n\t\t\t\t\t\t\t\t\t\tsignInError('SpaControlService -- there was an error when checking the user session in the identity provider',\r\n\t\t\t\t\t\t\t\t\t\t\tthis.transloco.translate('services.spa-control.error-checking-user-session'), err);\r\n\t\t\t\t\t\t\t\t\t\tprocessSession();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tthis.logger.logDebug(\"SpaControlService -- Bypassing checksession\");\r\n\t\t\t\t\t\t\t\t\tprocessSession();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}, err => {\r\n\t\t\t\t\t\t\t// Error processing auth state (for instance, user didn't consent)\r\n\t\t\t\t\t\t\tif (err instanceof OAuthErrorEvent) {\r\n\t\t\t\t\t\t\t\tlet oauthError = (err as OAuthErrorEvent);\r\n\t\t\t\t\t\t\t\tif (oauthError.type === 'token_error' && oauthError.params['error'] === 'access_denied') {\r\n\t\t\t\t\t\t\t\t\tsignInError('SpaControlService -- You must consent access to the required resources',\r\n\t\t\t\t\t\t\t\t\t\tthis.transloco.translate('services.spa-control.error-you-must-consent-access'), err);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse if (oauthError.type === 'invalid_nonce_in_state') {\r\n\t\t\t\t\t\t\t\t\tthis.logger.logError(\"The nonce in your storage is invalid. \")\r\n\t\t\t\t\t\t\t\t\tif (this.shouldAttemptLogin()) {\r\n\t\t\t\t\t\t\t\t\t\tlet oauthState = this.getOAuthState();\r\n\t\t\t\t\t\t\t\t\t\tthis.startLogin(oauthState['returnUrl']);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t}, err => {\r\n\t\t\t\t\t\t// Auth init error (should not happen, irrecoverable)\r\n\t\t\t\t\t\tinitError('SpaControlService -- Error initializing OAuth: ',\r\n\t\t\t\t\t\t\tthis.transloco.translate('services.spa-control.error-initializing-oauth'), err);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate initRootAuth() {\r\n\t\treturn new Promise<Profile>((resolve, reject) => {\r\n\t\t\tif (Config.rootAuthenticationEnabled) {\r\n\t\t\t\tthis.logger.logDebug('SpaControlService -- root auth enabled. Fetching root token from cookie...');\r\n\t\t\t\tlet rootToken = this.cookieStorage.getItem(rootTokenKey);\r\n\t\t\t\tlet rootTokenExpiration = this.cookieStorage.getItem(rootTokenExpirationKey);\r\n\t\t\t\tlet rootTokenExpirationMoment: momentJs.Moment;\r\n\r\n\t\t\t\tif (rootToken && rootTokenExpiration) {\r\n\t\t\t\t\tif ((rootTokenExpirationMoment = moment(rootTokenExpiration)).isAfter()) {\r\n\t\t\t\t\t\tthis.logger.logDebug(`SpaControlService -- root token was successfully fetched and is valid (expires on ${rootTokenExpiration}).`);\r\n\t\t\t\t\t\tthis._rootToken = rootToken;\r\n\t\t\t\t\t\tthis._rootTokenExpiresOn = rootTokenExpirationMoment;\r\n\t\t\t\t\t\tthis.setApiHeaders();\r\n\r\n\t\t\t\t\t\tthis.http.get<Profile>('/api/profile').subscribe(resolve, err => {\r\n\t\t\t\t\t\t\tthis.logger.logError('SpaControlService -- error while fetching root profile: ', err);\r\n\t\t\t\t\t\t\tthis.messageService.showError(this.transloco.translate('services.spa-control.error-fetching-root-profile'));\r\n\t\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.logger.logDebug(`SpaControlService -- root token found in cookie storage, but it is expired (expires on ${rootTokenExpiration}). Not using root authentication then...`);\r\n\t\t\t\t\t\tresolve(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.logger.logDebug('SpaControlService -- root token not found in cookie storage. Not using root authentication then...');\r\n\t\t\t\t\tresolve(null);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tthis.logger.logInformation('SpaControlService -- root authentication is disabled. Not initializing it...');\r\n\t\t\t\tresolve(null);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate checkSession(): Promise<any> {\r\n\t\tthis.startCheckSession();\r\n\r\n\t\treturn new Promise<any>((resolve, reject) => {\r\n\t\t\tthis.logger.logDebug('SpaControlService -- Starting session check');\r\n\t\t\tthis.sessionCheckEventListener = (e: MessageEvent) => {\r\n\t\t\t\tthis.logger.logDebug('SpaControlService -- Starting session check');\r\n\r\n\t\t\t\t// only run in Angular zone if it is 'changed' or 'error'\r\n\t\t\t\tswitch (e.data) {\r\n\t\t\t\t\tcase 'unchanged':\r\n\t\t\t\t\t\tthis.ngZone.run(() => {\r\n\t\t\t\t\t\t\tthis.removeSessionCheckEventListener();\r\n\t\t\t\t\t\t\tclearTimeout(this.sessionCheckStartupTimeout)\r\n\t\t\t\t\t\t\tresolve(null);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'changed':\r\n\t\t\t\t\t\tthis.ngZone.run(() => {\r\n\t\t\t\t\t\t\tthis.logger.logDebug('SpaControlService -- Session change detected');\r\n\t\t\t\t\t\t\tclearTimeout(this.sessionCheckStartupTimeout)\r\n\t\t\t\t\t\t\tthis.removeSessionCheckEventListener();\r\n\t\t\t\t\t\t\tthis.handleSessionChanged()\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase 'error':\r\n\t\t\t\t\t\tthis.ngZone.run(() => {\r\n\t\t\t\t\t\t\tthis.removeSessionCheckEventListener();\r\n\t\t\t\t\t\t\tthis.logger.logDebug('SpaControlService -- error detected when cheking session');\r\n\t\t\t\t\t\t\tclearTimeout(this.sessionCheckStartupTimeout)\r\n\t\t\t\t\t\t\tresolve(null);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t};\r\n\r\n\t\t\tthis.sessionCheckStartupTimeout = setTimeout(() => {\r\n\t\t\t\tthis.logger.logDebug('SpaControlService -- Session check timeout');\r\n\t\t\t\tresolve(null);\r\n\t\t\t}, 10 * 1000)\r\n\r\n\t\t\tthis.ngZone.runOutsideAngular(() => {\r\n\t\t\t\twindow.addEventListener('message', this.sessionCheckEventListener);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprotected handleSessionChanged() {\r\n\t\tthis.logger.logDebug(\"Detected that user session has changed, refreshing\");\r\n\t\tlet returnUrl = window.location.pathname + window.location.search;\r\n\t\tthis.startLogin(returnUrl);\r\n\t}\r\n\r\n\tprotected startCheckSession(): void {\r\n\r\n\t\tconst existingIframe = document.getElementById(this.oauthService.sessionCheckIFrameName);\r\n\t\tif (existingIframe) {\r\n\t\t\tdocument.body.removeChild(existingIframe);\r\n\t\t}\r\n\r\n\t\tconst iframe = document.createElement('iframe');\r\n\t\tiframe.id = this.oauthService.sessionCheckIFrameName;\r\n\t\tconst url = this.oauthService.sessionCheckIFrameUrl;\r\n\t\tiframe.setAttribute('src', url);\r\n\t\tiframe.style.display = 'none';\r\n\t\tdocument.body.appendChild(iframe);\r\n\r\n\t\tconst sessionState = this.getSessionState();\r\n\r\n\t\tconst message = this.oauthService.clientId + ' ' + sessionState;\r\n\r\n\t\tiframe.onload = () => {\r\n\t\t\tiframe.contentWindow.postMessage(message, this.oauthService.issuer);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected getSessionState(): string {\r\n\t\treturn this.cookieStorage.getItem('session_state');\r\n\t}\r\n\r\n\tprivate removeSessionCheckEventListener(): void {\r\n\t\tif (this.sessionCheckEventListener) {\r\n\t\t\twindow.removeEventListener('message', this.sessionCheckEventListener);\r\n\t\t\tthis.sessionCheckEventListener = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate initOidcAuth(): Promise<any> {\r\n\r\n\t\treturn new Promise<any>((resolve, reject) => {\r\n\r\n\t\t\tthis.logger.logDebug('SpaControlService -- initializing OAuth');\r\n\t\t\tif (Config.oidc.jwks) {\r\n\t\t\t\tthis.oauthService['loadJwks'] = function () {\r\n\t\t\t\t\treturn new Promise<object>((resolve, reject) => {\r\n\t\t\t\t\t\tlet jwks = { keys: Config.oidc.jwks };\r\n\t\t\t\t\t\tthis.jwks = jwks;\r\n\t\t\t\t\t\tthis.eventsSubject.next(new OAuthSuccessEvent('discovery_document_loaded'));\r\n\t\t\t\t\t\tresolve(jwks);\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t\tthis.oauthService.events.subscribe(this.onOAuthEvent);\r\n\r\n\t\t\tlet isInIframe = window.location !== window.parent.location;\r\n\t\t\t//in iframe we will use session storage which is the default for oauthService. This prevents SPA cookie problems (such as requiring SameSite=None)\r\n\t\t\tif (!isInIframe) {\r\n\t\t\t\t// Using a custom cookie storage as the localStorage might not be supported in the expected way by all browsers\r\n\t\t\t\tthis.oauthService.setStorage(this.cookieStorage);\r\n\t\t\t}\r\n\r\n\t\t\tthis.oauthService.tokenValidationHandler = new JwksValidationHandler();\r\n\r\n\t\t\tlet checksessionEnabled = Config.oidc.sessionCheckEnabled && !this.isSafari13();\r\n\r\n\t\t\tlet redirectUri = `${Config.oidc.redirectUri || window.location.origin}`;\r\n\r\n\t\t\tif (this.oidcRedirectPath) {\r\n\t\t\t\tlet path = this.oidcRedirectPath.trim();\r\n\t\t\t\tif (path.startsWith(\"/\")) {\r\n\t\t\t\t\tpath = path.substring(1);\r\n\t\t\t\t}\r\n\t\t\t\tredirectUri = `${redirectUri}/${path}`;\r\n\t\t\t}\r\n\r\n\t\t\tthis.oauthService.configure({\r\n\r\n\t\t\t\t// Url of the Identity Provider\r\n\t\t\t\tissuer: Config.oidc.authority,\r\n\r\n\t\t\t\t// Do not validate dates in the frontend as the client clock might be wrong.\r\n\t\t\t\tskipExpirationChecks: true,\r\n\r\n\t\t\t\t// URL of the SPA to redirect the user after login\r\n\t\t\t\tredirectUri: redirectUri,\r\n\r\n\t\t\t\t// URL of the SPA to redirect the user after logout\r\n\t\t\t\tpostLogoutRedirectUri: Config.oidc.postLogoutRedirectUri || window.location.origin,\r\n\r\n\t\t\t\t// URL of the SPA to redirect the user after silent refresh\r\n\t\t\t\tsilentRefreshRedirectUri: `${window.location.origin}/silent-refresh.html`,\r\n\t\t\t\t// The SPA's id. The SPA is registerd with this id at the auth-server\r\n\t\t\t\tclientId: Config.oidc.clientId,\r\n\r\n\t\t\t\t// set the scope for the permissions the client should request\r\n\t\t\t\t// The first two are defined by OIDC. The 3rd is a usecase-specific one\r\n\t\t\t\tscope: `openid profile ${Config.oidc.customScopes} ${Config.oidc.apiName}`,\r\n\t\t\t\tskipIssuerCheck: Config.oidc.skipIssuerCheck,\r\n\t\t\t\tstrictDiscoveryDocumentValidation: Config.oidc.strictDiscoveryDocumentValidation,\r\n\t\t\t\tsessionChecksEnabled: checksessionEnabled,\r\n\t\t\t\trequireHttps: Config.oidc.requireHttps\r\n\t\t\t});\r\n\r\n\t\t\tthis.oauthService.loadDiscoveryDocument().then(_ => {\r\n\t\t\t\tthis.logger.logDebug('SpaControlService -- OAuth initialized');\r\n\t\t\t\tresolve(null);\r\n\t\t\t}, reject);\r\n\t\t});\r\n\t}\r\n\r\n\tprivate registerAndFetchProfile(): Promise<Profile> {\r\n\r\n\t\treturn new Promise<Profile>((resolve, reject) => {\r\n\r\n\t\t\tlet fetchProfile = (onNotRegistered) => {\r\n\t\t\t\tthis.logger.logDebug('SpaControlService -- fetching user profile ...');\r\n\t\t\t\tthis.http.get<Profile>('/api/profile').subscribe(resolve, err => {\r\n\t\t\t\t\tif (this.isApiError(err, ErrorCodes.NotRegistered)) {\r\n\t\t\t\t\t\tonNotRegistered(err);\r\n\t\t\t\t\t} else if (err.status === 401 && this.shouldAttemptLogin()) {\r\n\t\t\t\t\t\tlet returnUrl = window.location.pathname + window.location.search;\r\n\t\t\t\t\t\tthis.logger.logInformation('SpaControlService -- Profile API unauthorized error starting login, error: ', err, ', returnUrl: ', returnUrl);\r\n\t\t\t\t\t\tthis.startLogin(returnUrl);\r\n\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treject(err);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\t\tlet registerAndFetchProfile = () => {\r\n\r\n\t\t\t\tthis.logger.logDebug('SpaControlService -- Registering ...');\r\n\r\n\t\t\t\tthis.http.post('/api/register', null).subscribe(() => {\r\n\r\n\t\t\t\t\tthis.logger.logInformation('SpaControlService -- Registered');\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tlocalStorage.setItem(dateRegisteredKey, (new Date()).getTime().toString());\r\n\t\t\t\t\t} catch (e) {\r\n\t\t\t\t\t\tthis.logger.logWarning(`SpaControlService -- '${dateRegisteredKey}' could not be saved in local storage`);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfetchProfile(reject/*err => {\r\n\t\t\t\t\t\treject('NotRegistered error while fetching user profile (after registering): ', err);\r\n\t\t\t\t\t}*/);\r\n\r\n\t\t\t\t}, reject/*err => {\r\n\t\t\t\t\tif (this.isHttpUnauthorizedError(err)) {\r\n\t\t\t\t\t\tthis.logger.logError('Unauthorized error signing in: ', err);\r\n\t\t\t\t\t\t// Is this the correct thing to do?\r\n\t\t\t\t\t\tdone();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\terror('Error signing in: ', err);\r\n\t\t\t\t\t}\r\n\t\t\t\t}*/);\r\n\t\t\t};\r\n\r\n\t\t\tif (localStorage.getItem(dateRegisteredKey)) {\r\n\t\t\t\tthis.logger.logDebug('SpaControlService -- Register bypassed');\r\n\t\t\t\tfetchProfile(err => {\r\n\t\t\t\t\tthis.logger.logWarning('SpaControlService -- NotRegistered error while fetching user profile (register was bypassed): ', err);\r\n\t\t\t\t\tregisterAndFetchProfile();\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tregisterAndFetchProfile();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprivate refreshUserSubscriptions(): Promise<SubscriptionAccess[]> {\r\n\t\treturn new Promise<SubscriptionAccess[]>((resolve, reject) => {\r\n\t\t\tthis.http.get<SubscriptionAccess[]>(`/api/profile/subscriptions`, {}).subscribe(resolve, err => {\r\n\t\t\t\treject(err);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tpublic startLogin(returnUrl?: string, params?: any): void {\r\n\t\tif (Config.oidc.enabled) {\r\n\t\t\tlet state = {\r\n\t\t\t\treturnUrl: returnUrl || this.pendingReturnUrl\r\n\t\t\t};\r\n\t\t\tthis.logger.logInformation('SpaControlService -- starting OAuth implicit flow, state:', state);\r\n\t\t\tthis.lastLoginAttempt = new Date();\r\n\t\t\tthis.oauthService.initImplicitFlow(base64url.encode(JSON.stringify(state)), { ...this.getAuthParams(), ...params });\r\n\t\t} else {\r\n\t\t\tthis.logger.logInformation('SpaControlService -- not starting login, since OIDC is disabled...');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getOAuthState(): any {\r\n\t\tlet state = {};\r\n\t\tif (this.oauthService.state) {\r\n\t\t\ttry {\r\n\t\t\t\tstate = JSON.parse(base64url.decode(this.oauthService.state));\r\n\t\t\t} catch (err) {\r\n\t\t\t\tthis.logger.logError('SpaControlService -- error parsing OAuth state', err);\r\n\t\t\t}\r\n\t\t\tthis.logger.logTrace('SpaControlService -- OAuth state', state);\r\n\t\t}\r\n\t\treturn state;\r\n\t}\r\n\r\n\tpublic shouldAttemptLogin(): boolean {\r\n\t\tif (this.lastLoginAttempt !== null && new Date().getTime() - this.lastLoginAttempt.getTime() < loginLoopThreshold) {\r\n\t\t\tthis.logger.logWarning('SpaControlService -- OAuth redirect loop detected');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tprivate get lastLoginAttempt(): Date {\r\n\t\tlet ticks = parseInt(sessionStorage.getItem(lastLoginAttemptKey));\r\n\t\treturn (!Number.isNaN(ticks) ? new Date(ticks) : null);\r\n\t}\r\n\r\n\tprivate set lastLoginAttempt(date: Date) {\r\n\t\tif (date) {\r\n\t\t\tsessionStorage.setItem(lastLoginAttemptKey, date.getTime().toString());\r\n\t\t} else {\r\n\t\t\tsessionStorage.removeItem(lastLoginAttemptKey);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getAuthParams(): object {\r\n\t\tlet parameters = {};\r\n\t\tif (Config.oidc.audienceParamName) {\r\n\t\t\tparameters[Config.oidc.audienceParamName] = Config.oidc.apiName;\r\n\t\t}\r\n\r\n\t\tlet culture = Config.oidc.culture ? Config.oidc.culture : this.transloco.getActiveLang();\r\n\t\tif (culture) {\r\n\t\t\tparameters['culture'] = culture;\r\n\t\t}\r\n\t\treturn parameters;\r\n\t}\r\n\r\n\tprivate onOAuthEvent = (e: OAuthEvent) => {\r\n\t\tthis.logger.logDebug('SpaControlService -- OAuth event: ', e);\r\n\t\tif (e.type === 'token_received') {\r\n\t\t\tthis.setApiHeaders();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getHeaders(sub?: string) {\r\n\t\tlet headers = {};\r\n\t\theaders[Config.subscriptionHeader] = sub || this.selectedSubscriptionSnapshot.sub;\r\n\r\n\t\tif (Config.oidc.enabled && this.oauthService.hasValidAccessToken()) {\r\n\t\t\theaders['Authorization'] = `Bearer ${this.oauthService.getAccessToken()}`;\r\n\t\t} else if (Config.rootAuthenticationEnabled && this.hasRootToken()) {\r\n\t\t\theaders['Authorization'] = `RootToken ${this._rootToken}`;\r\n\t\t}\r\n\r\n\t\treturn headers;\r\n\t}\r\n\r\n\tprivate setApiHeaders(nextSubValue?: string): void {\r\n\t\tlet headers = this.getHeaders(nextSubValue);\r\n\t\tthis.spaApiHeadersService.apiHeaders = headers;\r\n\t\tthis.logger.logDebug('SpaControlService -- updated HTTP headers', headers);\r\n\t}\r\n\r\n\tprivate ensureInitialized() {\r\n\t\tif (!this._initialized) {\r\n\t\t\tthrow 'SPA is not yet initialized';\r\n\t\t}\r\n\t}\r\n\r\n\tprivate isHttpUnauthorizedError(err: any): boolean {\r\n\t\treturn (err instanceof HttpErrorResponse && (err as HttpErrorResponse).status === 401);\r\n\t}\r\n\r\n\tprivate isApiError(err: any, code: ErrorCodes): boolean {\r\n\t\treturn (err instanceof HttpErrorResponse && (err as HttpErrorResponse).status === 422 && (err as HttpErrorResponse).error.code === code);\r\n\t}\r\n\r\n\tgetHangfireAccessTicket(): Observable<string> {\r\n\t\treturn this.http.get<string>('/api/admin/hangfire-ticket');\r\n\t}\r\n\r\n\tgetUserPermissionsOnSubscription(sub: string): Observable<Permissions[]> {\r\n\t\tif (this.userPermissionsOnSubs[sub]) {\r\n\t\t\tthis.logger.logTrace(`SpaControlService -- returning observable of user permissions on subscription \"${sub}\" from cache...`);\r\n\t\t\treturn this.userPermissionsOnSubs[sub].asObservable().pipe(tap(p => this.logger.logTrace(`SpaControlService -- user permissions on sub \"${sub}\", fetched from async subject on cache: `, p)));\r\n\t\t}\r\n\r\n\t\tlet userPermissionsOnSubSubject = new AsyncSubject<Permissions[]>();\r\n\t\tthis.userPermissionsOnSubs[sub] = userPermissionsOnSubSubject;\r\n\r\n\t\tlet headers = this.getHeaders(sub);\r\n\t\tthis.logger.logTrace(`SpaControlService -- fetching user permissions on sub \"${sub}\" from API. Headers used on call to permissions API: `, headers);\r\n\t\tthis.http.get<Permissions[]>('/api/profile/permissions', { headers })\r\n\t\t\t.pipe(tap(p => this.logger.logTrace(`SpaControlService -- user permissions on sub \"${sub}\", fetched from API: `, p)))\r\n\t\t\t.subscribe(userPermissionsOnSubSubject);\r\n\r\n\t\treturn userPermissionsOnSubSubject.asObservable();\r\n\t}\r\n\r\n\tuserHasPermissionOnSubscription(sub: string, permission?: Permissions): Observable<boolean> {\r\n\t\treturn this.getUserPermissionsOnSubscription(sub).pipe(map(permissionsOnSub => permission ? permissionsOnSub.includes(permission) : permissionsOnSub.length > 0));\r\n\t}\r\n\r\n\tuserHasPermissionOnSelectedSubscription(permission?: Permissions): Observable<boolean> {\r\n\t\treturn this.selectedSubscription.pipe(map(s => permission ? s.permissions.includes(permission) : s.permissions.length > 0));\r\n\t}\r\n\r\n\tuserHasAnyRootRole(): boolean {\r\n\t\treturn this.userProfile && this.userProfile.adminRoles.length > 0;\r\n\t}\r\n\r\n\tuserHasAnyRoleOnSubscription(sub: string): boolean {\r\n\t\treturn this.userProfile && this.userProfile.adminRoles.length > 0 || this.userProfile.subscriptions.some(s => s.subscription.id == sub && s.roles.length > 0);\r\n\t}\r\n\r\n\tuserHasAnyRole(): boolean {\r\n\t\treturn this.userProfile && (this.userProfile.adminRoles.length > 0 || this.userProfile.subscriptions.length > 0);\r\n\t}\r\n\r\n\ttrySetSubscription(sub: string): Observable<boolean> {\r\n\r\n\t\tthis.logger.logDebug(`SpaControlService -- trying to set subscription to \"${sub}\"`);\r\n\r\n\t\tlet emptySubPermissionModel: SubscriptionPermissionsModel = { sub, subscription: null, roles: [], permissions: [] };\r\n\t\tlet subAccess = this.userProfile.subscriptions.find(s => s.subscription.id == sub);\r\n\r\n\t\tif (subAccess || sub === Config.subscriptionNoFilter || sub === Config.subscriptionRoot) {\r\n\t\t\treturn this.getUserPermissionsOnSubscription(sub).pipe(\r\n\t\t\t\ttap(ps => {\r\n\t\t\t\t\tif (ps.length > 0) {\r\n\t\t\t\t\t\tthis.logger.logTrace(`SpaControlService -- user has access to the subscription \"${sub}\"`);\r\n\t\t\t\t\t\tif (sub !== Config.subscriptionRoot) {\r\n\t\t\t\t\t\t\t// We don't save if sub is root because the root is no longer a selection, but a different area altogether\r\n\t\t\t\t\t\t\tthis.saveSubInLocalStorage(sub);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tthis.setApiHeaders(sub);\r\n\t\t\t\t\t\tsubAccess = subAccess || { subscription: null, roles: [] };\r\n\t\t\t\t\t\tthis.subscriptionSubject.next({ sub, permissions: ps, ...subAccess });\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.logger.logInformation(`SpaControlService -- user has no permissions on subscription \"${sub}\"`);\r\n\t\t\t\t\t\tthis.setApiHeaders(sub);\r\n\t\t\t\t\t\tthis.subscriptionSubject.next(emptySubPermissionModel);\r\n\t\t\t\t\t}\r\n\t\t\t\t}),\r\n\t\t\t\tmap(ps => ps.length > 0),\r\n\t\t\t\tcatchError(err => {\r\n\t\t\t\t\tlet subLabel = this.transloco.translate('common.subscription');\r\n\t\t\t\t\tthis.logger.logInformation('SpaControlService -- error caught while trying to set subscription. Assuming that user has no permissions. Error: ', err);\r\n\t\t\t\t\tthis.messageService.showError(this.transloco.translate('services.spa-control.error-trying-to-set-subscription', { subLabel }));\r\n\t\t\t\t\treturn of(false);\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis.logger.logInformation(`SpaControlService -- user has no access to subscription \"${sub}\"`);\r\n\t\t\tthis.setApiHeaders(sub);\r\n\t\t\tthis.subscriptionSubject.next(emptySubPermissionModel);\r\n\t\t\treturn of(false);\r\n\t\t}\r\n\t}\r\n\r\n\tgetSubscriptionRoles(sub: string, dontFilterUnassignableRoles?: boolean): string[] {\r\n\t\tif (sub === Config.subscriptionRoot) {\r\n\t\t\treturn this.listOfRootRoles;\r\n\t\t} else {\r\n\t\t\treturn this.listOfRoles.filter(r => dontFilterUnassignableRoles || !this.listOfUnassignableRoles.some(ur => r === ur));\r\n\t\t}\r\n\t}\r\n\r\n\tguessSubscription(): string {\r\n\t\tlet lastSub = this.lastSubscription;\r\n\r\n\t\t// if the subscription that is saved in localStorage is not listed in user's subscriptions,\r\n\t\t// remove it from localStorage, in order to avoid a future error or misbehavior from lacuna-spa\r\n\t\tif (lastSub && !this.userProfile.subscriptions.map(s => s.subscription.id).includes(lastSub)) {\r\n\t\t\tthis.logger.logInformation(`SpaControlService -- Removing subscription '${lastSub}' from local storage, as it is not listed in user subscriptions`);\r\n\t\t\tlastSub = '';\r\n\t\t\tthis.saveSubInLocalStorage(lastSub);\r\n\t\t}\r\n\r\n\t\tif (lastSub && lastSub != Config.subscriptionRoot && this.userHasAnyRoleOnSubscription(lastSub)) {\r\n\t\t\treturn lastSub;\r\n\t\t} else if (this.userHasAnyRootRole()) {\r\n\t\t\treturn Config.subscriptionNoFilter;\r\n\t\t} else if (this.userProfile.subscriptions.length > 0) {\r\n\t\t\treturn this.userProfile.subscriptions[0].subscription.id;\r\n\t\t} else {\r\n\t\t\t// user does not have access to any subscription\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tpublic saveSubInLocalStorage(sub: string) {\r\n\t\ttry {\r\n\t\t\tlocalStorage.setItem(subscriptionFilterKey, sub);\r\n\t\t\tthis.logger.logDebug(`SpaControlService -- ${subscriptionFilterKey} set to \"${sub}\" in local storage`);\r\n\t\t} catch (e) {\r\n\t\t\tthis.logger.logWarning(`SpaControlService -- could not set ${subscriptionFilterKey} to \"${sub}\" in local storage`);\r\n\t\t}\r\n\t}\r\n\r\n\tget lastSubscription(): string {\r\n\t\treturn localStorage.getItem(subscriptionFilterKey);\r\n\t}\r\n\r\n\tsignOut(noRedirectToLogoutUrl?: boolean): string {\r\n\t\tthis.oauthService.logOut(noRedirectToLogoutUrl);\r\n\t\tif (this.oauthService.logoutUrl) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn '/';\r\n\t\t}\r\n\t}\r\n\r\n\tclaimAccess(claimCode: string): Promise<any> {\r\n\t\treturn new Promise<any>((resolve, reject) => {\r\n\t\t\tthis.http.post('/api/claim-access', {\r\n\t\t\t\tclaimCode: claimCode\r\n\t\t\t}).subscribe(() => {\r\n\t\t\t\tlocation.href = '/';\r\n\t\t\t\t// don't resolve\r\n\t\t\t}, err => {\r\n\t\t\t\tlet msg: string = null;\r\n\t\t\t\tif (err instanceof HttpErrorResponse) {\r\n\t\t\t\t\tlet httpErr = err as HttpErrorResponse;\r\n\t\t\t\t\tif (err.status === 422 && err.error.code === ErrorCodes.InvalidClaimCode) {\r\n\t\t\t\t\t\tmsg = 'Invalid claim code';\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tmsg = msg || (err.error && err.error.message ? err.error.message : `An error has occurred: ${err.message}`);\r\n\t\t\t\treject(msg);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\ttryPopReturnUrl(): string {\r\n\t\tlet result = this.pendingReturnUrl;\r\n\t\tthis.pendingReturnUrl = null;\r\n\t\treturn result;\r\n\t}\r\n\r\n\trootLogin(rootPassword: string): Observable<RootAuthenticationResponse> {\r\n\t\tlet request: RootAuthenticationRequest = { rootPassword };\r\n\t\tthis.logger.logInformation('SpaControlService -- starting login with root authentication');\r\n\t\treturn this.http.post<RootAuthenticationResponse>('/api/root-auth', request).pipe(\r\n\t\t\ttap(response => {\r\n\t\t\t\tif (response.result == RootLoginResult.Success) {\r\n\t\t\t\t\tthis.logger.logTrace('SpaControlService -- root token retrieved');\r\n\t\t\t\t\tthis._rootToken = response.rootToken;\r\n\t\t\t\t\tthis._rootTokenExpiresOn = moment(response.expiresOn);\r\n\t\t\t\t\tthis.setApiHeaders();\r\n\t\t\t\t\tthis._userProfile = this.instantiateRootUserProfile(response.rootProfile);\r\n\t\t\t\t\tthis.cookieStorage.setItem(rootTokenKey, response.rootToken);\r\n\t\t\t\t\tthis.cookieStorage.setItem(rootTokenExpirationKey, response.expiresOn);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.logger.logTrace('SpaControlService -- login with root authentication failed');\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\trootLogout(): void {\r\n\t\tthis.logger.logInformation('SpaControlService -- logging out with root authentication');\r\n\t\tthis._rootToken = null;\r\n\t\tthis._rootTokenExpiresOn = null;\r\n\t\tthis._userProfile = null;\r\n\t\tthis.cookieStorage.removeItem(rootTokenKey);\r\n\t\tthis.cookieStorage.removeItem(rootTokenExpirationKey);\r\n\t\tthis.setApiHeaders();\r\n\t}\r\n\r\n\tinstantiateRootUserProfile(rootProfile: Profile): UserProfile {\r\n\t\treturn new UserProfile(\r\n\t\t\trootProfile.id,\r\n\t\t\t'Root',\r\n\t\t\t'',\r\n\t\t\t'',\r\n\t\t\t{},\r\n\t\t\trootProfile.subscriptions,\r\n\t\t\trootProfile.adminRoles,\r\n\t\t\trootProfile.permissionsOnRoot,\r\n\t\t\tfalse\r\n\t\t);\r\n\t}\r\n\r\n\t// Methods to facilitate the management of different authentication schemes, such as Oidc and root authentication\r\n\r\n\tgetRootToken(): string {\r\n\t\treturn this._rootToken;\r\n\t}\r\n\thasRootToken(): boolean {\r\n\t\treturn !!this._rootToken;\r\n\t}\r\n\r\n\thasValidOidcToken(): boolean {\r\n\t\treturn this.oauthService.hasValidAccessToken();\r\n\t}\r\n\tgetOidcToken(): string {\r\n\t\treturn this.oauthService.getAccessToken();\r\n\t}\r\n\r\n\tgetUserAgent() {\r\n\t\tvar ua= navigator.userAgent, tem,\r\n\t\tM= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\\/))\\/?\\s*(\\d+)/i) || [];\r\n\t\tif(/trident/i.test(M[1])){\r\n\t\t\ttem=  /\\brv[ :]+(\\d+)/g.exec(ua) || [];\r\n\t\t\treturn 'IE '+(tem[1] || '');\r\n\t\t}\r\n\t\tif(M[1]=== 'Chrome'){\r\n\t\t\ttem= ua.match(/\\b(OPR|Edge)\\/(\\d+)/);\r\n\t\t\tif(tem!= null) return tem.slice(1).join(' ').replace('OPR', 'Opera');\r\n\t\t}\r\n\t\tM= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?'];\r\n\t\tif((tem= ua.match(/version\\/(\\d+)/i))!= null) M.splice(1, 1, tem[1]);\r\n\t\treturn M.join(' ');\r\n\t}\r\n\r\n\tisSafari13() {\r\n\t\tvar userAgent = this.getUserAgent().toLowerCase();\r\n\t\tthis.logger.logDebug(\"SpaControlService -- Detected user agent\", userAgent);\r\n\t\treturn userAgent.includes('safari 13');\r\n\t}\r\n}\r\n","import { Component, OnInit, Inject, ViewChild, SecurityContext } from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-fancy-confirm',\r\n    templateUrl: './dialog-fancy-confirm.component.html',\r\n    styleUrls: ['./dialog-fancy-confirm.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogFancyConfirmComponent implements OnInit {\r\n\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tconfirmButtonText: string;\r\n\tconfirmButtonColor: ThemePalette;\r\n\tconfirmButtonMatIcon: string;\r\n\tcancelButtonText: string;\r\n\tcancelButtonColor: ThemePalette;\r\n\tcancelButtonMatIcon: string;\r\n\tuseMessageAsHtml: boolean;\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate domSanitizer: DomSanitizer,\r\n\t\tprivate transloco: TranslocoService\r\n\t) {\r\n\t\tthis.title = data.title || this.transloco.translate('common.confirm');\r\n\t\tthis.message = data.message || this.transloco.translate('common.are-you-sure');\r\n\t\tthis.confirmButtonText = data.confirmButtonText || 'OK';\r\n\t\tthis.confirmButtonColor = data.confirmButtonColor || 'primary';\r\n\t\tthis.confirmButtonMatIcon = data.confirmButtonMatIcon || undefined;\r\n\t\tthis.cancelButtonText = data.cancelButtonText || this.transloco.translate('common.cancel');\r\n\t\tthis.cancelButtonColor = data.cancelButtonColor || 'primary';\r\n\t\tthis.cancelButtonMatIcon = data.cancelButtonMatIcon || undefined;\r\n\t\tthis.useMessageAsHtml = data.useMessageAsHtml || false;\r\n\r\n\t\tif (this.useMessageAsHtml) {\r\n\t\t\tthis.message = this.domSanitizer.sanitize(SecurityContext.HTML, this.message);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n}\r\n","<spa-dialog-title [disableClose]=\"data.disableClose\">{{title}}</spa-dialog-title>\r\n\r\n<div mat-dialog-content>\r\n\t@if (message) {\r\n\t\t@if (useMessageAsHtml) {\r\n\t\t\t<span [innerHTML]=\"message\"></span>\r\n\t\t}\r\n\t\t@if (!useMessageAsHtml) {\r\n\t\t\t<span>{{message}}</span>\r\n\t\t}\r\n\t}\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n\t<button mat-flat-button [mat-dialog-close]=\"true\" [color]=\"confirmButtonColor\">\r\n\t\t@if (confirmButtonMatIcon) {\r\n\t\t\t<mat-icon class=\"me-2\">{{confirmButtonMatIcon}}</mat-icon>\r\n\t\t}{{confirmButtonText}}\r\n\t</button>\r\n\t<button mat-button [mat-dialog-close]=\"false\" [color]=\"cancelButtonColor\">\r\n\t\t@if (cancelButtonMatIcon) {\r\n\t\t\t<mat-icon class=\"me-2\">{{cancelButtonMatIcon}}</mat-icon>\r\n\t\t}{{cancelButtonText}}\r\n\t</button>\r\n</div>\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { SubscriptionAccess } from '../../api/authorization';\r\nimport { Config } from '../../api/configuration';\r\nimport { GrammaticalGender } from '../../api/enums';\r\n\r\nexport interface SubShow {\r\n\tname: string;\r\n\tsub: SubscriptionAccess\r\n}\r\n\r\n@Component({\r\n    selector: 'spa-dialog-subscription-selector',\r\n    templateUrl: './dialog-subscription-selector.component.html',\r\n    styleUrls: ['./dialog-subscription-selector.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogSubscriptionSelectorComponent implements OnInit {\r\n\r\n\tsubscriptions: SubShow[] = [];\r\n\tsubscriptionGender: GrammaticalGender = Config.labels.subscriptionGender;\r\n\tdisableClose: boolean;\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tpublic dialogRef: MatDialogRef<DialogSubscriptionSelectorComponent>\r\n\t) {\r\n\t\tthis.disableClose = data.disableClose;\r\n\r\n\t\tif (data.includeRoot) {\r\n\t\t\tthis.subscriptions.push({\r\n\t\t\t\tname: \"Sys Admin\",\r\n\t\t\t\tsub: {\r\n\t\t\t\t\troles: [],\r\n\t\t\t\t\tsubscription: {\r\n\t\t\t\t\t\tid: Config.subscriptionRoot,\r\n\t\t\t\t\t\tname: \"Sys Admin\",\r\n\t\t\t\t\t},\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfor (var s of data.subscriptions) {\r\n\t\t\tthis.subscriptions.push({\r\n\t\t\t\tname: s.subscription.name,\r\n\t\t\t\tsub: s\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tselect(s: SubShow) {\r\n\t\tthis.dialogRef.close(s.sub);\r\n\t}\r\n\r\n}\r\n","<div *transloco=\"let t\">\r\n\t<spa-dialog-title [disableClose]=\"data.disableClose\">{{t('common.select-a-subscription', { subLabel: t('common.subscription') | lowercase, subGender: subscriptionGender })}}</spa-dialog-title>\r\n\r\n\t<div mat-dialog-content>\r\n\r\n\t\t<lacm-table [dataSource]=\"subscriptions\" matSort matSortActive=\"name\" [initialPageSize]=\"5\" hidePageSize>\r\n\r\n\t\t\t<ng-container matColumnDef=\"name\">\r\n\t\t\t\t<mat-header-cell class=\"centered_header\" *matHeaderCellDef mat-sort-header>{{t('common.name')}}</mat-header-cell>\r\n\t\t\t\t<mat-cell class=\"text__center\" *matCellDef=\"let e\">\r\n\t\t\t\t\t<a href=\"javascript:void(0);\" (click)=\"select(e)\">{{e.name}}</a>\r\n\t\t\t\t</mat-cell>\r\n\t\t\t</ng-container>\r\n\r\n\t\t</lacm-table>\r\n\r\n\t</div>\r\n\t@if (!disableClose) {\r\n\t\t<div mat-dialog-actions>\r\n\t\t\t<button mat-flat-button [mat-dialog-close]=\"false\" color=\"warn\">{{t('common.cancel')}}</button>\r\n\t\t</div>\r\n\t}\r\n</div>\r\n","import { Component, OnInit, Inject, SecurityContext } from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-confirm-with-checkbox',\r\n    templateUrl: './dialog-confirm-with-checkbox.component.html',\r\n    styleUrls: ['./dialog-confirm-with-checkbox.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogConfirmWithCheckboxComponent implements OnInit {\r\n\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tconfirmButtonText: string;\r\n\tconfirmButtonColor: ThemePalette;\r\n\tconfirmButtonMatIcon: string;\r\n\tcancelButtonText: string;\r\n\tcancelButtonColor: ThemePalette;\r\n\tcancelButtonMatIcon: string;\r\n\tcheckboxMessage: string;\r\n\tcheckboxResult: boolean = false;\r\n\tuseMessageAsHtml: boolean;\r\n\trequireCheckToConfirm: boolean;\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate domSanitizer: DomSanitizer,\r\n\t\tprivate transloco: TranslocoService\r\n\t) {\r\n\t\tthis.title = data.title || this.transloco.translate('common.confirm');\r\n\t\tthis.message = data.message;\r\n\t\tthis.confirmButtonText = data.confirmButtonText || 'OK';\r\n\t\tthis.confirmButtonColor = data.confirmButtonColor || 'primary';\r\n\t\tthis.confirmButtonMatIcon = data.confirmButtonMatIcon || undefined;\r\n\t\tthis.cancelButtonText = data.cancelButtonText || this.transloco.translate('common.cancel');\r\n\t\tthis.cancelButtonColor = data.cancelButtonColor || 'primary';\r\n\t\tthis.cancelButtonMatIcon = data.cancelButtonMatIcon || undefined;\r\n\t\tthis.checkboxMessage = data.checkboxMessage;\r\n\t\tthis.useMessageAsHtml = data.useMessageAsHtml || false;\r\n\t\tthis.requireCheckToConfirm = data.requireCheckToConfirm || false;\r\n\r\n\t\tif (data.checkboxInitalState) {\r\n\t\t\tthis.checkboxResult = data.checkboxInitalState;\r\n\t\t}\r\n\r\n\t\tif (this.useMessageAsHtml) {\r\n\t\t\tthis.message = this.domSanitizer.sanitize(SecurityContext.HTML, this.message);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tsubmit(dialogResult: boolean): DialogConfirmWithCheckboxResult {\r\n\t\treturn {\r\n\t\t\tdialogResult: dialogResult,\r\n\t\t\tcheckboxResult: this.checkboxResult\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nexport interface DialogConfirmWithCheckboxResult {\r\n\tdialogResult: boolean;\r\n\tcheckboxResult: boolean;\r\n}\r\n","<spa-dialog-title [disableClose]=\"data.disableClose\">{{title}}</spa-dialog-title>\r\n\r\n<div mat-dialog-content>\r\n\t@if (message) {\r\n\t\t@if (useMessageAsHtml) {\r\n\t\t\t<p [innerHTML]=\"message\"></p>\r\n\t\t}\r\n\t\t@if (!useMessageAsHtml) {\r\n\t\t\t<p>{{message}}</p>\r\n\t\t}\r\n\t}\r\n\t<!-- mb-1 is a workaround since checkbox was adding scroll on dialog content -->\r\n\t<mat-checkbox class=\"mt-0 mb-1\" [(ngModel)]=\"checkboxResult\">{{checkboxMessage}}</mat-checkbox>\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n\t<button mat-flat-button color=\"primary\" [mat-dialog-close]=\"submit(true)\" [color]=\"confirmButtonColor\" [disabled]=\"requireCheckToConfirm && !checkboxResult\">\r\n\t\t@if (confirmButtonMatIcon) {\r\n\t\t\t<mat-icon class=\"me-2\">{{confirmButtonMatIcon}}</mat-icon>\r\n\t\t}{{confirmButtonText}}\r\n\t</button>\r\n\t<button mat-button color=\"warn\" [mat-dialog-close]=\"submit(false)\" [color]=\"cancelButtonColor\">\r\n\t\t@if (cancelButtonMatIcon) {\r\n\t\t\t<mat-icon class=\"me-2\">{{cancelButtonMatIcon}}</mat-icon>\r\n\t\t}{{cancelButtonText}}\r\n\t</button>\r\n</div>\r\n","import { Component, OnInit, Inject, SecurityContext } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-alert',\r\n    templateUrl: './dialog-alert.component.html',\r\n    styleUrls: ['./dialog-alert.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogAlertComponent implements OnInit {\r\n\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tuseMessageAsHtml: boolean;\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate domSanitizer: DomSanitizer,\r\n\t\tprivate transloco: TranslocoService\r\n\t) {\r\n\t\tthis.title = data.title || this.transloco.translate('common.alert');\r\n\t\tthis.message = data.message;\r\n\t\tthis.useMessageAsHtml = data.useMessageAsHtml || false;\r\n\r\n\t\tif (this.useMessageAsHtml) {\r\n\t\t\tthis.message = this.domSanitizer.sanitize(SecurityContext.HTML, this.message);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n}\r\n","<spa-dialog-title [disableClose]=\"data.disableClose\">{{title}}</spa-dialog-title>\r\n\r\n<div mat-dialog-content>\r\n\t@if (message) {\r\n\t\t@if (useMessageAsHtml) {\r\n\t\t\t<span [innerHTML]=\"message\"></span>\r\n\t\t}\r\n\t\t@if (!useMessageAsHtml) {\r\n\t\t\t<span>{{message}}</span>\r\n\t\t}\r\n\t}\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n\t<button mat-flat-button mat-dialog-close color=\"primary\">OK</button>\r\n</div>\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-show-value',\r\n    templateUrl: './dialog-show-value.component.html',\r\n    styleUrls: ['./dialog-show-value.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogShowValueComponent implements OnInit {\r\n\r\n\tvalue: string;\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tfooter: string;\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate transloco: TranslocoService\r\n\t) {\r\n\t\tthis.value = data.value;\r\n\t\tthis.title = data.title || this.transloco.translate('common.alert');\r\n\t\tthis.message = data.message;\r\n\t\tthis.footer = data.footer;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n}\r\n","<spa-dialog-title [disableClose]=\"data.disableClose\">{{title}}</spa-dialog-title>\r\n<div mat-dialog-content>\r\n\t@if (message) {\r\n\t\t<span>{{message}}</span>\r\n\t}\r\n\t<p class=\"key-value\">\r\n\t\t{{value}}\r\n\t</p>\r\n\t@if (footer) {\r\n\t\t<span>{{footer}}</span>\r\n\t}\r\n</div>\r\n<div mat-dialog-actions>\r\n\t<button mat-flat-button mat-dialog-close color=\"primary\">OK</button>\r\n</div>\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { Logger } from '../../services/logger.service';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-validation-results',\r\n    templateUrl: './dialog-validation-results.component.html',\r\n    styleUrls: ['./dialog-validation-results.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogValidationResultsComponent implements OnInit {\r\n\tpublic model;\r\n\tprivate pki;\r\n\tpublic itemStack;\r\n\r\n\tconstructor(\r\n\t\tpublic dialogRef: MatDialogRef<DialogValidationResultsComponent>,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\tprivate logger: Logger,\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.model = this.data.model;\r\n\t\tthis.itemStack = [\r\n\t\t\t{\r\n\t\t\t\tmessage: this.transloco.translate('components.dialog-validation-results.validation-result'),\r\n\t\t\t\tinnerValidationResults: this.model,\r\n\t\t\t\tbreadcrumbIndex: 0\r\n\t\t\t}\r\n\t\t];\r\n\t}\r\n\r\n\r\n\tshowDetails(item) {\r\n\t\tthis.logger.logDebug(item);\r\n\t\tif (item.innerValidationResults) {\r\n\t\t\titem.breadcrumbIndex = this.itemStack.length;\r\n\t\t\tthis.itemStack.push(item);\r\n\t\t\tthis.model = item.innerValidationResults;\r\n\t\t}\r\n\t};\r\n\r\n\tshowParent(item) {\r\n\t\tthis.logger.logDebug(item);\r\n\t\twhile (this.itemStack.length - 1 != item.breadcrumbIndex) {\r\n\t\t\tthis.itemStack.pop();\r\n\t\t}\r\n\t\tthis.model = item.innerValidationResults;\r\n\t};\r\n\r\n}\r\n","<div *transloco=\"let t\">\r\n\t<spa-dialog-title [disableClose]=\"data.disableClose\">{{t('components.dialog-validation-results.validation-result')}}</spa-dialog-title>\r\n\t<div mat-dialog-content>\r\n\t\t<!-- Breadcrumb -->\r\n\t\t@if (itemStack?.length > 1) {\r\n\t\t\t<div class=\"breadcrumb\">\r\n\t\t\t\t@for (item of itemStack; track item; let i = $index) {\r\n\t\t\t\t\t<div [attr.data-index]=\"i\" class=\"back\">\r\n\t\t\t\t\t\t@if (i < itemStack.length-1) {\r\n\t\t\t\t\t\t\t<span (click)=\"showParent(item)\">\r\n\t\t\t\t\t\t\t\t@if (i > 0) {\r\n\t\t\t\t\t\t\t\t\t<span style=\"color: black; padding-right: 10px;\"> /</span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (!item.detail) {\r\n\t\t\t\t\t\t\t\t\t<span>{{ item.message }}</span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@if (item.detail) {\r\n\t\t\t\t\t\t\t\t\t<span>{{ item.message }} ({{ item.detail }})</span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t\t<span style=\"padding-right: 20px;\">/</span>\r\n\t\t\t\t<div>\r\n\t\t\t\t\t{{ itemStack[itemStack.length-1].message }}\r\n\t\t\t\t\t@if (itemStack[itemStack.length-1].detail) {\r\n\t\t\t\t\t\t<span> ({{ itemStack[itemStack.length-1].detail }})</span>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t@if (model?.errors?.length > 0) {\r\n\t\t\t<div>\r\n\t\t\t\t<h2>{{t('components.dialog-validation-results.failures')}}</h2>\r\n\t\t\t\t<mat-list class=\"text-warn\">\r\n\t\t\t\t\t@for (item of model.errors; track item) {\r\n\t\t\t\t\t\t<mat-list-item class=\"mb-md-1 mb-4 dialog-list\">\r\n\t\t\t\t\t\t\t<mat-icon mat-list-icon class=\"text-warn me-2\">error</mat-icon>\r\n\t\t\t\t\t\t\t@if (!item.detail) {\r\n\t\t\t\t\t\t\t\t<span>{{ item.message }}</span>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@if (item.detail) {\r\n\t\t\t\t\t\t\t\t<span>{{ item.message }} ({{ item.detail }})</span>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@if (item.innerValidationResults != null) {\r\n\t\t\t\t\t\t\t\t<button mat-icon-button color=\"primary\" (click)=\"showDetails(item)\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon>add</mat-icon>\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</mat-list-item>\r\n\t\t\t\t\t}\r\n\t\t\t\t</mat-list>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t@if (model?.warnings?.length > 0) {\r\n\t\t\t<div>\r\n\t\t\t\t<h2>{{t('common.warnings')}}</h2>\r\n\t\t\t\t<mat-list class=\"text-glow\">\r\n\t\t\t\t\t@for (item of model.warnings; track item) {\r\n\t\t\t\t\t\t<mat-list-item class=\"mb-md-1 mb-4 dialog-list\">\r\n\t\t\t\t\t\t\t<mat-icon mat-list-icon class=\"text-glow me-2\">warning</mat-icon>\r\n\t\t\t\t\t\t\t@if (!item.detail) {\r\n\t\t\t\t\t\t\t\t<span>{{ item.message }}</span>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@if (item.detail) {\r\n\t\t\t\t\t\t\t\t<span>{{ item.message }} ({{ item.detail }})</span>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@if (item.innerValidationResults != null) {\r\n\t\t\t\t\t\t\t\t<button mat-icon-button color=\"primary\" (click)=\"showDetails(item)\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon>add</mat-icon>\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</mat-list-item>\r\n\t\t\t\t\t}\r\n\t\t\t\t</mat-list>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t@if (model?.passedChecks?.length > 0) {\r\n\t\t\t<div>\r\n\t\t\t\t<h2>{{t('components.dialog-validation-results.successes')}}</h2>\r\n\t\t\t\t<mat-list class=\"text-success\">\r\n\t\t\t\t\t@for (item of model.passedChecks; track item) {\r\n\t\t\t\t\t\t<mat-list-item class=\"mb-md-1 mb-4 dialog-list\">\r\n\t\t\t\t\t\t\t<mat-icon mat-list-icon class=\"text-success me-2\">check_circle</mat-icon>\r\n\t\t\t\t\t\t\t@if (!item.detail) {\r\n\t\t\t\t\t\t\t\t<span>{{ item.message }}</span>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@if (item.detail) {\r\n\t\t\t\t\t\t\t\t<span>{{ item.message }} ({{ item.detail }})</span>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@if (item.innerValidationResults != null) {\r\n\t\t\t\t\t\t\t\t<button mat-icon-button color=\"primary\" (click)=\"showDetails(item)\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon>add</mat-icon>\r\n\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</mat-list-item>\r\n\t\t\t\t\t}\r\n\t\t\t\t</mat-list>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\t<div mat-dialog-actions>\r\n\t\t<button mat-flat-button color=\"primary\" [mat-dialog-close]>OK</button>\r\n\t</div>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-mobile-authorization-required',\r\n    templateUrl: './dialog-mobile-authorization-required.component.html',\r\n    styleUrls: ['./dialog-mobile-authorization-required.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogMobileAuthorizationRequiredComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n}\r\n","<div mat-dialog-content class=\"mobile-authorization-required-dialog\" *transloco=\"let t\">\r\n\t<h3>{{t('components.dialog-mobile-authorization-required.authorize-on-your-phone')}}</h3>\r\n\t<mat-spinner class=\"mx-auto\"></mat-spinner>\r\n</div>\r\n","import { Component, OnInit, Inject, HostListener } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser'\r\nimport { FileModel } from '../../api/files';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Platform } from '@angular/cdk/platform';\r\nimport { LacunaMatImageViewerConfig } from '@lacuna/material';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-view-file',\r\n    templateUrl: './dialog-view-file.component.html',\r\n    styleUrls: ['./dialog-view-file.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogViewFileComponent implements OnInit {\r\n\tfiles: FileModel[];\r\n\tfilesAsDataUrl: SafeResourceUrl[] = [];\r\n\tindex: number;\r\n\r\n\tfileSrc: any;\r\n\tfileLocation: string;\r\n\tname: string;\r\n\tcontentType: string;\r\n\r\n\timageViewerCfg: LacunaMatImageViewerConfig = {\r\n\t\tbtnClass: 'mat-mini-fab mat-primary',\r\n\t};\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate sanitizer: DomSanitizer,\r\n\t\tprivate http: HttpClient,\r\n\t\tpublic platform: Platform\r\n\t) {\r\n\t\tthis.files = data.files;\r\n\t\tthis.index = data.index;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.getDocument(this.index);\r\n\t}\r\n\r\n\tgetDocument(index) {\r\n\t\tthis.name = this.files[index].name;\r\n\t\tthis.contentType = this.files[index].contentType;\r\n\r\n\t\tthis.fileLocation = this.files[index].location;\r\n\t\tthis.fileSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.fileLocation);\r\n\t\t// if the file was not fetched yet and its location property is fulfilled, fetch it\r\n\t\t//if (this.filesAsDataUrl[index] === undefined && this.files[index].location) {\r\n\t\t//\tthis.http.get(this.files[index].location, { responseType: 'blob' }).subscribe(file => {\r\n\t\t//\t\tlet fileReader = new FileReader();\r\n\t\t//\t\tfileReader.onload = () => {\r\n\t\t//\t\t\tthis.filesAsDataUrl[index] = this.sanitizer.bypassSecurityTrustResourceUrl(fileReader.result as string);\r\n\t\t//\t\t};\r\n\t\t//\t\tfileReader.readAsDataURL(file);\r\n\t\t//\t});\r\n\t\t//}\r\n\t}\r\n\r\n\tisMobile() {\r\n\t\treturn this.platform.ANDROID || this.platform.IOS;\r\n\t}\r\n\r\n\t@HostListener('window:keyup.ArrowRight', [])\r\n\tnext() {\r\n\t\tthis.index = ++this.index % this.files.length;\r\n\t\tthis.getDocument(this.index);\r\n\t}\r\n\r\n\t@HostListener('window:keyup.ArrowLeft', [])\r\n\tback() {\r\n\t\tif (this.index == 0) {\r\n\t\t\tthis.index = this.files.length - 1;\r\n\t\t} else {\r\n\t\t\tthis.index = --this.index;\r\n\t\t}\r\n\r\n\t\tthis.getDocument(this.index);\r\n\t}\r\n}\r\n","<div class=\"mat-typography\" *transloco=\"let t\">\r\n\t<spa-dialog-title [disableClose]=\"data.disableClose\">\r\n\t\t<span class=\"text-truncate\">\r\n\t\t\t<span class=\"small-label-container bg-light text-primary mb-2\">\r\n\t\t\t\t<small>{{ t('common.document') }}</small>\r\n\t\t\t</span>\r\n\t\t\t<span class=\"file-title ms-2\">{{ name }}</span>\r\n\t\t</span>\r\n\t</spa-dialog-title>\r\n\r\n\t<div mat-dialog-content class=\"gallery\">\r\n\t\t@if (files.length > 1) {\r\n\t\t\t<div class=\"d-flex align-items-center justify-content-between\">\r\n\t\t\t\t<button mat-mini-fab (click)=\"back()\" color=\"primary\" class=\"left_arrow\">\r\n\t\t\t\t\t<mat-icon>keyboard_arrow_left</mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t\t<button mat-mini-fab (click)=\"next()\" color=\"primary\" class=\"right_arrow\">\r\n\t\t\t\t\t<mat-icon>keyboard_arrow_right</mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t@if (isMobile() && fileLocation && (!contentType || !contentType.startsWith('image'))) {\r\n\t\t\t<div class=\"pdf-container p-3\">\r\n\t\t\t\t<pdf-viewer [src]=\"fileLocation\" [fit-to-page]=\"false\" [original-size]=\"false\" [render-text]=\"true\" [autoresize]=\"true\">\r\n\t\t\t\t</pdf-viewer>\r\n\t\t\t</div>\r\n\t\t}\r\n\r\n\t\t<!--Iframe works well, but shows a warning on the console, complaining about the contentType-->\r\n\t\t@if (!isMobile() && fileSrc && (!contentType || !contentType.startsWith('image'))) {\r\n\t\t\t<iframe width=\"100%\" height=\"600\" [src]=\"fileSrc\" class=\"file-frame\" frameborder=\"0\"></iframe>\r\n\t\t}\r\n\r\n\t\t<!--Embed works only the first time the file is showed; it gets blank when we try to navigate between files for the second time and so on-->\r\n\t\t<!--<embed *ngIf=\"fileSrc && contentType == 'application/pdf'\" width=\"100%\" height=\"600\" [src]=\"fileSrc\" class=\"file-frame\" />-->\r\n\r\n\t\t<!--Object is not working with images, only with PDFs, which is enough for us in this moment, since we'll use other component to show images-->\r\n\t\t<!--(It is showing warnings about the contentType as well, just as the iframe)-->\r\n\t\t<!--<object *ngIf=\"fileSrc && contentType == 'application/pdf'\" [data]=\"fileSrc\" type=\"application/pdf\" width=\"100%\" height=\"600\" class=\"file-frame\"></object>-->\r\n\r\n\t\t@if (fileSrc && contentType && contentType.startsWith('image')) {\r\n\t\t\t<lacm-image-viewer [src]=\"[fileSrc]\" [config]=\"imageViewerCfg\" width=\"100%\" height=\"600\" class=\"image-viewer\"></lacm-image-viewer>\r\n\t\t}\r\n\t</div>\r\n\t<div mat-dialog-actions>\r\n\t\t<button mat-flat-button mat-dialog-close color=\"primary\">OK</button>\r\n\t</div>\r\n</div>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { UntypedFormGroup } from '@angular/forms';\r\n\r\n@Component({\r\n    selector: 'spa-submit-button',\r\n    templateUrl: './submit-button.component.html',\r\n    styleUrls: ['./submit-button.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SubmitButtonComponent implements OnInit {\r\n\r\n\t@Input() form: UntypedFormGroup;\r\n\t@Input() disabled: boolean = false;\r\n\r\n\t@Output() submit = new EventEmitter();\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tonButtonClick() {\r\n\t\tthis.submit.emit();\r\n\t}\r\n}\r\n","<button mat-flat-button type=\"submit\" [disabled]=\"!form.valid || disabled\" (click)=\"onButtonClick()\" color=\"primary\">\r\n\t<span>\r\n\t\t<ng-content></ng-content>\r\n\t</span>\r\n\t<!--<img src=\"/assets/img/loading.gif\" alt=\"Loader\" class=\"load\" />-->\r\n</button>\r\n","import { Component, OnInit, Inject, OnDestroy } from '@angular/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { RootLoginResult } from '../../api/enums';\r\nimport { Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { Logger } from '../../services/logger.service';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-root-login',\r\n    templateUrl: './dialog-root-login.component.html',\r\n    styleUrls: ['./dialog-root-login.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogRootLoginComponent implements OnInit, OnDestroy {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tform: UntypedFormGroup;\r\n\tloginSucceeded: RootLoginResult;\r\n\tsubmitting: boolean = false;\r\n\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tuseMessageAsHtml: boolean;\r\n\tdisableClose: boolean;\r\n\tnavigateHomeIfCancelled: boolean;\r\n\treloadOnSuccess: boolean;\r\n\r\n\tget isPasswordInvalid() {\r\n\t\treturn this.loginSucceeded == RootLoginResult.InvalidPassword;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate dialogRef: MatDialogRef<DialogRootLoginComponent>,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t) {\r\n\t\tthis.title = data.title || this.transloco.translate('components.dialog-root-login.root-login');\r\n\t\tthis.message = data.message;\r\n\t\tthis.useMessageAsHtml = data.useMessageAsHtml || false;\r\n\t\tthis.navigateHomeIfCancelled = data.navigateHomeIfCancelled || false;\r\n\t\tthis.disableClose = data.disableClose || false;\r\n\t\tthis.reloadOnSuccess = data.reloadOnSuccess || false;\r\n\r\n\t\tif (!this.disableClose) {\r\n\t\t\tthis.$toUnsubscribe.push(\r\n\t\t\t\tthis.dialogRef.backdropClick().subscribe(() => {\r\n\t\t\t\t\tthis.logger.logTrace('DialogRootLoginComponent -- backdrop clicked; calling rootLogout ');\r\n\t\t\t\t\tthis.spaControl.rootLogout();\r\n\r\n\t\t\t\t\tif (this.navigateHomeIfCancelled) {\r\n\t\t\t\t\t\tthis.logger.logDebug('DialogRootLoginComponent -- as backdrop was clicked and navigateHomeIfCancelled is enabled, navigating to \"/\"');\r\n\t\t\t\t\t\tthis.router.navigateByUrl('/');\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.createForm();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tcreateForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tpassword: ['', Validators.required]\r\n\t\t});\r\n\t}\r\n\r\n\tonSubmit() {\r\n\t\tlet passwordForm = this.form.get('password');\r\n\t\tlet password = passwordForm.value;\r\n\t\tthis.submitting = true;\r\n\t\tthis.spaControl.rootLogin(password).subscribe(res => {\r\n\t\t\tthis.submitting = false\r\n\t\t\tthis.loginSucceeded = res.result;\r\n\t\t\tif (res.result == RootLoginResult.Success) {\r\n\t\t\t\tthis.dialogRef.close(res);\r\n\t\t\t\tif (this.reloadOnSuccess) {\r\n\t\t\t\t\tthis.logger.logTrace('DialogRootLoginComponent -- reloading page on successful login ');\r\n\t\t\t\t\tlocation.reload();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}, _ => this.submitting = false);\r\n\t}\r\n\r\n\tgetErrorMessage(formControlName: string) {\r\n\r\n\t\tlet formControl = this.form.get(formControlName);\r\n\r\n\t\tswitch (formControlName) {\r\n\t\t\tcase 'password':\r\n\t\t\t\tif (formControl.hasError('required')) {\r\n\t\t\t\t\treturn this.transloco.translate('errors.field-required');\r\n\t\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.transloco.translate('errors.field-invalid'); // should not happen\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.logger.logTrace('DialogRootLoginComponent -- cancel button clicked; calling rootLogout ');\r\n\t\tthis.spaControl.rootLogout();\r\n\r\n\t\tif (this.navigateHomeIfCancelled) {\r\n\t\t\tthis.logger.logDebug('DialogRootLoginComponent -- as cancel was pressed and navigateHomeIfCancelled is enabled, navigating to \"/\"');\r\n\t\t\tthis.router.navigateByUrl('/');\r\n\t\t}\r\n\t\tthis.dialogRef.close(null);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('DialogRootLoginComponent ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<div *transloco=\"let t\">\r\n\t<lacm-loading [show]=\"submitting\"></lacm-loading>\r\n\t<spa-dialog-title [disableClose]=\"data.disableClose\">{{title}}</spa-dialog-title>\r\n\t<div mat-dialog-content>\r\n\t\t@if (message) {\r\n\t\t\t@if (useMessageAsHtml) {\r\n\t\t\t\t<span [innerHTML]=\"message\"></span>\r\n\t\t\t}\r\n\t\t\t@if (!useMessageAsHtml) {\r\n\t\t\t\t<span>{{message}}</span>\r\n\t\t\t}\r\n\t\t}\r\n\t\t<form [formGroup]=\"form\">\r\n\t\t\t<div class=\"container\">\r\n\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t<mat-form-field class=\"col\">\r\n\t\t\t\t\t\t<mat-label>{{t('common.password')}}</mat-label>\r\n\t\t\t\t\t\t<input matInput formControlName=\"password\" type=\"password\">\r\n\t\t\t\t\t\t<mat-error>{{getErrorMessage('password')}}</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t@if (isPasswordInvalid) {\r\n\t\t\t\t\t\t<div class=\"col-12 p-0\">\r\n\t\t\t\t\t\t\t<p class=\"text-warn d-flex align-items-center\">\r\n\t\t\t\t\t\t\t\t<mat-icon class=\"me-2\">warning</mat-icon>\r\n\t\t\t\t\t\t\t\t{{t('errors.invalid-password')}}\r\n\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"d-flex justify-content-center\">\r\n\t\t\t\t\t<spa-submit-button class=\"me-2\" [form]=\"form\" (submit)=\"onSubmit()\">\r\n\t\t\t\t\t\t{{t('common.sign-in')}}\r\n\t\t\t\t\t</spa-submit-button>\r\n\t\t\t\t\t<button mat-button type=\"button\" color=\"warn\" (click)=\"close()\">\r\n\t\t\t\t\t\t{{t('common.cancel')}}\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</form>\r\n\t</div>\r\n</div>\r\n","import { Injectable, Inject, OnDestroy, Renderer2, RendererFactory2, DOCUMENT } from '@angular/core';\r\nimport { Logger } from './logger.service';\r\nimport { TranslocoService, HashMap } from '@ngneat/transloco';\r\nimport { LANGUAGE_TO_LOCALES_MAPPING } from '../classes/injection-tokens';\r\nimport { Subscription, BehaviorSubject, Observable } from 'rxjs';\r\nimport { CookieStorageService } from './cookie-storage.service';\r\nimport { distinctUntilChanged } from 'rxjs/operators';\r\n\r\nexport interface LanguageParseResultFromUrl {\r\n\tfound: boolean, // tells if a language was found and parsed successfully from the url\r\n\tlanguage?: string, // this field represents the result of the first group from the regex /^\\/([A-Z]{2})(\\/.*)?$/i\r\n\turlWithoutLanguageSegment?: string, // this field represents the result of the second group from the regex /^\\/([A-Z]{2})(\\/.*)?$/i\r\n}\r\n\r\ninterface TemporaryLanguageFromNavigation {\r\n\ttemporaryLanguage: string, // language that is set temporarily, retrieved from navigation. This language can be indeed set later, or can be replaced back with previousLanguage, in case navigation does not succeed\r\n\tnavigationId: number, // id of the navigation from which the language above was retrieved\r\n\tpreviousLanguage: string, // lnaguage that was set before, and can be set back, in case the navigation above does not succeed\r\n}\r\n\r\nexport const defaultSpaLangToLocalesMapping: HashMap<string[]> = {\r\n\t'en': ['en-US'],\r\n\t'pt': ['pt-BR'],\r\n\t'es': ['es-ES'],\r\n}\r\n\r\nexport const defaultSpaLocale = 'en-US';\r\n\r\nconst localePreferenceKey = 'spa_locale_preference';\r\nconst languagePreferenceKey = 'spa_language_preference';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SpaLanguageService implements OnDestroy {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tprivate readonly languageFromUrlRegex = /^\\/([A-Z]{2})(\\/.*)?$/i;\r\n\r\n\tprivate temporaryLanguageFromNavigation: TemporaryLanguageFromNavigation = null;\r\n\r\n\tlastLanguageParsedOrGuessed: string;\r\n\r\n\tprivate currentLocaleSubject: BehaviorSubject<string> = new BehaviorSubject<string>(defaultSpaLocale); // current locale will be set as soon as we subscribe to translocoService.langChanges$, in the ctor\r\n\tcurrentLocale: Observable<string> = this.currentLocaleSubject.asObservable().pipe(distinctUntilChanged());\r\n\tget currentLocaleSnapshot(): string { return this.currentLocaleSubject.value; } // same as this.getLocale()\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate translocoService: TranslocoService,\r\n\t\tprivate cookieStorage: CookieStorageService,\r\n\t\t@Inject(LANGUAGE_TO_LOCALES_MAPPING) private languageToLocalesMapping: HashMap<string[]>,\r\n\t) {\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.translocoService.langChanges$.subscribe(newLang => {\r\n\t\t\t\t// when language changes, set the document element \"lang\" as well, so that the browser knows what the current language of the page is\r\n\t\t\t\t// (even though Angular team recommends Renderer2 when manipulating the DOM, it is WAY simpler to use document directly in this case.\r\n\t\t\t\t// Also, its \"cons\" are not so relevant here, since it is not on our plans to use SSR with SPA soon)\r\n\t\t\t\tdocument.documentElement.setAttribute('lang', newLang);\r\n\r\n\t\t\t\t// observe lang changes, to switch the locale as well, when possible.\r\n\t\t\t\t// this is particularly useful when initializing the app, and setting the lang via route (the language will change when Angular finishes the navigation)\r\n\t\t\t\tlet locale: string;\r\n\t\t\t\tif ((locale = this.cookieStorage.getItem(localePreferenceKey))) {\r\n\t\t\t\t\tthis.logger.logDebug(`SpaLanguageService -- language changed to \"${newLang}\": setting locale \"${locale}\", taken from cookie`);\r\n\t\t\t\t\tthis.setLocale(locale);\r\n\t\t\t\t} else if ((locale = this.getLocaleBasedOnLanguage(newLang))) {\r\n\t\t\t\t\tthis.logger.logDebug(`SpaLanguageService -- language changed to \"${newLang}\": setting locale \"${locale}\", taken from language-to-locales mapping`);\r\n\t\t\t\t\tthis.setLocale(locale);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.logger.logDebug(`SpaLanguageService -- using the locale \"${this.getLocale()}\", since no better option was found on language-to-locales mappings`);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tinit(): Promise<HashMap<any>> {\r\n\t\treturn new Promise<any>((resolve) => { // no \"reject\" argument because we MUST NOT REJECT this promise\r\n\t\t\tthis.logger.logInformation(`SpaLanguageService -- initializing...`);\r\n\t\t\tlet lang = this.guessLanguage(); // pre-load the guessed language; there is no need to explicitly load the fallback language, since it is loaded automatically by Transloco.\r\n\t\t\tthis.translocoService.setActiveLang(lang);\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- set language \"${lang}\"; loading its translation file...`);\r\n\r\n\t\t\treturn this.translocoService.load(lang).toPromise().then(\r\n\t\t\t\t_ => {\r\n\t\t\t\t\tthis.logger.logDebug(`SpaLanguageService -- loaded translation file for language \"${lang}\", and finished initialization.`);\r\n\t\t\t\t\tresolve(null);\r\n\t\t\t\t},\r\n\t\t\t\terr => {\r\n\t\t\t\t\tthis.logger.logError(`SpaLanguageService -- error fetching translation file for language \"${lang}\": `, err);\r\n\t\t\t\t\tresolve(null);\r\n\t\t\t\t}\r\n\t\t\t);\r\n\t\t});\r\n\t}\r\n\r\n\t// Method used on NavigationStart to set temporarily the language that was found on the route of this navigation.\r\n\t// If the navigation succeeds (reaches NavigationEnd), the language will keep set. Otherwise (if it reaches NavigationCancel), the previous language will be set again (rollback).\r\n\tsetTemporarilyLanguageFromNavigation(language: string, navigationId: number) {\r\n\t\tthis.logger.logTrace(`SpaLanguageService -- setTemporarilyLanguageFromNavigation: language (${language}), navigationId (${navigationId}), temporaryLanguageFromNavigation: `, this.temporaryLanguageFromNavigation);\r\n\r\n\t\tthis.logger.logDebug(`SpaLanguageService -- setting language \"${language}\" temporarily`);\r\n\r\n\t\tthis.temporaryLanguageFromNavigation = {\r\n\t\t\tnavigationId: navigationId,\r\n\t\t\ttemporaryLanguage: language,\r\n\t\t\tpreviousLanguage: this.translocoService.getActiveLang()\r\n\t\t};\r\n\t\tthis.setActiveLanguageIfDifferent(language);\r\n\t}\r\n\r\n\t// Method used on NavigationEnd to keep the language that was set temporarily on NavigationStart\r\n\tcommitLanguageFromNavigation(language: string, navigationId: number) {\r\n\t\tthis.logger.logTrace(`SpaLanguageService -- commitLanguageFromNavigation: language (${language}), navigationId (${navigationId}), temporaryLanguageFromNavigation: `, this.temporaryLanguageFromNavigation);\r\n\r\n\t\tif (!this.temporaryLanguageFromNavigation) {\r\n\t\t\tthrow ('A call to commit was made, but there is no temporary language set');\r\n\t\t}\r\n\r\n\t\tif (language != this.temporaryLanguageFromNavigation.temporaryLanguage || navigationId != this.temporaryLanguageFromNavigation.navigationId) {\r\n\t\t\tthrow (`The given language (\"${language}\") or navigation ID (${navigationId}) do not match with the language that is temporarily set (${this.temporaryLanguageFromNavigation.temporaryLanguage}), or its navigation ID (${this.temporaryLanguageFromNavigation.navigationId})`);\r\n\t\t}\r\n\r\n\t\tthis.temporaryLanguageFromNavigation = null;\r\n\t\tthis.logger.logDebug(`SpaLanguageService -- commited language \"${language}\"`);\r\n\t}\r\n\r\n\t// Method used on NavigationCancel to set back the previous language, since the navigation was canceled, and a temporary language had been set on its NavigationStart\r\n\trollbackLanguageFromNavigation(navigationId: number) {\r\n\t\tthis.logger.logTrace(`SpaLanguageService -- rollbackLanguageFromNavigation: navigationId (${navigationId}), temporaryLanguageFromNavigation: `, this.temporaryLanguageFromNavigation);\r\n\r\n\t\tif (!this.temporaryLanguageFromNavigation) {\r\n\t\t\tthis.logger.logDebug('SpaLanguageService -- not rolling back, since no temporary language was set');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.temporaryLanguageFromNavigation.navigationId != navigationId) {\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- not rolling back, since the given navigationId (${navigationId}) does not match the one from the temporary language (${this.temporaryLanguageFromNavigation.navigationId})`);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.logger.logDebug(`SpaLanguageService -- rolling back language to \"${this.temporaryLanguageFromNavigation.previousLanguage}\"`);\r\n\t\tthis.setActiveLanguageIfDifferent(this.temporaryLanguageFromNavigation.previousLanguage);\r\n\t\tthis.temporaryLanguageFromNavigation = null;\r\n\t}\r\n\r\n\tsetActiveLanguageIfDifferent(lang: string) {\r\n\t\tif (lang != this.translocoService.getActiveLang()) {\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- setting language to \"${lang}\"`);\r\n\t\t\tthis.translocoService.setActiveLang(lang);\r\n\t\t} else {\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- language \"${lang}\" is already active`);\r\n\t\t}\r\n\t}\r\n\r\n\tgetLanguagePreferenceFromCookie(): string {\r\n\t\treturn this.cookieStorage.getItem(languagePreferenceKey);\r\n\t}\r\n\r\n\tsetLanguagePreferenceInCookie(lang: string) {\r\n\t\tthis.logger.logTrace(`SpaLanguageService -- storing language \"${lang}\" in cookie`);\r\n\t\tthis.cookieStorage.setItem(languagePreferenceKey, lang);\r\n\t}\r\n\r\n\tgetApplicationAvailableLangs(): string[] {\r\n\t\treturn (this.translocoService.getAvailableLangs() as any).map(lang => (lang.id) ? lang.id : lang);\r\n\t}\r\n\r\n\tisLanguageAvailable(lang: string): boolean {\r\n\t\treturn this.getApplicationAvailableLangs().includes(lang);\r\n\t}\r\n\r\n\tparseLanguageFromUrl(url: string): LanguageParseResultFromUrl {\r\n\t\tlet matchArray = url.match(this.languageFromUrlRegex);\r\n\r\n\t\tif (matchArray) {\r\n\t\t\tthis.lastLanguageParsedOrGuessed = matchArray[1];\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- parsed language successfully: language (\"${matchArray[1]}\"), rest of the url (\"${matchArray[2] || ''}\")`);\r\n\t\t\treturn {\r\n\t\t\t\tfound: true,\r\n\t\t\t\tlanguage: matchArray[1],\r\n\t\t\t\turlWithoutLanguageSegment: matchArray[2]\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- no languages found while parsing url`);\r\n\t\t\treturn { found: false };\r\n\t\t}\r\n\t}\r\n\r\n\tgenerateUrlWithLangSegment(originalUrl: string, lang: string): string {\r\n\t\t// if the url is only '/' or '/#', make it an empty string, to avoid cases such as '/en/' or '/en/#' when\r\n\t\t// concatenating with the lang segment, as router does not know how to deal with it, and thus causes error.\r\n\t\tlet url = (originalUrl != '/' && originalUrl != '/#' && originalUrl != null) ? originalUrl : '';\r\n\t\treturn `/${lang}${url}`;  // concat the language segment with the treated original url (already avoiding cases such as '/en/', which causes error)\r\n\t}\r\n\r\n\treplaceOrInsertLangInUrl(originalUrl: string, lang: string): string {\r\n\t\tlet parseResult = this.parseLanguageFromUrl(originalUrl);\r\n\t\treturn this.generateUrlWithLangSegment((parseResult.found) ? parseResult.urlWithoutLanguageSegment : originalUrl, lang);\r\n\t}\r\n\r\n\tguessLanguage(ignoreLastLanguageGuessedOrParsed: boolean = false): string {\r\n\t\t// inspired on https://medium.com/briebug-blog/internationalizing-your-angular-app-aeebb4e50bfe\r\n\r\n\t\tif (!ignoreLastLanguageGuessedOrParsed && this.lastLanguageParsedOrGuessed) {\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- using last language guessed/parsed: \"${this.lastLanguageParsedOrGuessed}\"`);\r\n\t\t\treturn this.lastLanguageParsedOrGuessed;\r\n\t\t}\r\n\r\n\t\tlet langFromCookie = this.getLanguagePreferenceFromCookie();\r\n\t\tif (langFromCookie) {\r\n\t\t\tthis.lastLanguageParsedOrGuessed = langFromCookie;\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- using language stored in cookie: \"${langFromCookie}\"`);\r\n\t\t\treturn langFromCookie;\r\n\t\t}\r\n\r\n\t\tlet defaultLang = this.translocoService.getDefaultLang();\r\n\r\n\t\tif (typeof window === 'undefined' || typeof window.navigator === 'undefined') {\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- using default language: \"${defaultLang}\"`);\r\n\t\t\treturn defaultLang;\r\n\t\t}\r\n\r\n\t\ttry {\r\n\t\t\tconst wn = window.navigator as any;\r\n\t\t\tlet applicationAvailableLangs = this.getApplicationAvailableLangs();\r\n\t\t\tlet browserLanguages: string[] = (wn.languages) ? wn.languages.map(locale => locale.substring(0, 2)) : null;\r\n\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- guessing language... applicationAvailableLangs (${applicationAvailableLangs}), browserLanguages (${browserLanguages})`);\r\n\r\n\t\t\tlet lang: string = (browserLanguages) ? browserLanguages.find(lang => applicationAvailableLangs.includes(lang)) : defaultLang;\r\n\r\n\t\t\t// if no available language is found from the languages array (rare case), try from the alternative sources, and, if everything goes wrong, use the default language\r\n\t\t\tif (!lang) {\r\n\t\t\t\tlet langFromAlterativeSource = wn.language || wn.browserLanguage || wn.userLanguage;\r\n\t\t\t\tif (langFromAlterativeSource) {\r\n\t\t\t\t\tlangFromAlterativeSource = langFromAlterativeSource.substring(0, 2);\r\n\t\t\t\t\tlang = (applicationAvailableLangs.includes(langFromAlterativeSource)) ? langFromAlterativeSource : defaultLang;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlang = defaultLang;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.logger.logDebug(`SpaLanguageService -- langFromAlterativeSource: \"${langFromAlterativeSource}\", defaultLang: \"${defaultLang}\"`);\r\n\t\t\t}\r\n\r\n\t\t\tthis.lastLanguageParsedOrGuessed = lang;\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- guessed language: \"${lang}\"`);\r\n\r\n\t\t\treturn lang;\r\n\t\t} catch (ex) {\r\n\t\t\tthis.logger.logError('SpaLanguageService -- error while guessing language', ex);\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- using default language (\"${defaultLang}\"), since exception was caught while guessing language`);\r\n\r\n\t\t\treturn defaultLang;\r\n\t\t}\r\n\t}\r\n\r\n\tgetLocaleBasedOnLanguage(lang: string): string {\r\n\t\tlet locale: string;\r\n\t\tif (this.languageToLocalesMapping && this.languageToLocalesMapping[lang] && (locale = this.languageToLocalesMapping[lang][0])) {\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- locale \"${locale}\" taken from the custom language-to-locales mapping, from the client app`);\r\n\t\t\treturn locale;\r\n\t\t} else if (defaultSpaLangToLocalesMapping[lang] && (locale = defaultSpaLangToLocalesMapping[lang][0])) {\r\n\t\t\tthis.logger.logDebug(`SpaLanguageService -- locale \"${locale}\" taken from the default language-to-locales mapping, from SPA`);\r\n\t\t\treturn locale;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tsetLocale(locale: string) {\r\n\t\tthis.currentLocaleSubject.next(locale);\r\n\t}\r\n\r\n\tgetLocale(): string {\r\n\t\treturn this.currentLocaleSnapshot;\r\n\t}\r\n\r\n\t// this method should be used when the user EXPLICITLY changes the locale\r\n\tsetLocaleAndStoreInCookie(locale: string) {\r\n\t\tthis.logger.logDebug(`SpaLanguageService -- setting locale '${locale}' and storing it in cookie`);\r\n\t\tthis.setLocale(locale);\r\n\t\tthis.cookieStorage.setItem(localePreferenceKey, locale);\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.logger.logTrace('SpaLanguageService ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","import { HashMap } from '@ngneat/transloco';\r\n\r\nexport type LanguageName = { english: string, native: string };\r\n\r\n// this list was taken and adapted from https://github.com/citation-style-language/locales/blob/master/locales.json\r\nexport const localeCodeMap: HashMap<LanguageName> = {\r\n\t\"af-ZA\": { english: \"Afrikaans\", native: \"Afrikaans\" },\r\n\t\"ar\":    { english: \"Arabic\", native: \"العربية\" },\r\n\t\"bg-BG\": { english: \"Bulgarian\", native: \"Български\" },\r\n\t\"ca-AD\": { english: \"Catalan\", native: \"Català\" },\r\n\t\"cs-CZ\": { english: \"Czech\", native: \"Čeština\" },\r\n\t\"cy-GB\": { english: \"Welsh\", native: \"Cymraeg\" },\r\n\t\"da-DK\": { english: \"Danish\", native: \"Dansk\" },\r\n\t\"de-AT\": { english: \"German (Austria)\", native: \"Deutsch (Österreich)\" },\r\n\t\"de-CH\": { english: \"German (Switzerland)\", native: \"Deutsch (Schweiz)\" },\r\n\t\"de-DE\": { english: \"German (Germany)\", native: \"Deutsch (Deutschland)\" },\r\n\t\"el-GR\": { english: \"Greek\", native: \"Ελληνικά\" },\r\n\t\"en-GB\": { english: \"English (UK)\", native: \"English (UK)\" },\r\n\t\"en-US\": { english: \"English (US)\", native: \"English (US)\" },\r\n\t\"es-CL\": { english: \"Spanish (Chile)\", native: \"Español (Chile)\" },\r\n\t\"es-ES\": { english: \"Spanish (Spain)\", native: \"Español (España)\" },\r\n\t\"es-MX\": { english: \"Spanish (Mexico)\", native: \"Español (México)\" },\r\n\t\"et-EE\": { english: \"Estonian\", native: \"Eesti\" },\r\n\t\"eu\":    { english: \"Basque\", native: \"Euskara\" },\r\n\t\"fa-IR\": { english: \"Persian\", native: \"فارسی\" },\r\n\t\"fi-FI\": { english: \"Finnish\", native: \"Suomi\" },\r\n\t\"fr-CA\": { english: \"French (Canada)\", native: \"Français (Canada)\" },\r\n\t\"fr-FR\": { english: \"French (France)\", native: \"Français (France)\" },\r\n\t\"he-IL\": { english: \"Hebrew\", native: \"עברית\" },\r\n\t\"hr-HR\": { english: \"Croatian\", native: \"Hrvatski\" },\r\n\t\"hu-HU\": { english: \"Hungarian\", native: \"Magyar\" },\r\n\t\"id-ID\": { english: \"Indonesian\", native: \"Bahasa Indonesia\" },\r\n\t\"is-IS\": { english: \"Icelandic\", native: \"Íslenska\" },\r\n\t\"it-IT\": { english: \"Italian\", native: \"Italiano\" },\r\n\t\"ja-JP\": { english: \"Japanese\", native: \"日本語\" },\r\n\t\"km-KH\": { english: \"Khmer\", native: \"ភាសាខ្មែរ\" },\r\n\t\"ko-KR\": { english: \"Korean\", native: \"한국어\" },\r\n\t\"la\":    { english: \"Latin\", native: \"Latina\" },\r\n\t\"lt-LT\": { english: \"Lithuanian\", native: \"Lietuvių\" },\r\n\t\"lv-LV\": { english: \"Latvian\", native: \"Latviešu\" },\r\n\t\"mn-MN\": { english: \"Mongolian\", native: \"Монгол\" },\r\n\t\"nb-NO\": { english: \"Norwegian (Bokmål)\", native: \"Norsk bokmål\" },\r\n\t\"nl-NL\": { english: \"Dutch\", native: \"Nederlands\" },\r\n\t\"nn-NO\": { english: \"Norwegian (Nynorsk)\", native: \"Norsk nynorsk\" },\r\n\t\"pl-PL\": { english: \"Polish\", native: \"Polski\" },\r\n\t\"pt-BR\": { english: \"Portuguese (Brazil)\", native: \"Português (Brasil)\" },\r\n\t\"pt-PT\": { english: \"Portuguese (Portugal)\", native: \"Português (Portugal)\" },\r\n\t\"ro-RO\": { english: \"Romanian\", native: \"Română\" },\r\n\t\"ru-RU\": { english: \"Russian\", native: \"Русский\" },\r\n\t\"sk-SK\": { english: \"Slovak\", native: \"Slovenčina\" },\r\n\t\"sl-SI\": { english: \"Slovenian\", native: \"Slovenščina\" },\r\n\t\"sr-RS\": { english: \"Serbian\", native: \"Српски / Srpski\" },\r\n\t\"sv-SE\": { english: \"Swedish\", native: \"Svenska\" },\r\n\t\"th-TH\": { english: \"Thai\", native: \"ไทย\" },\r\n\t\"tr-TR\": { english: \"Turkish\", native: \"Türkçe\" },\r\n\t\"uk-UA\": { english: \"Ukrainian\", native: \"Українська\" },\r\n\t\"vi-VN\": { english: \"Vietnamese\", native: \"Tiếng Việt\" },\r\n\t\"zh-CN\": { english: \"Chinese (PRC)\", native: \"中文 (中国大陆)\" },\r\n\t\"zh-TW\": { english: \"Chinese (Taiwan)\", native: \"中文 (台灣)\" },\r\n}\r\n\r\n\r\n// this list was taken and adapted from https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\r\nexport const languageCodeMap: HashMap<LanguageName> = {\r\n\t\"aa\": { english: \"Afar\", native: \"Afaraf\" },\r\n\t\"ab\": { english: \"Abkhazian\", native: \"аҧсуа бызшәа, аҧсшәа\" },\r\n\t\"ae\": { english: \"Avestan\", native: \"avesta\" },\r\n\t\"af\": { english: \"Afrikaans\", native: \"Afrikaans\" },\r\n\t\"ak\": { english: \"Akan\", native: \"Akan\" },\r\n\t\"am\": { english: \"Amharic\", native: \"አማርኛ\" },\r\n\t\"an\": { english: \"Aragonese\", native: \"aragonés\" },\r\n\t\"ar\": { english: \"Arabic\", native: \"العربية\" },\r\n\t\"as\": { english: \"Assamese\", native: \"অসমীয়া\" },\r\n\t\"av\": { english: \"Avaric\", native: \"авар мацӀ, магӀарул мацӀ\" },\r\n\t\"ay\": { english: \"Aymara\", native: \"aymar aru\" },\r\n\t\"az\": { english: \"Azerbaijani\", native: \"azərbaycan dili\" },\r\n\t\"ba\": { english: \"Bashkir\", native: \"башҡорт теле\" },\r\n\t\"be\": { english: \"Belarusian\", native: \"беларуская мова\" },\r\n\t\"bg\": { english: \"Bulgarian\", native: \"български език\" },\r\n\t\"bh\": { english: \"Bihari languages\", native: \"भोजपुरी\" },\r\n\t\"bi\": { english: \"Bislama\", native: \"Bislama\" },\r\n\t\"bm\": { english: \"Bambara\", native: \"bamanankan\" },\r\n\t\"bn\": { english: \"Bengali\", native: \"বাংলা\" },\r\n\t\"bo\": { english: \"Tibetan\", native: \"བོད་ཡིག\" },\r\n\t\"br\": { english: \"Breton\", native: \"brezhoneg\" },\r\n\t\"bs\": { english: \"Bosnian\", native: \"bosanski jezik\" },\r\n\t\"ca\": { english: \"Catalan, Valencian\", native: \"català, valencià\" },\r\n\t\"ce\": { english: \"Chechen\", native: \"нохчийн мотт\" },\r\n\t\"ch\": { english: \"Chamorro\", native: \"Chamoru\" },\r\n\t\"co\": { english: \"Corsican\", native: \"corsu, lingua corsa\" },\r\n\t\"cr\": { english: \"Cree\", native: \"ᓀᐦᐃᔭᐍᐏᐣ\" },\r\n\t\"cs\": { english: \"Czech\", native: \"čeština, český jazyk\" },\r\n\t\"cu\": { english: \"Church Slavic, Old Slavonic, Church Slavonic, Old Bulgarian, Old Church Slavonic\", native: \"ѩзыкъ словѣньскъ\" },\r\n\t\"cv\": { english: \"Chuvash\", native: \"чӑваш чӗлхи\" },\r\n\t\"cy\": { english: \"Welsh\", native: \"Cymraeg\" },\r\n\t\"da\": { english: \"Danish\", native: \"dansk\" },\r\n\t\"de\": { english: \"German\", native: \"Deutsch\" },\r\n\t\"dv\": { english: \"Divehi, Dhivehi, Maldivian\", native: \"ދިވެހި\" },\r\n\t\"dz\": { english: \"Dzongkha\", native: \"རྫོང་ཁ\" },\r\n\t\"ee\": { english: \"Ewe\", native: \"Eʋegbe\" },\r\n\t\"el\": { english: \"Greek, Modern (1453-)\", native: \"ελληνικά\" },\r\n\t\"en\": { english: \"English\", native: \"English\" },\r\n\t\"eo\": { english: \"Esperanto\", native: \"Esperanto\" },\r\n\t\"es\": { english: \"Spanish, Castilian\", native: \"Español\" },\r\n\t\"et\": { english: \"Estonian\", native: \"eesti, eesti keel\" },\r\n\t\"eu\": { english: \"Basque\", native: \"euskara, euskera\" },\r\n\t\"fa\": { english: \"Persian\", native: \"فارسی\" },\r\n\t\"ff\": { english: \"Fulah\", native: \"Fulfulde, Pulaar, Pular\" },\r\n\t\"fi\": { english: \"Finnish\", native: \"suomi, suomen kieli\" },\r\n\t\"fj\": { english: \"Fijian\", native: \"vosa Vakaviti\" },\r\n\t\"fo\": { english: \"Faroese\", native: \"føroyskt\" },\r\n\t\"fr\": { english: \"French\", native: \"français, langue française\" },\r\n\t\"fy\": { english: \"Western Frisian\", native: \"Frysk\" },\r\n\t\"ga\": { english: \"Irish\", native: \"Gaeilge\" },\r\n\t\"gd\": { english: \"Gaelic, Scottish Gaelic\", native: \"Gàidhlig\" },\r\n\t\"gl\": { english: \"Galician\", native: \"Galego\" },\r\n\t\"gn\": { english: \"Guarani\", native: \"Avañe'ẽ\" },\r\n\t\"gu\": { english: \"Gujarati\", native: \"ગુજરાતી\" },\r\n\t\"gv\": { english: \"Manx\", native: \"Gaelg, Gailck\" },\r\n\t\"ha\": { english: \"Hausa\", native: \"(Hausa) هَوُسَ\" },\r\n\t\"he\": { english: \"Hebrew\", native: \"עברית\" },\r\n\t\"hi\": { english: \"Hindi\", native: \"हिन्दी, हिंदी\" },\r\n\t\"ho\": { english: \"Hiri Motu\", native: \"Hiri Motu\" },\r\n\t\"hr\": { english: \"Croatian\", native: \"hrvatski jezik\" },\r\n\t\"ht\": { english: \"Haitian, Haitian Creole\", native: \"Kreyòl ayisyen\" },\r\n\t\"hu\": { english: \"Hungarian\", native: \"magyar\" },\r\n\t\"hy\": { english: \"Armenian\", native: \"Հայերեն\" },\r\n\t\"hz\": { english: \"Herero\", native: \"Otjiherero\" },\r\n\t\"ia\": { english: \"Interlingua (International Auxiliary Language Association)\", native: \"Interlingua\" },\r\n\t\"id\": { english: \"Indonesian\", native: \"Bahasa Indonesia\" },\r\n\t\"ie\": { english: \"Interlingue, Occidental\", native: \"(originally:) Occidental, (after WWII:) Interlingue\" },\r\n\t\"ig\": { english: \"Igbo\", native: \"Asụsụ Igbo\" },\r\n\t\"ii\": { english: \"Sichuan Yi, Nuosu\", native: \"ꆈꌠ꒿ Nuosuhxop\" },\r\n\t\"ik\": { english: \"Inupiaq\", native: \"Iñupiaq, Iñupiatun\" },\r\n\t\"io\": { english: \"Ido\", native: \"Ido\" },\r\n\t\"is\": { english: \"Icelandic\", native: \"Íslenska\" },\r\n\t\"it\": { english: \"Italian\", native: \"Italiano\" },\r\n\t\"iu\": { english: \"Inuktitut\", native: \"ᐃᓄᒃᑎᑐᑦ\" },\r\n\t\"ja\": { english: \"Japanese\", native: \"日本語 (にほんご)\" },\r\n\t\"jv\": { english: \"Javanese\", native: \"ꦧꦱꦗꦮ, Basa Jawa\" },\r\n\t\"ka\": { english: \"Georgian\", native: \"ქართული\" },\r\n\t\"kg\": { english: \"Kongo\", native: \"Kikongo\" },\r\n\t\"ki\": { english: \"Kikuyu, Gikuyu\", native: \"Gĩkũyũ\" },\r\n\t\"kj\": { english: \"Kuanyama, Kwanyama\", native: \"Kuanyama\" },\r\n\t\"kk\": { english: \"Kazakh\", native: \"қазақ тілі\" },\r\n\t\"kl\": { english: \"Kalaallisut, Greenlandic\", native: \"kalaallisut, kalaallit oqaasii\" },\r\n\t\"km\": { english: \"Central Khmer\", native: \"ខ្មែរ, ខេមរភាសា, ភាសាខ្មែរ\" },\r\n\t\"kn\": { english: \"Kannada\", native: \"ಕನ್ನಡ\" },\r\n\t\"ko\": { english: \"Korean\", native: \"한국어\" },\r\n\t\"kr\": { english: \"Kanuri\", native: \"Kanuri\" },\r\n\t\"ks\": { english: \"Kashmiri\", native: \"कश्मीरी, كشميري‎\" },\r\n\t\"ku\": { english: \"Kurdish\", native: \"Kurdî, کوردی‎\" },\r\n\t\"kv\": { english: \"Komi\", native: \"коми кыв\" },\r\n\t\"kw\": { english: \"Cornish\", native: \"Kernewek\" },\r\n\t\"ky\": { english: \"Kirghiz, Kyrgyz\", native: \"Кыргызча, Кыргыз тили\" },\r\n\t\"la\": { english: \"Latin\", native: \"latine, lingua latina\" },\r\n\t\"lb\": { english: \"Luxembourgish, Letzeburgesch\", native: \"Lëtzebuergesch\" },\r\n\t\"lg\": { english: \"Ganda\", native: \"Luganda\" },\r\n\t\"li\": { english: \"Limburgan, Limburger, Limburgish\", native: \"Limburgs\" },\r\n\t\"ln\": { english: \"Lingala\", native: \"Lingála\" },\r\n\t\"lo\": { english: \"Lao\", native: \"ພາສາລາວ\" },\r\n\t\"lt\": { english: \"Lithuanian\", native: \"lietuvių kalba\" },\r\n\t\"lu\": { english: \"Luba-Katanga\", native: \"Kiluba\" },\r\n\t\"lv\": { english: \"Latvian\", native: \"latviešu valoda\" },\r\n\t\"mg\": { english: \"Malagasy\", native: \"fiteny malagasy\" },\r\n\t\"mh\": { english: \"Marshallese\", native: \"Kajin M̧ajeļ\" },\r\n\t\"mi\": { english: \"Maori\", native: \"te reo Māori\" },\r\n\t\"mk\": { english: \"Macedonian\", native: \"македонски јазик\" },\r\n\t\"ml\": { english: \"Malayalam\", native: \"മലയാളം\" },\r\n\t\"mn\": { english: \"Mongolian\", native: \"Монгол хэл\" },\r\n\t\"mr\": { english: \"Marathi\", native: \"मराठी\" },\r\n\t\"ms\": { english: \"Malay\", native: \"Bahasa Melayu, بهاس ملايو‎\" },\r\n\t\"mt\": { english: \"Maltese\", native: \"Malti\" },\r\n\t\"my\": { english: \"Burmese\", native: \"ဗမာစာ\" },\r\n\t\"na\": { english: \"Nauru\", native: \"Dorerin Naoero\" },\r\n\t\"nb\": { english: \"Norwegian Bokmål\", native: \"Norsk Bokmål\" },\r\n\t\"nd\": { english: \"North Ndebele\", native: \"isiNdebele\" },\r\n\t\"ne\": { english: \"Nepali\", native: \"नेपाली\" },\r\n\t\"ng\": { english: \"Ndonga\", native: \"Owambo\" },\r\n\t\"nl\": { english: \"Dutch, Flemish\", native: \"Nederlands, Vlaams\" },\r\n\t\"nn\": { english: \"Norwegian Nynorsk\", native: \"Norsk Nynorsk\" },\r\n\t\"no\": { english: \"Norwegian\", native: \"Norsk\" },\r\n\t\"nr\": { english: \"South Ndebele\", native: \"isiNdebele\" },\r\n\t\"nv\": { english: \"Navajo, Navaho\", native: \"Diné bizaad\" },\r\n\t\"ny\": { english: \"Chichewa, Chewa, Nyanja\", native: \"chiCheŵa, chinyanja\" },\r\n\t\"oc\": { english: \"Occitan\", native: \"occitan, lenga d'òc\" },\r\n\t\"oj\": { english: \"Ojibwa\", native: \"ᐊᓂᔑᓈᐯᒧᐎᓐ\" },\r\n\t\"om\": { english: \"Oromo\", native: \"Afaan Oromoo\" },\r\n\t\"or\": { english: \"Oriya\", native: \"ଓଡ଼ିଆ\" },\r\n\t\"os\": { english: \"Ossetian, Ossetic\", native: \"ирон æвзаг\" },\r\n\t\"pa\": { english: \"Punjabi, Panjabi\", native: \"ਪੰਜਾਬੀ, پنجابی‎\" },\r\n\t\"pi\": { english: \"Pali\", native: \"पालि, पाळि\" },\r\n\t\"pl\": { english: \"Polish\", native: \"język polski, polszczyzna\" },\r\n\t\"ps\": { english: \"Pashto, Pushto\", native: \"پښتو\" },\r\n\t\"pt\": { english: \"Portuguese\", native: \"Português\" },\r\n\t\"qu\": { english: \"Quechua\", native: \"Runa Simi, Kichwa\" },\r\n\t\"rm\": { english: \"Romansh\", native: \"Rumantsch Grischun\" },\r\n\t\"rn\": { english: \"Rundi\", native: \"Ikirundi\" },\r\n\t\"ro\": { english: \"Romanian, Moldavian, Moldovan\", native: \"Română\" },\r\n\t\"ru\": { english: \"Russian\", native: \"русский\" },\r\n\t\"rw\": { english: \"Kinyarwanda\", native: \"Ikinyarwanda\" },\r\n\t\"sa\": { english: \"Sanskrit\", native: \"संस्कृतम्\" },\r\n\t\"sc\": { english: \"Sardinian\", native: \"sardu\" },\r\n\t\"sd\": { english: \"Sindhi\", native: \"सिन्धी, سنڌي، سندھی‎\" },\r\n\t\"se\": { english: \"Northern Sami\", native: \"Davvisámegiella\" },\r\n\t\"sg\": { english: \"Sango\", native: \"yângâ tî sängö\" },\r\n\t\"si\": { english: \"Sinhala, Sinhalese\", native: \"සිංහල\" },\r\n\t\"sk\": { english: \"Slovak\", native: \"Slovenčina, Slovenský Jazyk\" },\r\n\t\"sl\": { english: \"Slovenian\", native: \"Slovenski Jezik, Slovenščina\" },\r\n\t\"sm\": { english: \"Samoan\", native: \"gagana fa'a Samoa\" },\r\n\t\"sn\": { english: \"Shona\", native: \"chiShona\" },\r\n\t\"so\": { english: \"Somali\", native: \"Soomaaliga, af Soomaali\" },\r\n\t\"sq\": { english: \"Albanian\", native: \"Shqip\" },\r\n\t\"sr\": { english: \"Serbian\", native: \"српски језик\" },\r\n\t\"ss\": { english: \"Swati\", native: \"SiSwati\" },\r\n\t\"st\": { english: \"Southern Sotho\", native: \"Sesotho\" },\r\n\t\"su\": { english: \"Sundanese\", native: \"Basa Sunda\" },\r\n\t\"sv\": { english: \"Swedish\", native: \"Svenska\" },\r\n\t\"sw\": { english: \"Swahili\", native: \"Kiswahili\" },\r\n\t\"ta\": { english: \"Tamil\", native: \"தமிழ்\" },\r\n\t\"te\": { english: \"Telugu\", native: \"తెలుగు\" },\r\n\t\"tg\": { english: \"Tajik\", native: \"тоҷикӣ, toçikī, تاجیکی‎\" },\r\n\t\"th\": { english: \"Thai\", native: \"ไทย\" },\r\n\t\"ti\": { english: \"Tigrinya\", native: \"ትግርኛ\" },\r\n\t\"tk\": { english: \"Turkmen\", native: \"Türkmen, Түркмен\" },\r\n\t\"tl\": { english: \"Tagalog\", native: \"Wikang Tagalog\" },\r\n\t\"tn\": { english: \"Tswana\", native: \"Setswana\" },\r\n\t\"to\": { english: \"Tonga (Tonga Islands)\", native: \"Faka Tonga\" },\r\n\t\"tr\": { english: \"Turkish\", native: \"Türkçe\" },\r\n\t\"ts\": { english: \"Tsonga\", native: \"Xitsonga\" },\r\n\t\"tt\": { english: \"Tatar\", native: \"татар теле, tatar tele\" },\r\n\t\"tw\": { english: \"Twi\", native: \"Twi\" },\r\n\t\"ty\": { english: \"Tahitian\", native: \"Reo Tahiti\" },\r\n\t\"ug\": { english: \"Uighur, Uyghur\", native: \"ئۇيغۇرچە‎, Uyghurche\" },\r\n\t\"uk\": { english: \"Ukrainian\", native: \"Українська\" },\r\n\t\"ur\": { english: \"Urdu\", native: \"اردو\" },\r\n\t\"uz\": { english: \"Uzbek\", native: \"Oʻzbek, Ўзбек, أۇزبېك‎\" },\r\n\t\"ve\": { english: \"Venda\", native: \"Tshivenḓa\" },\r\n\t\"vi\": { english: \"Vietnamese\", native: \"Tiếng Việt\" },\r\n\t\"vo\": { english: \"Volapük\", native: \"Volapük\" },\r\n\t\"wa\": { english: \"Walloon\", native: \"Walon\" },\r\n\t\"wo\": { english: \"Wolof\", native: \"Wollof\" },\r\n\t\"xh\": { english: \"Xhosa\", native: \"isiXhosa\" },\r\n\t\"yi\": { english: \"Yiddish\", native: \"ייִדיש\" },\r\n\t\"yo\": { english: \"Yoruba\", native: \"Yorùbá\" },\r\n\t\"za\": { english: \"Zhuang, Chuang\", native: \"Saɯ cueŋƅ, Saw cuengh\" },\r\n\t\"zh\": { english: \"Chinese\", native: \"中文 (Zhōngwén), 汉语, 漢語\" },\r\n\t\"zu\": { english: \"Zulu\", native: \"isiZulu\" },\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { SpaLanguageService, defaultSpaLangToLocalesMapping } from '../../services/spa-language.service';\r\nimport { Router } from '@angular/router';\r\nimport { LANGUAGE_ROUTE_ENABLED, LANGUAGE_TO_LOCALES_MAPPING } from '../../classes/injection-tokens';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { HashMap, TranslocoService } from '@ngneat/transloco';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, AbstractControl } from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { localeCodeMap, LanguageName, languageCodeMap } from '../../classes/language-and-locale-code-map';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-language-selector',\r\n    templateUrl: './dialog-language-selector.component.html',\r\n    styleUrls: ['./dialog-language-selector.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogLanguageSelectorComponent implements OnInit {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tform: UntypedFormGroup;\r\n\r\n\tavailableLanguages: string[];\r\n\tavailableLocales: string[];\r\n\r\n\tlocaleCodeMap: HashMap<LanguageName> = localeCodeMap;\r\n\tlanguageCodeMap: HashMap<LanguageName> = languageCodeMap;\r\n\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tuseMessageAsHtml: boolean;\r\n\r\n\tget languageControl(): AbstractControl {\r\n\t\tif (this.form) {\r\n\t\t\treturn this.form.get('language');\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tget localeControl(): AbstractControl {\r\n\t\tif (this.form) {\r\n\t\t\treturn this.form.get('locale');\r\n\t\t}\r\n\t\treturn null;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate dialogRef: MatDialogRef<DialogLanguageSelectorComponent>,\r\n\t\tpublic router: Router,\r\n\t\tpublic spaLanguage: SpaLanguageService,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\t@Inject(LANGUAGE_ROUTE_ENABLED) private languageRouteEnabled: boolean,\r\n\t\t@Inject(LANGUAGE_TO_LOCALES_MAPPING) private languageToLocalesMapping: HashMap<string[]>,\r\n\t) {\r\n\t\tthis.title = data.title || this.transloco.translate('components.dialog-language-selector.select-language');\r\n\t\tthis.message = data.message;\r\n\t\tthis.useMessageAsHtml = data.useMessageAsHtml || false;\r\n\r\n\t\tthis.createForm();\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.availableLanguages = this.spaLanguage.getApplicationAvailableLangs();\r\n\t\tthis.logger.logDebug('DialogLanguageSelectorComponent -- available languages: ', this.availableLanguages);\r\n\t\tthis.availableLocales = this.getAvailableLocales();\r\n\t\tthis.logger.logDebug('DialogLanguageSelectorComponent -- available locales: ', this.availableLocales);\r\n\t}\r\n\r\n\tcreateForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tlanguage: [this.transloco.getActiveLang(), Validators.required],\r\n\t\t\tlocale: [this.spaLanguage.getLocale(), Validators.required]\r\n\t\t});\r\n\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.languageControl.valueChanges.subscribe(newLang => {\r\n\t\t\t\tlet newLocale = this.spaLanguage.getLocaleBasedOnLanguage(newLang);\r\n\t\t\t\tif (newLocale) {\r\n\t\t\t\t\tthis.localeControl.setValue(newLocale);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tgetAvailableLocales(): string[] {\r\n\t\tlet availableLocales: string[] = [];\r\n\t\tlet mapping: HashMap<string[]>;\r\n\r\n\t\tif (this.languageToLocalesMapping) {\r\n\t\t\tmapping = this.languageToLocalesMapping;\r\n\t\t\tthis.logger.logDebug('DialogLanguageSelectorComponent -- getting available locales from the custom language-to-locales mapping, from the client app');\r\n\t\t} else {\r\n\t\t\tmapping = defaultSpaLangToLocalesMapping;\r\n\t\t\tthis.logger.logDebug('DialogLanguageSelectorComponent -- getting available locales from the default language-to-locales mapping, from SPA');\r\n\t\t}\r\n\r\n\t\tfor (let langLocales of Object.values(mapping)) {\r\n\t\t\tif (langLocales) {\r\n\t\t\t\tavailableLocales.push(...langLocales);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn availableLocales;\r\n\t}\r\n\r\n\tonSubmit() {\r\n\t\tlet { language, locale } = this.form.value;\r\n\r\n\t\tthis.logger.logInformation(`DialogLanguageSelectorComponent -- language \"${language}\" and locale \"${locale}\" selected`);\r\n\r\n\t\t// if language route is enabled, navigate to the route with the new url, and let the root component deal with setting up the new language.\r\n\t\t// otherwise, call directly the method setActiveLanguageIfDifferent, passing the new language.\r\n\t\tif (this.languageRouteEnabled) {\r\n\t\t\tthis.router.navigateByUrl(this.spaLanguage.replaceOrInsertLangInUrl(this.router.url, language));\r\n\t\t} else {\r\n\t\t\tthis.spaLanguage.setActiveLanguageIfDifferent(language);\r\n\t\t}\r\n\r\n\t\tthis.spaLanguage.setLanguagePreferenceInCookie(language);\r\n\t\tthis.spaLanguage.setLocaleAndStoreInCookie(locale);\r\n\r\n\t\tthis.dialogRef.close();\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.logger.logTrace('LanguageButtonComponent ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<div *transloco=\"let t\">\r\n\t<spa-dialog-title [disableClose]=\"data.disableClose\">{{title}}</spa-dialog-title>\r\n\t<div mat-dialog-content>\r\n\t\t@if (message) {\r\n\t\t\t@if (useMessageAsHtml) {\r\n\t\t\t\t<span [innerHTML]=\"message\"></span>\r\n\t\t\t}\r\n\t\t\t@if (!useMessageAsHtml) {\r\n\t\t\t\t<span>{{message}}</span>\r\n\t\t\t}\r\n\t\t}\r\n\t\t<form [formGroup]=\"form\">\r\n\t\t\t<div class=\"container\">\r\n\t\t\t\t<div class=\"row\">\r\n\t\t\t\t\t<mat-form-field class=\"col-12\">\r\n\t\t\t\t\t\t<mat-label>{{t('common.language')}}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"language\">\r\n\t\t\t\t\t\t\t@for (lang of availableLanguages; track lang) {\r\n\t\t\t\t\t\t\t\t<mat-option [value]=\"lang\">\r\n\t\t\t\t\t\t\t\t\t{{languageCodeMap[lang]?.native || (lang | uppercase)}}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t<mat-form-field class=\"col-12\">\r\n\t\t\t\t\t\t<mat-label>{{t('common.regional-format')}}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"locale\">\r\n\t\t\t\t\t\t\t@for (locale of availableLocales; track locale) {\r\n\t\t\t\t\t\t\t\t<mat-option [value]=\"locale\">\r\n\t\t\t\t\t\t\t\t\t{{localeCodeMap[locale]?.native || locale}}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"d-flex justify-content-center\">\r\n\t\t\t\t\t<spa-submit-button class=\"me-2\" [form]=\"form\" (submit)=\"onSubmit()\">\r\n\t\t\t\t\t\t{{t('common.apply')}}\r\n\t\t\t\t\t</spa-submit-button>\r\n\t\t\t\t\t<button mat-button type=\"button\" mat-dialog-close>\r\n\t\t\t\t\t\t{{t('common.cancel')}}\r\n\t\t\t\t\t</button>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</form>\r\n\t</div>\r\n</div>\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-prop',\r\n    templateUrl: './prop.component.html',\r\n    styleUrls: ['./prop.component.scss'],\r\n    standalone: false\r\n})\r\nexport class PropComponent implements OnInit {\r\n\r\n\t@Input() label: string;\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n}\r\n","<p class=\"prop-label\">{{label}}</p>\r\n<p class=\"prop-value\">\r\n\t<ng-content></ng-content>\r\n</p>\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable ,  of ,  AsyncSubject ,  Subject } from 'rxjs';\r\nimport { AgentModel, AgentBulkLookupResponse } from '../api/agents';\r\nimport { debounceTime, switchMap, tap } from 'rxjs/operators';\r\n\r\nconst apiRoute = '/api/agents';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AgentLookupService {\r\n\r\n\tprivate lookupTasks: {\r\n\t\t[id: string]: AsyncSubject<AgentModel>\r\n\t} = {};\r\n\r\n\tprivate lookupQueue: string[] = [];\r\n\tprivate lookupQueueChanged = new Subject<any>();\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient\r\n\t) {\r\n\t\tthis.lookupQueueChanged.pipe(\r\n\t\t\tdebounceTime(100),\r\n\t\t\tswitchMap(() => this.http.put<AgentBulkLookupResponse>(`${apiRoute}/bulk-lookup`, { ids: this.lookupQueue.splice(0) })),\r\n\t\t).subscribe(r => {\r\n\t\t\tfor (let id of Object.keys(r.agents)) {\r\n\t\t\t\tlet subject = this.lookupTasks[id];\r\n\t\t\t\tsubject.next(r.agents[id]);\r\n\t\t\t\tsubject.complete();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget(id: string): Observable<AgentModel> {\r\n\t\treturn this.lookupTasks[id] || this.enqueueLookup(id);\r\n\t}\r\n\r\n\tprivate enqueueLookup(id: string): AsyncSubject<AgentModel> {\r\n\t\tlet task = new AsyncSubject<AgentModel>();\r\n\t\tthis.lookupTasks[id] = task;\r\n\t\tthis.lookupQueue.push(id);\r\n\t\tthis.lookupQueueChanged.next(null);\r\n\t\treturn task;\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { AgentLookupService } from '../services/agent-lookup.service';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Pipe({\r\n    name: 'agent',\r\n    standalone: false\r\n})\r\nexport class AgentPipe implements PipeTransform {\r\n\r\n\tconstructor(\r\n\t\tprivate agentLookupService: AgentLookupService\r\n\t) {\r\n\t}\r\n\r\n\ttransform(value: any, args?: any): any {\r\n\t\treturn this.agentLookupService.get(value as string).pipe(\r\n\t\t\tmap(a => {\r\n\t\t\t\tif (args && args['hideType']) {\r\n\t\t\t\t\treturn `${a.name}`;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn `${a.name} (${a.type})`;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform, Optional, Inject } from '@angular/core';\r\nimport { EntityTypes } from '../api/enums';\r\nimport { GET_ENTITY_ICON } from '../classes/injection-tokens';\r\nimport { GetEntityIconFunction } from '../classes/types';\r\n\r\n@Pipe({\r\n    name: 'entityIcon',\r\n    standalone: false\r\n})\r\nexport class EntityIconPipe implements PipeTransform {\r\n\r\n\tconstructor(@Optional() @Inject(GET_ENTITY_ICON) private getEntityIcon: GetEntityIconFunction) { }\r\n\r\n\ttransform(value: any, args?: any): any {\r\n\t\t// first, try the custom entity icons\r\n\t\tif (this.getEntityIcon) {\r\n\t\t\tlet entityIcon = this.getEntityIcon(value);\r\n\t\t\tif (entityIcon) {\r\n\t\t\t\treturn entityIcon;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// then, try the default entity icons\r\n\t\tswitch (value) {\r\n\t\t\tcase EntityTypes.Subscription:\r\n\t\t\t\treturn 'apps';\r\n\t\t\tcase EntityTypes.User:\r\n\t\t\t\treturn 'person';\r\n\t\t\tcase EntityTypes.Invite:\r\n\t\t\t\treturn 'person_add';\r\n\t\t\tcase EntityTypes.Application:\r\n\t\t\t\treturn 'device_hub';\r\n\t\t\tdefault:\r\n\t\t\t\treturn 'help';\r\n\t\t}\t\t\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable ,  of ,  AsyncSubject ,  Subject } from 'rxjs';\r\nimport { debounceTime, switchMap, tap } from 'rxjs/operators';\r\nimport { LookupResponseItem, LookupRequestItem } from '../api/entities';\r\nimport { EntityTypes } from '../api/enums';\r\nimport { Logger } from './logger.service';\r\n\r\nexport const ENTITY_NOT_FOUND = -1;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class EntityLookupService {\r\n\r\n\tprivate lookupTasks: {\r\n\t\t[typeAndId: string]: AsyncSubject<string | number>\r\n\t} = {};\r\n\r\n\tprivate lookupQueue: LookupRequestItem[] = [];\r\n\tprivate lookupQueueChanged = new Subject<any>();\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate logger: Logger,\r\n\t) {\r\n\t\tthis.lookupQueueChanged.pipe(\r\n\t\t\tdebounceTime(100),\r\n\t\t\tswitchMap(() => this.http.put<LookupResponseItem[]>('/api/entities/bulk-lookup', this.lookupQueue.splice(0))),\r\n\t\t).subscribe(r => {\r\n\t\t\tthis.logger.logTrace('EntityLookupService -- new entity lookup: ', r);\r\n\t\t\tfor (let item of r) {\r\n\t\t\t\tlet subject = this.lookupTasks[this.getIndex(item.type, item.id)];\r\n\t\t\t\tsubject.next(item.name || ENTITY_NOT_FOUND);\r\n\t\t\t\tsubject.complete();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tget(type: EntityTypes, id: string): Observable<string | number> {\r\n\t\treturn this.lookupTasks[this.getIndex(type, id)] || this.enqueueLookup(type, id);\r\n\t}\r\n\r\n\tprivate enqueueLookup(type: EntityTypes, id: string): AsyncSubject<string> {\r\n\t\tlet task = new AsyncSubject<string>();\r\n\t\tthis.lookupTasks[this.getIndex(type, id)] = task;\r\n\t\tthis.lookupQueue.push({ type, id });\r\n\t\tthis.lookupQueueChanged.next(null);\r\n\t\treturn task;\r\n\t}\r\n\r\n\tprivate getIndex(type: EntityTypes, id: string): string {\r\n\t\treturn `${type}:${id}`;\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { EntityLookupService } from '../services/entity-lookup.service';\r\nimport { EntityTypes } from '../api/enums';\r\n\r\n@Pipe({\r\n    name: 'entityName',\r\n    standalone: false\r\n})\r\nexport class EntityNamePipe implements PipeTransform {\r\n\r\n\tconstructor(\r\n\t\tprivate entityLookupService: EntityLookupService\r\n\t) {\r\n\t}\r\n\r\n\ttransform(value: any, args?: any): any {\r\n\t\treturn this.entityLookupService.get(value['entityType'] as EntityTypes, value['entityId'] as string);\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform, Optional, Inject } from '@angular/core';\r\nimport { GET_EVENT_TYPE_NAME } from '../classes/injection-tokens';\r\nimport { EventTypes } from '../api/enums';\r\nimport { GetEventTypeNameFunction } from '../classes/types';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Pipe({\r\n    name: 'eventType',\r\n    standalone: false\r\n})\r\nexport class EventTypePipe implements PipeTransform {\r\n\r\n\tconstructor(\r\n\t\t@Optional() @Inject(GET_EVENT_TYPE_NAME) private getEventTypeName: GetEventTypeNameFunction,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) { }\r\n\r\n\ttransform(value: any, args?: any): any {\r\n\t\t// first, try to get it from GetEventTypeNameFunction, which was the previous way to get the display name of the event type, in order to avoid breaking changes.\r\n\t\t// In case GetEventTypeNameFunction is not available, try to find the display name of the event type from its translation object (which is the preferred way, since it supports i18n).\r\n\r\n\t\tlet fallbackLang = Array.isArray(this.transloco.config.fallbackLang) ? this.transloco.config.fallbackLang[0] : this.transloco.config.fallbackLang;\r\n\t\tlet eventTypesTranslationObject = this.transloco.translateObject('enums.event-types') || this.transloco.translateObject('enums.event-types', {}, fallbackLang);\r\n\t\tlet replacementChar = '\\ufffd'; // \"replacement character\" (question mark inside a \"diamond\" box)\r\n\t\tlet displayName: string;\r\n\r\n\t\tif (this.getEventTypeName && (displayName = this.getEventTypeName(value))) {\r\n\t\t\treturn displayName;\r\n\t\t} else if (eventTypesTranslationObject) { // this condition should always be true, unless something not expected happens...\r\n\t\t\treturn eventTypesTranslationObject[value] || replacementChar;\r\n\t\t}\r\n\r\n\t\treturn replacementChar;\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\nimport { Logger } from '../services/logger.service';\r\nimport { Config } from '../api/configuration';\r\nimport { EntityLookupService, ENTITY_NOT_FOUND } from '../services/entity-lookup.service';\r\nimport { EntityTypes } from '../api/enums';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { of, Observable } from 'rxjs';\r\n\r\n@Pipe({\r\n    name: 'sub',\r\n    standalone: false\r\n})\r\nexport class SubscriptionPipe implements PipeTransform {\r\n\r\n\tconstructor(\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate entityLookupService: EntityLookupService,\r\n\t\tprivate logger: Logger\r\n\t) {\r\n\t}\r\n\r\n\ttransform(value: any, args?: any): Observable<string> {\r\n\t\tthis.logger.logTrace(`Resolving subscription ${value}`);\r\n\t\treturn this.getAliasOrName(value).pipe(\r\n\t\t\ttap(r => this.logger.logTrace(`Resolved subscription ${value} to ${r}`))\r\n\t\t);\r\n\t}\r\n\r\n\tgetAliasOrName(subId: string): Observable<string> {\r\n\r\n\t\tif (subId === Config.subscriptionRoot) {\r\n\t\t\treturn of('Admin');\r\n\t\t}\r\n\r\n\t\tvar sa = this.spaControl.userProfile.subscriptions.filter(s => s.subscription.id === subId)[0];\r\n\t\tif (sa) {\r\n\t\t\tlet result = (sa.subscription.alias && sa.subscription.alias != '' ? sa.subscription.alias : sa.subscription.name);\r\n\t\t\treturn of(result);\r\n\t\t}\r\n\r\n\t\tthis.logger.logTrace(`Calling entity lookup to resolve sub ${subId}`);\r\n\r\n\t\treturn this.entityLookupService.get(EntityTypes.Subscription, subId).pipe(\r\n\t\t\tmap(r => {\r\n\t\t\t\tif (r === ENTITY_NOT_FOUND) {\r\n\t\t\t\t\tthis.logger.logWarning(`Could not resolve subscription: ${subId}`);\r\n\t\t\t\t\treturn '\\ufffd'; // \"replacement character\" (question mark inside a \"diamond\" box)\r\n\t\t\t\t}\r\n\t\t\t\treturn r as string;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n","import { SpaLanguageService } from '../services/spa-language.service';\r\n\r\n// arguments that will be used by both LocaleSensitivePipe.transformUsingCache, and transformFunction\r\nexport interface LocaleSensitivePipeArgs {\r\n\tvalue: any,\r\n\tlocale: string,\r\n\t[otherArgs: string]: any\r\n}\r\n\r\nexport abstract class LocaleSensitivePipe {\r\n\tlatestTransformedValue: string | null;\r\n\tlatestArgsUsed: LocaleSensitivePipeArgs;\r\n\r\n\tget currentLocale(): string { return this.spaLanguageService.getLocale(); }\r\n\r\n\tconstructor(protected spaLanguageService: SpaLanguageService) { }\r\n\r\n\tabstract transformFunction(args: LocaleSensitivePipeArgs): string | null;\r\n\r\n\ttransformUsingCache(transformFunctionArgs: LocaleSensitivePipeArgs) {\r\n\t\t// check if the transformed value was previously calculated, and also if any argument has \r\n\t\t// changed since the last call, in order to decide if the cached value should be used or not\r\n\t\tif (this.latestTransformedValue !== undefined && !this.checkIfArgsChanged(transformFunctionArgs)) {\r\n\t\t\treturn this.latestTransformedValue;\r\n\t\t}\r\n\r\n\t\t// if no locales were given, use the currently selected one\r\n\t\tif (!transformFunctionArgs.locale) {\r\n\t\t\ttransformFunctionArgs.locale = this.currentLocale;\r\n\t\t}\r\n\r\n\t\t// update the latest args used, recalculate the transformation, and finally update latestTransformedValue as well\r\n\t\tthis.latestArgsUsed = transformFunctionArgs;\r\n\t\tthis.latestTransformedValue = this.transformFunction(transformFunctionArgs);\r\n\r\n\t\treturn this.latestTransformedValue;\r\n\t}\r\n\r\n\tcheckIfArgsChanged(args: LocaleSensitivePipeArgs): boolean {\r\n\t\tif (!this.latestArgsUsed) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// check SUPERFICIALLY if any argument (i.e, any key inside the args object) has changed since the last call\r\n\t\tfor (let key of Object.keys(args)) {\r\n\t\t\tif (this.latestArgsUsed[key] !== args[key]) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DatePipe } from '@angular/common';\r\nimport { SpaLanguageService } from '../services/spa-language.service';\r\nimport { LocaleSensitivePipe, LocaleSensitivePipeArgs } from './locale-sensitive.pipe';\r\n\r\n@Pipe({\r\n    name: 'spaDate', pure: false,\r\n    standalone: false\r\n})\r\nexport class SpaDatePipe extends LocaleSensitivePipe implements PipeTransform {\r\n\tprivate datePipe: DatePipe = new DatePipe(this.currentLocale);\r\n\r\n\tconstructor(private spaLanguage: SpaLanguageService) { super(spaLanguage) }\r\n\r\n\ttransform(value: any, format = 'mediumDate', timezone?: string, locale?: string): string | null {\r\n\t\treturn this.transformUsingCache({ value, format, timezone, locale });\r\n\t}\r\n\r\n\ttransformFunction(args: LocaleSensitivePipeArgs): string | null {\r\n\t\treturn this.datePipe.transform(args.value, args.format, args.timezone, args.locale);\r\n\t}\r\n}\r\n\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Pipe({\r\n    name: 'entityType',\r\n    standalone: false\r\n})\r\nexport class EntityTypePipe implements PipeTransform {\r\n\r\n\tconstructor(\r\n\t\tprivate transloco: TranslocoService,\r\n\t) { }\r\n\r\n\ttransform(value: string): string {\r\n\t\treturn this.transloco.translate(`enums.entity-types.${value}`);\r\n\t}\r\n\r\n}\r\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { EventModel } from '../../api/events';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-event-details',\r\n    templateUrl: './dialog-event-details.component.html',\r\n    styleUrls: ['./dialog-event-details.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogEventDetailsComponent implements OnInit {\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public event: EventModel\r\n\t) { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n\t<spa-dialog-title>{{t('components.dialog-event-details.title')}}</spa-dialog-title>\r\n\t<div mat-dialog-content>\r\n\t\t<div class=\"row\">\r\n\t\t\t<spa-prop class=\"col-12 col-md-3\" [label]=\"t('common.date')\">\r\n\t\t\t\t{{event.date | spaDate: 'shortDate'}} {{event.date | spaDate: 'mediumTime'}}\r\n\t\t\t</spa-prop>\r\n\t\t\t<spa-prop class=\"col-12 col-md-4\" [label]=\"t('components.dialog-event-details.event-id')\">\r\n\t\t\t\t{{ event.id }}\r\n\t\t\t</spa-prop>\r\n\t\t\t<spa-prop class=\"col-12 col-md-5\" [label]=\"t('components.dialog-event-details.event-type')\">\r\n\t\t\t\t{{event.type | eventType}}\r\n\t\t\t</spa-prop>\r\n\t\t</div>\r\n\t\t<div class=\"row\">\r\n\t\t\t<spa-prop class=\"col-12 col-md-3\" [label]=\"t('components.dialog-event-details.entity-type')\">\r\n\t\t\t\t<div class=\"d-flex\">\r\n\t\t\t\t\t<mat-icon class=\"me-2\">{{event.entityType | entityIcon}}</mat-icon>\r\n\t\t\t\t\t<span>{{event.entityType | entityType}}</span>\r\n\t\t\t\t</div>\r\n\t\t\t</spa-prop>\r\n\t\t\t<spa-prop class=\"col-12 col-md-4\" [label]=\"t('components.dialog-event-details.entity-id')\">\r\n\t\t\t\t{{event.entityId}}\r\n\t\t\t</spa-prop>\r\n\t\t\t<spa-prop class=\"col-12 col-md-5\" [label]=\"t('components.dialog-event-details.entity-name')\">\r\n\t\t\t\t{{event | entityName | async}}\r\n\t\t\t</spa-prop>\r\n\t\t</div>\r\n\t\t<div class=\"row\">\r\n\t\t\t<spa-prop class=\"col-12 col-md-7\" [label]=\"t('common.agent')\">\r\n\t\t\t\t{{ event.agentId ? (event.agentId | agent | async) : '----'}}\r\n\t\t\t</spa-prop>\r\n\t\t\t<spa-prop class=\"col-12 col-md-5\" [label]=\"t('common.subscription')\">\r\n\t\t\t\t{{event.subscriptionId | sub | async}}\r\n\t\t\t</spa-prop>\r\n\t\t</div>\r\n\t\t@if (event.remoteIPAddress || event.remotePort) {\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<spa-prop class=\"col-12\" [label]=\"t('components.dialog-event-details.ip-and-port')\">\r\n\t\t\t\t\t{{ event.remoteIPAddress }}:{{ event.remotePort }}\r\n\t\t\t\t</spa-prop>\r\n\t\t\t</div>\r\n\t\t}\r\n\t\t<div class=\"row\">\r\n\t\t\t<spa-prop class=\"col-12 pre-prop\" [label]=\"t('common.details')\">{{event.details || \"----\"}}</spa-prop>\r\n\t\t</div>\r\n\r\n\t\t<ng-content></ng-content>\r\n\t</div>\r\n</ng-container>\r\n","import { Component, OnInit, Inject, SecurityContext } from '@angular/core';\r\nimport { FormBuilder, FormControl } from '@angular/forms';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\nexport interface DialogConfirmWithReasonData {\r\n\tmessage: string;\r\n\ttitle?: string;\r\n\tconfirmButtonText?: string;\r\n\tconfirmButtonColor?: ThemePalette;\r\n\tconfirmButtonMatIcon?: string;\r\n\tcancelButtonText?: string;\r\n\tcancelButtonColor?: ThemePalette;\r\n\tcancelButtonMatIcon?: string;\r\n\tuseMessageAsHtml?: boolean;\r\n\treasonLabel?: string;\r\n\treasonMaxLength?: number;\r\n\tdisableClose?: boolean;\r\n}\r\n\r\nexport interface DialogConfirmWithReasonResult {\r\n\tdialogResult: boolean;\r\n\treason: string;\r\n}\r\n\r\n@Component({\r\n    selector: 'spa-dialog-confirm-with-reason',\r\n    templateUrl: './dialog-confirm-with-reason.component.html',\r\n    styleUrls: ['./dialog-confirm-with-reason.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogConfirmWithReasonComponent implements OnInit {\r\n\r\n\treasonForm: FormControl;\r\n\r\n\ttitle: string;\r\n\tmessage: string;\r\n\tconfirmButtonText: string;\r\n\tconfirmButtonColor: ThemePalette;\r\n\tconfirmButtonMatIcon: string;\r\n\tcancelButtonText: string;\r\n\tcancelButtonColor: ThemePalette;\r\n\tcancelButtonMatIcon: string;\r\n\tuseMessageAsHtml: boolean;\r\n\treasonLabel: string;\r\n\treasonMaxLength: number;\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: DialogConfirmWithReasonData,\r\n\t\tprivate dialogRef: MatDialogRef<DialogConfirmWithReasonData>,\r\n\t\tprivate domSanitizer: DomSanitizer,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\tfb: FormBuilder,\r\n\t) {\r\n\t\tthis.title = data.title || this.transloco.translate('common.confirm');\r\n\t\tthis.message = data.message;\r\n\t\tthis.confirmButtonText = data.confirmButtonText || 'OK';\r\n\t\tthis.confirmButtonColor = data.confirmButtonColor || 'primary';\r\n\t\tthis.confirmButtonMatIcon = data.confirmButtonMatIcon || undefined;\r\n\t\tthis.cancelButtonText = data.cancelButtonText || this.transloco.translate('common.cancel');\r\n\t\tthis.cancelButtonColor = data.cancelButtonColor || 'primary';\r\n\t\tthis.cancelButtonMatIcon = data.cancelButtonMatIcon || undefined;\r\n\t\tthis.useMessageAsHtml = data.useMessageAsHtml || false;\r\n\t\tthis.reasonLabel = data.reasonLabel || this.transloco.translate('common.reason');\r\n\t\tthis.reasonMaxLength = data.reasonMaxLength || 1024 /* max length of Event.Details */;\r\n\r\n\t\tif (this.useMessageAsHtml) {\r\n\t\t\tthis.message = this.domSanitizer.sanitize(SecurityContext.HTML, this.message);\r\n\t\t}\r\n\r\n\t\tthis.reasonForm = fb.control(null);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tsubmit(dialogResult: boolean): void {\r\n\t\tconst result: DialogConfirmWithReasonResult = {\r\n\t\t\tdialogResult: dialogResult,\r\n\t\t\treason: this.reasonForm.value,\r\n\t\t}\r\n\r\n\t\tthis.dialogRef.close(result);\r\n\t}\r\n}\r\n","<spa-dialog-title [disableClose]=\"data.disableClose\">{{title}}</spa-dialog-title>\r\n\r\n<div mat-dialog-content>\r\n\t@if (message) {\r\n\t\t@if (useMessageAsHtml) {\r\n\t\t\t<span [innerHTML]=\"message\"></span>\r\n\t\t}\r\n\t\t@if (!useMessageAsHtml) {\r\n\t\t\t<span>{{message}}</span>\r\n\t\t}\r\n\t}\r\n\r\n\t<mat-form-field class=\"w-100 input-stretch\">\r\n\t\t<textarea matInput class=\"md-textarea md-textarea-auto\" [formControl]=\"reasonForm\" [placeholder]=\"reasonLabel\" rows=\"7\" [maxlength]=\"reasonMaxLength\"></textarea>\r\n\t</mat-form-field>\r\n</div>\r\n\r\n<div mat-dialog-actions>\r\n\t<button mat-flat-button color=\"primary\" [color]=\"confirmButtonColor\" (click)=\"submit(true)\">\r\n\t\t@if (confirmButtonMatIcon) {\r\n\t\t\t<mat-icon class=\"mr-2\">{{confirmButtonMatIcon}}</mat-icon>\r\n\t\t}{{confirmButtonText}}\r\n\t</button>\r\n\t<button mat-button color=\"warn\" [color]=\"cancelButtonColor\" (click)=\"submit(false)\">\r\n\t\t@if (cancelButtonMatIcon) {\r\n\t\t\t<mat-icon class=\"mr-2\">{{cancelButtonMatIcon}}</mat-icon>\r\n\t\t}{{cancelButtonText}}\r\n\t</button>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { SubscriptionAccess } from '../api/authorization';\r\nimport { DialogFancyConfirmComponent } from '../components/dialog-fancy-confirm/dialog-fancy-confirm.component';\r\nimport { DialogSubscriptionSelectorComponent } from '../components/dialog-subscription-selector/dialog-subscription-selector.component';\r\nimport { DialogConfirmWithCheckboxComponent, DialogConfirmWithCheckboxResult } from '../components/dialog-confirm-with-checkbox/dialog-confirm-with-checkbox.component';\r\nimport { DialogAlertComponent } from '../components/dialog-alert/dialog-alert.component';\r\nimport { DialogShowValueComponent } from '../components/dialog-show-value/dialog-show-value.component';\r\nimport { DialogValidationResultsComponent } from '../components/dialog-validation-results/dialog-validation-results.component';\r\nimport { DialogMobileAuthorizationRequiredComponent } from '../components/dialog-mobile-authorization-required/dialog-mobile-authorization-required.component';\r\nimport { FileModel } from '../api/files';\r\nimport { DialogViewFileComponent } from '../components/dialog-view-file/dialog-view-file.component';\r\nimport { DialogErrorMessagesComponent } from '../components/dialog-error-messages/dialog-error-messages.component';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { Observable } from 'rxjs';\r\nimport { RootAuthenticationResponse } from '../api/root-authentication';\r\nimport { DialogRootLoginComponent } from '../components/dialog-root-login/dialog-root-login.component';\r\nimport { DialogLanguageSelectorComponent } from '../components/dialog-language-selector/dialog-language-selector.component';\r\nimport { EventModel } from '../api/events';\r\nimport { DialogEventDetailsComponent } from '../components/dialog-event-details/dialog-event-details.component';\r\nimport { DialogConfirmWithReasonComponent, DialogConfirmWithReasonData, DialogConfirmWithReasonResult } from '../components/dialog-confirm-with-reason/dialog-confirm-with-reason.component';\r\n\r\n/**\r\n * Async modal dialog service\r\n * DialogService makes this app easier to test by faking this service.\r\n * TODO: better modal implementation that doesn't use window.confirm\r\n */\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n\tconstructor(\r\n\t\tprivate dialog: MatDialog,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) {\r\n\t}\r\n\r\n\t/**\r\n\t * Ask user to confirm an action. `message` explains the action and choices. `title` is optional, default value: 'Confirm'.\r\n\t * Returns observable resolving to `true`=confirm or `false`=cancel\r\n\t */\r\n\tconfirm(messageOrOpts?: string | {\r\n\t\tmessage?: string,\r\n\t\ttitle?: string,\r\n\t\tconfirmButtonText?: string,\r\n\t\tconfirmButtonColor?: ThemePalette,\r\n\t\tconfirmButtonMatIcon?: string,\r\n\t\tcancelButtonText?: string,\r\n\t\tcancelButtonColor?: ThemePalette,\r\n\t\tcancelButtonMatIcon?: string,\r\n\t\tuseMessageAsHtml?: boolean,\r\n\t\tdisableClose?: boolean,\r\n\t}, title?: string): Promise<boolean> {\r\n\t\tlet message: string;\r\n\t\tlet opts: {\r\n\t\t\tmessage?: string,\r\n\t\t\ttitle?: string,\r\n\t\t\tconfirmButtonText?: string,\r\n\t\t\tconfirmButtonColor?: ThemePalette,\r\n\t\t\tconfirmButtonMatIcon?: string,\r\n\t\t\tcancelButtonText?: string,\r\n\t\t\tcancelButtonColor?: ThemePalette,\r\n\t\t\tcancelButtonMatIcon?: string,\r\n\t\t\tuseMessageAsHtml?: boolean\r\n\t\t\tdisableClose?: boolean,\r\n\t\t};\r\n\t\tif (typeof messageOrOpts === 'string') {\r\n\t\t\tmessage = messageOrOpts;\r\n\t\t\topts = null;\r\n\t\t} else {\r\n\t\t\topts = messageOrOpts;\r\n\t\t\tmessage = opts.message;\r\n\t\t\ttitle = opts.title;\r\n\t\t}\r\n\t\tlet dialogRef = this.dialog.open(DialogFancyConfirmComponent, {\r\n\t\t\twidth: '720px',\r\n\t\t\tdisableClose: opts ? opts.disableClose : null,\r\n\t\t\tdata: {\r\n\t\t\t\tmessage: message,\r\n\t\t\t\ttitle: title,\r\n\t\t\t\tconfirmButtonText: opts ? opts.confirmButtonText : null,\r\n\t\t\t\tconfirmButtonColor: opts ? opts.confirmButtonColor : null,\r\n\t\t\t\tconfirmButtonMatIcon: opts ? opts.confirmButtonMatIcon : null,\r\n\t\t\t\tcancelButtonText: opts ? opts.cancelButtonText : null,\r\n\t\t\t\tcancelButtonColor: opts ? opts.cancelButtonColor : null,\r\n\t\t\t\tcancelButtonMatIcon: opts ? opts.cancelButtonMatIcon : null,\r\n\t\t\t\tuseMessageAsHtml: opts ? opts.useMessageAsHtml : null,\r\n\t\t\t\tdisableClose: opts ? opts.disableClose : null,\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t};\r\n\r\n\t/**\r\n\t * Ask user to confirm a discard action. `message` explains the action and choices. `title` is optional, default value: 'Discard changes?'.\r\n\t * Returns observable resolving to `true`=confirm or `false`=cancel\r\n\t */\r\n\tconfirmDiscard = (message?: string, title?: string, useMessageAsHtml?: boolean, disableClose?: boolean): Promise<boolean> => {\r\n\t\treturn this.confirm({\r\n\t\t\tmessage: message ? message : this.transloco.translate('services.dialog.you-are-about-to-discard-changes'),\r\n\t\t\ttitle: title ? title : this.transloco.translate('services.dialog.discard-changes'),\r\n\t\t\tconfirmButtonText: this.transloco.translate('services.dialog.yes-discard'),\r\n\t\t\tconfirmButtonColor: 'warn',\r\n\t\t\tuseMessageAsHtml: useMessageAsHtml,\r\n\t\t\tdisableClose: disableClose,\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Notifies the user that the current operation will continue in the background, allowing him to cancel his action (and therefore continue\r\n\t * \"watching\" the operation be performed).\r\n\t */\r\n\tconfirmContinueBackground = (message?: string, title?: string, useMessageAsHtml?: boolean, disableClose?: boolean): Promise<boolean> => {\r\n\t\treturn this.confirm({\r\n\t\t\tmessage: message ? message : this.transloco.translate('common.continue-in-background'),\r\n\t\t\ttitle: title,\r\n\t\t\tuseMessageAsHtml: useMessageAsHtml,\r\n\t\t\tdisableClose: disableClose,\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * Ask user to confirm a delete action. `message` explains the action and choices. `title` is optional, default value: 'Delete?'.\r\n\t * Returns observable resolving to `true`=confirm or `false`=cancel\r\n\t */\r\n\tconfirmDelete = (message: string, title?: string, useMessageAsHtml?: boolean, disableClose?: boolean): Promise<boolean> => {\r\n\t\treturn this.confirm({\r\n\t\t\tmessage: message,\r\n\t\t\ttitle: title ? title : this.transloco.translate('services.dialog.delete'),\r\n\t\t\tconfirmButtonText: this.transloco.translate('services.dialog.yes-delete'),\r\n\t\t\tconfirmButtonColor: 'warn',\r\n\t\t\tuseMessageAsHtml: useMessageAsHtml,\r\n\t\t\tdisableClose: disableClose,\r\n\t\t});\r\n\t};\r\n\r\n\tconfirmWithCheckbox(messageOrOpts: string | {\r\n\t\tmessage?: string,\r\n\t\ttitle?: string,\r\n\t\tconfirmButtonText?: string,\r\n\t\tconfirmButtonColor?: ThemePalette,\r\n\t\tconfirmButtonMatIcon?: string,\r\n\t\tcancelButtonText?: string,\r\n\t\tcancelButtonColor?: ThemePalette,\r\n\t\tcancelButtonMatIcon?: string,\r\n\t\tcheckboxMessage: string,\r\n\t\tcheckboxInitalState?: boolean,\r\n\t\tuseMessageAsHtml?: boolean,\r\n\t\tdisableClose?: boolean,\r\n\t\trequireCheckToConfirm?: boolean,\r\n\t}, checkboxMessage?: string, checkboxInitalState?: boolean, title?: string): Promise<DialogConfirmWithCheckboxResult> {\r\n\t\tlet message: string;\r\n\t\tlet opts: {\r\n\t\t\tmessage?: string,\r\n\t\t\ttitle?: string,\r\n\t\t\tconfirmButtonText?: string,\r\n\t\t\tconfirmButtonColor?: ThemePalette,\r\n\t\t\tconfirmButtonMatIcon?: string,\r\n\t\t\tcancelButtonText?: string,\r\n\t\t\tcancelButtonColor?: ThemePalette,\r\n\t\t\tcancelButtonMatIcon?: string,\r\n\t\t\tcheckboxMessage: string,\r\n\t\t\tcheckboxInitalState?: boolean,\r\n\t\t\tuseMessageAsHtml?: boolean,\r\n\t\t\tdisableClose?: boolean,\r\n\t\t\trequireCheckToConfirm?: boolean,\r\n\t\t};\r\n\t\tif (typeof messageOrOpts === 'string') {\r\n\t\t\tmessage = messageOrOpts;\r\n\t\t\topts = null;\r\n\t\t} else {\r\n\t\t\topts = messageOrOpts;\r\n\t\t\tmessage = opts.message;\r\n\t\t\ttitle = opts.title;\r\n\t\t\tcheckboxMessage = opts.checkboxMessage;\r\n\t\t\tcheckboxInitalState = opts.checkboxInitalState;\r\n\t\t}\r\n\t\tlet dialogRef = this.dialog.open(DialogConfirmWithCheckboxComponent, {\r\n\t\t\twidth: '720px',\r\n\t\t\tdisableClose: opts ? opts.disableClose : null,\r\n\t\t\tdata: {\r\n\t\t\t\tmessage: message,\r\n\t\t\t\ttitle: title,\r\n\t\t\t\tconfirmButtonText: opts ? opts.confirmButtonText : null,\r\n\t\t\t\tconfirmButtonColor: opts ? opts.confirmButtonColor : null,\r\n\t\t\t\tconfirmButtonMatIcon: opts ? opts.confirmButtonMatIcon : null,\r\n\t\t\t\tcancelButtonText: opts ? opts.cancelButtonText : null,\r\n\t\t\t\tcancelButtonColor: opts ? opts.cancelButtonColor : null,\r\n\t\t\t\tcancelButtonMatIcon: opts ? opts.cancelButtonMatIcon : null,\r\n\t\t\t\tuseMessageAsHtml: opts ? opts.useMessageAsHtml : null,\r\n\t\t\t\trequireCheckToConfirm: opts ? opts.requireCheckToConfirm : null,\r\n\t\t\t\tcheckboxMessage: checkboxMessage,\r\n\t\t\t\tcheckboxInitalState: checkboxInitalState,\r\n\t\t\t\tdisableClose: opts ? opts.disableClose : null,\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t};\r\n\r\n\talert(message: string, title?: string, useMessageAsHtml?: boolean, disableClose?: boolean): Promise<any> {\r\n\t\tlet dialogRef = this.dialog.open(DialogAlertComponent, {\r\n\t\t\twidth: '600px',\r\n\t\t\tdisableClose: disableClose,\r\n\t\t\tdata: {\r\n\t\t\t\tmessage: message,\r\n\t\t\t\ttitle: title,\r\n\t\t\t\tuseMessageAsHtml: useMessageAsHtml,\r\n\t\t\t\tdisableClose: disableClose,\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t};\r\n\r\n\tshowValue(value: string, opts?: {\r\n\t\ttitle?: string,\r\n\t\tmessage?: string,\r\n\t\tfooter?: string,\r\n\t\tdisableClose?: boolean,\r\n\t}): Promise<any> {\r\n\t\tlet dialogRef = this.dialog.open(DialogShowValueComponent, {\r\n\t\t\t//width: '600px',\r\n\t\t\tdisableClose: opts ? opts.disableClose : null,\r\n\t\t\tdata: {\r\n\t\t\t\tvalue: value,\r\n\t\t\t\ttitle: opts ? opts.title : null,\r\n\t\t\t\tmessage: opts ? opts.message : null,\r\n\t\t\t\tfooter: opts ? opts.footer : null,\r\n\t\t\t\tdisableClose: opts ? opts.disableClose : null,\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t}\r\n\r\n\tsubSelector(subs: SubscriptionAccess[], includeRoot: boolean = false, disableClose?: boolean): Promise<any> {\r\n\t\tlet dialogRef = this.dialog.open(DialogSubscriptionSelectorComponent, {\r\n\t\t\twidth: '600px',\r\n\t\t\tdisableClose: disableClose,\r\n\t\t\tdata: {\r\n\t\t\t\tsubscriptions: subs,\r\n\t\t\t\tincludeRoot: includeRoot,\r\n\t\t\t\tdisableClose: disableClose,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t}\r\n\r\n\tshowValidation(vr, disableClose?: boolean) {\r\n\t\tlet dialogRef = this.dialog.open(DialogValidationResultsComponent, {\r\n\t\t\tdisableClose: disableClose,\r\n\t\t\tdata: {\r\n\t\t\t\tmodel: vr,\r\n\t\t\t\tdisableClose: disableClose\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t}\r\n\r\n\tshowMobileAuthorizationRequired(): MatDialogRef<DialogMobileAuthorizationRequiredComponent> {\r\n\t\treturn this.dialog.open(DialogMobileAuthorizationRequiredComponent, {\r\n\t\t\tdisableClose: true\r\n\t\t});\r\n\t}\r\n\r\n\topenFile(files: FileModel[], index: number, disableClose?: boolean) {\r\n\t\tlet dialogRef = this.dialog.open(DialogViewFileComponent, {\r\n\t\t\twidth: '960px',\r\n\t\t\tdisableClose: disableClose,\r\n\t\t\tdata: {\r\n\t\t\t\tfiles: files,\r\n\t\t\t\tindex: index,\r\n\t\t\t\tdisableClose: disableClose,\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t}\r\n\r\n\tshowAllErrors(errorMessages: string[], title?: string, disableClose?: boolean) {\r\n\t\tlet dialogRef = this.dialog.open(DialogErrorMessagesComponent, {\r\n\t\t\twidth: '500px',\r\n\t\t\tdisableClose: disableClose,\r\n\t\t\tdata: {\r\n\t\t\t\ttitle: title,\r\n\t\t\t\terrorMessages: errorMessages,\r\n\t\t\t\tdisableClose: disableClose,\r\n\t\t\t},\r\n\t\t});\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t}\r\n\r\n\trootLogin(opts?: {\r\n\t\tmessage?: string,\r\n\t\ttitle?: string,\r\n\t\tuseMessageAsHtml?: boolean,\r\n\t\tdisableClose?: boolean,\r\n\t\tnavigateHomeIfCancelled?: boolean,\r\n\t\treloadOnSuccess?: boolean\r\n\t}): Observable<RootAuthenticationResponse> {\r\n\t\treturn this.dialog.open(DialogRootLoginComponent, {\r\n\t\t\twidth: '500px',\r\n\t\t\tdisableClose: opts ? opts.disableClose : null,\r\n\t\t\tdata: {\r\n\t\t\t\ttitle: opts ? opts.title : null,\r\n\t\t\t\tmessage: opts ? opts.message : null,\r\n\t\t\t\tuseMessageAsHtml: opts ? opts.useMessageAsHtml : null,\r\n\t\t\t\tdisableClose: opts ? opts.disableClose : null,\r\n\t\t\t\tnavigateHomeIfCancelled: opts ? opts.navigateHomeIfCancelled : null,\r\n\t\t\t\treloadOnSuccess: opts ? opts.reloadOnSuccess : null,\r\n\t\t\t},\r\n\t\t}).afterClosed();\r\n\t}\r\n\r\n\topenLanguageSelector(opts?: {\r\n\t\tmessage?: string,\r\n\t\ttitle?: string,\r\n\t\tuseMessageAsHtml?: boolean,\r\n\t\tdisableClose?: boolean,\r\n\t}): Observable<void> {\r\n\t\treturn this.dialog.open(DialogLanguageSelectorComponent, {\r\n\t\t\twidth: '500px',\r\n\t\t\tdisableClose: opts ? opts.disableClose : null,\r\n\t\t\tdata: {\r\n\t\t\t\ttitle: opts ? opts.title : null,\r\n\t\t\t\tmessage: opts ? opts.message : null,\r\n\t\t\t\tuseMessageAsHtml: opts ? opts.useMessageAsHtml : null,\r\n\t\t\t\tdisableClose: opts ? opts.disableClose : null,\r\n\t\t\t},\r\n\t\t}).afterClosed();\r\n\t}\r\n\r\n\tshowEvent(event: EventModel): Promise<void> {\r\n\t\treturn this.dialog.open(DialogEventDetailsComponent, {\r\n\t\t\twidth: '1000px',\r\n\t\t\tdata: event,\r\n\t\t}).afterClosed().toPromise();\r\n\t}\r\n\r\n\tconfirmWithReason(messageOrOpts: string | DialogConfirmWithReasonData, title?: string): Promise<DialogConfirmWithReasonResult> {\r\n\t\tlet data: DialogConfirmWithReasonData;\r\n\t\tif (typeof messageOrOpts === 'string') {\r\n\t\t\tdata = {\r\n\t\t\t\tmessage: messageOrOpts,\r\n\t\t\t\ttitle: title,\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tdata = messageOrOpts;\r\n\t\t}\r\n\t\tlet dialogRef = this.dialog.open(DialogConfirmWithReasonComponent, {\r\n\t\t\twidth: '720px',\r\n\t\t\tdisableClose: data.disableClose ?? false,\r\n\t\t\tdata: data,\r\n\t\t\tautoFocus: false\r\n\t\t});\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t};\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { ErrorCodes } from '../../api/enums';\r\nimport { Config } from '../../api/configuration';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-no-access',\r\n    templateUrl: './no-access.component.html',\r\n    styleUrls: ['./no-access.component.scss'],\r\n    standalone: false\r\n})\r\nexport class NoAccessComponent implements OnInit {\r\n\r\n\tsiteName: any;\r\n\tuserName: string;\r\n\tloading: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.userName = this.spaControl.userProfile.name;\r\n\t\tthis.siteName = Config.siteName;\r\n\t}\r\n\r\n\tclaimAccess(claimCode: string) {\r\n\t\tif (!claimCode) {\r\n\t\t\tthis.dialogService.alert(this.transloco.translate('components.no-access.copy-access-code-and-paste-above'), this.transloco.translate('components.no-access.fill-in-access-code'));\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.loading = true;\r\n\t\tthis.spaControl.claimAccess(claimCode).catch(err => {\r\n\t\t\tthis.loading = false;\r\n\t\t\tthis.dialogService.alert(err as string);\r\n\t\t});\r\n\t}\r\n}\r\n","<div *transloco=\"let t\">\r\n\t<lacm-loading [show]=\"loading\"></lacm-loading>\r\n\r\n\t<h2>{{t('common.welcome-to-site', { value: siteName })}}</h2>\r\n\t<p>{{t('components.no-access.contact-administrator', { value: userName })}}</p>\r\n\t<p>{{t('components.no-access.enter-access-code-below')}}</p>\r\n\t<input #claimCodeInput type=\"text\" />\r\n\t<button type=\"button\" (click)=\"claimAccess(claimCodeInput.value)\">{{t('components.no-access.enter-access-code')}}</button>\r\n\t<button mat-flat-button color=\"primary\" [routerLink]=\"['..', 'sign-out']\">{{t('components.no-access.try-with-different-account')}}</button>\r\n\t<button mat-flat-button color=\"primary\" [routerLink]=\"['/']\">{{t('common.back-to-home-page')}}</button>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Config } from '../../api/configuration';\r\n\r\n@Component({\r\n    selector: 'spa-sign-in',\r\n    templateUrl: './sign-in.component.html',\r\n    styleUrls: ['./sign-in.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SignInComponent implements OnInit {\r\n\r\n\tsiteName: string;\r\n\tconstructor(\r\n\t\tprivate spaControl: SpaControlService\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.siteName = Config.siteName;\r\n\t}\r\n\r\n\tsignIn() {\r\n\t\tthis.spaControl.startLogin();\r\n\t}\r\n}\r\n","<div *transloco=\"let t\">\r\n\t<h2>{{t('common.welcome-to-site', { value: siteName })}}</h2>\r\n\t<p>{{t('components.sign-in.log-in-to-access-service')}}</p>\r\n\t<button mat-flat-button color=\"primary\" (click)=\"signIn()\">{{t('common.sign-in')}}</button>\r\n</div>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-sign-out',\r\n    templateUrl: './sign-out.component.html',\r\n    styleUrls: ['./sign-out.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SignOutComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t}\r\n}\r\n","<p *transloco=\"let t\">\r\n\t{{t('components.sign-out.signing-out')}}\r\n</p>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-private-area-unavailable',\r\n    templateUrl: './private-area-unavailable.component.html',\r\n    styleUrls: ['./private-area-unavailable.component.scss'],\r\n    standalone: false\r\n})\r\nexport class PrivateAreaUnavailableComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\ttryAgain() {\r\n\t\tlocalStorage.clear();\r\n\t\tsessionStorage.clear();\r\n\t\tlocation.reload();\r\n\t}\r\n}\r\n","<div *transloco=\"let t\">\r\n\t<h2>{{t('components.private-area-unavailable.private-area-not-available')}}</h2>\r\n\t<a href=\"#\" (click)=\"tryAgain(); false\">{{t('common.clean-cache-and-try-again')}}</a>\r\n</div>\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-dummy',\r\n    templateUrl: './dummy.component.html',\r\n    styleUrls: ['./dummy.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DummyComponent {\r\n\tconstructor() { }\r\n}\r\n","<!-- This component should never be shown -->\r\n.\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-private-area',\r\n    templateUrl: './private-area.component.html',\r\n    styleUrls: ['./private-area.component.scss'],\r\n    standalone: false\r\n})\r\nexport class PrivateAreaComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n}\r\n","<!--<main [@routerTransition]=\"getState(o)\">-->\r\n\r\n<main>\r\n\t<router-outlet #o=\"outlet\"></router-outlet>\r\n</main>\r\n","import { Injectable } from '@angular/core';\r\nimport { ApplicationInsights } from '@microsoft/applicationinsights-web'\r\nimport { Logger } from './logger.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ApplicationInsightsService {\r\n\r\n\tprivate _initialized: boolean = false;\r\n\r\n\tget initialized(): boolean {\r\n\t\treturn this._initialized;\r\n\t}\r\n\r\n\tprivate _appInsights: ApplicationInsights;\r\n\r\n\tget appInsights(): ApplicationInsights {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._appInsights;\r\n\t}\r\n\r\n\tconstructor(private logger: Logger) {\r\n\t}\r\n\r\n\t// setup Azure Application Insights\r\n\tinit(connectionString: string) {\r\n\t\t// if the instrumentation key is not null, init Azure Application Insights\r\n\t\tif (connectionString) {\r\n\t\t\tthis.logger.logInformation('ApplicationInsightsService -- initializing Azure Application Insights');\r\n\t\t\tthis._appInsights = new ApplicationInsights({\r\n\t\t\t\tconfig: {\r\n\t\t\t\t\tconnectionString: connectionString,\r\n\t\t\t\t\tenableAutoRouteTracking: true,\r\n\t\t\t\t\t/* ...Other Configuration Options... */\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis._appInsights.loadAppInsights();\r\n\t\t\tthis._initialized = true;\r\n\t\t\tthis.logger.logInformation('ApplicationInsightsService -- Azure Application Insights initialized: ', this._appInsights);\r\n\t\t} else {\r\n\t\t\tthis.logger.logInformation('ApplicationInsightsService -- Azure Application Insights was not initialized, because no instrumentation key was passed');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ensureInitialized() {\r\n\t\tif (!this._initialized) {\r\n\t\t\tthrow 'ApplicationInsights has not been initialized yet';\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from './logger.service';\r\n\r\ndeclare var ga: Function;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class GoogleAnalyticsService {\r\n\r\n\tprivate _initialized: boolean = false;\r\n\r\n\tget initialized(): boolean {\r\n\t\treturn this._initialized;\r\n\t}\r\n\r\n\tget ga(): any {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn ga;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t) { }\r\n\r\n\t// call this method every time you want to track an event\r\n\temitEvent(eventCategory: string, eventAction: string, eventLabel: string = null, eventValue: number = null) {\r\n\t\tthis.ensureInitialized();\r\n\r\n\t\tif (typeof ga === 'function') {\r\n\t\t\tga('send', 'event', { eventCategory, eventLabel, eventAction, eventValue });\r\n\t\t}\r\n\t}\r\n\r\n\t// call this method in application startup\r\n\t// (based on https://stackoverflow.com/a/49127397)\r\n\tinit(googleAnalyticsTrackingId: string) {\r\n\t\t//if the tracking id is not null, init Google Analytics\r\n\t\tif (googleAnalyticsTrackingId) {\r\n\t\t\tthis.logger.logInformation('GoogleAnalyticsService -- initializing Google Analytics');\r\n\t\t\ttry {\r\n\t\t\t\tconst script = document.createElement('script');\r\n\t\t\t\t// When updating this snippet remember to also update `EngineConstants.FrontendInlineSnippetHashes.GoogleAnalytics`\r\n\t\t\t\tscript.src = '/assets/js/ga.js?trackingId=' + googleAnalyticsTrackingId;\r\n\r\n\t\t\t\tdocument.head.appendChild(script);\r\n\r\n\t\t\t\tthis._initialized = true;\r\n\t\t\t\tthis.logger.logInformation(\"GoogleAnalyticsService -- Google Analytics initialized\");\r\n\t\t\t} catch (ex) {\r\n\t\t\t\tthis.logger.logError(\"GoogleAnalyticsService -- error while initializing Google Analytics\", ex);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.logger.logInformation('GoogleAnalyticsService -- Google Analytics was not initialized, because no tracking id was passed');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ensureInitialized() {\r\n\t\tif (!this._initialized) {\r\n\t\t\tthrow 'Google Analytics has not been initialized yet';\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from './logger.service';\r\nimport { Faro, getWebInstrumentations, initializeFaro, MetaSession } from '@grafana/faro-web-sdk';\r\nimport { getDefaultOTELInstrumentations, TracingInstrumentation } from '@grafana/faro-web-tracing';\r\nimport { FaroConfigModel } from '../api/configuration';\r\nimport { Span } from '@opentelemetry/sdk-trace-web';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root',\r\n})\r\nexport class FaroService {\r\n\r\n\tprivate static readonly regexPrefix = 'regex:';\r\n\r\n\tprivate static readonly defaultIgnoreUrls: Array<string | RegExp> = [\r\n\t\t/analytics\\.google\\.com/,\r\n\t\t/www\\.google-analytics\\.com/,\r\n\t\t/ad\\.doubleclick\\.net/,\r\n\t];\r\n\r\n\tprivate static readonly defaultMaxSessionPersistenceTime = 2 * 60 * 1000;\r\n\r\n\tprivate _initialized: boolean = false;\r\n\tget initialized(): boolean {\r\n\t\treturn this._initialized;\r\n\t}\r\n\r\n\tprivate _faro: Faro;\r\n\tget faro(): Faro {\r\n\t\tthis.ensureInitialized();\r\n\t\treturn this._faro;\r\n\t}\r\n\r\n\tconstructor(private logger: Logger) {\r\n\t}\r\n\r\n\t// setup Faro\r\n\tinit(config: FaroConfigModel) {\r\n\r\n\t\t// init Faro if configured\r\n\t\tif (!config.enabled || !config.url) {\r\n\t\t\tthis.logger.logInformation('FaroService -- Faro was not initialized because it was not configured');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.logger.logInformation('FaroService -- initializing Faro');\r\n\r\n\t\tthis._faro = initializeFaro({\r\n\t\t\turl: config.url,\r\n\t\t\tapiKey: config.apiKey,\r\n\t\t\tapp: config.app,\r\n\t\t\tignoreUrls: this.ignoreUrls(config),\r\n\t\t\tsessionTracking: {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\tpersistent: true,\r\n\t\t\t\tmaxSessionPersistenceTime: FaroService.defaultMaxSessionPersistenceTime,\r\n\t\t\t\tonSessionChange: (oldSession: MetaSession | null, newSession: MetaSession) => {\r\n\t\t\t\t\tthis.logger.logInformation(`Session ${oldSession == null ? 'created' : 'changed'}`, { oldSession, newSession });\r\n\t\t\t\t},\r\n\t\t\t\tsamplingRate: config.samplingRate,\r\n\t\t\t},\r\n\t\t\tconsoleInstrumentation: {\r\n\t\t\t\tdisabledLevels: [],\r\n\t\t\t},\r\n\t\t\tinstrumentations: [\r\n\t\t\t\t...getWebInstrumentations({\r\n\t\t\t\t\tcaptureConsole: true,\r\n\t\t\t\t\tenablePerformanceInstrumentation: true,\r\n\t\t\t\t}),\r\n\t\t\t\tnew TracingInstrumentation({\r\n\t\t\t\t\tresourceAttributes: {\r\n\t\t\t\t\t\t\"deployment.environment.name\": config.app.environment,\r\n\t\t\t\t\t},\r\n\t\t\t\t\tinstrumentations: [\r\n\t\t\t\t\t\t...getDefaultOTELInstrumentations({\r\n\t\t\t\t\t\t\tpropagateTraceHeaderCorsUrls: (config.propagateTraceHeadersCorsUrls ?? []).map(this.toUrlMatcher),\r\n\t\t\t\t\t\t\tignoreUrls: this.ignoreUrls(config),\r\n\t\t\t\t\t\t\tfetchInstrumentationOptions: {\r\n\t\t\t\t\t\t\t\tignoreNetworkEvents: false,\r\n\t\t\t\t\t\t\t\tapplyCustomAttributesOnSpan: (span: Span, request) => {\r\n\t\t\t\t\t\t\t\t\tthis.renameHttpSpan(span, request.method ?? '');\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\txhrInstrumentationOptions: {\r\n\t\t\t\t\t\t\t\tignoreNetworkEvents: false,\r\n\t\t\t\t\t\t\t\tapplyCustomAttributesOnSpan: (span: Span) => {\r\n\t\t\t\t\t\t\t\t\tthis.renameHttpSpan(span, String(span.attributes['http.method'] ?? ''));\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t],\r\n\t\t\t\t}),\r\n\t\t\t],\r\n\t\t});\r\n\r\n\t\tthis._initialized = true;\r\n\r\n\t\tthis.logger.logInformation('FaroService -- Faro initialized: ', this._faro);\r\n\t}\r\n\r\n\tprivate ignoreUrls(config: FaroConfigModel) {\r\n\t\treturn [\r\n\t\t\t...FaroService.defaultIgnoreUrls,\r\n\t\t\tconfig.url,\r\n\t\t\t...(config.ignoreUrls ?? []).map(this.toUrlMatcher),\r\n\t\t]\r\n\t}\r\n\r\n\t/** Faro URL matchers may be plain strings (literal match) or RegExp. A config value prefixed with \"regex:\" is compiled into a RegExp. */\r\n\tprivate toUrlMatcher(value: string): string | RegExp {\r\n\t\treturn value.startsWith(FaroService.regexPrefix)\r\n\t\t\t? new RegExp(value.slice(FaroService.regexPrefix.length))\r\n\t\t\t: value;\r\n\t}\r\n\r\n\t/** Renames the span to \"<METHOD> <target>\" when both are known. */\r\n\tprivate renameHttpSpan(span: Span, method: string): void {\r\n\t\tconst target = String(span.attributes['http.url'] ?? span.attributes['http.host'] ?? '');\r\n\r\n\t\tif (method !== '' && target !== '') {\r\n\t\t\tspan.updateName(`${method} ${target}`);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate ensureInitialized() {\r\n\t\tif (!this._initialized) {\r\n\t\t\tthrow 'Faro has not been initialized yet';\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Logger } from './logger.service';\r\nimport { SpaConfigurationModel, Config } from '../api/configuration';\r\nimport { SpaControlService } from './spa-control.service';\r\nimport { ASYNC_INIT } from '../classes/injection-tokens';\r\nimport { ApplicationInsightsService } from './application-insights.service';\r\nimport { GoogleAnalyticsService } from './google-analytics.service';\r\nimport { FaroService } from './faro.service';\r\n\r\nconst configKey = 'spa-configuration';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class StartupService {\r\n\r\n\tinitError: any = null;\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate appInsightsService: ApplicationInsightsService,\r\n\t\tprivate googleAnalyticsService: GoogleAnalyticsService,\r\n\t\tprivate faroService: FaroService,\r\n\t\t@Inject(ASYNC_INIT) private asyncSpaInit: boolean,\r\n\t) {\r\n\t}\r\n\r\n\tinit(): Promise<any> {\r\n\r\n\t\treturn new Promise<any>((resolve) => { // no \"reject\" argument because we MUST NOT REJECT this promise\r\n\r\n\t\t\tthis.logger.logDebug('StartupService -- fetching configuration');\r\n\r\n\t\t\tthis.getConfig().then(config => {\r\n\r\n\t\t\t\t// init config object\r\n\t\t\t\tthis.logger.logInformation('StartupService -- configuration fetched: ', config);\r\n\t\t\t\tConfig.initialize(config);\r\n\r\n\t\t\t\t// init Azure Application Insights\r\n\t\t\t\tthis.appInsightsService.init(config.appInsightsConnectionString);\r\n\r\n\t\t\t\t// init Google Analytics\r\n\t\t\t\tthis.googleAnalyticsService.init(config.googleAnalyticsTrackingId);\r\n\r\n\t\t\t\t// init Grafana Faro\r\n\t\t\t\tthis.faroService.init(config.faro);\r\n\r\n\t\t\t\t// Set custom path to ng2-pdf-viewer's worker (https://github.com/VadimDez/ng2-pdf-viewer?tab=readme-ov-file#set-custom-path-to-the-worker)\r\n\t\t\t\t// Fetched from https://cdn.jsdelivr.net/npm/pdfjs-dist@4.8.69/legacy/build/pdf.worker.min.mjs\r\n\t\t\t\t(window as any).pdfWorkerSrc = `${config.cdnUrl || '/'}assets/js/pdf.worker-4.8.69.mjs`;\r\n\r\n\t\t\t\t// init spa control service\r\n\t\t\t\tif (this.asyncSpaInit) {\r\n\t\t\t\t\tthis.spaControl.init();\r\n\t\t\t\t\tresolve(null);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.spaControl.init().then(resolve);\r\n\t\t\t\t}\r\n\r\n\t\t\t}, err => {\r\n\r\n\t\t\t\tthis.logger.logCritical('StartupService -- error fetching application configuration: ', err);\r\n\t\t\t\tthis.initError = err;\r\n\t\t\t\tresolve(null); // this is intentional (app is initialized, but with error)\r\n\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getConfig(): Promise<SpaConfigurationModel> {\r\n\t\treturn this.http.get<SpaConfigurationModel>('/api/configuration').toPromise();\r\n\r\n\t\t//return new Promise<SpaConfigurationModel>((resolve, reject) => {\r\n\t\t//\tlet configJson = sessionStorage.getItem(configKey);\r\n\t\t//\tif (configJson) {\r\n\t\t//\t\tresolve(JSON.parse(configJson));\r\n\t\t//\t} else {\r\n\t\t//\t\tthis.http.get<SpaConfigurationModel>('/api/configuration').subscribe(config => {\r\n\t\t//\t\t\tsessionStorage.setItem(configKey, JSON.stringify(config));\r\n\t\t//\t\t\tresolve(config);\r\n\t\t//\t\t}, reject);\r\n\t\t//\t}\r\n\t\t//});\r\n\t}\r\n}\r\n","import { Injectable, Inject, Optional } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpErrorResponse, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable ,  throwError as _throw } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\nimport { Logger } from './logger.service';\r\nimport { ON_API_ERROR } from '../classes/injection-tokens';\r\nimport { OnApiErrorFunction } from '../classes/types';\r\nimport { SpaApiHeadersService, ApiHeaders } from './spa-api-headers.service';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class HttpInterceptService {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaApiHeadersService: SpaApiHeadersService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\t@Optional() @Inject(ON_API_ERROR) private onApiError: OnApiErrorFunction\r\n\t) { }\r\n\r\n\tintercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\r\n\t\t// Short-circuit if request is not for the API\r\n\t\tif (!request.url.startsWith('/api/')) {\r\n\t\t\treturn next.handle(request);\r\n\t\t}\r\n\r\n\t\tlet setHeaders: ApiHeaders = {};\r\n\r\n\t\tsetHeaders['accept-language'] = this.transloco.getActiveLang();\r\n\r\n\t\t// Only set headers which are not already present on the request (for instance, some requests send\r\n\t\t// a specific subscription header which does not necessarily match the selected subscription).\r\n\r\n\t\tif (this.spaApiHeadersService.apiHeaders) {\r\n\t\t\tObject.keys(this.spaApiHeadersService.apiHeaders).forEach(k => {\r\n\t\t\t\tif (!request.headers.has(k)) {\r\n\t\t\t\t\tsetHeaders[k] = this.spaApiHeadersService.apiHeaders[k];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\trequest = request.clone({\r\n\t\t\tsetHeaders: setHeaders\r\n\t\t});\r\n\r\n\t\treturn next.handle(request).pipe(\r\n\t\t\tcatchError((err, caught) => {\r\n                this.logger.logTrace(\"HttpInterceptService -- Caught error\", err);\r\n\t\t\t\tif (this.onApiError && err instanceof HttpErrorResponse) {\r\n                    this.logger.logTrace(\"HttpInterceptService -- HttpErrorResponse on ApiError\")\r\n\t\t\t\t\treturn this.onApiError(err as HttpErrorResponse, request, next);\r\n\t\t\t\t} else {\r\n                    this.logger.logTrace(\"HttpInterceptService -- _throw\");\r\n\t\t\t\t\treturn _throw(err);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AppHttpInterceptor implements HttpInterceptor {\r\n\r\n\tconstructor(private interceptService: HttpInterceptService) {\r\n\t}\r\n\r\n\tintercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\t\treturn this.interceptService.intercept(request, next);\r\n\t}\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router, ActivatedRoute, NavigationEnd, ActivatedRouteSnapshot, Route } from '@angular/router';\r\nimport { Logger } from './logger.service';\r\nimport { Subscription, Observable, BehaviorSubject } from 'rxjs';\r\nimport { filter, distinctUntilChanged, map } from 'rxjs/operators';\r\nimport { NamedRoute } from '../api/named-route';\r\nimport { NamedRoutes } from '../api/enums';\r\n\r\n// This service was based on:\r\n// https://medium.com/@bo.vandersteene/angular-5-breadcrumb-c225fd9df5cf\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class RouteHelperService implements OnDestroy {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tprivate activatedNamedRoutesSubject = new BehaviorSubject<NamedRoute[]>([]);\r\n\tactivatedNamedRoutes = this.activatedNamedRoutesSubject.asObservable().pipe(map(routes => new ActivatedNamedRouteCollection(routes)));\r\n\tget activatedNamedRoutesSnapshot(): ActivatedNamedRouteCollection { return new ActivatedNamedRouteCollection(this.activatedNamedRoutesSubject.value); }\r\n\r\n\tprivate currentUrlSubject = new BehaviorSubject<string>('');\r\n\tcurrentUrl = this.currentUrlSubject.asObservable();\r\n\tget currentUrlSnapshot(): string { return this.currentUrlSubject.value; }\r\n\r\n\tprivate currentPathToMatchSubject = new BehaviorSubject<string>('');\r\n\tcurrentPathToMatch = this.currentPathToMatchSubject.asObservable();\r\n\tget currentPathToMatchSnapshot(): string { return this.currentPathToMatchSubject.value; }\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t\t// ** We noticed that there is no need to initialize the activated named routes array like it would be necessary if done inside a component.\r\n\t\t// Unlike components, services are instanciated before route activation. **\r\n\t\t// initialize activated named routes array \r\n\t\t//this.activatedNamedRoutesSubject.next(this.buildActivatedNamedRoutesArray(this.router.routerState.root));\r\n\r\n\t\t// listen to NavigationEnd events, and, when one is emitted, update the activated named routes array \r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.router.events.pipe(\r\n\t\t\t\tfilter(event => event instanceof NavigationEnd),\r\n\t\t\t\tdistinctUntilChanged(),\r\n\t\t\t\tmap(() => this.setUpNamedRoutesAndUpdateCurrentUrls(this.router.routerState.root)) // build the new array of activated named routes and update both current url and current path to match\r\n\t\t\t).subscribe(this.activatedNamedRoutesSubject) // emmit the new array of activated named routes\r\n\t\t);\r\n\t}\r\n\r\n\tsetUpNamedRoutesAndUpdateCurrentUrls(route: ActivatedRoute, initialUrl: string = '', namedRoutes: NamedRoute[] = [], initialPath: string = ''): NamedRoute[] {\r\n\t\tlet newUrl: string = initialUrl;\r\n\t\tlet newPath: string = initialPath;\r\n\t\tlet routeSegments: string = '';\r\n\t\tlet namedRoute: NamedRoute = null;\r\n\t\tlet newNamedRoutesArray = namedRoutes;\r\n\r\n\t\tfor (let segment of route.snapshot.url) {\r\n\t\t\trouteSegments += `/${segment.path}`;\r\n\t\t}\r\n\r\n\t\t// the 'routeSegments' variable relates only to the segments of the activated route, and not to the full url,\r\n\t\t// that is why this following step is necessary.\r\n\t\tnewUrl = initialUrl + `${routeSegments}`;\r\n\r\n\t\t// if the path inside routeConfig is not nullOrEmpty, append it to initialPath, to get the full path of this named route\r\n\t\tif (route.routeConfig && route.routeConfig.path) {\r\n\t\t\tnewPath = initialPath + `/${route.routeConfig.path}`;\r\n\t\t}\r\n\r\n\t\t// only create a new namedRoute object if route.routeConfig.data['routeName'] is defined\r\n\t\tif (route.routeConfig && route.routeConfig.data && route.routeConfig.data['routeName']) {\r\n\r\n\t\t\tnamedRoute = {\r\n\t\t\t\tname: route.routeConfig.data['routeName'],\r\n\t\t\t\tbranchRoot: route.routeConfig.data['branchRoot'] ? true : false, // if null/undefined(/false), then false\r\n\t\t\t\tdisplayName: null, // this field might be fulfilled in the next step\r\n\t\t\t\turl: newUrl || '/',\r\n\t\t\t\tpathToMatch: newPath || '/',\r\n\t\t\t\tactivatedRoute: route\r\n\t\t\t};\r\n\r\n\t\t\t// if display name is defined in either routeConfig.data or routeConfig.resolve, then add it to the new namedRoute object\r\n\t\t\tif (route.routeConfig.data['displayName'] || (route.routeConfig.resolve && route.routeConfig.resolve['displayName'])) {\r\n\t\t\t\tnamedRoute.displayName = route.snapshot.data['displayName'];\r\n\t\t\t}\r\n\r\n\t\t\tnewNamedRoutesArray.push(namedRoute);\r\n\t\t}\r\n\r\n\t\t// If there are still more child routes, keep on building the activated routes array\r\n\t\tif (route.firstChild) {\r\n\t\t\treturn this.setUpNamedRoutesAndUpdateCurrentUrls(route.firstChild, newUrl, newNamedRoutesArray, newPath);\r\n\t\t} else { // once this function has finished sweeping all the path of activated routes, update current url and current path to match\r\n\t\t\tthis.currentUrlSubject.next(newUrl || '/');\r\n\t\t\tthis.currentPathToMatchSubject.next(newPath || '/');\r\n\t\t}\r\n\r\n\t\treturn newNamedRoutesArray;\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('RouteHelperService ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport class ActivatedNamedRouteCollection {\r\n\r\n\tconstructor(public activatedRoutes: NamedRoute[]) {\r\n\t}\r\n\r\n\tisInRoute(routeName: NamedRoutes): boolean {\r\n\t\treturn this.activatedRoutes.some(namedRoute => namedRoute.name == routeName);\r\n\t}\r\n\r\n\tfindNamedRoute(routeName: NamedRoutes): NamedRoute {\r\n\t\treturn this.activatedRoutes.find(namedRoute => namedRoute.name == routeName);\r\n\t}\r\n\r\n\tgetSubManagementRouteUrl(): string {\r\n\t\t// first, find the route of subscription area\r\n\t\tlet subRoute = this.findNamedRoute(NamedRoutes.Sub);\r\n\r\n\t\t// if subscription area route was found in the activated named routes array, then search for the management route \r\n\t\tif (subRoute) {\r\n\t\t\tlet subRouteConfig = subRoute.activatedRoute.routeConfig;\r\n\t\t\t// check if the subscription area route is also the management route\r\n\t\t\tif (this.isManagementRoute(subRouteConfig)) {\r\n\t\t\t\treturn subRoute.url;\r\n\t\t\t} else {\r\n\t\t\t\t// otherwise, check if any children of subscription area is the management route\r\n\t\t\t\tfor (let child of subRouteConfig.children) {\r\n\t\t\t\t\tif (this.isManagementRoute(child)) {\r\n\t\t\t\t\t\treturn `${subRoute.url}/${child.path}`;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tprivate isManagementRoute(route: Route): boolean {\r\n\t\tif (route.children) {\r\n\t\t\tlet routeChildrenPaths = route.children.map(r => r.path);\r\n\r\n\t\t\tif (routeChildrenPaths.includes('users') && routeChildrenPaths.includes('applications') && routeChildrenPaths.includes('events')) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\treturn false;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { EntityTypes, NamedRoutes } from '../api/enums';\r\nimport { Logger } from './logger.service';\r\nimport { Config } from '../api/configuration';\r\nimport { EntityNavigator } from '../classes/types';\r\nimport { NamedRoute } from '../api/named-route';\r\nimport { RouteHelperService } from './route-helper.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SpaEntityNavigationService implements EntityNavigator {\r\n\t\r\n\tsubManagementRouteUrl: string = null;\r\n\tinSysAdmin: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate routeHelper: RouteHelperService,\r\n\t) {\r\n\t\tthis.routeHelper.activatedNamedRoutes.subscribe(collection => {\r\n\t\t\tthis.inSysAdmin = collection.isInRoute(NamedRoutes.SysAdmin);\r\n\t\t\tthis.subManagementRouteUrl = collection.getSubManagementRouteUrl();\r\n\t\t});\r\n\t}\r\n\r\n\tnavigate(entityType: EntityTypes, id: string) {\r\n\r\n\t\tif (!this.inSysAdmin && this.subManagementRouteUrl == null) {\r\n\t\t\tthis.logger.logError('InternalEntityNavigationService -- could not locate management route, cancelling entity navigation');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet baseUrl = (this.inSysAdmin) ? `/private/sysadmin` : this.subManagementRouteUrl;\r\n\t\tlet targetUrl: string = null;\r\n\r\n\t\tswitch (entityType) {\r\n\t\t\tcase EntityTypes.Subscription:\r\n\t\t\t\ttargetUrl = `/private/sysadmin/subscriptions/${id}`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase EntityTypes.User:\r\n\t\t\t\ttargetUrl = `${baseUrl}/users/${id}`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase EntityTypes.Invite:\r\n\t\t\t\ttargetUrl = `${baseUrl}/users/invites/${id}`;\r\n\t\t\t\tbreak;\r\n\t\t\tcase EntityTypes.Application:\r\n\t\t\t\ttargetUrl = `${baseUrl}/applications/${id}`;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (targetUrl != null) {\r\n\t\t\tthis.logger.logTrace(`SpaEntityNavigationService -- navigating to entity '${entityType}': '${targetUrl}'`);\r\n\t\t\tthis.router.navigateByUrl(targetUrl);\r\n\t\t} else {\r\n\t\t\tthis.logger.logWarning(`SpaEntityNavigationService -- could not navigate to entity '${entityType}'`);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-service-unavailable',\r\n    templateUrl: './service-unavailable.component.html',\r\n    styleUrls: ['./service-unavailable.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ServiceUnavailableComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\ttryAgain() {\r\n\t\tlocalStorage.clear();\r\n\t\tsessionStorage.clear();\r\n\t\tlocation.reload();\r\n\t}\r\n}\r\n","<div *transloco=\"let t\">\r\n\t<h2>{{t('components.service-unavailable.service-not-available')}}</h2>\r\n\t<a href=\"#\" (click)=\"tryAgain(); false\">{{t('common.clean-cache-and-try-again')}}</a>\r\n</div>\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n    name: 'cpf',\r\n    standalone: false\r\n})\r\nexport class CpfPipe implements PipeTransform {\r\n\r\n\ttransform(value: any, args?: any): any {\r\n\t\tif (typeof value === 'string' && /^\\d{11}$/.exec(value)) {\r\n\t\t\treturn value.substring(0, 3) + '.' + value.substring(3, 6) + '.' + value.substring(6, 9) + '-' + value.substring(9);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform, Inject, Optional } from '@angular/core';\r\nimport { RootRoles, Roles } from '../api/enums';\r\nimport { GET_ROLE_NAME } from '../classes/injection-tokens';\r\nimport { GetRoleNameFunction } from '../classes/types';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Pipe({\r\n    name: 'roles',\r\n    standalone: false\r\n})\r\nexport class RolesPipe implements PipeTransform {\r\n\r\n\tconstructor(\r\n\t\t@Optional() @Inject(GET_ROLE_NAME) private getRoleName: GetRoleNameFunction,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) { }\r\n\r\n\tgetRoleFullName(role: any, rolesTranslationObj: any) {\r\n\t\t// first, try to get it from GetRoleNameFunction, which was the previous way to get the display name of the role, in order to avoid breaking changes.\r\n\t\t// In case GetRoleNameFunction is not available, try to find the display name of the role from its translation object (which is the preferred way, since it supports i18n).\r\n\r\n\t\tlet displayName: string;\r\n\r\n\t\tif (this.getRoleName && (displayName = this.getRoleName(role))) {\r\n\t\t\treturn displayName;\r\n\t\t} else if (rolesTranslationObj) {\r\n\t\t\treturn rolesTranslationObj[role] || role;\r\n\t\t}\r\n\r\n\t\treturn role; // if the role name cannot be resolved, just return its value\r\n\t}\r\n\r\n\ttransform(value: any, args?: any): any {\r\n\t\tlet fallbackLang = Array.isArray(this.transloco.config.fallbackLang) ? this.transloco.config.fallbackLang[0] : this.transloco.config.fallbackLang;\r\n\t\tlet rolesTranslationObject = this.transloco.translateObject('enums.roles') || this.transloco.translateObject('enums.roles', {}, fallbackLang);\r\n\r\n\t\tif (value instanceof Array) {\r\n\t\t\tlet roles = value as any[];\r\n\t\t\treturn roles.map(role => this.getRoleFullName(role, rolesTranslationObject)).join(', ');\r\n\t\t} else if ((typeof value) === 'string') {\r\n\t\t\treturn this.getRoleFullName(value, rolesTranslationObject);\r\n\t\t}\r\n\r\n\t\treturn '';\r\n\t}\r\n}\r\n","import { inject, Injectable, isDevMode } from '@angular/core';\r\nimport { CaptchaComponent } from '../components/captcha/captcha.component';\r\nimport { Logger } from './logger.service';\r\nimport { Observable } from 'rxjs';\r\nimport { Config } from '../api/configuration';\r\n\r\nconst disabledCaptchaValue = '--';\r\nconst timeout = 10000;\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class CaptchaService {\r\n\tprivate readonly logger = inject(Logger);\r\n\r\n\tprivate component: CaptchaComponent = null;\r\n\tprivate lastPromise: {\r\n\t\tresolve: (value: string) => void,\r\n\t\treject: (value: any) => void,\r\n\t} = null;\r\n\tprivate lastTimeout: number;\r\n\r\n\tregisterComponent(component: CaptchaComponent): void {\r\n\t\tthis.logger.logInformation('Captcha component registered', component);\r\n\t\tthis.component = component;\r\n\r\n\t\tif (isDevMode()) {\r\n\t\t\twindow['runCaptchaTest'] = this.runTest.bind(this);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate runTest() {\r\n\t\tconst captchaCount = 0\r\n\t\tthis.showCaptcha(captchaCount);\r\n\t}\r\n\r\n\tprivate showCaptcha(captchaCount: number) {\r\n\t\tconsole.log('### running captcha', captchaCount);\r\n\t\tthis.executeAsync(() => { }).then(\r\n\t\t\tresponse => {\r\n\t\t\t\tconsole.log('### response', response);\r\n\t\t\t\tif (captchaCount < 100) {\r\n\t\t\t\t\tthis.showCaptcha(captchaCount + 1);\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terr => {\r\n\t\t\t\tconsole.log('### error', err);\r\n\t\t\t}\r\n\t\t);\r\n\t}\r\n\r\n\tunregisterComponent(component: CaptchaComponent): void {\r\n\t\tthis.logger.logInformation('Captcha component unregistered (this is not expected)', component);\r\n\t\tif (this.component === component) {\r\n\t\t\tthis.component = null;\r\n\t\t}\r\n\t}\r\n\r\n\tnotifyResolved(code: string) {\r\n\r\n\t\tif (!code) {\r\n\t\t\tthis.logger.logDebug('Ignored empty captcha code');\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this.lastPromise) {\r\n\t\t\tthis.logger.logWarning('Captcha code received without a corresponding outstanding request', code);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.logger.logInformation(`Completing last request with code ${code}`);\r\n\t\tthis.lastPromise.resolve(code);\r\n\t\tthis.clearLastRequest();\r\n\t}\r\n\r\n\texecuteAsync(onManual: () => void): Promise<string> {\r\n\t\treturn new Promise<string>((resolve, reject) => {\r\n\r\n\t\t\tif (!Config.captcha.enabled) {\r\n\t\t\t\tresolve(disabledCaptchaValue);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.lastPromise) {\r\n\t\t\t\tthis.logger.logInformation('Rejecting last request');\r\n\t\t\t\tthis.lastPromise.reject(new Error('A new captcha validation request was issued without this one being completed (this usually means the user silently gave up and is trying again)'));\r\n\t\t\t\tthis.clearLastRequest();\r\n\t\t\t}\r\n\r\n\t\t\tthis.lastPromise = { resolve, reject };\r\n\t\t\tthis.lastTimeout = window.setTimeout(() => onManual(), timeout);\r\n\t\t\tthis.component.reset();\r\n\t\t\tthis.component.execute();\r\n\t\t});\r\n\t}\r\n\r\n\texecute(): Observable<string> {\r\n\t\treturn new Observable((observer) => {\r\n\t\t\tthis.executeAsync(() => observer.next(null)).then(code => {\r\n\t\t\t\tobserver.next(code);\r\n\t\t\t\tobserver.complete();\r\n\t\t\t}).catch(() => {\r\n\t\t\t\tobserver.next(null);\r\n\t\t\t\tobserver.complete();\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tprivate clearLastRequest() {\r\n\t\tif (this.lastTimeout) {\r\n\t\t\twindow.clearTimeout(this.lastTimeout);\r\n\t\t\tthis.lastTimeout = 0;\r\n\t\t}\r\n\t\tthis.lastPromise = null;\r\n\t}\r\n}\r\n","import { TranslocoService } from \"@ngneat/transloco\";\r\nimport { inject } from \"@angular/core\";\r\nimport { CaptchaRenderOptions, widgetId } from \"../types\";\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tcaptchaloadedcallback?: () => void;\r\n\t}\r\n}\r\n\r\nexport abstract class BaseCaptchaProvider {\r\n\r\n\treadonly translocoService = inject(TranslocoService);\r\n\r\n\tabstract readonly name: string;\r\n\tabstract readonly url: string;\r\n\r\n\tprivate static loadPromise: Promise<void> | null = null;\r\n\tprivate static loaded: boolean = false;\r\n\r\n\tabstract render(\r\n\t\telement: HTMLElement,\r\n\t\toptions: CaptchaRenderOptions,\r\n\t): widgetId;\r\n\r\n\tabstract execute(widgetId: widgetId): void;\r\n\r\n\tabstract reset(widgetId: widgetId): void;\r\n\r\n\tabstract getResponse(widgetId: widgetId): string | null;\r\n\r\n\tloadScript(): Promise<void> {\r\n\t\tif (BaseCaptchaProvider.loaded) {\r\n\t\t\treturn Promise.resolve();\r\n\t\t}\r\n\r\n\t\tif (BaseCaptchaProvider.loadPromise) {\r\n\t\t\treturn BaseCaptchaProvider.loadPromise;\r\n\t\t}\r\n\r\n\t\tBaseCaptchaProvider.loadPromise = new Promise<void>((resolve, reject) => {\r\n\t\t\twindow.captchaloadedcallback = () => {\r\n\t\t\t\tBaseCaptchaProvider.loaded = true;\r\n\t\t\t\tresolve();\r\n\t\t\t};\r\n\r\n\t\t\tconst url = new URL(this.url);\r\n\r\n\t\t\turl.searchParams.set('onload', 'captchaloadedcallback');\r\n\r\n\t\t\tconst script = document.createElement('script');\r\n\t\t\tscript.src = url.href;\r\n\t\t\tscript.async = true;\r\n\t\t\tscript.defer = true;\r\n\t\t\tscript.onerror = (e) => {\r\n\t\t\t\tBaseCaptchaProvider.loadPromise = null;\r\n\t\t\t\treject(e);\r\n\t\t\t}\r\n\t\t\tdocument.head.appendChild(script);\r\n\t\t});\r\n\r\n\t\treturn BaseCaptchaProvider.loadPromise;\r\n\t}\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { BaseCaptchaProvider } from \"./base-captcha.provider\";\r\nimport { Logger } from \"../../../services/logger.service\";\r\nimport { CaptchaRenderOptions, widgetId } from \"../types\";\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\thcaptcha: any;\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: \"root\",\r\n})\r\nexport class HCaptchaProvider extends BaseCaptchaProvider {\r\n\r\n\tprivate readonly logger = inject(Logger);\r\n\r\n\treadonly name = \"hcaptcha\";\r\n\treadonly url = \"https://js.hcaptcha.com/1/api.js?render=explicit\";\r\n\r\n\trender(element: HTMLElement, options: CaptchaRenderOptions): number {\r\n\t\tconst isInvisible = options?.invisible ?? true;\r\n\r\n\t\tif (isInvisible) {\r\n\t\t\toptions.size = \"invisible\";\r\n\t\t}\r\n\r\n\t\toptions.hl = this.translocoService.getActiveLang();\r\n\r\n\t\treturn window.hcaptcha.render(element, options);\r\n\t}\r\n\r\n\texecute(widgetId?: widgetId): void {\r\n\t\tthis.ensureCaptchaWidget();\r\n\t\twindow.hcaptcha.execute(widgetId);\r\n\t}\r\n\r\n\treset(widgetId?: widgetId): void {\r\n\t\tthis.ensureCaptchaWidget();\r\n\t\twindow.hcaptcha.reset(widgetId);\r\n\t}\r\n\r\n\tgetResponse(widgetId?: widgetId): string | null {\r\n\t\tthis.ensureCaptchaWidget();\r\n\t\treturn window.hcaptcha.getResponse(widgetId);\r\n\t}\r\n\r\n\tprivate ensureCaptchaWidget(): void {\r\n\t\tif (!window.hcaptcha) {\r\n\t\t\tthis.logger.logError('hcaptcha is not available. Make sure the hcaptcha script is loaded properly.');\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { BaseCaptchaProvider } from \"./base-captcha.provider\";\r\nimport { Logger } from \"../../../services/logger.service\";\r\nimport { CaptchaRenderOptions, widgetId } from \"../types\";\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tturnstile: any;\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: \"root\",\r\n})\r\nexport class TurnstileProvider extends BaseCaptchaProvider {\r\n\r\n\tprivate readonly logger = inject(Logger);\r\n\tprivate backdropElement: HTMLElement | null = null;\r\n\r\n\treadonly name = 'turnstile';\r\n\treadonly url = \"https://challenges.cloudflare.com/turnstile/v0/api.js?compat=recaptcha\";\r\n\r\n\trender(element: HTMLElement, options: CaptchaRenderOptions): number | string {\r\n\t\tconst isInvisible = options?.invisible ?? true;\r\n\r\n\t\tif (isInvisible) {\r\n\t\t\tthis.configureInvisibleCaptcha(element, options);\r\n\t\t}\r\n\r\n\t\toptions.language = this.translocoService.getActiveLang();\r\n\r\n\t\treturn window.turnstile.render(element, options);\r\n\t}\r\n\r\n\texecute(widgetId?: widgetId): void {\r\n\t\tthis.ensureCaptchaWidget();\r\n\t\twindow.turnstile.execute(widgetId);\r\n\t}\r\n\r\n\treset(widgetId?: widgetId): void {\r\n\t\tthis.ensureCaptchaWidget();\r\n\t\twindow.turnstile.reset(widgetId);\r\n\t}\r\n\r\n\tgetResponse(widgetId?: widgetId): string | null {\r\n\t\tthis.ensureCaptchaWidget();\r\n\t\treturn window.turnstile.getResponse(widgetId);\r\n\t}\r\n\r\n\tprivate configureInvisibleCaptcha(element: HTMLElement, options: CaptchaRenderOptions): void {\r\n\t\toptions.execution = \"execute\";\r\n\t\toptions.appearance = \"interaction-only\";\r\n\t\toptions[\"response-field\"] = false;\r\n\r\n\t\toptions['before-interactive-callback'] = () => {\r\n\t\t\telement.style.display = \"block\";\r\n\t\t\tthis.showBackdrop(element);\r\n\t\t};\r\n\r\n\t\toptions['after-interactive-callback'] = () => {\r\n\t\t\tthis.removeExistingBackdrop();\r\n\t\t};\r\n\r\n\t\tconst originalCallback = options.callback;\r\n\t\toptions.callback = (response: string) => {\r\n\t\t\telement.style.display = \"none\";\r\n\t\t\tif (originalCallback) {\r\n\t\t\t\toriginalCallback(response);\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\tprivate showBackdrop(captchaContainer: HTMLElement): void {\r\n\t\tthis.removeExistingBackdrop();\r\n\t\tthis.createBackdrop();\r\n\t\tthis.positionCaptchaContainer(captchaContainer);\r\n\t}\r\n\r\n\tprivate removeExistingBackdrop(): void {\r\n\t\tif (this.backdropElement?.parentNode) {\r\n\t\t\tthis.backdropElement.parentNode.removeChild(this.backdropElement);\r\n\t\t\tthis.backdropElement = null;\r\n\t\t}\r\n\t}\r\n\r\n\tprivate createBackdrop(): void {\r\n\t\tthis.backdropElement = document.createElement('div');\r\n\r\n\t\tconst backdropStyle: Partial<CSSStyleDeclaration> = {\r\n\t\t\tposition: 'fixed',\r\n\t\t\ttop: '0',\r\n\t\t\tleft: '0',\r\n\t\t\twidth: '100vw',\r\n\t\t\theight: '100vh',\r\n\t\t\tbackgroundColor: 'rgba(0, 0, 0, 0.5)',\r\n\t\t\tbackdropFilter: 'blur(4px)',\r\n\t\t\tzIndex: '2000',\r\n\t\t};\r\n\r\n\t\tObject.assign(this.backdropElement.style, backdropStyle);\r\n\t\tdocument.body.appendChild(this.backdropElement);\r\n\t}\r\n\r\n\tprivate positionCaptchaContainer(captchaContainer: HTMLElement): void {\r\n\t\tconst captchaElementStyle: Partial<CSSStyleDeclaration> = {\r\n\t\t\tposition: 'fixed',\r\n\t\t\tleft: '50%',\r\n\t\t\ttop: '50%',\r\n\t\t\ttransform: 'translate(-50%, -50%)',\r\n\t\t\tzIndex: '2001',\r\n\t\t};\r\n\r\n\t\tObject.assign(captchaContainer.style, captchaElementStyle);\r\n\t}\r\n\r\n\tprivate ensureCaptchaWidget(): void {\r\n\t\tif (!window.turnstile) {\r\n\t\t\tthis.logger.logError('turnstile is not available. Make sure the turnstile script is loaded properly.');\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable, inject } from \"@angular/core\";\r\nimport { BaseCaptchaProvider } from \"./base-captcha.provider\";\r\nimport { Logger } from \"../../../services/logger.service\";\r\nimport { CaptchaRenderOptions, widgetId } from \"../types\";\r\n\r\ndeclare global {\r\n\tinterface Window {\r\n\t\tgrecaptcha: any;\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: \"root\",\r\n})\r\nexport class RecaptchaProvider extends BaseCaptchaProvider {\r\n\r\n\tprivate readonly logger = inject(Logger);\r\n\r\n\treadonly name = \"recaptcha\";\r\n\treadonly url = \"https://www.google.com/recaptcha/api.js?trustedtypes=true&render=explicit\";\r\n\r\n\trender(element: HTMLElement, options: CaptchaRenderOptions): number {\r\n\t\tconst isInvisible = options?.invisible ?? true;\r\n\r\n\t\tif (isInvisible) {\r\n\t\t\toptions.size = \"invisible\";\r\n\t\t}\r\n\r\n\t\toptions.hl = this.translocoService.getActiveLang();\r\n\r\n\t\treturn window.grecaptcha.render(element, options);\r\n\t}\r\n\r\n\texecute(widgetId?: widgetId): void {\r\n\t\tthis.ensureCaptchaWidget();\r\n\t\twindow.grecaptcha.execute(widgetId);\r\n\t}\r\n\r\n\treset(widgetId?: widgetId): void {\r\n\t\tthis.ensureCaptchaWidget();\r\n\t\twindow.grecaptcha.reset(widgetId);\r\n\t}\r\n\r\n\tgetResponse(widgetId?: widgetId): string | null {\r\n\t\tthis.ensureCaptchaWidget();\r\n\t\treturn window.grecaptcha.getResponse(widgetId);\r\n\t}\r\n\r\n\tprivate ensureCaptchaWidget(): void {\r\n\t\tif (!window.grecaptcha) {\r\n\t\t\tthis.logger.logError('grecaptcha is not available. Make sure the reCAPTCHA script is loaded properly.');\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n}\r\n","// Inspired by https://github.com/DethAriel/ng-recaptcha/blob/master/projects/ng-recaptcha/src/lib/recaptcha.component.ts\r\nimport { Component, ElementRef, HostBinding, inject, Injector, NgZone, OnDestroy, OnInit, output } from '@angular/core';\r\nimport { BaseCaptchaProvider } from './providers/base-captcha.provider';\r\nimport { CaptchaService } from '../../services/captcha.service';\r\nimport { HCaptchaProvider } from './providers/hcaptcha.provider';\r\nimport { TurnstileProvider } from './providers/turnstile.provider';\r\nimport { RecaptchaProvider } from './providers/recaptcha.provider';\r\nimport { CaptchaProviders } from '../../api/enums';\r\nimport { Config } from '../../api/configuration';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { CaptchaRenderOptions, widgetId } from './types';\r\nimport { SPA_INVISIBLE_CAPTCHA_ENABLED } from '../../classes/injection-tokens';\r\n\r\n@Component({\r\n    selector: 'spa-captcha',\r\n    template: ``,\r\n    standalone: false\r\n})\r\nexport class CaptchaComponent implements OnInit, OnDestroy {\r\n\r\n\tprivate readonly zone = inject(NgZone);\r\n\tprivate readonly logger = inject(Logger);\r\n\tprivate readonly injector = inject(Injector);\r\n\tprivate readonly captchaService = inject(CaptchaService);\r\n\tprivate readonly elementRef = inject(ElementRef);\r\n\tprivate readonly invisibleEnabled = inject(SPA_INVISIBLE_CAPTCHA_ENABLED);\r\n\tprivate readonly config = Config.captcha;\r\n\r\n\t@HostBinding(\"attr.id\")\r\n\tid = `captcha-${this.randomId()}`;\r\n\r\n\tprovider: BaseCaptchaProvider;\r\n\r\n\tpublic resolved = output<string | null>();\r\n\tpublic errored = output<any>();\r\n\tpublic expired = output<void>();\r\n\r\n\tprivate widgetId: widgetId | null = null;\r\n\tprivate executeRequested: boolean = false;\r\n\r\n\tngOnInit(): void {\r\n\r\n\t\tif (!this.config.enabled) {\r\n\t\t\tthis.logger.logInformation(\"Captcha is disabled\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.provider = this.getCaptchaProvider(this.config.provider, this.injector);\r\n\r\n\t\tthis.provider.loadScript().then(() => {\r\n\t\t\tthis.renderCaptcha();\r\n\t\t}, e => {\r\n\t\t\tthis.logger.logError(`Failed to load ${this.provider.name} script`, e);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic execute() {\r\n\t\tif (!this.invisibleEnabled) {\r\n\t\t\tthis.logger.logDebug(\"CaptchaComponent -- calling the execute method on a non-invisible component is not allowed\")\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.widgetId == null) {\r\n\t\t\tthis.logger.logDebug('CaptchaComponent -- execute requested but widget not loaded, postponing execution');\r\n\t\t\tthis.executeRequested = true;\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.logger.logDebug('CaptchaComponent -- executing', this.widgetId);\r\n\t\tthis.provider.execute(this.widgetId);\r\n\t}\r\n\r\n\tpublic reset(): void {\r\n\r\n\t\tif (this.widgetId != null) {\r\n\r\n\t\t\tthis.logger.logDebug('CaptchaComponent -- resetting', this.widgetId);\r\n\r\n\t\t\tif (this.provider.getResponse(this.widgetId)) {\r\n\t\t\t\t// Only emit an event in case if something would actually change.\r\n\t\t\t\t// That way we do not trigger \"touching\" of the control if someone does a \"reset\"\r\n\t\t\t\t// on a non-resolved captcha.\r\n\t\t\t\tthis.resolved.emit(null);\r\n\t\t\t}\r\n\r\n\t\t\tthis.captchaReset();\r\n\t\t} else {\r\n\t\t\tthis.logger.logDebug('CaptchaComponent -- ignoring reset request since widget is not loaded');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate renderCaptcha(): void {\r\n\t\tconst options: CaptchaRenderOptions = {\r\n\t\t\tsitekey: this.config.siteKey,\r\n\t\t\tcallback: (response: string) => this.zone.run(() => this.resolvedCallback(response)),\r\n\t\t\t\"expired-callback\": () => this.zone.run(() => this.expiredCallback()),\r\n\t\t\t\"error-callback\": (e: any) => this.zone.run(() => this.errorCallback(e)),\r\n\t\t\tinvisible: this.invisibleEnabled,\r\n\t\t};\r\n\r\n\t\tthis.widgetId = this.provider.render(\r\n\t\t\tthis.elementRef.nativeElement,\r\n\t\t\toptions,\r\n\t\t);\r\n\r\n\t\tthis.captchaService.registerComponent(this);\r\n\r\n\t\tif (this.executeRequested) {\r\n\t\t\tthis.logger.logDebug('CaptchaComponent -- honoring previous execution request');\r\n\t\t\tthis.executeRequested = false;\r\n\t\t\tthis.execute();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate resolvedCallback(response: string) {\r\n\t\tthis.resolved.emit(response);\r\n\t\tthis.captchaService.notifyResolved(response);\r\n\t}\r\n\r\n\tprivate expiredCallback() {\r\n\t\tthis.logger.logDebug('CaptchaComponent -- expired callback', this.widgetId);\r\n\t\tthis.expired.emit();\r\n\t}\r\n\r\n\tprivate errorCallback(e: any) {\r\n\t\tthis.logger.logDebug('CaptchaComponent -- error callback', this.widgetId, e);\r\n\t\tthis.errored.emit(e);\r\n\t}\r\n\r\n\tprivate captchaReset() {\r\n\t\tif (this.widgetId != null) {\r\n\t\t\tthis.zone.runOutsideAngular(() => this.provider.reset(this.widgetId!));\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getCaptchaProvider(provider: CaptchaProviders, injector: Injector): BaseCaptchaProvider {\r\n\t\tswitch (provider) {\r\n\t\t\tcase CaptchaProviders.HCaptcha:\r\n\t\t\t\treturn injector.get(HCaptchaProvider);\r\n\t\t\tcase CaptchaProviders.Turnstile:\r\n\t\t\t\treturn injector.get(TurnstileProvider);\r\n\t\t\tcase CaptchaProviders.Recaptcha:\r\n\t\t\tdefault:\r\n\t\t\t\treturn injector.get(RecaptchaProvider);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate randomId(length = 6, chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\"): string {\r\n\t\treturn Array.from({ length }, () =>\r\n\t\t\tchars.charAt(Math.floor(Math.random() * chars.length))\r\n\t\t).join('');\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.captchaService.unregisterComponent(this);\r\n\t\tthis.captchaReset();\r\n\t}\r\n}\r\n","import { Component, OnInit, Inject, inject } from '@angular/core';\r\nimport { Router, NavigationEnd, NavigationStart, NavigationCancel } from '@angular/router';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { filter } from 'rxjs/operators';\r\nimport { GoogleAnalyticsService } from '../../services/google-analytics.service';\r\nimport { RouteHelperService } from '../../services/route-helper.service';\r\nimport { SpaLanguageService } from '../../services/spa-language.service';\r\nimport { ASYNC_INIT, LANGUAGE_ROUTE_ENABLED, SPA_INVISIBLE_CAPTCHA_ENABLED } from '../../classes/injection-tokens';\r\nimport { Config } from '../../api/configuration';\r\n\r\n@Component({\r\n    selector: 'spa-root',\r\n    templateUrl: './root.component.html',\r\n    styleUrls: ['./root.component.css'],\r\n    standalone: false\r\n})\r\nexport class RootComponent implements OnInit {\r\n\r\n\treadonly useInvisibleCaptcha = inject(SPA_INVISIBLE_CAPTCHA_ENABLED);\r\n\r\n\tloading: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate routeHelper: RouteHelperService,\r\n\t\tprivate googleAnalyticsService: GoogleAnalyticsService,\r\n\t\tprivate spaLanguage: SpaLanguageService,\r\n\t\t@Inject(LANGUAGE_ROUTE_ENABLED) private languageRouteEnabled: boolean,\r\n\t\t@Inject(ASYNC_INIT) private asyncInit: boolean,\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tif (!this.asyncInit) {\r\n\t\t\tthis.loading = true;\r\n\t\t}\r\n\r\n\t\t// Configure Google Analytics to track pages/routes of this application\r\n\t\tthis.trackSpaPagesOnAnalytics();\r\n\r\n\t\t// Handle language on routes, if enabled\r\n\t\tif (this.languageRouteEnabled) {\r\n\t\t\tthis.watchLanguageOnRoutes();\r\n\t\t}\r\n\r\n\t\t// Handle return urls\r\n\t\tthis.spaControl.initialized.subscribe(r => {\r\n\t\t\tlet returnUrl = this.spaControl.tryPopReturnUrl();\r\n\t\t\tif (returnUrl) {\r\n\t\t\t\tthis.logger.logInformation('RootComponent -- found return url from oAuth state, redirecting to', returnUrl);\r\n\t\t\t\tthis.router.navigateByUrl(returnUrl).then(\r\n\t\t\t\t\tnavigationSucceeded => this.logger.logInformation('RootComponent -- navigation to returnUrl succeeded: ', navigationSucceeded),\r\n\t\t\t\t\trejectionReason => this.logger.logError('RootComponent -- an error occurred while navigating to returnUrl.', rejectionReason)\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\tthis.loading = false;\r\n\t\t});\r\n\t};\r\n\r\n\ttrackSpaPagesOnAnalytics() {\r\n\t\tif (this.googleAnalyticsService.initialized) {\r\n\t\t\tthis.logger.logInformation('RootComponent -- setting Google Analytics to track SPA pages');\r\n\r\n\t\t\tthis.routeHelper.currentPathToMatch.subscribe(pathToMatch => {\r\n\t\t\t\ttry {\r\n\t\t\t\t\tif (typeof this.googleAnalyticsService.ga === 'function') {\r\n\t\t\t\t\t\tthis.googleAnalyticsService.ga('set', 'page', pathToMatch);\r\n\t\t\t\t\t\tthis.googleAnalyticsService.ga('send', 'pageview');\r\n\t\t\t\t\t}\r\n\t\t\t\t} catch (ex) {\r\n\t\t\t\t\tthis.logger.logError(\"RootComponent -- error while tracking page on Google Analytics\", ex);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\twatchLanguageOnRoutes() {\r\n\t\tthis.router.events.pipe(filter(e => e instanceof NavigationStart || e instanceof NavigationCancel || e instanceof NavigationEnd)).subscribe((e: NavigationStart | NavigationCancel | NavigationEnd) => {\r\n\t\t\tlet languageParseResult = this.spaLanguage.parseLanguageFromUrl(e.url);\r\n\r\n\t\t\tif (e instanceof NavigationStart) { // on NavigationStart, verify if the there is any lang in url and if it is valid/available, and change the navigation if necessary\r\n\t\t\t\tif (!languageParseResult.found) { // if there is no language in the url, guess it and navigate\r\n\t\t\t\t\tlet newUrl = this.spaLanguage.generateUrlWithLangSegment(e.url, this.spaLanguage.guessLanguage());\r\n\t\t\t\t\tthis.logger.logInformation(`RootComponent -- added heading language segment, navigating to \"${newUrl}\"`);\r\n\t\t\t\t\tthis.router.navigateByUrl(newUrl);\r\n\t\t\t\t} else { // if there is language in the url, check if it is available.\r\n\t\t\t\t\tlet langFromRoute = languageParseResult.language;\r\n\t\t\t\t\tif (!this.spaLanguage.isLanguageAvailable(langFromRoute)) { // if language is not available, guess a new one and navigate\r\n\t\t\t\t\t\tlet lang = this.spaLanguage.guessLanguage(true); // force complete guessing, since the last parsed language is not valid\r\n\t\t\t\t\t\tlet newUrl = this.spaLanguage.generateUrlWithLangSegment(languageParseResult.urlWithoutLanguageSegment, lang);\r\n\t\t\t\t\t\tthis.logger.logInformation(`RootComponent -- since language \"${langFromRoute}\" is not available, language \"${lang}\" will be used. Navigating to \"${newUrl}\"`);\r\n\t\t\t\t\t\tthis.router.navigateByUrl(newUrl);\r\n\t\t\t\t\t} else { // since language is available, set it temporarily. If the navigation completes (NavigationEnd), it will be commited; otherwise (NavigationCancel), it will be rolledback.\r\n\t\t\t\t\t\tthis.spaLanguage.setTemporarilyLanguageFromNavigation(langFromRoute, e.id);\r\n\t\t\t\t\t\tthis.logger.logInformation(`RootComponent -- keeping navigation, since language \"${langFromRoute}\" is valid and available`);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (e instanceof NavigationCancel) { // if navigation was cancelled, try to rollback the language, if any temporary language was set on NavigationStart\r\n\t\t\t\tthis.spaLanguage.rollbackLanguageFromNavigation(e.id);\r\n\t\t\t} else if (e instanceof NavigationEnd && languageParseResult.found) { // if on NavigationEnd and a language was found in url, commit that language\r\n\t\t\t\tlet langFromRoute = languageParseResult.language;\r\n\t\t\t\tthis.spaLanguage.commitLanguageFromNavigation(langFromRoute, e.id); // (there is no need to check if the language is valid, since it has already been verified on NavigationStart)\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\n","<div>\r\n\t<lacm-loading [show]=\"loading\"></lacm-loading>\r\n\t<router-outlet></router-outlet>\r\n</div>\r\n\r\n@if (useInvisibleCaptcha) {\r\n\t<spa-captcha class=\"captcha\"></spa-captcha>\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-lacuna-footer',\r\n    templateUrl: './lacuna-footer.component.html',\r\n    styleUrls: ['./lacuna-footer.component.scss'],\r\n    standalone: false\r\n})\r\nexport class LacunaFooterComponent implements OnInit {\r\n\r\n\t@Input() loading: boolean;\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n}\r\n","<div class=\"lacuna-footer\" *transloco=\"let t\">\r\n\t<lacm-loading [show]=\"loading\"></lacm-loading>\r\n\t<div fxFlex=\"100\" fxLayoutAlign=\"end center\">\r\n\t\t<img class=\"margin__right__half\" src=\"../../../../assets/img/lacuna-footer.png\" />\r\n\t\t<p>{{t('components.lacuna-footer.developed-by')}} <a href=\"https://www.lacunasoftware.com/\" target=\"_blank\">Lacuna Software</a></p>\r\n\t</div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { SubscriptionAccessModel, RootAuthorizationData, AuthorizationData } from '../api/authorization';\r\nimport { Roles, RootRoles, Permissions } from '../api/enums';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Config } from '../api/configuration';\r\nimport { tap, map } from 'rxjs/operators';\r\nimport { UserModel } from '../api/users';\r\nimport { Logger } from './logger.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AuthManagementService {\r\n\r\n\tprivate changedSubject: Subject<string> = new Subject<any>();\r\n\tchanged: Observable<any> = this.changedSubject.asObservable();\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate http: HttpClient\r\n\t) { }\r\n\r\n\tgetUserSubscriptionRoles(userId: string, sub: string): Observable<SubscriptionAccessModel | RootRoles[]> {\r\n\t\treturn this.http.get<UserModel>(`/api/users/${userId}`, {\r\n\t\t\theaders: new HttpHeaders().set(Config.subscriptionHeader, sub)\r\n\t\t}).pipe(map(m => {\r\n\t\t\tif (sub === Config.subscriptionRoot) {\r\n\t\t\t\treturn m.rootRoles;\r\n\t\t\t} else {\r\n\t\t\t\treturn m.subscriptions.filter(s => s.subscriptionId === sub)[0];\r\n\t\t\t}\r\n\t\t}));\r\n\t}\r\n\r\n\tupdateSubscriptionRoles(sub: string, agentId: string, data: AuthorizationData | RootAuthorizationData): Observable<any> {\r\n\t\treturn this.http.put(sub === Config.subscriptionRoot ? `/api/authorized-root-agents/${agentId}` : `/api/authorized-agents/${agentId}`, data,\r\n\t\t\t{\r\n\t\t\t\theaders: new HttpHeaders().set(Config.subscriptionHeader, sub)\r\n\t\t\t}\r\n\t\t).pipe(tap(() => {\r\n\t\t\tthis.notifyChanged();\r\n\t\t}));\r\n\t}\r\n\r\n\tgetUserPermissionsOnSubscription(sub: string): Observable<Permissions[]> {\r\n\t\tlet headers = {}\r\n\t\theaders[Config.subscriptionHeader] = sub;\r\n\t\treturn this.http.get<Permissions[]>('/api/profile/permissions', { headers: headers });\r\n\t}\r\n\r\n\tnotifyChanged(): void {\r\n\t\tthis.logger.logTrace('AuthManagementService -- notifying change');\r\n\t\tthis.changedSubject.next(null);\r\n\t}\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { EventModel } from '../api/events';\r\nimport { PaginatedSearchService, ObservableSearchService, PaginatedSearchParams, PaginatedSearchResult, SearchService } from '@lacuna/material';\r\nimport { Logger } from './logger.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { SpaControlService } from './spa-control.service';\r\nimport { AuthManagementService } from './auth-management.service';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Observable, Subscription, Subject } from 'rxjs';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class EventService implements OnDestroy, ObservableSearchService, PaginatedSearchService<EventModel> {\r\n\r\n\tprivate $subscriptions: Subscription[] = [];\r\n\tprivate changedSubject: Subject<any> = new Subject<any>();\r\n\tprivate cache: EventModel[] = [];\r\n\r\n\tchanged: Observable<string> = this.changedSubject.asObservable();\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate authManager: AuthManagementService\r\n\t) {\r\n\t\tthis.$subscriptions.push(\r\n\t\t\tthis.spaControl.selectedSubscription.subscribe(() => {\r\n\t\t\t\tthis.logger.logTrace('EventService -- emitting change notification due to subscription change');\r\n\t\t\t\tthis.changedSubject.next(null)\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tlistPaginated(params: PaginatedSearchParams): Observable<PaginatedSearchResult<EventModel>> {\r\n\t\treturn this.http.get<PaginatedSearchResult<EventModel>>('/api/events', {\r\n\t\t\tparams: params.getHttpParams()\r\n\t\t}).pipe(tap(r => { this.cache = r.items; }));\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('EventService ngOnDestroy');\r\n\t\tfor (let s of this.$subscriptions) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\tgetServiceForApplicationEvents(appId: string): SearchService<EventModel> {\r\n\t\treturn new EntityEventService(`/api/applications/${appId}/events`, this.http);\r\n\t}\r\n\r\n\tgetServiceForApplicationActions(appId: string): PaginatedSearchService<EventModel> {\r\n\t\treturn new PaginatedEntityEventService(`/api/applications/${appId}/actions`, this.http);\r\n\t}\r\n\r\n\tgetServiceForUserEvents(userId: string): SearchService<EventModel> {\r\n\t\treturn new EntityEventService(`/api/users/${userId}/events`, this.http);\r\n\t}\r\n\r\n\tgetServiceForUserActions(userId: string): PaginatedSearchService<EventModel> {\r\n\t\treturn new PaginatedEntityEventService(`/api/users/${userId}/actions`, this.http);\r\n\t}\r\n}\r\n\r\nexport class EntityEventService implements SearchService<EventModel> {\r\n\r\n\tconstructor(\r\n\t\tprivate apiRoute: string,\r\n\t\tprivate http: HttpClient\r\n\t) {\r\n\t}\r\n\r\n\tlist(): Observable<EventModel[]> {\r\n\t\treturn this.http.get<EventModel[]>(this.apiRoute);\r\n\t}\r\n}\r\n\r\nexport class PaginatedEntityEventService implements PaginatedSearchService<EventModel> {\r\n\r\n\tconstructor(\r\n\t\tprivate apiRoute: string,\r\n\t\tprivate http: HttpClient\r\n\t) {\r\n\t}\r\n\r\n\tlistPaginated(params: PaginatedSearchParams): Observable<PaginatedSearchResult<EventModel>> {\r\n\t\treturn this.http.get<PaginatedSearchResult<EventModel>>(this.apiRoute, {\r\n\t\t\tparams: params.getHttpParams()\r\n\t\t})\r\n\t}\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-box',\r\n    templateUrl: './box.component.html',\r\n    styleUrls: ['./box.component.scss'],\r\n    standalone: false\r\n})\r\nexport class BoxComponent implements OnInit {\r\n\r\n\t@Input() loading: boolean = false;\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() { }\r\n}\r\n","<div class=\"box-light\">\r\n\t<lacm-loading [show]=\"loading\"></lacm-loading>\r\n\t<h1 class=\"component-title\">\r\n\t\t<mat-icon>keyboard_arrow_right</mat-icon>\r\n\t\t<ng-content select=\"[box-title]\"></ng-content>\r\n\t</h1>\r\n\t<h4>\r\n\t\t<ng-content select=\"[box-subtitle]\"></ng-content>\r\n\t</h4>\r\n\t<mat-divider class=\"mb-2\"></mat-divider>\r\n\t<div>\r\n\t\t<ng-content select=\"[box-commands]\"></ng-content>\r\n\t</div>\r\n\t<ng-content></ng-content>\r\n</div>\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { UserModel, UserData, UserPermissionsResponse, UserDiscoveryResponse } from '../api/users';\r\nimport { Observable, Subject, Subscription } from 'rxjs';\r\nimport { ObservableSearchService, PaginatedSearchService, PaginatedSearchParams, PaginatedSearchResult } from '@lacuna/material';\r\nimport { SpaControlService } from './spa-control.service';\r\nimport { Logger } from './logger.service';\r\nimport { tap, map } from 'rxjs/operators';\r\nimport { AuthManagementService } from './auth-management.service';\r\nimport { Config } from '../api/configuration';\r\n\r\nconst apiRoute = '/api/users';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class UserService implements OnDestroy, ObservableSearchService, PaginatedSearchService<UserModel> {\r\n\r\n    private $subscriptions: Subscription[] = [];\r\n    private changedSubject: Subject<any> = new Subject<any>();\r\n    changed: Observable<string> = this.changedSubject.asObservable();\r\n\r\n    constructor(\r\n        private logger: Logger,\r\n        private http: HttpClient,\r\n        private spaControl: SpaControlService,\r\n        private authManagementService: AuthManagementService\r\n    ) {\r\n        this.$subscriptions.push(\r\n            this.spaControl.selectedSubscription.subscribe(() => {\r\n                this.logger.logTrace('UserService -- emitting change notification due to subscription change');\r\n                this.changedSubject.next(null);\r\n            })\r\n        );\r\n        this.$subscriptions.push(\r\n            this.authManagementService.changed.subscribe(() => {\r\n                this.logger.logTrace('UserService -- emitting change notification due to change on auth management');\r\n                this.changedSubject.next(null)\r\n            })\r\n        );\r\n    }\r\n\r\n    create(sub: string, data: UserData): Observable<UserModel> {\r\n        let headers = {};\r\n        headers[Config.subscriptionHeader] = sub;\r\n\r\n        return this.http.post<UserModel>(apiRoute, data, {\r\n            headers: headers\r\n        }).pipe(\r\n            tap(u => {\r\n                this.notifyChanged(u.id);\r\n            })\r\n        );\r\n    }\r\n\r\n    list(q: string, global: boolean): Observable<UserModel[]> {\r\n        let params: PaginatedSearchParams = new PaginatedSearchParams();\r\n        params.limit = 50;\r\n        params.offset = 0;\r\n        params.order = 'Asc';\r\n        params.searchTerm = q;\r\n        let httpParams = params.getHttpParams();\r\n        httpParams = httpParams.append(\"global\", String(global));\r\n        return this.http.get<PaginatedSearchResult<UserModel>>(apiRoute, {\r\n            params: httpParams\r\n        }).pipe(map(p => p.items));\r\n    }\r\n\r\n    listPaginated(params: PaginatedSearchParams): Observable<PaginatedSearchResult<UserModel>> {\r\n        return this.http.get<PaginatedSearchResult<UserModel>>(apiRoute, {\r\n            params: params.getHttpParams()\r\n        });\r\n\t}\r\n\r\n\tlistTopGlobalUsers(q: string, limit: number = 10): Observable<UserModel[]> {\r\n\t\treturn this.http.get<UserModel[]>(`${apiRoute}/top-global`, {\r\n\t\t\tparams: new HttpParams({\r\n\t\t\t\tfromObject: {\r\n\t\t\t\t\tq: q,\r\n\t\t\t\t\tlimit: limit.toString(),\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\r\n    get(id: string): Observable<UserModel> {\r\n        return this.http.get<UserModel>(`${apiRoute}/${id}`);\r\n    }\r\n\r\n    getFromParent(subject: string): Observable<UserModel> {\r\n        return this.http.get<UserModel>(`${apiRoute}/parent/${subject}`);\r\n    }\r\n\r\n    discover(id: string): Observable<UserDiscoveryResponse> {\r\n        return this.http.get<UserDiscoveryResponse>(`${apiRoute}/${id}/discovery`);\r\n    }\r\n\r\n    notifyChanged(id?: string): void {\r\n\t\tthis.logger.logTrace('UserService -- notifying change', id);\r\n\t\tthis.changedSubject.next(id);\r\n\t}\r\n\r\n\tupdate(subject: string, data: UserData, subId?: string): Observable<UserModel> {\r\n\t\tlet headers = {};\r\n\r\n\t\tif (subId) {\r\n\t\t\theaders[Config.subscriptionHeader] = subId;\r\n\t\t}\r\n\r\n\t\treturn this.http.put<UserModel>(`${apiRoute}/${subject}`, data, { headers }).pipe(tap(_ => this.notifyChanged(subject)));\r\n\t}\r\n\r\n\tgetUserPermissionsOnSubscription(userId: string, sub: string): Observable<UserPermissionsResponse> {\r\n\t\treturn this.http.get<UserPermissionsResponse>(`/api/users/${userId}/permissions`, {\r\n\t\t\theaders: new HttpHeaders().set(Config.subscriptionHeader, sub)\r\n\t\t})\r\n\t}\r\n\r\n    ngOnDestroy(): void {\r\n        this.logger.logTrace('UserService ngOnDestroy');\r\n        for (let s of this.$subscriptions) {\r\n            s.unsubscribe();\r\n        }\r\n    }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { ENTITY_NOT_FOUND } from '../../services/entity-lookup.service';\r\nimport { EventModel } from '../../api/events';\r\nimport { EntityTypePipe } from '../../pipes/entity-type.pipe';\r\n\r\n@Component({\r\n    selector: 'spa-event-entity-cell',\r\n    templateUrl: './event-entity-cell.component.html',\r\n    styleUrls: ['./event-entity-cell.component.scss'],\r\n    standalone: false\r\n})\r\nexport class EventEntityCellComponent implements OnInit {\r\n\r\n\tENTITY_NOT_FOUND = ENTITY_NOT_FOUND;\r\n\r\n\t@Input() event: EventModel;\r\n\t@Input() name: string | number;\r\n\t@Output() show: EventEmitter<any> = new EventEmitter();\r\n\r\n\tentityWithId: string;\r\n\r\n\tconstructor(\r\n\t\tprivate entityTypePipe: EntityTypePipe\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.entityWithId = `${this.entityTypePipe.transform(this.event.entityType)} ${this.event.entityId} `;\r\n\t}\r\n\r\n\tonClick() {\r\n\t\tthis.show.emit(null);\r\n\t}\r\n}\r\n","<div *transloco=\"let t\">\r\n\t@if (!name) {\r\n\t\t<div [matTooltip]=\"'Loading ' + entityWithId\" class=\"d-flex align-items-center\">\r\n\t\t\t<mat-icon class=\"me-2 text-accent\">{{event.entityType | entityIcon}}</mat-icon>\r\n\t\t\t<span>...</span>\r\n\t\t</div>\r\n\t}\r\n\r\n\t@if (name === ENTITY_NOT_FOUND) {\r\n\t\t<div [matTooltip]=\"entityWithId + t('common.not-found', { gender: 'Feminine' })\" class=\"d-flex align-items-center\">\r\n\t\t\t<mat-icon class=\"me-2 text-accent\">{{event.entityType | entityIcon}}</mat-icon>\r\n\t\t\t<span>{{event.entityId}}</span>\r\n\t\t</div>\r\n\t}\r\n\r\n\t@if (name && name !== ENTITY_NOT_FOUND) {\r\n\t\t<div [matTooltip]=\"entityWithId + '(' + name + ')'\" class=\"d-flex align-items-center\">\r\n\t\t\t<mat-icon class=\"me-2 text-accent\">{{event.entityType | entityIcon}}</mat-icon>\r\n\t\t\t<a href=\"#\" (click)=\"onClick(); false\">{{name}}</a>\r\n\t\t</div>\r\n\t}\r\n</div>\r\n","import { Component, OnInit, Input, Inject } from '@angular/core';\r\nimport { EventModel } from '../../api/events';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { EntityTypes, AgentTypes, UserDiscoveryPolicies } from '../../api/enums';\r\nimport { AgentLookupService } from '../../services/agent-lookup.service';\r\nimport { PaginatedSearchService, SearchService } from '@lacuna/material';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { ENTITY_NAVIGATOR, EVENT_VIEWER } from '../../classes/injection-tokens';\r\nimport { EntityNavigator, EventViewer } from '../../classes/types';\r\nimport { Config } from '../../api/configuration';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { UserService } from '../../services/user.service';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { finalize } from 'rxjs';\r\n\r\n@Component({\r\n\tselector: 'spa-event-list',\r\n\ttemplateUrl: './event-list.component.html',\r\n\tstyleUrls: ['./event-list.component.scss'],\r\n\tstandalone: false\r\n})\r\nexport class EventListComponent implements OnInit {\r\n\r\n\t@Input() dataSource: PaginatedSearchService<EventModel> | SearchService<EventModel>;\r\n\r\n\t@Input({ transform: coerceBooleanProperty }) showSubscriptions: boolean;\r\n\r\n\t@Input({ transform: coerceBooleanProperty }) hideEntities: boolean;\r\n\r\n\t@Input({ transform: coerceBooleanProperty }) hideAgents: boolean;\r\n\r\n\t@Input({ transform: coerceBooleanProperty }) disablePagination: boolean;\r\n\r\n\tloading: boolean = false;\r\n\r\n\tget columnsToDisplay(): string[] {\r\n\t\tlet columns = ['date', 'operation'];\r\n\t\tif (!this.hideEntities) {\r\n\t\t\tcolumns.push('entity');\r\n\t\t}\r\n\t\tif (!this.hideAgents) {\r\n\t\t\tcolumns.push('agent');\r\n\t\t}\r\n\t\tif (this.showSubscriptions) {\r\n\t\t\tcolumns.push('subscription');\r\n\t\t}\r\n\t\treturn columns;\r\n\t}\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\tprivate agentLookupService: AgentLookupService,\r\n\t\tprivate userService: UserService,\r\n\t\t@Inject(ENTITY_NAVIGATOR) private entityNavigationService: EntityNavigator,\r\n\t\t@Inject(EVENT_VIEWER) private eventViewer: EventViewer,\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n\tshowDetails(e: EventModel): void {\r\n\t\tthis.eventViewer.show(e);\r\n\t}\r\n\r\n\tnavigateToAgent(e: EventModel): void {\r\n\t\tthis.agentLookupService.get(e.agentId).subscribe(a => {\r\n\t\t\tswitch (a.type) {\r\n\t\t\t\tcase AgentTypes.User:\r\n\t\t\t\t\tif (Config.userDiscoveryPolicy && Config.userDiscoveryPolicy !== UserDiscoveryPolicies.None) {\r\n\t\t\t\t\t\tthis.loading = true;\r\n\t\t\t\t\t\tthis.userService.discover(a.id).pipe(finalize(() => { this.loading = false; })).subscribe(discovery => {\r\n\t\t\t\t\t\t\tif (discovery.canBeFound) {\r\n\t\t\t\t\t\t\t\tthis.entityNavigationService.navigate(EntityTypes.User, a.id);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.dialogService.alert(this.transloco.translate('components.event-list.your-subscription-cannot-access-user'), this.transloco.translate('common.no-access'));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.entityNavigationService.navigate(EntityTypes.User, a.id);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase AgentTypes.Application:\r\n\t\t\t\t\tthis.entityNavigationService.navigate(EntityTypes.Application, a.id);\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthis.logger.logWarning(\"AgentType navigation is not implemented\"); // should not happen\r\n\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tnavigateToEntity(e: EventModel): void {\r\n\t\tif (e.entityId !== Config.subscriptionRoot) {\r\n\t\t\tthis.entityNavigationService.navigate(e.entityType, e.entityId);\r\n\t\t}\r\n\t}\r\n}\r\n","<lacm-table [dataSource]=\"dataSource\" matSort matSortActive=\"date\" matSortDirection=\"desc\" disableSearch [disablePagination]=\"disablePagination\" *transloco=\"let t\">\r\n\r\n\t<ng-container matColumnDef=\"date\">\r\n\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.date')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">{{e.date | spaDate:'shortDate'}} {{e.date | spaDate:'mediumTime'}}</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<ng-container matColumnDef=\"operation\">\r\n\t\t<mat-header-cell *matHeaderCellDef>{{t('common.operation')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">\r\n\t\t\t<a [routerLink]=\"[]\" (click)=\"showDetails(e)\">{{e.type | eventType}}</a>\r\n\t\t</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<ng-container matColumnDef=\"entity\">\r\n\t\t<mat-header-cell *matHeaderCellDef>{{t('common.entity')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">\r\n\t\t\t<spa-event-entity-cell [event]=\"e\" [name]=\"e | entityName | async\" (show)=\"navigateToEntity(e)\"></spa-event-entity-cell>\r\n\t\t</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<ng-container matColumnDef=\"agent\">\r\n\t\t<mat-header-cell *matHeaderCellDef>{{t('common.agent')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">\r\n\t\t\t@if (e.agentId) {\r\n\t\t\t\t<a href=\"#\" (click)=\"navigateToAgent(e); false\">{{e.agentId | agent | async}}</a>\r\n\t\t\t}\r\n\t\t</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<ng-container matColumnDef=\"subscription\">\r\n\t\t<mat-header-cell *matHeaderCellDef>{{t('common.subscription')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">{{e.subscriptionId | sub | async}}</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></mat-header-row>\r\n\t<mat-row *matRowDef=\"let row; columns: columnsToDisplay; \"></mat-row>\r\n\r\n</lacm-table>\r\n\r\n<lacm-loading [show]=\"loading\"></lacm-loading>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EventService } from '../../services/event.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { PaginatedSearchService } from '@lacuna/material';\r\nimport { EventModel } from '../../api/events';\r\nimport { Logger } from '../../services/logger.service';\r\n\r\n@Component({\r\n    selector: 'spa-application-actions',\r\n    templateUrl: './application-actions.component.html',\r\n    styleUrls: ['./application-actions.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ApplicationActionsComponent implements OnInit {\r\n\r\n\tdataSource: PaginatedSearchService<EventModel>;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate eventService: EventService,\r\n\t\tprivate logger: Logger\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tlet appId = this.route.parent.snapshot.params['id'];\r\n\t\tthis.logger.logTrace('ApplicationActionsComponent ngOnInit -- appId:', appId);\r\n\t\tthis.dataSource = this.eventService.getServiceForApplicationActions(appId);\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n}\r\n","<spa-box [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('components.application-actions.actions-performed-by-app')}}</span>\r\n\r\n\t<spa-event-list [dataSource]=\"dataSource\" hideAgents></spa-event-list>\r\n\r\n</spa-box>\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, throwError as _throw, Subject, Subscription } from 'rxjs';\r\nimport { ApplicationModel, ApplicationData } from '../api/applications';\r\nimport { PaginatedSearchService, PaginatedSearchResult, PaginatedSearchParams, ObservableSearchService } from '@lacuna/material';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Config } from '../api/configuration';\r\nimport { SpaControlService } from './spa-control.service';\r\nimport { Logger } from './logger.service';\r\nimport { AuthManagementService } from './auth-management.service';\r\nimport { AuthorizationData, RootAuthorizationData } from '../api/authorization';\r\n\r\nconst apiRoute = '/api/applications';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ApplicationService implements OnDestroy, ObservableSearchService, PaginatedSearchService<ApplicationModel> {\r\n\r\n\tprivate $subscriptions: Subscription[] = [];\r\n\tprivate changedSubject: Subject<any> = new Subject<any>();\r\n\r\n\tchanged: Observable<string> = this.changedSubject.asObservable();\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate authManager: AuthManagementService\r\n\t) {\r\n\t\tthis.$subscriptions.push(\r\n\t\t\tthis.spaControl.selectedSubscription.subscribe(() => {\r\n\t\t\t\tthis.logger.logTrace('ApplicationService -- emitting change notification due to subscription change');\r\n\t\t\t\tthis.changedSubject.next(null)\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tlistPaginated(params: PaginatedSearchParams): Observable<PaginatedSearchResult<ApplicationModel>> {\r\n\r\n\t\tif (params.orderBy !== 'name') {\r\n\t\t\treturn _throw(`Ordering field not supported: ${params.orderBy}`)\r\n\t\t}\r\n\r\n\t\treturn this.http.get<PaginatedSearchResult<ApplicationModel>>(apiRoute, {\r\n\t\t\tparams: params.getHttpParams()\r\n\t\t});\r\n\t}\r\n\r\n\tlist(query?: string): Observable<ApplicationModel[]> {\r\n\t\treturn this.http.get<ApplicationModel[]>(`${apiRoute}?q=${query || ''}`);\r\n\t}\r\n\r\n\tget(id: string): Observable<ApplicationModel> {\r\n\t\treturn this.http.get<ApplicationModel>(`${apiRoute}/${id}`);\r\n\t}\r\n\r\n\tcreate(sub: string, data: ApplicationData): Observable<ApplicationModel> {\r\n\r\n\t\tlet headers = {};\r\n\t\theaders[Config.subscriptionHeader] = sub;\r\n\r\n\t\treturn this.http.post<ApplicationModel>(apiRoute, data, {\r\n\t\t\theaders: headers\r\n\t\t}).pipe(\r\n\t\t\ttap(m => {\r\n\t\t\t\tthis.notifyChanged(m.id);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tcheckNameAvailable(sub: string, name: string, id?: string): Observable<boolean> {\r\n\r\n\t\tlet headers = {};\r\n\t\theaders[Config.subscriptionHeader] = sub;\r\n\r\n\t\treturn this.http.get<boolean>(`${apiRoute}/name-availability`, {\r\n\t\t\theaders: headers,\r\n\t\t\tparams: { name: name }\r\n\t\t});\r\n\t}\r\n\r\n\tupdateSubscriptionAccess(sub: string, id: string, data: AuthorizationData | RootAuthorizationData): Observable<any> {\r\n\t\treturn this.authManager.updateSubscriptionRoles(sub, id, data).pipe(\r\n\t\t\ttap(m => {\r\n\t\t\t\tthis.notifyChanged(id);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tdelete(id: string): Observable<any> {\r\n\t\treturn this.http.delete(`${apiRoute}/${id}`).pipe(\r\n\t\t\ttap(m => {\r\n\t\t\t\tthis.notifyChanged(id);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tnotifyChanged(id?: string): void {\r\n\t\tthis.logger.logTrace('ApplicationService -- notifying change', id);\r\n\t\tthis.changedSubject.next(id);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('ApplicationService ngOnDestroy');\r\n\t\tfor (let s of this.$subscriptions) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { tap } from \"rxjs/operators\";\r\nimport { UpdateAgentLockStatusRequest } from \"../api/agents\";\r\nimport { AgentTypes } from \"../api/enums\";\r\nimport { ApplicationService } from \"./application.service\";\r\nimport { UserService } from \"./user.service\";\r\nimport { DialogService } from \"./dialog.service\";\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { MessageService } from \"./message.service\";\r\n\r\nconst apiRoute = '/api/agents';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AgentService {\r\n\r\n\tconstructor(\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate applicationService: ApplicationService,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate messageService: MessageService,\r\n\t) { }\r\n\r\n\tasync confirmAndUpdateLockStatus(args: {\r\n\t\tid: string,\r\n\t\tlock: boolean,\r\n\t\ttype: AgentTypes,\r\n\t\tdialogMessage: string,\r\n\t\tdialogConfirmButtonText: string,\r\n\t\tsuccessMessage: string,\r\n\t}) {\r\n\t\tlet confirm = await this.dialogService.confirmWithReason({\r\n\t\t\tmessage: args.dialogMessage,\r\n\t\t\tconfirmButtonText: args.dialogConfirmButtonText,\r\n\t\t\treasonMaxLength: 500,\r\n\t\t});\r\n\r\n\t\tif (!confirm || !confirm.dialogResult) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet request: UpdateAgentLockStatusRequest = {\r\n\t\t\tlock: args.lock,\r\n\t\t\tdescription: confirm.reason,\r\n\t\t};\r\n\r\n\t\tawait firstValueFrom(this.updateLockStatus(args.id, request, args.type));\r\n\r\n\t\tthis.messageService.showSuccess(args.successMessage);\r\n\t}\r\n\r\n\tupdateLockStatus(id: string, request: UpdateAgentLockStatusRequest, type: AgentTypes) {\r\n\t\treturn this.http.put<void>(`${apiRoute}/${id}/lock-status`, request).pipe(\r\n\t\t\ttap(_ => {\r\n\t\t\t\tswitch (type) {\r\n\t\t\t\t\tcase AgentTypes.Application:\r\n\t\t\t\t\t\tthis.applicationService.notifyChanged(id)\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase AgentTypes.User:\r\n\t\t\t\t\t\tthis.userService.notifyChanged(id);\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { ApplicationService } from '../../services/application.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Subscription ,  merge ,  Observable } from 'rxjs';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { ApplicationModel } from '../../api/applications';\r\nimport { AgentTypes, Permissions } from '../../api/enums';\r\nimport { Config } from '../../api/configuration';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { UpdateAgentLockStatusRequest } from '../../api/agents';\r\nimport { AgentService } from '../../services/agent.service';\r\n\r\n@Component({\r\n    selector: 'spa-application-detail',\r\n    templateUrl: './application-detail.component.html',\r\n    styleUrls: ['./application-detail.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ApplicationDetailComponent implements OnInit, OnDestroy {\r\n\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tloading: boolean = true;\r\n\tsaving: boolean = false;\r\n\tmodel: ApplicationModel;\r\n\tcanManage$: Observable<boolean>;\r\n\tcanViewEvents$: Observable<boolean>;\r\n\tcanViewActions$: Observable<boolean>;\r\n\r\n\tdeletionRequested: boolean;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate appService: ApplicationService,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\tprivate agentService: AgentService,\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('ApplicationDetailComponent ngOnInit');\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tmerge(this.route.paramMap, this.appService.changed).subscribe(() => this.load())\r\n\t\t);\r\n\t\tthis.canManage$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ManageAgents);\r\n\t\tthis.canViewEvents$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ViewAgentEvents);\r\n\t\tthis.canViewActions$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ViewAgentActions);\r\n\t}\r\n\r\n\tisRootSubscription(sub: string): boolean {\r\n\t\treturn sub === Config.subscriptionRoot;\r\n\t}\r\n\r\n\tload() {\r\n\t\tif (this.deletionRequested) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet appId = this.route.snapshot.params['id'];\r\n\t\tthis.logger.logTrace(`ApplicationDetailComponent -- loading application ${appId}`);\r\n\t\tthis.loading = true;\r\n\t\tthis.appService.get(appId).subscribe(app => {\r\n\t\t\tthis.model = app;\r\n\t\t\tthis.loading = false;\r\n\t\t});\r\n\t}\r\n\r\n\tdelete() {\r\n\t\tthis.dialogService.confirm(this.transloco.translate('components.application-detail.confirm-app-deletion', { value: this.model.name })).then(confirmed => {\r\n\t\t\tif (confirmed) {\r\n\t\t\t\tthis.saving = true;\r\n\t\t\t\tthis.deletionRequested = true;\r\n\t\t\t\tthis.appService.delete(this.model.id).subscribe(() => {\r\n\t\t\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.application-detail.app-deleted-successfully'));\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t}, err => {\r\n\t\t\t\t\tthis.saving = false;\r\n\t\t\t\t\tthis.deletionRequested = false;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n\r\n\tasync lock() {\r\n\t\tawait this.agentService.confirmAndUpdateLockStatus({\r\n\t\t\tid: this.model.id,\r\n\t\t\tlock: true,\r\n\t\t\ttype: AgentTypes.Application,\r\n\t\t\tdialogMessage: this.transloco.translate('components.application-detail.confirm-lock'),\r\n\t\t\tdialogConfirmButtonText: this.transloco.translate('common.lock'),\r\n\t\t\tsuccessMessage: this.transloco.translate('components.application-detail.successfully-locked'),\r\n\t\t});\r\n\t}\r\n\r\n\tasync unlock() {\r\n\t\tawait this.agentService.confirmAndUpdateLockStatus({\r\n\t\t\tid: this.model.id,\r\n\t\t\tlock: false,\r\n\t\t\ttype: AgentTypes.Application,\r\n\t\t\tdialogMessage: this.transloco.translate('components.application-detail.confirm-unlock'),\r\n\t\t\tdialogConfirmButtonText: this.transloco.translate('common.unlock'),\r\n\t\t\tsuccessMessage: this.transloco.translate('components.application-detail.successfully-unlocked'),\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('ApplicationDetailComponent ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<spa-box [loading]=\"loading || saving\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t@if (!loading) {\r\n\t\t<span box-title>{{model.name}}</span>\r\n\t}\r\n\r\n\t<div box-commands>\r\n\t\t<button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"delete()\" [disabled]=\"!(canManage$ | async)\">{{t('common.delete')}}</button>\r\n\t\t@if (model && !model.isLocked) {\r\n\t\t\t<button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"lock()\" [disabled]=\"!(canManage$ | async)\">{{t('common.lock')}}</button>\r\n\t\t}\r\n\t\t@if (model && model.isLocked) {\r\n\t\t\t<button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"unlock()\" [disabled]=\"!(canManage$ | async)\">{{t('common.unlock')}}</button>\r\n\t\t}\r\n\t\t<button mat-stroked-button color=\"primary\" type=\"button\" routerLink=\"edit\" [disabled]=\"!(canManage$ | async)\">{{t('common.edit')}}</button>\r\n\t\t@if (canViewEvents$ | async) {\r\n\t\t\t<button mat-stroked-button color=\"primary\" type=\"button\" routerLink=\"events\">{{t('common.events')}}</button>\r\n\t\t}\r\n\t\t@if (canViewActions$ | async) {\r\n\t\t\t<button mat-stroked-button color=\"primary\" type=\"button\" routerLink=\"actions\">{{t('common.actions')}}</button>\r\n\t\t}\r\n\t\t<button mat-stroked-button color=\"primary\" type=\"button\" routerLink=\"keys\">{{t('common.keys')}}</button>\r\n\t</div>\r\n\r\n\t@if (!loading) {\r\n\t\t<div class=\"row pt-4\">\r\n\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t<spa-prop label=\"{{t('common.name')}}\">\r\n\t\t\t\t\t<div class=\"d-flex flex-column\">\r\n\t\t\t\t\t\t<span>{{model.name}}</span>\r\n\t\t\t\t\t\t@if (model.isLocked) {\r\n\t\t\t\t\t\t\t<span class=\"agent-locked\">{{t('common.application-locked')}}</span>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</spa-prop>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t<spa-prop label=\"{{t('common.subscription')}}\">{{model.subscriptionId | sub | async}}</spa-prop>\r\n\t\t\t</div>\r\n\t\t\t@if (model.grantAppId) {\r\n\t\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t\t<spa-prop label=\"{{t('common.grant-app-id')}}\">{{model.grantAppId}}</spa-prop>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t<spa-prop label=\"{{t('common.roles')}}\">\r\n\t\t\t\t\t@if (model.subscriptions.length === 1 && model.subscriptions[0].subscriptionId === model.subscriptionId) {\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t{{ model.subscriptions[0].roles | roles}}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@if (isRootSubscription(model.subscriptionId)) {\r\n\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t{{ model.rootRoles | roles}}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@if (model.subscriptions.length > 1 || (model.subscriptions.length === 1 && model.subscriptions[0].subscriptionId !== model.subscriptionId)) {\r\n\t\t\t\t\t\t<div> <!--should not happen, but we are prepared for this case-->\r\n\t\t\t\t\t\t\t@if (model.rootRoles.length > 0) {\r\n\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t<b>Admin</b>: {{model.rootRoles | roles}}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@for (sa of model.subscriptions; track sa) {\r\n\t\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t\t<b>{{ sa.subscriptionId | sub | async}}</b>: {{sa | roles}}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</spa-prop>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { ApplicationModel } from '../../api/applications';\r\nimport { UntypedFormGroup, UntypedFormBuilder, UntypedFormArray, AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { ApplicationService } from '../../services/application.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { CanComponentDeactivate } from '../../guards/can-deactivate.guard';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Config } from '../../api/configuration';\r\nimport { LIST_OF_ROLES } from '../../classes/injection-tokens';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-application-edit',\r\n    templateUrl: './application-edit.component.html',\r\n    styleUrls: ['./application-edit.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ApplicationEditComponent implements OnInit, OnDestroy, CanComponentDeactivate {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tform: UntypedFormGroup;\r\n\tmodel: ApplicationModel;\r\n\tsaving: boolean = false;\r\n\tloading: boolean = true;\r\n\tclosing: boolean = false;\r\n\trootSubSelected: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate appService: ApplicationService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\t@Inject(LIST_OF_ROLES) private listOfRoles: string[]\r\n\t) {\r\n\t\tthis.createForm();\r\n\t}\r\n\r\n\tget roles(): UntypedFormArray {\r\n\t\treturn this.form.get('roles') as UntypedFormArray;\r\n\t}\r\n\r\n\tgetModelRoles(): string[] {\r\n\r\n\t\tif (this.rootSubSelected) {\r\n\t\t\treturn this.model.rootRoles;\r\n\t\t} else {\r\n\t\t\tlet sa = this.model.subscriptions.filter(s => s.subscriptionId === this.model.subscriptionId)[0];\r\n\t\t\treturn sa.roles;\r\n\t\t}\r\n\t}\r\n\r\n\tclearRoles() {\r\n\t\twhile (this.roles.controls.length > 0) {\r\n\t\t\tthis.roles.removeAt(0);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate validateRoles = (control: AbstractControl): ValidationErrors | null => {\r\n\t\tlet array = control as UntypedFormArray;\r\n\r\n\t\tif (array && !array.value.some(r => r.enabled)) {\r\n\t\t\treturn {\r\n\t\t\t\t'selectRole': true\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t};\r\n\r\n\tcreateForm() {\r\n\t\tlet roleOptions = this.listOfRoles.map(r => { return this.fb.group({ role: r, enabled: false }) });\r\n\r\n\t\tthis.form = this.fb.group({\r\n\t\t\troles: this.fb.array(roleOptions, this.validateRoles),\r\n\t\t\tgrantAppId: ['']\r\n\t\t});\r\n\t}\r\n\r\n\trebuildForm() {\r\n\t\tlet roleOptions = this.spaControl.getSubscriptionRoles(this.model.subscriptionId).map(r => { return { role: r, enabled: this.getModelRoles().some(a => a === r) } });\r\n\t\tthis.clearRoles();\r\n\t\tfor (let roleOption of roleOptions) {\r\n\t\t\tthis.roles.push(this.fb.group(roleOption));\r\n\t\t}\r\n\r\n\t\tthis.form.patchValue({\r\n\t\t\tgrantAppId: this.model.grantAppId\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('ApplicationEditComponent ngOnInit');\r\n\t\tthis.route.parent.paramMap.subscribe(paramMap => {\r\n\t\t\tlet appId = paramMap.get('id');\r\n\t\t\tthis.logger.logTrace('Application id:', appId);\r\n\t\t\tthis.loading = true;\r\n\t\t\tthis.appService.get(appId).subscribe(app => {\r\n\t\t\t\tthis.model = app;\r\n\t\t\t\tthis.rootSubSelected = this.model.subscriptionId === Config.subscriptionRoot;\r\n\t\t\t\tthis.rebuildForm();\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tgetErrorMessage(formControlName: string) {\r\n\r\n\t\tlet formControl = this.form.get(formControlName);\r\n\r\n\t\treturn this.transloco.translate('errors.field-invalid'); // should not happen\r\n\t}\r\n\r\n\tonSubmit() {\r\n\r\n\t\tif (!this.form.valid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet formModel = this.form.value;\r\n        let roles = formModel.roles.filter(ro => ro.enabled).map(ro => ro.role);\r\n        let data = {\r\n            roles: roles\r\n\t\t}\r\n\r\n\t\tif (this.rootSubSelected) {\r\n\t\t\tdata['grantAppId'] = formModel.grantAppId || null;\r\n\t\t}\r\n\r\n\t\tthis.saving = true;\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.appService.updateSubscriptionAccess(this.model.subscriptionId, this.model.id, data).subscribe(() => {\r\n\t\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.application-edit.app-updated-successfully'));\r\n\t\t\t\tthis.closing = true;\r\n\t\t\t\tthis.close();\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.saving = false;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tcanDeactivate() {\r\n\t\tthis.logger.logTrace('ApplicationEditComponent canDeactivate');\r\n\t\tif (!this.closing) {\r\n\t\t\tif (this.saving) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('common.continue-in-background'));\r\n\t\t\t} else if (this.form.dirty) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('components.application-edit.discard-app-changes', { value: this.model.name }));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tdiscard() {\r\n\t\tthis.dialogService.confirm(this.transloco.translate('components.application-edit.discard-app-changes', { value: this.model.name })).then(result => {\r\n\t\t\tif (result) {\r\n\t\t\t\tthis.rebuildForm();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('ApplicationEditComponent ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n}\r\n","<spa-box [loading]=\"loading || saving\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('common.edit')}}</span>\r\n\r\n\t<div box-commands>\r\n\t\t<button mat-stroked-button color=\"primary\" type=\"submit\" (click)=\"onSubmit()\" [disabled]=\"form.pristine\">{{t('common.save')}}</button>\r\n\t\t<button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"discard()\" [disabled]=\"form.pristine\">{{t('common.undo')}}</button>\r\n\t</div>\r\n\r\n\t<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n\t\t<div class=\"row\">\r\n\t\t\t<div class=\"col\">\r\n\t\t\t\t<div formArrayName=\"roles\">\r\n\t\t\t\t\t@if (form.get('roles').invalid) {\r\n\t\t\t\t\t\t<mat-error>{{getErrorMessage('roles')}}</mat-error>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@for (r of roles.controls; track r.value; let i = $index) {\r\n\t\t\t\t\t\t<div [formGroupName]=\"i\">\r\n\t\t\t\t\t\t\t<mat-checkbox color=\"primary\" formControlName=\"enabled\">{{r.value.role | roles}}</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t@if (rootSubSelected) {\r\n\t\t\t\t<div class=\"col\">\r\n\t\t\t\t\t<mat-form-field class=\"w-100\">\r\n\t\t\t\t\t\t<mat-label>{{t('common.grant-app-id')}}</mat-label>\r\n\t\t\t\t\t\t<input matInput formControlName=\"grantAppId\">\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</form>\r\n\r\n</spa-box>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EventService } from '../../services/event.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { SearchService } from '@lacuna/material';\r\nimport { EventModel } from '../../api/events';\r\nimport { Logger } from '../../services/logger.service';\r\n\r\n@Component({\r\n    selector: 'spa-application-events',\r\n    templateUrl: './application-events.component.html',\r\n    styleUrls: ['./application-events.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ApplicationEventsComponent implements OnInit {\r\n\r\n\tdataSource: SearchService<EventModel>;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate eventService: EventService,\r\n\t\tprivate logger: Logger\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tlet appId = this.route.parent.snapshot.params['id'];\r\n\t\tthis.logger.logTrace('ApplicationEventsComponent ngOnInit -- appId:', appId);\r\n\t\tthis.dataSource = this.eventService.getServiceForApplicationEvents(appId);\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n}\r\n","<spa-box [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('components.application-events.events-performed-on-app')}}</span>\r\n\r\n\t<spa-event-list [dataSource]=\"dataSource\" hideEntities></spa-event-list>\r\n\r\n</spa-box>\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ApplicationKeyModel, CreateApplicationApiKeyRequest, CreateApplicationApiKeyResponse } from '../api/app-keys';\r\nimport { Observable ,  of ,  Subject } from 'rxjs';\r\nimport { tap } from 'rxjs/operators';\r\nimport { SearchService, ObservableSearchService } from '@lacuna/material';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ApplicationKeyServiceFactory {\r\n\r\n\tprivate services: {\r\n\t\t[appId: string]: ApplicationKeyService;\r\n\t} = {};\r\n\r\n\tconstructor(private http: HttpClient) {\r\n\t}\r\n\r\n\tgetService(appId: string) {\r\n\t\tlet service = this.services[appId];\r\n\t\tif (!service) {\r\n\t\t\tservice = new ApplicationKeyService(appId, this.http);\r\n\t\t\tthis.services[appId] = service;\r\n\t\t}\r\n\t\treturn service;\r\n\t}\r\n}\r\n\r\nexport class ApplicationKeyService implements SearchService<ApplicationKeyModel>, ObservableSearchService {\r\n\r\n\tprivate changedSubject: Subject<any> = new Subject<any>();\r\n\tchanged: Observable<string> = this.changedSubject.asObservable();\r\n\r\n\tconstructor(private appId: string, private http: HttpClient) {\r\n\t}\r\n\r\n\tlist(): Observable<ApplicationKeyModel[]> {\r\n\t\tif (!this.appId) {\r\n\t\t\treturn of([]);\r\n\t\t}\r\n\t\treturn this.http.get<ApplicationKeyModel[]>(`/api/applications/${this.appId}/keys`);\r\n\t}\r\n\r\n\tcreateApiKey(request: CreateApplicationApiKeyRequest): Observable<CreateApplicationApiKeyResponse> {\r\n\t\treturn this.http.post<CreateApplicationApiKeyResponse>(`/api/applications/${this.appId}/api-keys`, request).pipe(\r\n\t\t\ttap((r) => this.changedSubject.next(r.info.id))\r\n\t\t);\r\n\t}\r\n\r\n\tdelete(id: string): Observable<any> {\r\n\t\treturn this.http.delete<ApplicationKeyModel[]>(`/api/app-keys/${id}`).pipe(\r\n\t\t\ttap(() => this.changedSubject.next(id))\r\n\t\t);\r\n\t}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { CreateApplicationApiKeyRequest } from '../../api/app-keys';\r\nimport { ApplicationKeyServiceFactory } from '../../services/application-key.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-application-key-create',\r\n    templateUrl: './application-key-create.component.html',\r\n    styleUrls: ['./application-key-create.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ApplicationKeyCreateComponent implements OnInit {\r\n\r\n\tform: UntypedFormGroup;\r\n\tsaving: boolean = false;\r\n\tclosing: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate appKeyServiceFactory: ApplicationKeyServiceFactory,\r\n\t\tprivate router: Router,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate transloco: TranslocoService\r\n\t) {\r\n\t\tthis.createForm();\r\n\t}\r\n\r\n\tcreateForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tdescription: ['', Validators.required],\r\n\t\t\texpiresOn: ['', Validators.required]\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('ApplicationKeyCreateComponent ngOnInit');\r\n\t}\r\n\r\n\tonSubmit() {\r\n\r\n\t\tthis.logger.logTrace('ApplicationKeyCreateComponent onSubmit');\r\n\r\n\t\tif (!this.form.valid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet formModel = this.form.value;\r\n\t\tlet request: CreateApplicationApiKeyRequest = {\r\n\t\t\tdescription: formModel.description as string,\r\n\t\t\texpiresOn: null\r\n\t\t};\r\n\r\n\t\tif (formModel.expiresOn === '1' || formModel.expiresOn === '2') {\r\n\t\t\tlet d = new Date();\r\n\t\t\td.setFullYear(d.getFullYear() + parseInt(formModel.expiresOn));\r\n\t\t\trequest.expiresOn = d;\r\n\t\t}\r\n\r\n\t\tthis.saving = true;\r\n\r\n\t\tlet appId = this.route.parent.parent.snapshot.params['id'];\r\n\t\tthis.appKeyServiceFactory.getService(appId).createApiKey(request).subscribe(r => {\r\n\r\n\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.application-key-create.app-key-created-successfully'));\r\n\r\n\t\t\tthis.dialogService.showValue(r.key, {\r\n\t\t\t\ttitle: this.transloco.translate('components.application-key-create.key-created'),\r\n\t\t\t\tmessage: this.transloco.translate('components.application-key-create.copy-key-and-store'),\r\n\t\t\t\tfooter: this.transloco.translate('components.application-key-create.you-wont-view-value-again')\r\n\t\t\t});\r\n\r\n\t\t\tthis.closing = true;\r\n\t\t\tthis.close();\r\n\t\t\t\r\n\t\t}, err => {\r\n\t\t\tthis.saving = false;\r\n\t\t});\r\n\t}\r\n\r\n\tcanDeactivate() {\r\n\t\tthis.logger.logTrace('ApplicationKeyCreateComponent canDeactivate');\r\n\t\tif (!this.closing) {\r\n\t\t\tif (this.saving) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('common.continue-in-background'));\r\n\t\t\t} else if (this.form.dirty) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('components.application-key-create.discard-key-creation'));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n\r\n\tgetErrorMessage(formControlName: string) {\r\n\r\n\t\tlet formControl = this.form.get(formControlName);\r\n\r\n\t\tswitch (formControlName) {\r\n\r\n\t\t\tcase 'description':\r\n\t\t\t\treturn formControl.hasError('required') ? this.transloco.translate('errors.field-required') :\r\n\t\t\t\t\t'';\r\n\t\t}\r\n\r\n\t\treturn this.transloco.translate('errors.field-invalid'); // should not happen\r\n\t}\r\n}\r\n","<spa-box [loading]=\"saving\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('components.application-key-create.new-app-key')}}</span>\r\n\r\n\t<form [formGroup]=\"form\" class=\"row\">\r\n\t\t<mat-form-field class=\"col-4\">\r\n\t\t\t<mat-label>{{t('common.description')}}</mat-label>\r\n\t\t\t<input matInput formControlName=\"description\">\r\n\t\t\t<mat-error>{{getErrorMessage('description')}}</mat-error>\r\n\t\t</mat-form-field>\r\n\t\t<mat-form-field class=\"col-4\">\r\n\t\t\t<mat-label>{{t('components.application-key-create.expiration')}}</mat-label>\r\n\t\t\t<mat-select formControlName=\"expiresOn\">\r\n\t\t\t\t<mat-option value=\"1\">{{t('components.application-key-create.in-1-year')}}</mat-option>\r\n\t\t\t\t<mat-option value=\"2\">{{t('components.application-key-create.in-2-years')}}</mat-option>\r\n\t\t\t\t<mat-option value=\"n\">{{t('components.application-key-create.never-expires')}}</mat-option>\r\n\t\t\t</mat-select>\r\n\t\t\t<mat-error>{{getErrorMessage('expiresOn')}}</mat-error>\r\n\t\t</mat-form-field>\r\n\t\t<div class=\"col-4\">\r\n\t\t\t<spa-submit-button [form]=\"form\" (submit)=\"onSubmit()\">\r\n\t\t\t\t{{t('common.create')}}\r\n\t\t\t</spa-submit-button>\r\n\t\t</div>\r\n\t</form>\r\n\r\n</spa-box>\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { ApplicationKeyService, ApplicationKeyServiceFactory } from '../../services/application-key.service';\r\nimport { ApplicationKeyModel } from '../../api/app-keys';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Observable } from 'rxjs';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Permissions } from '../../api/enums';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-application-keys',\r\n    templateUrl: './application-keys.component.html',\r\n    styleUrls: ['./application-keys.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ApplicationKeysComponent implements OnInit {\r\n\tpublic appKeyService: ApplicationKeyService;\r\n\r\n\tsaving: boolean = false;\r\n\tcolumnsToDisplay = [\"description\", \"expiresOn\", \"actions\"];\r\n\tcanManage$: Observable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate appKeyServiceFactory: ApplicationKeyServiceFactory,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate transloco: TranslocoService\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('ApplicationKeysComponent ngOnInit');\r\n\t\tthis.route.parent.paramMap.subscribe(paramMap => {\r\n\t\t\tthis.appKeyService = this.appKeyServiceFactory.getService(paramMap.get('id'));\r\n\t\t});\r\n\t\tthis.canManage$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ManageAgents);\r\n\t}\r\n\r\n\tdelete(key: ApplicationKeyModel) {\r\n\t\tthis.dialogService.confirm(this.transloco.translate('components.application-keys.confirm-key-deletion', { value: key.description })).then(confirmed => {\r\n\t\t\tif (confirmed) {\r\n\t\t\t\tthis.saving = true;\r\n\t\t\t\tthis.appKeyService.delete(key.id).subscribe(() => {\r\n\t\t\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.application-keys.key-deleted-successfully'));\r\n\t\t\t\t\tthis.saving = false;\r\n\t\t\t\t}, err => {\r\n\t\t\t\t\tthis.saving = false;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n}\r\n","<spa-box [loading]=\"saving\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('common.keys')}}</span>\r\n\r\n\t<div box-commands>\r\n\t\t<button mat-stroked-button color=\"primary\" type=\"button\" routerLink=\"new\" [disabled]=\"!(canManage$ | async)\">{{t('common.add')}}</button>\r\n\t</div>\r\n\r\n\t<lacm-table [dataSource]=\"appKeyService\" matSort matSortActive=\"description\" disablePagination>\r\n\r\n\t\t<ng-container matColumnDef=\"description\">\r\n\t\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.description')}}</mat-header-cell>\r\n\t\t\t<mat-cell *matCellDef=\"let e\">{{e.description}}</mat-cell>\r\n\t\t</ng-container>\r\n\r\n\t\t<ng-container matColumnDef=\"expiresOn\">\r\n\t\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('components.application-keys.expires-in')}}</mat-header-cell>\r\n\t\t\t<mat-cell *matCellDef=\"let e\">{{e.expiresOn | date}}</mat-cell>\r\n\t\t</ng-container>\r\n\r\n\t\t<ng-container matColumnDef=\"actions\">\r\n\t\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.actions')}}</mat-header-cell>\r\n\t\t\t<mat-cell *matCellDef=\"let e\"><button type=\"button\" (click)=\"delete(e)\" [disabled]=\"!(canManage$ | async)\" mat-stroked-button color=\"warn\">{{t('common.delete')}}</button></mat-cell>\r\n\t\t</ng-container>\r\n\r\n\t</lacm-table>\r\n\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Component } from '@angular/core';\r\nimport { ApplicationService } from '../../services/application.service';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { Config } from '../../api/configuration';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-application-list',\r\n    templateUrl: './application-list.component.html',\r\n    styleUrls: ['./application-list.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ApplicationListComponent {\r\n\r\n\tcolumnsToDisplay$: Observable<string[]>;\r\n\r\n\tconstructor(\r\n\t\tpublic appService: ApplicationService,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate transloco: TranslocoService\r\n\t) {\r\n\t\tthis.columnsToDisplay$ = this.spaControl.allSubscriptionsSelected.pipe(\r\n\t\t\tmap(allSubs => allSubs ? ['name', 'access', 'subscription'] : ['name', 'access'])\r\n\t\t);\r\n\t}\r\n\r\n\tisRootSubscription(sub: string): boolean {\r\n\t\treturn sub === Config.subscriptionRoot;\r\n\t}\r\n\r\n}\r\n","<lacm-table [dataSource]=\"appService\" matSort matSortActive=\"name\" *transloco=\"let t\">\r\n\r\n\t<ng-container matColumnDef=\"name\">\r\n\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.name')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">\r\n\t\t\t@if (!e.isLocked) {\r\n\t\t\t\t<a [routerLink]=\"e.id\">{{e.name}}</a>\r\n\t\t\t}\r\n\t\t\t@if (e.isLocked) {\r\n\t\t\t\t<a [routerLink]=\"e.id\" class=\"d-flex align-items-center agent-locked\"\r\n\t\t\t\t\t[matTooltip]=\"t('common.application-locked')\">\r\n\t\t\t\t\t<mat-icon class=\"mr-2\">lock</mat-icon>\r\n\t\t\t\t\t{{e.name}}\r\n\t\t\t\t</a>\r\n\t\t\t}\r\n\t\t</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<ng-container matColumnDef=\"access\">\r\n\t\t<mat-header-cell *matHeaderCellDef>{{t('common.roles')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">\r\n\t\t\t@if ((e.subscriptions.length === 1 && e.subscriptions[0].subscriptionId === e.subscriptionId) || isRootSubscription(e.subscriptionId)) {\r\n\t\t\t\t<td>{{ (isRootSubscription(e.subscriptionId) ? e.rootRoles : e.subscriptions[0].roles) | roles}}</td>\r\n\t\t\t}\r\n\t\t\t@if (e.subscriptions.length > 1 || e.subscriptions.length === 1 && e.subscriptions[0].subscriptionId !== e.subscriptionId) {\r\n\t\t\t\t<td>\r\n\t\t\t\t\t@if (e.rootRoles.length > 0) {\r\n\t\t\t\t\t\t<p>\r\n\t\t\t\t\t\t\tAdmin: {{e.rootRoles | roles}}\r\n\t\t\t\t\t\t</p>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@for (sa of e.subscriptions; track sa) {\r\n\t\t\t\t\t\t<p>\r\n\t\t\t\t\t\t\t{{ sa.subscriptionId | sub | async}}: {{sa | roles}}\r\n\t\t\t\t\t\t</p>\r\n\t\t\t\t\t}\r\n\t\t\t\t</td>\r\n\t\t\t}\r\n\t\t</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<ng-container matColumnDef=\"subscription\">\r\n\t\t<mat-header-cell *matHeaderCellDef>{{t('common.subscription')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">{{e.subscriptionId | sub | async}}</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<mat-header-row *matHeaderRowDef=\"columnsToDisplay$ | async\"></mat-header-row>\r\n\t<mat-row *matRowDef=\"let row; columns: columnsToDisplay$ | async; \"></mat-row>\r\n\r\n</lacm-table>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { Permissions } from '../../api/enums';\r\n\r\n@Component({\r\n    selector: 'spa-applications',\r\n    templateUrl: './applications.component.html',\r\n    styleUrls: ['./applications.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ApplicationsComponent implements OnInit {\r\n\r\n\tcanManage$: Observable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService\r\n\t) {\r\n\t\tthis.canManage$ = spaControl.userHasPermissionOnSelectedSubscription(Permissions.ManageAgents);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('ApplicationsComponent ngOnInit');\r\n\t}\r\n}\r\n","<spa-box [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('common.applications')}}</span>\r\n\r\n\t<div box-commands>\r\n\t\t<button mat-stroked-button color=\"primary\" routerLink=\"new\" [disabled]=\"!(canManage$ | async)\">{{t('common.add')}}</button>\r\n\t</div>\r\n\r\n\t<spa-application-list></spa-application-list>\r\n\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-close-button',\r\n    templateUrl: './close-button.component.html',\r\n    styleUrls: ['./close-button.component.scss'],\r\n    standalone: false\r\n})\r\nexport class CloseButtonComponent implements OnInit {\r\n\r\n\t//@Output()\r\n\t//click: EventEmitter<any> = new EventEmitter();\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tclose() {\r\n\t\t//this.click.emit(null);\r\n\t}\r\n}\r\n","<button mat-mini-fab class=\"right\" (click)=\"close()\" color=\"primary\">\r\n\t<mat-icon aria-label=\"close\">close</mat-icon>\r\n</button>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { EventService } from '../../services/event.service';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Observable } from 'rxjs';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\n@Component({\r\n    selector: 'spa-events',\r\n    templateUrl: './events.component.html',\r\n    styleUrls: ['./events.component.scss'],\r\n    standalone: false\r\n})\r\nexport class EventsComponent implements OnInit {\r\n\r\n\tshowSubs$: Observable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tpublic eventService: EventService,\r\n\t\tprivate spaControl: SpaControlService\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.showSubs$ = this.spaControl.allSubscriptionsSelected;\r\n\t}\r\n}\r\n","<spa-box [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('common.events')}}</span>\r\n\r\n\t<spa-event-list [dataSource]=\"eventService\" [showSubscriptions]=\"showSubs$ | async\"></spa-event-list>\r\n\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { InviteModel, InviteData, InviteAuthorizationData, CreateInviteResponse } from '../api/invites';\r\nimport { Observable ,  Subscription ,  Subject ,  of } from 'rxjs';\r\nimport { Logger } from './logger.service';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { SpaControlService } from './spa-control.service';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Config } from '../api/configuration';\r\nimport { ObservableSearchService, SearchService } from '@lacuna/material';\r\n\r\nconst apiRoute = '/api/invites';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class InviteService implements OnDestroy, ObservableSearchService, SearchService<InviteModel> {\r\n\r\n\tprivate $subscriptions: Subscription[] = [];\r\n\tprivate changedSubject: Subject<string> = new Subject<string>();\r\n\tprivate cache: InviteModel[] = [];\r\n\r\n\tchanged: Observable<string> = this.changedSubject.asObservable();\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate spaControl: SpaControlService\r\n\t) {\r\n\t\tthis.$subscriptions.push(\r\n\t\t\tthis.spaControl.selectedSubscription.subscribe(() => {\r\n\t\t\t\tthis.logger.logTrace('InviteService -- emitting change notification due to subscription change');\r\n\t\t\t\tthis.changedSubject.next(null)\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tlist(): Observable<InviteModel[]> {\r\n\t\treturn this.http.get<InviteModel[]>(apiRoute)\r\n\t\t\t.pipe(tap(r => { this.cache = r; }));\r\n\t}\r\n\r\n\tget(id: string): Observable<InviteModel> {\r\n\r\n\t\tlet cached = this.cache.filter(a => a.id === id)[0];\r\n\t\tif (cached) {\r\n\t\t\treturn of(cached);\r\n\t\t}\r\n\r\n\t\treturn this.http.get<InviteModel>(`${apiRoute}/${id}`);\r\n\t}\r\n\r\n\tgetClaimCode(id: string): Observable<string> {\r\n\t\treturn this.http.get<string>(`${apiRoute}/${id}/claim-code`);\r\n\t}\r\n\r\n\tcreate(sub: string, emailAddress: string, inviteData: InviteAuthorizationData): Observable<CreateInviteResponse> {\r\n\t\treturn this.http.post<CreateInviteResponse>(apiRoute,\r\n\t\t\t{\r\n\t\t\t\temailAddress: emailAddress,\r\n\t\t\t\tinviteAuthorizationData: inviteData\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\theaders: new HttpHeaders().set(Config.subscriptionHeader, sub)\r\n\t\t\t}\r\n\t\t).pipe(tap(m => {\r\n\t\t\tthis.cache.push(m.invite);\r\n\t\t\tthis.notifyChanged(m.invite.id);\r\n\t\t}));\r\n\t}\r\n\r\n\tresend(id: string): Observable<any> {\r\n\t\treturn this.http.post<any>(`${apiRoute}/${id}/email`, null);\r\n\t}\r\n\r\n\tupdate(id: string, data: InviteData): Observable<InviteModel> {\r\n\t\treturn this.http.put<InviteModel>(`${apiRoute}/${id}`, data)\r\n\t\t\t.pipe(tap(m => {\r\n\t\t\t\t// Remove item from cache\r\n\t\t\t\tthis.cache = this.cache.filter(i => i.id !== id);\r\n\t\t\t\t// Add updated item to cache\r\n\t\t\t\tthis.cache.push(m);\r\n\t\t\t\tthis.notifyChanged(id);\r\n\t\t\t}));\r\n\t}\r\n\r\n\tdelete(id: string): Observable<any> {\r\n\t\treturn this.http.delete(`${apiRoute}/${id}`).pipe(\r\n\t\t\ttap(m => {\r\n\t\t\t\t// clear cache (easier)\r\n\t\t\t\tthis.cache = [];\r\n\t\t\t\tthis.notifyChanged(id);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tnotifyChanged(id?: string): void {\r\n\t\tthis.logger.logTrace('InviteService -- notifying change', id);\r\n\t\tthis.changedSubject.next(id);\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('InviteService ngOnDestroy');\r\n\t\tfor (let s of this.$subscriptions) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { InviteModel } from '../../api/invites';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { InviteService } from '../../services/invite.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Observable, Subscription, merge } from 'rxjs';\r\nimport { finalize } from 'rxjs/operators';\r\nimport { Config } from '../../api/configuration';\r\nimport { Permissions } from '../../api/enums';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-invite-detail',\r\n    templateUrl: './invite-detail.component.html',\r\n    styleUrls: ['./invite-detail.component.scss'],\r\n    standalone: false\r\n})\r\nexport class InviteDetailComponent implements OnInit, OnDestroy {\r\n\r\n\tprivate $subscriptions: Subscription[] = [];\r\n\r\n\tloading: boolean = true;\r\n\tloadingClaimCode: boolean = false;\r\n\tresending: boolean = false;\r\n\temailEnabled = Config.emailEnabled;\r\n\tsaving: boolean = false;\r\n\tmodel: InviteModel;\r\n\tcanManage$: Observable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate inviteService: InviteService,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('InviteDetailComponent ngOnInit');\r\n\t\tthis.$subscriptions.push(\r\n\t\t\tmerge(this.route.paramMap, this.inviteService.changed).subscribe(() => this.load())\r\n\t\t);\r\n\t\tthis.canManage$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ManageAgents);\r\n\t}\r\n\r\n\tload() {\r\n\t\tlet inviteId = this.route.snapshot.params['inviteId'];\r\n\t\tthis.logger.logTrace(`InviteDetailComponent -- loading invite ${inviteId}`);\r\n\t\tthis.loading = true;\r\n\t\tthis.inviteService.get(inviteId).subscribe(invite => {\r\n\t\t\tthis.model = invite;\r\n\t\t\tthis.loading = false;\r\n\t\t});\r\n\t}\r\n\r\n\tresend() {\r\n\t\tthis.resending = true;\r\n\t\tthis.inviteService.resend(this.model.id).pipe(\r\n\t\t\tfinalize(() => { this.resending = false; })\r\n\t\t).subscribe(() => {\r\n\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.invite-detail.invite-email-resent', { value: this.model.emailAddress }));\r\n\t\t});\r\n\t}\r\n\r\n\tgetClaimCode() {\r\n\t\tthis.loadingClaimCode = true;\r\n\t\tthis.inviteService.getClaimCode(this.model.id).pipe(\r\n\t\t\tfinalize(() => { this.loadingClaimCode = false; })\r\n\t\t).subscribe(code => {\r\n\t\t\tthis.dialogService.showValue(code);\r\n\t\t});\r\n\t}\r\n\r\n\tgetAccessLink() {\r\n\t\tthis.loadingClaimCode = true;\r\n\t\tthis.inviteService.getClaimCode(this.model.id).pipe(\r\n\t\t\tfinalize(() => { this.loadingClaimCode = false; })\r\n\t\t).subscribe(code => {\r\n\t\t\tthis.dialogService.showValue(`${window.location.origin}/private/claim-access/${code}`);\r\n\t\t});\r\n\t}\r\n\r\n\tdelete() {\r\n\t\tthis.dialogService.confirm(this.transloco.translate('components.invite-detail.confirm-invite-deletion', { value: this.model.emailAddress })).then(confirmed => {\r\n\t\t\tif (confirmed) {\r\n\t\t\t\tthis.saving = true;\r\n\t\t\t\tthis.inviteService.delete(this.model.id).subscribe(() => {\r\n\t\t\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.invite-detail.invite-deleted-successfully'));\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t}, err => {\r\n\t\t\t\t\tthis.saving = false;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tisRootSubscription(sub: string): boolean {\r\n\t\treturn sub === Config.subscriptionRoot;\r\n\t}\r\n\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['../../'], { relativeTo: this.route });\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('InviteDetailComponent ngOnDestroy');\r\n\t\tfor (let s of this.$subscriptions) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<spa-box [loading]=\"loading || loadingClaimCode || resending || saving\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('components.invite-detail.pending-invitation')}}</span>\r\n\r\n\t<div box-commands>\r\n\t\t@if (emailEnabled) {\r\n\t\t\t<button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"resend()\" [disabled]=\"!(canManage$ | async)\">{{t('components.invite-detail.resend')}}</button>\r\n\t\t}\r\n\t\t<button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"delete()\" [disabled]=\"!(canManage$ | async)\">{{t('common.delete')}}</button>\r\n\t\t<button mat-stroked-button color=\"primary\" type=\"button\" routerLink=\"edit\" [disabled]=\"!(canManage$ | async)\">{{t('common.edit')}}</button>\r\n\t\t<button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"getClaimCode()\" [disabled]=\"!(canManage$ | async)\">{{t('components.invite-detail.get-claim-code')}}</button>\r\n\t\t<button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"getAccessLink()\" [disabled]=\"!(canManage$ | async)\">{{t('components.invite-detail.get-access-link')}}</button>\r\n\t</div>\r\n\r\n\t@if (!loading) {\r\n\t\t<div class=\"row pt-4\">\r\n\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t<spa-prop label=\"{{t('common.subscription')}}\">{{model.subscriptionId | sub | async}}</spa-prop>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t<spa-prop label=\"Email\">{{model.emailAddress}}</spa-prop>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t<spa-prop label=\"{{t('common.roles')}}\">{{(isRootSubscription(model.subscriptionId) ? model.inviteAuthorizationData.rootAuthorizationData.roles : model.inviteAuthorizationData.authorizationData.roles) | roles}}</spa-prop>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Component, OnInit, OnDestroy, Inject } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, UntypedFormArray, AbstractControl, ValidationErrors } from '@angular/forms';\r\nimport { InviteModel, InviteData } from '../../api/invites';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { InviteService } from '../../services/invite.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { Roles } from '../../api/enums';\r\nimport { CanComponentDeactivate } from '../../guards/can-deactivate.guard';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Config } from '../../api/configuration';\r\nimport { Subscription } from 'rxjs';\r\nimport { LIST_OF_ROLES } from '../../classes/injection-tokens';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-invite-edit',\r\n    templateUrl: './invite-edit.component.html',\r\n    styleUrls: ['./invite-edit.component.scss'],\r\n    standalone: false\r\n})\r\nexport class InviteEditComponent implements OnInit, OnDestroy, CanComponentDeactivate {\r\n\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tform: UntypedFormGroup;\r\n\tmodel: InviteModel;\r\n\tsaving: boolean = false;\r\n\tloading: boolean = true;\r\n\r\n\tprivate closing: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate inviteService: InviteService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\t@Inject(LIST_OF_ROLES) private listOfRoles: string[]\r\n\t) {\r\n\t\tthis.createForm();\r\n\t}\r\n\r\n\tget roles(): UntypedFormArray {\r\n\t\treturn this.form.get('roles') as UntypedFormArray;\r\n\t}\r\n\r\n\tcreateForm() {\r\n\t\tlet roleOptions = this.listOfRoles.map(r => this.fb.group({ role: r, enabled: false }));\r\n\r\n\t\tthis.form = this.fb.group({\r\n\t\t\troles: this.fb.array(roleOptions, this.validateRoles)\r\n\t\t});\r\n\t}\r\n\r\n\tprivate getRolesFromModel(): string[] {\r\n\t\treturn this.model.subscriptionId === Config.subscriptionRoot ? this.model.inviteAuthorizationData.rootAuthorizationData.roles : this.model.inviteAuthorizationData.authorizationData.roles;\r\n\t}\r\n\r\n\tresetForm() {\r\n\t\tlet roleOptions = this.spaControl.getSubscriptionRoles(this.model.subscriptionId).map(r => { return { role: r, enabled: this.getRolesFromModel().some(a => a === r) } });\r\n\r\n\t\tthis.form.patchValue({\r\n\t\t\troles: roleOptions\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('InviteEditComponent ngOnInit');\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.route.parent.paramMap.subscribe(paramMap => {\r\n\t\t\t\tlet inviteId = paramMap.get('inviteId');\r\n\t\t\t\tthis.logger.logTrace('Invite id:', inviteId);\r\n\t\t\t\tthis.loading = true;\r\n\t\t\t\tthis.inviteService.get(inviteId).subscribe(invite => {\r\n\t\t\t\t\tthis.model = invite;\r\n\t\t\t\t\tthis.resetForm();\r\n\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tprivate validateRoles = (control: AbstractControl): ValidationErrors | null => {\r\n\t\tlet array = control as UntypedFormArray;\r\n\r\n\t\tif (array && !array.value.some(r => r.enabled)) {\r\n\t\t\treturn {\r\n\t\t\t\t'selectRole': true\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t};\r\n\r\n\tgetErrorMessage(formControlName: string) {\r\n\r\n\t\tlet formControl = this.form.get(formControlName);\r\n\r\n\t\tswitch (formControlName) {\r\n\r\n\t\t\tcase 'roles':\r\n\t\t\t\treturn formControl.hasError('selectRole') ? this.transloco.translate('errors.select-at-least-one-role') : '';\r\n\t\t}\r\n\r\n\t\treturn this.transloco.translate('errors.field-invalid'); // should not happen\r\n\t}\r\n\r\n\tonSubmit() {\r\n\t\tlet formModel = this.form.value;\r\n        let roles = formModel.roles.filter(ro => ro.enabled).map(ro => ro.role);\r\n        let authorizationData = {\r\n            roles: roles\r\n        }\r\n\t\tlet data: InviteData = {\r\n\t\t\tinviteAuthorizationData: {\r\n\t\t\t\tauthorizationData: this.model.subscriptionId === Config.subscriptionRoot ?  { roles: [] } : authorizationData,\r\n\t\t\t\trootAuthorizationData: this.model.subscriptionId === Config.subscriptionRoot ? authorizationData : { roles: [] }\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.saving = true;\r\n\t\tthis.inviteService.update(this.model.id, data).subscribe(() => {\r\n\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.invite-edit.invite-edited-successfully'));\r\n\t\t\tthis.closing = true;\r\n\t\t\tthis.close();\r\n\t\t}, err => {\r\n\t\t\tthis.saving = false;\r\n\t\t});\r\n\t}\r\n\r\n\tcanDeactivate() {\r\n\t\tthis.logger.logTrace('InviteEditComponent canDeactivate');\r\n\t\tif (!this.closing) {\r\n\t\t\tif (this.saving) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('common.continue-in-background'));\r\n\t\t\t} else if (this.form.dirty) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('components.invite-edit.discard-invite-changes', { value: this.model.emailAddress }));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tdiscard() {\r\n\t\tthis.dialogService.confirm(this.transloco.translate('components.invite-edit.discard-invite-changes', { value: this.model.emailAddress })).then(result => {\r\n\t\t\tif (result) {\r\n\t\t\t\tthis.resetForm();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('InviteEditComponent ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<spa-box [loading]=\"loading || saving\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('components.invite-edit.edit-pending-invite')}}</span>\r\n\r\n\t<div box-commands>\r\n\t\t<button mat-stroked-button color=\"primary\" type=\"submit\" (click)=\"onSubmit()\" [disabled]=\"form.pristine\">{{t('common.save')}}</button>\r\n\t\t<button mat-stroked-button color=\"warn\" type=\"button\" (click)=\"discard()\" [disabled]=\"form.pristine\">{{t('common.undo')}}</button>\r\n\t</div>\r\n\r\n\t<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n\r\n\t\t<div formArrayName=\"roles\">\r\n\t\t\t@if (form.get('roles').invalid) {\r\n\t\t\t\t<mat-error>{{getErrorMessage('roles')}}</mat-error>\r\n\t\t\t}\r\n\t\t\t@for (r of roles.controls; track r.value; let i = $index) {\r\n\t\t\t\t<div [formGroupName]=\"i\">\r\n\t\t\t\t\t<mat-checkbox color=\"primary\" formControlName=\"enabled\">{{r.value.role | roles}}</mat-checkbox>\r\n\t\t\t\t</div>\r\n\t\t\t}\r\n\t\t</div>\r\n\r\n\t</form>\r\n\r\n</spa-box>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { InviteService } from '../../services/invite.service';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { Config } from '../../api/configuration';\r\n\r\n@Component({\r\n    selector: 'spa-invite-list',\r\n    templateUrl: './invite-list.component.html',\r\n    styleUrls: ['./invite-list.component.scss'],\r\n    standalone: false\r\n})\r\nexport class InviteListComponent implements OnInit {\r\n\r\n\tcolumnsToDisplay$: Observable<string[]>;\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tpublic inviteService: InviteService,\r\n\t\tprivate spaControl: SpaControlService\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('InviteListComponent ngOnInit');\r\n\t\tthis.columnsToDisplay$ = this.spaControl.allSubscriptionsSelected.pipe(\r\n\t\t\tmap(allSubs => allSubs ? ['emailAddress', 'subscription', 'access'] : ['emailAddress', 'access'])\r\n\t\t);\r\n\t}\r\n\r\n\tisRootSubscription(sub: string): boolean {\r\n\t\treturn sub === Config.subscriptionRoot;\r\n\t}\r\n}\r\n","<lacm-table [dataSource]=\"inviteService\" matSort matSortActive=\"emailAddress\" *transloco=\"let t\">\r\n\r\n\t<ng-container matColumnDef=\"emailAddress\">\r\n\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>Email</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\"><a [routerLink]=\"['invites/', e.id]\">{{e.emailAddress}}</a></mat-cell>\r\n\t</ng-container>\r\n\r\n\t<ng-container matColumnDef=\"subscription\">\r\n\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.subscription')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">{{e.subscriptionId | sub | async}}</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<ng-container matColumnDef=\"access\">\r\n\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.roles')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">{{(isRootSubscription(e.subscriptionId) ? e.inviteAuthorizationData.rootAuthorizationData.roles : e.inviteAuthorizationData.authorizationData.roles) | roles}}</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<mat-header-row *matHeaderRowDef=\"columnsToDisplay$ | async\"></mat-header-row>\r\n\t<mat-row *matRowDef=\"let row; columns: columnsToDisplay$ | async; \"></mat-row>\r\n\r\n</lacm-table>\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable ,  of ,  Subject } from 'rxjs';\r\nimport { SubscriptionModel, SubscriptionData, CheckSubscriptionNameAvailabilityResponse } from '../api/subscriptions';\r\nimport { map ,  tap } from 'rxjs/operators';\r\nimport { SearchService } from '@lacuna/material';\r\n\r\nconst apiRoute = '/api/subscriptions';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SubscriptionService implements SearchService<SubscriptionModel> {\r\n\r\n\tchanged: Observable<string>;\r\n\r\n\tprotected cache: SubscriptionModel[] = [];\r\n\tprotected changedSubject: Subject<string>;\r\n\r\n\tconstructor(protected http: HttpClient) {\r\n\t\tthis.changedSubject = new Subject<string>();\r\n\t\tthis.changed = this.changedSubject.asObservable();\r\n\t}\r\n\r\n\tlist(): Observable<SubscriptionModel[]> {\r\n\t\treturn this.http.get<SubscriptionModel[]>(apiRoute)\r\n\t\t\t.pipe(tap(r => { this.cache = r; }));\r\n\t}\r\n\r\n\tcreate(data: SubscriptionData): Observable<SubscriptionModel> {\r\n\t\treturn this.http.post<SubscriptionModel>(apiRoute, data).pipe(tap(m => { this.updateCache(m, true); }));\r\n\t}\r\n\r\n\tget(id: string): Observable<SubscriptionModel> {\r\n\r\n\t\tlet cached = this.cache.filter(s => s.id === id)[0];\r\n\t\tif (cached) {\r\n\t\t\treturn of(cached);\r\n\t\t}\r\n\r\n\t\treturn this.http.get<SubscriptionModel>(`${apiRoute}/${id}`);\r\n\t}\r\n\r\n\tupdate(id: string, data: SubscriptionData) {\r\n\t\treturn this.http.put<SubscriptionModel>(`${apiRoute}/${id}`, data)\r\n\t\t\t.pipe(tap(m => { this.updateCache(m, true); }));\r\n\t}\r\n\r\n\tcheckNameAvailable(name: string, id?: string): Observable<boolean> {\r\n\t\treturn this.http.get<CheckSubscriptionNameAvailabilityResponse>(`${apiRoute}/name-availability`, {\r\n\t\t\tparams: {\r\n\t\t\t\tname: name,\r\n\t\t\t\tid: id,\r\n\t\t\t}\r\n\t\t}).pipe(map(r => {\r\n\t\t\treturn r.available\r\n\t\t}));\r\n\t}\r\n\r\n\tprotected updateCache(m: SubscriptionModel, notifyChanged: boolean): void {\r\n\t\t// Remove item from cache\r\n\t\tthis.cache = this.cache.filter(i => i.id !== m.id);\r\n\t\t// Add updated item to cache\r\n\t\tthis.cache.push(m);\r\n\t\t// notify changed\r\n\t\tif (notifyChanged) {\r\n\t\t\tthis.notifyChanged(m.id);\r\n\t\t}\r\n\t}\r\n\r\n\tprotected notifyChanged(id: string) {\r\n\t\tthis.changedSubject.next(id);\r\n\t}\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { SubscriptionService } from '../../services/subscription.service';\r\n\r\n@Component({\r\n    selector: 'spa-subscription-list',\r\n    templateUrl: './subscription-list.component.html',\r\n    styleUrls: ['./subscription-list.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SubscriptionListComponent {\r\n\t\r\n\tconstructor(\r\n\t\tpublic subService: SubscriptionService\r\n\t) {}\r\n}\r\n","<lacm-table [dataSource]=\"subService\" matSort matSortActive=\"name\" *transloco=\"let t\">\r\n\t<ng-container matColumnDef=\"name\">\r\n\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.name')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\"><a [routerLink]=\"[e.id]\">{{e.name}}</a></mat-cell>\r\n\t</ng-container>\r\n</lacm-table>\r\n","import { Type, inject } from \"@angular/core\";\r\nimport { CanActivateFn, CanDeactivateFn } from \"@angular/router\";\r\n\r\nexport class StringUtils {\r\n\tstatic removeNonDigits(value: string): string {\r\n\t\treturn value ? value.replace(RegExp('\\\\D', 'g'), '') : value;\r\n\t}\r\n\r\n\tstatic toUpperCaseFirstLetter(value: string): string {\r\n\t\tif (typeof value !== 'string') return '';\r\n\t\treturn value.charAt(0).toUpperCase() + value.slice(1);\r\n\t}\r\n\r\n\tstatic toLowerCaseFirstLetter(value: string): string {\r\n\t\tif (typeof value !== 'string') return '';\r\n\t\treturn value.charAt(0).toLowerCase() + value.slice(1);\r\n\t}\r\n\r\n\t// https://stackoverflow.com/a/784698\r\n\tstatic htmlEncode(value: string): string {\r\n\t\tlet element = document.createElement(\"div\");\r\n\t\telement.innerText = element.textContent = value;\r\n\t\treturn element.innerHTML;\r\n\t}\r\n}\r\n","import { Component, OnInit, OnDestroy, Input } from '@angular/core';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { SubscriptionService } from '../../services/subscription.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { Config } from '../../api/configuration';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { StringUtils } from '../../classes/utils';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-subscriptions',\r\n    templateUrl: './subscriptions.component.html',\r\n    styleUrls: ['./subscriptions.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SubscriptionsComponent implements OnInit, OnDestroy {\r\n\r\n\tprivate $serviceChangeSubscription: Subscription;\r\n\thasParentIntegration: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate subService: SubscriptionService,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate transloco: TranslocoService\r\n\t) {\r\n\t\tthis.hasParentIntegration = Config.hasParentIntegration;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace(\"SubscriptionsComponent ngOnInit\");\r\n\t\tthis.$serviceChangeSubscription = this.subService.changed.subscribe(() => {\r\n\t\t\tlet subsLabel = StringUtils.toLowerCaseFirstLetter(this.transloco.translate('common.subscriptions'));\r\n\t\t\tthis.dialogService.confirm(this.transloco.translate('components.subscriptions.reload-page-after-modifying-sub', { subsLabel })).then(result => {\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tlocation.reload();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace(\"SubscriptionsComponent ngOnDestroy\");\r\n\t\tif (this.$serviceChangeSubscription) {\r\n\t\t\tthis.$serviceChangeSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<spa-box [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\t<span box-title>{{t('common.subscriptions')}}</span>\r\n\t@if (!hasParentIntegration) {\r\n\t\t<div box-commands>\r\n\t\t\t<button mat-stroked-button color=\"primary\" routerLink=\"new\">{{t('common.add')}}</button>\r\n\t\t</div>\r\n\t}\r\n\t<spa-subscription-list></spa-subscription-list>\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Component, OnInit, OnDestroy , Inject } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, UntypedFormArray, AbstractControl, ValidationErrors, UntypedFormControl } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MatCheckboxDefaultOptions, MAT_CHECKBOX_DEFAULT_OPTIONS } from '@angular/material/checkbox';\r\nimport { combineLatest, map } from 'rxjs/operators';\r\nimport { Subscription, GroupedObservable } from 'rxjs';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { AuthManagementService } from '../../services/auth-management.service';\r\nimport { CanComponentDeactivate } from '../../guards/can-deactivate.guard';\r\nimport { SubscriptionModel } from '../../api/subscriptions';\r\nimport { Config } from '../../api/configuration';\r\nimport { LIST_OF_ROLES, LIST_OF_UNASSIGNABLE_ROLES } from '../../classes/injection-tokens';\r\nimport { Permissions } from '../../api/enums';\r\nimport { SubscriptionAccessModel } from '../../api/authorization';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { UserService } from \"../../services/user.service\";\r\n\r\n@Component({\r\n    selector: 'spa-user-access-edit',\r\n    templateUrl: './user-access-edit.component.html',\r\n    styleUrls: ['./user-access-edit.component.scss'],\r\n    providers: [\r\n        { provide: MAT_CHECKBOX_DEFAULT_OPTIONS, useValue: { clickAction: 'noop' } as MatCheckboxDefaultOptions }\r\n    ],\r\n    standalone: false\r\n})\r\nexport class UserAccessEditComponent implements OnInit, OnDestroy, CanComponentDeactivate {\r\n\tprivate $toUnsubscribe: Subscription;\r\n\r\n\tform: UntypedFormGroup;\r\n\tsaving: boolean = false;\r\n\tprivate closing: boolean = false;\r\n\tsubscription: SubscriptionModel;\r\n\tloadingAccess: boolean = true;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate authManagementService: AuthManagementService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\t@Inject(LIST_OF_ROLES) private listOfRoles: string[],\r\n\t\t@Inject(LIST_OF_UNASSIGNABLE_ROLES) private listOfUnassignableRoles: string[],\r\n\t\tprivate userService: UserService\r\n\t) {\r\n\t\tthis.createForm();\r\n\t}\r\n\r\n\tget roles(): UntypedFormArray {\r\n\t\treturn this.form.get('roles') as UntypedFormArray;\r\n\t}\r\n\r\n\tclearRoles() {\r\n\t\twhile (this.roles.controls.length > 0) {\r\n\t\t\tthis.roles.removeAt(0);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateForm() {\r\n\t\tlet roleOptions = this.listOfRoles.map(r => { return this.fb.group({ role: r, enabled: false, indeterminate: false, inherited: false }) });\r\n\r\n\t\tthis.form = this.fb.group({\r\n\t\t\troles: this.fb.array(roleOptions, this.validateRoles)\r\n\t\t});\r\n\t}\r\n\r\n\tprivate validateRoles = (control: AbstractControl): ValidationErrors | null => {\r\n\t\tlet array = control as UntypedFormArray;\r\n\r\n\t\tif (array && !array.controls.some(c => c.value.enabled || c.value.indeterminate)) {\r\n\t\t\treturn {\r\n\t\t\t\t'selectRole': true\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t};\r\n\r\n\tngOnInit() {\r\n\t\tlet profile = this.spaControl.userProfile;\r\n\t\tthis.subscription = {\r\n\t\t\tid: '',\r\n\t\t\tname: '',\r\n\t\t};\r\n\r\n\t\tthis.$toUnsubscribe = this.route.params.pipe(\r\n\t\t\tmap(p => p['subId']),\r\n\t\t\tcombineLatest(this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ManageAgents), (subId, canManage) => { return { subId, canManage } })\r\n\t\t).subscribe(combined => {\r\n\t\t\tlet subId = combined.subId;\r\n\t\t\tlet canManage = combined.canManage;\r\n\t\t\tthis.loadingAccess = true;\r\n\r\n\t\t\tif (canManage) {\r\n\t\t\t\tlet currentSub = profile.subscriptions.find(s => s.subscription.id === subId);\r\n\r\n\t\t\t\tif (currentSub) {\r\n\t\t\t\t\tthis.subscription = currentSub.subscription;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.subscription = {\r\n\t\t\t\t\t\tid: Config.subscriptionRoot,\r\n\t\t\t\t\t\tname: 'Root subscription',\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet userId = this.route.parent.snapshot.params['userId'];\r\n\t\t\tthis.logger.logTrace('Retrieving access of user', userId, 'to subscription', subId);\r\n\t\t\tthis.form.get('roles').disable();\r\n\t\t\tthis.userService.getUserPermissionsOnSubscription(userId, subId).subscribe(sa => {\r\n\t\t\t\tlet roles = sa ? (sa.rootRoles ?? sa.roles) as string[] : [];\r\n\r\n\t\t\t\tthis.logger.logTrace('Retrieved access of user', userId, 'to subscription', subId, roles);\r\n\t\t\t\tlet roleOptions = this.spaControl.getSubscriptionRoles(subId, true).map(r => {\r\n\t\t\t\t\tlet enabled = roles.some(a => a === r);\r\n\t\t\t\t\treturn { role: r, enabled: enabled, inherited: false, indeterminate: false && !enabled }\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.clearRoles();\r\n\t\t\t\tfor (let ro of roleOptions) {\r\n                    let group = this.fb.group(ro);\r\n                    if (this.listOfUnassignableRoles.some(ur => ur === ro.role)) {\r\n                        group.disable();\r\n                    } else {\r\n                        group.enable();\r\n                    }\r\n\t\t\t\t\tthis.roles.push(group);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.loadingAccess = false;\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\ttoggleCheckbox(r: AbstractControl<any, any, any>) {\r\n        if (!this.listOfUnassignableRoles.some(ue => ue === r.value.role)) {\r\n            r.patchValue({\r\n                enabled: !r.value.enabled,\r\n                indeterminate: r.value.inherited ? !r.value.indeterminate : false\r\n            });\r\n\t\t\tr.markAsDirty();\r\n\t\t\tthis.logger.logDebug(\"r\", r);\r\n        }\r\n\t}\r\n\r\n\tonSubmit() {\r\n\r\n\t\tlet formModel = this.form.value;\r\n\t\tlet userId = this.route.parent.snapshot.params['userId'];\r\n        let sub = this.subscription.id;\r\n        let roles = formModel.roles.filter(ro => !this.listOfUnassignableRoles.some(ur => ur === ro.role) && ro.enabled).map(ro => ro.role);\r\n        let data = {\r\n            roles: roles\r\n        }\r\n\r\n\t\tthis.saving = true;\r\n\t\tthis.authManagementService.updateSubscriptionRoles(sub, userId, data).subscribe(() => {\r\n\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.user-access-edit.user-access-updated-successfully'));\r\n\t\t\tthis.closing = true;\r\n\t\t\tthis.close();\r\n\t\t}, err => {\r\n\t\t\tthis.saving = false;\r\n\t\t});\r\n\t}\r\n\r\n\tcanDeactivate() {\r\n\t\tthis.logger.logTrace('UserAccessEditComponent canDeactivate', this.dialogService);\r\n\t\tif (!this.closing) {\r\n\t\t\tif (this.saving) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('common.continue-in-background'));\r\n\t\t\t} else if (this.form.dirty) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('components.user-access-edit.discard-user-access-changes'));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['../..'], { relativeTo: this.route });\r\n\t}\r\n\r\n\tgetErrorMessage(formControlName: string) {\r\n\r\n\t\tlet formControl = this.form.get(formControlName);\r\n\r\n\t\tswitch (formControlName) {\r\n\t\t\tcase 'roles':\r\n\t\t\t\treturn formControl.hasError('selectRole') ? this.transloco.translate('errors.select-at-least-one-role') :\r\n\t\t\t\t\t'';\r\n\t\t}\r\n\r\n\t\treturn this.transloco.translate('errors.field-invalid'); // should not happen\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n        if (this.$toUnsubscribe) {\r\n            this.$toUnsubscribe.unsubscribe();\r\n        }\r\n\t}\r\n}\r\n","<spa-box [loading]=\"saving || loadingAccess\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('components.user-access-edit.edit-user-access')}}</span>\r\n\r\n\t<form [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\r\n\r\n\t\t<div class=\"row pt-4\">\r\n\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t<spa-prop label=\"{{t('common.subscription')}}\">{{subscription.name}}</spa-prop>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t<div formArrayName=\"roles\">\r\n\t\t\t\t\t@if (form.get('roles').invalid) {\r\n\t\t\t\t\t\t<mat-error>{{getErrorMessage('roles')}}</mat-error>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@for (r of roles.controls; track r.value; let i = $index) {\r\n\t\t\t\t\t\t<div [formGroupName]=\"i\">\r\n\t\t\t\t\t\t\t<mat-checkbox color=\"primary\" (click)=\"toggleCheckbox(r)\" formControlName=\"enabled\" [(indeterminate)]=\"r.value.indeterminate\">\r\n\t\t\t\t\t\t\t\t{{r.value.role | roles}}\r\n\t\t\t\t\t\t\t\t@if (r.value.indeterminate) {\r\n\t\t\t\t\t\t\t\t\t<span>({{t('components.user-access-edit.currently-inherited')}})</span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</mat-checkbox>\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t\t<button mat-flat-button color=\"primary\" type=\"submit\" [disabled]=\"!form.valid || loadingAccess || roles.pristine\">{{t('common.save')}}</button>\r\n\r\n\t</form>\r\n\r\n</spa-box>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { PaginatedSearchService } from '@lacuna/material';\r\nimport { EventModel } from '../../api/events';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { EventService } from '../../services/event.service';\r\nimport { Logger } from '../../services/logger.service';\r\n\r\n@Component({\r\n    selector: 'spa-user-actions',\r\n    templateUrl: './user-actions.component.html',\r\n    styleUrls: ['./user-actions.component.scss'],\r\n    standalone: false\r\n})\r\nexport class UserActionsComponent implements OnInit {\r\n\r\n\tdataSource: PaginatedSearchService<EventModel>;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate eventService: EventService,\r\n\t\tprivate logger: Logger\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tlet userId = this.route.parent.snapshot.params['userId'];\r\n\t\tthis.logger.logTrace('UserActionsComponent ngOnInit -- userId:', userId);\r\n\t\tthis.dataSource = this.eventService.getServiceForUserActions(userId);\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n}\r\n","<spa-box [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('components.user-actions.actions-performed-by-user')}}</span>\r\n\r\n\t<spa-event-list [dataSource]=\"dataSource\" hideAgents></spa-event-list>\r\n\r\n</spa-box>\r\n","import { Injectable } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { ChildRedirectTypes, NamedRoutes } from '../api/enums';\r\nimport { SpaControlService } from './spa-control.service';\r\nimport { tap, first } from 'rxjs/operators';\r\nimport { ActivatedNamedRouteCollection, RouteHelperService } from './route-helper.service';\r\nimport { Observable } from 'rxjs';\r\nimport { Config } from '../api/configuration';\r\nimport { DialogService } from './dialog.service';\r\nimport { SubscriptionAccess } from '../api/authorization';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class ParentRedirectService {\r\n\r\n    constructor(\r\n        private routeHelper: RouteHelperService,\r\n        private router: Router,\r\n        private spaControl: SpaControlService,\r\n        public route: ActivatedRoute,\r\n        private dialogService: DialogService\r\n    ) { }\r\n\r\n\r\n    redirectToParent(redirectType: ChildRedirectTypes, userId?: string, subscriptions?: SubscriptionAccess[]): Observable<ActivatedNamedRouteCollection> {\r\n        return this.routeHelper.activatedNamedRoutes.pipe(\r\n            first(),\r\n            tap(routeCollection => {\r\n                let parentSubId;\r\n                if (routeCollection.isInRoute(NamedRoutes.Sub)) {\r\n                    let subId = this.spaControl.selectedSubscriptionSnapshot.sub;\r\n                    if (subId != Config.subscriptionNoFilter) {\r\n                        parentSubId = this.spaControl.userProfile.subscriptions.find(s => s.subscription.id === subId).subscription.parentSubscriptionId;\r\n                    } else {\r\n                        if (redirectType === ChildRedirectTypes.UserEditAccess) {\r\n                            this.dialogService.subSelector(subscriptions, true).then((result: SubscriptionAccess) => {\r\n                                if (result) {\r\n                                    let url = `${Config.parentUrl.replace(/\\/$/, \"\")}/child-redirect?redirectType=${redirectType}&subscriptionId=${result.subscription.parentSubscriptionId}`;\r\n                                    if (userId) {\r\n                                        url = `${url}&userId=${userId}`;\r\n                                    }\r\n                                    window.open(url, '_blank');\r\n                                }\r\n                            });\r\n\r\n                            return;\r\n                        } else {\r\n                            parentSubId = Config.subscriptionNoFilter;\r\n                        }\r\n                    }\r\n                } else if (routeCollection.isInRoute(NamedRoutes.SysAdmin)) {\r\n                    parentSubId = Config.subscriptionRoot;\r\n                }\r\n\r\n                let url = `${Config.parentUrl.replace(/\\/$/, \"\")}/child-redirect?redirectType=${redirectType}&subscriptionId=${parentSubId}`;\r\n                if (userId) {\r\n                    url = `${url}&userId=${userId}`;\r\n                }\r\n                window.open(url, '_blank');\r\n            })\r\n        );\r\n    }\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription, merge, Observable, interval } from 'rxjs';\r\nimport { finalize, map } from 'rxjs/operators';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { UserService } from '../../services/user.service';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { AuthManagementService } from '../../services/auth-management.service';\r\nimport { UserModel } from '../../api/users';\r\nimport { Config } from '../../api/configuration';\r\nimport { Permissions, UserModes, ChildRedirectTypes, GrammaticalGender, AgentTypes, UserDiscoveryPolicies } from '../../api/enums';\r\nimport { SubscriptionAccessModel } from '../../api/authorization';\r\nimport { ParentRedirectService } from '../../services/parent-redirect.service';\r\nimport { StringUtils } from '../../classes/utils';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { UpdateAgentLockStatusRequest } from '../../api/agents';\r\nimport { AgentService } from '../../services/agent.service';\r\n\r\n@Component({\r\n    selector: 'spa-user-detail',\r\n    templateUrl: './user-detail.component.html',\r\n    styleUrls: ['./user-detail.component.scss'],\r\n    standalone: false\r\n})\r\nexport class UserDetailComponent implements OnInit, OnDestroy {\r\n\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tagentId: string;\r\n\tparentName: string;\r\n\tmode: UserModes;\r\n\tmodel: UserModel;\r\n\tloading: boolean = true;\r\n\tshowSubs$: Observable<boolean>;\r\n\tcanManage$: Observable<boolean>;\r\n\tcanEdit$: Observable<boolean>;\r\n\tcanViewEvents$: Observable<boolean>;\r\n\tcanViewActions$: Observable<boolean>;\r\n\trootSubSelected$: Observable<boolean>;\r\n\tcannotRevoke: boolean = false;\r\n\trevoking: boolean = false;\r\n\tparentIntegrationEnabled: boolean = false;\r\n\tsubscriptionGender: GrammaticalGender = Config.labels.subscriptionGender;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate router: Router,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate authManagementService: AuthManagementService,\r\n\t\tprivate parentRedirectService: ParentRedirectService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\tprivate agentService: AgentService,\r\n\t) {\r\n\t\tthis.showSubs$ = spaControl.allSubscriptionsSelected;\r\n\t\tthis.mode = this.route.snapshot.data.mode;\r\n\t\tthis.rootSubSelected$ = spaControl.selectedSubscription.pipe(map(s => s.sub === Config.subscriptionRoot));\r\n\t\tthis.parentName = Config.parentName;\r\n\t\tthis.agentId = this.spaControl.userProfile.id;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('UserDetailComponent ngOnInit');\r\n\t\tthis.parentIntegrationEnabled = Config.hasParentIntegration;\r\n\t\tthis.mode = this.route.snapshot.data.mode;\r\n\t\tthis.load();\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tmerge(this.route.paramMap, this.userService.changed, this.spaControl.selectedSubscription, interval(60000)).subscribe(() => {\r\n\t\t\t\tif (this.model && this.mode == UserModes.App && Config.userDiscoveryPolicy && Config.userDiscoveryPolicy !== UserDiscoveryPolicies.None) {\r\n\t\t\t\t\tthis.loading = true;\r\n\t\t\t\t\tthis.userService.discover(this.model.id).pipe(finalize(() => { this.loading = false; })).subscribe(discovery => {\r\n\t\t\t\t\t\tif (discovery.canBeFound) {\r\n\t\t\t\t\t\t\tthis.load();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if (this.model) {\r\n\t\t\t\t\tthis.load();\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t\tthis.canManage$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ManageAgents);\r\n\t\tthis.canEdit$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.EditUsers);\r\n\t\tthis.canViewEvents$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ViewAgentEvents);\r\n\t\tthis.canViewActions$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ViewAgentActions);\r\n\t}\r\n\r\n\tisParentUser() {\r\n\t\treturn this.mode == UserModes.Parent;\r\n\t}\r\n\r\n\tload() {\r\n\t\tlet userId = this.route.snapshot.params['userId'];\r\n\t\tthis.logger.logTrace(`UserDetailComponent -- loading user ${userId}`);\r\n\t\tthis.loading = true;\r\n\t\t(this.mode == UserModes.App ? this.userService.get(userId) : this.userService.getFromParent(userId)).subscribe(user => {\r\n\t\t\tif (user.id && this.mode == UserModes.Parent) {\r\n\t\t\t\tthis.router.navigate(['../..', user.id], { relativeTo: this.route });\r\n\t\t\t}\r\n\t\t\tthis.model = user;\r\n\t\t\tthis.loading = false;\r\n\t\t\tlet subId = this.spaControl.selectedSubscriptionSnapshot.sub;\r\n\t\t\tthis.cannotRevoke = subId != Config.subscriptionNoFilter &&\r\n\t\t\t\tthis.model.subscriptions.some(sub => subId == sub.subscriptionId && sub.roles.length == 0);\r\n\t\t});\r\n\t}\r\n\r\n\tconfirmRevoke(subId: string) {\r\n\t\tlet subLabel = StringUtils.toLowerCaseFirstLetter(this.transloco.translate('common.subscription'));\r\n\t\tlet msg = this.transloco.translate('components.user-detail.confirm-access-revocation', { subLabel, subGender: this.subscriptionGender });\r\n\t\tlet sub = this.model.subscriptions.filter(s => s.subscriptionId = subId)[0];\r\n\t\tthis.dialogService.confirm(msg).then(confirmed => {\r\n\t\t\tthis.revoking = false;\r\n\t\t\tif (confirmed) {\r\n\t\t\t\tlet userId = this.route.snapshot.params['userId'];\r\n\t\t\t\tthis.authManagementService.updateSubscriptionRoles(subId, userId, {\r\n\t\t\t\t\troles: []\r\n\t\t\t\t}).subscribe(r => {\r\n\t\t\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.user-detail.access-revoked-successfully'));\r\n\t\t\t\t\tthis.close();\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tnavigateToUserDetail() {\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.parentRedirectService.redirectToParent(ChildRedirectTypes.UserDetails, this.model.parentId).subscribe(() => {\r\n\t\t\t\tthis.logger.logTrace(\"Redirected to parent application user details\");\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tnavigateToParentEditAccess() {\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.parentRedirectService.redirectToParent(ChildRedirectTypes.UserEditAccess, this.model.parentId, this.spaControl.userProfile.subscriptions).subscribe(() => {\r\n\t\t\t\tthis.logger.logTrace(\"Redirected to parent application access edit\");\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\trevoke() {\r\n\t\tthis.revoking = true;\r\n\t\tif (this.spaControl.selectedSubscriptionSnapshot.sub != Config.subscriptionNoFilter) {\r\n\t\t\tthis.confirmRevoke(this.spaControl.selectedSubscriptionSnapshot.sub);\r\n\t\t} else {\r\n\t\t\tthis.dialogService.subSelector(this.spaControl.userProfile.subscriptions, true).then(result => {\r\n\t\t\t\tthis.logger.logDebug(\"Selector result.\", result);\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tthis.confirmRevoke(result.subscription.id);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.revoking = false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tnavigateToEditAccess() {\r\n\t\tif (Config.hasParentIntegration) {\r\n\t\t\tthis.navigateToParentEditAccess();\r\n\t\t} else {\r\n\t\t\tthis.editAccess();\r\n\t\t}\r\n\t}\r\n\r\n\teditAccess() {\r\n\t\tif (this.spaControl.selectedSubscriptionSnapshot.sub != Config.subscriptionNoFilter) {\r\n\t\t\tthis.router.navigate([`access/${this.spaControl.selectedSubscriptionSnapshot.sub}`], { relativeTo: this.route });\r\n\t\t} else {\r\n\t\t\tthis.dialogService.subSelector(this.spaControl.userProfile.subscriptions, true).then(result => {\r\n\t\t\t\tthis.logger.logDebug(\"Selector result.\", result);\r\n\t\t\t\tif (result) {\r\n\t\t\t\t\tthis.router.navigate([`access/${result.subscription.id}`], { relativeTo: this.route });\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tclose() {\r\n\t\tif (this.mode === UserModes.App) {\r\n\t\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t\t} else {\r\n\t\t\tthis.router.navigate(['../..'], { relativeTo: this.route });\r\n\t\t}\r\n\t}\r\n\r\n\tdisplayRootRoles(u: UserModel) {\r\n\t\treturn this.parentIntegrationEnabled ? u.parentRootRoles : u.rootRoles;\r\n\t}\r\n\r\n\tdisplayRoles(sa: SubscriptionAccessModel) {\r\n\t\treturn this.parentIntegrationEnabled ? sa.parentRoles : sa.roles;\r\n\t}\r\n\r\n\tasync lock() {\r\n\t\tawait this.agentService.confirmAndUpdateLockStatus({\r\n\t\t\tid: this.model.id,\r\n\t\t\tlock: true,\r\n\t\t\ttype: AgentTypes.User,\r\n\t\t\tdialogMessage: this.transloco.translate('components.user-detail.confirm-lock'),\r\n\t\t\tdialogConfirmButtonText: this.transloco.translate('common.lock'),\r\n\t\t\tsuccessMessage: this.transloco.translate('components.user-detail.successfully-locked'),\r\n\t\t});\r\n\t}\r\n\r\n\tasync unlock() {\r\n\t\tawait this.agentService.confirmAndUpdateLockStatus({\r\n\t\t\tid: this.model.id,\r\n\t\t\tlock: false,\r\n\t\t\ttype: AgentTypes.User,\r\n\t\t\tdialogMessage: this.transloco.translate('components.user-detail.confirm-unlock'),\r\n\t\t\tdialogConfirmButtonText: this.transloco.translate('common.unlock'),\r\n\t\t\tsuccessMessage: this.transloco.translate('components.user-detail.successfully-unlocked'),\r\n\t\t});\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('UserDetailComponent ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<spa-box [loading]=\"loading || revoking\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t@if (!loading) {\r\n\t\t<span box-title>{{t('common.user')}} <span class=\"text-accent\">{{model.name}}</span></span>\r\n\t}\r\n\r\n\t<div box-commands>\r\n\t\t@if (canViewEvents$ | async) {\r\n\t\t\t<button mat-stroked-button color=\"primary\" [disabled]=\"isParentUser()\" type=\"button\" routerLink=\"events\">{{t('common.events')}}</button>\r\n\t\t}\r\n\t\t@if (canViewActions$ | async) {\r\n\t\t\t<button mat-stroked-button color=\"primary\" [disabled]=\"isParentUser()\" type=\"button\" routerLink=\"actions\">{{t('common.actions')}}</button>\r\n\t\t}\r\n\t\t<button mat-stroked-button color=\"primary\" [disabled]=\"!(canManage$ | async) || isParentUser()\" type=\"button\" routerLink=\"edit\">{{t('common.edit')}}</button>\r\n\t\t@if (parentIntegrationEnabled) {\r\n\t\t\t<button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"load()\">{{t('components.user-detail.reload-access')}}</button>\r\n\t\t}\r\n\t\t@if (model && model.id != agentId && (canManage$ | async) && !parentIntegrationEnabled) {\r\n\t\t\t<button mat-stroked-button color=\"warn\" [disabled]=\"loading || cannotRevoke\" type=\"button\" (click)=\"revoke()\">\r\n\t\t\t\t{{t('components.user-detail.revoke-access')}}\r\n\t\t\t</button>\r\n\t\t\t@if (!model.isLocked) {\r\n\t\t\t\t<button mat-stroked-button color=\"warn\" [disabled]=\"loading\" type=\"button\" (click)=\"lock()\">\r\n\t\t\t\t\t{{t('common.lock')}}\r\n\t\t\t\t</button>\r\n\t\t\t}\r\n\t\t\t@if (model.isLocked) {\r\n\t\t\t\t<button mat-stroked-button color=\"warn\" [disabled]=\"loading\" type=\"button\" (click)=\"unlock()\">\r\n\t\t\t\t\t{{t('common.unlock')}}\r\n\t\t\t\t</button>\r\n\t\t\t}\r\n\t\t}\r\n\t</div>\r\n\r\n\t@if (model) {\r\n\t\t<div>\r\n\t\t\t<div class=\"row pt-4\">\r\n\t\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t\t<spa-prop label=\"{{t('common.name')}}\">\r\n\t\t\t\t\t\t<div class=\"d-flex flex-column\">\r\n\t\t\t\t\t\t\t<span>{{model.name}}</span>\r\n\t\t\t\t\t\t\t@if (model.isLocked) {\r\n\t\t\t\t\t\t\t\t<span class=\"agent-locked\">{{t('common.user-locked')}}</span>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</div>\r\n\t\t\t\t\t</spa-prop>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t\t<spa-prop label=\"Email\">{{model.emailAddress}}</spa-prop>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t\t<spa-prop label=\"{{t('common.roles')}}\">\r\n\t\t\t\t\t\t@if (!(showSubs$ | async)) {\r\n\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t@if ((rootSubSelected$ | async) ? model.rootRoles.length > 0 : model.subscriptions[0] && model.subscriptions[0].roles.length > 0) {\r\n\t\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t\t<b>{{ ((rootSubSelected$ | async) ? displayRootRoles(model) : displayRoles(model.subscriptions[0])) | roles }}</b>\r\n\t\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"navigateToEditAccess()\" [disabled]=\"!(canManage$ | async)\">{{t('common.edit')}}</button>\r\n\t\t\t\t\t\t@if ((showSubs$ | async) && (model.rootRoles.length > 0 || model.subscriptions.length > 0)) {\r\n\t\t\t\t\t\t\t<ul>\r\n\t\t\t\t\t\t\t\t@if (model.rootRoles.length > 0) {\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t\t\t\t\tAdmin: <b>{{displayRootRoles(model) | roles}}</b>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t@for (sa of model.subscriptions; track sa) {\r\n\t\t\t\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t\t\t\t\t{{sa.subscriptionId | sub | async}}: <b>{{ displayRoles(sa) | roles}}</b>\r\n\t\t\t\t\t\t\t\t\t</li>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</ul>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if ((showSubs$ | async) && (model.rootRoles.length === 0 && model.subscriptions.length == 0)) {\r\n\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t<span>\r\n\t\t\t\t\t\t\t\t\t{{t('components.user-detail.user-has-no-roles')}}\r\n\t\t\t\t\t\t\t\t</span>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</spa-prop>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { SearchService } from '@lacuna/material';\r\nimport { EventModel } from '../../api/events';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { EventService } from '../../services/event.service';\r\nimport { Logger } from '../../services/logger.service';\r\n\r\n@Component({\r\n    selector: 'spa-user-events',\r\n    templateUrl: './user-events.component.html',\r\n    styleUrls: ['./user-events.component.scss'],\r\n    standalone: false\r\n})\r\nexport class UserEventsComponent implements OnInit {\r\n\r\n\tdataSource: SearchService<EventModel>;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate eventService: EventService,\r\n\t\tprivate logger: Logger\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tlet userId = this.route.parent.snapshot.params['userId'];\r\n\t\tthis.logger.logTrace('UserEventsComponent ngOnInit -- userId:', userId);\r\n\t\tthis.dataSource = this.eventService.getServiceForUserEvents(userId);\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n}\r\n","<spa-box [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('components.user-events.events-performed-on-user')}}</span>\r\n\r\n\t<spa-event-list [dataSource]=\"dataSource\" hideEntities showSubscriptions></spa-event-list>\r\n\r\n</spa-box>\r\n","import { Roles, RootRoles } from \"./enums\";\r\nimport { AuthorizationData, RootAuthorizationData } from './authorization';\r\n\r\nexport interface InviteModel {\r\n\tid: string;\r\n\tsubscriptionId: string;\r\n\temailAddress: string;\r\n\tinviteAuthorizationData: InviteAuthorizationData;\r\n}\r\n\r\nexport interface InviteAuthorizationData {\r\n\tauthorizationData: AuthorizationData,\r\n\trootAuthorizationData: RootAuthorizationData\r\n}\r\n\r\nexport interface InviteData {\r\n\tinviteAuthorizationData: InviteAuthorizationData;\r\n}\r\n\r\nexport interface CreateInviteResponse {\r\n\tinvite: InviteModel;\r\n\tclaimCode: string;\r\n\temailSent: boolean;\r\n\tsendFailReason: InviteSendFailResons;\r\n}\r\n\r\nexport enum InviteSendFailResons {\r\n\tInternalServerError = \"InternalServerError\",\r\n\tEmailDisabled = \"EmailDisabled\"\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, AbstractControl, ValidationErrors, UntypedFormArray } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { switchMap, debounceTime, distinctUntilChanged ,  startWith, map, filter, tap } from 'rxjs/operators';\r\nimport { Observable, of, Subscription, merge } from 'rxjs';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { UserService } from '../../services/user.service';\r\nimport { AuthManagementService } from '../../services/auth-management.service';\r\nimport { InviteService } from '../../services/invite.service';\r\nimport { CanComponentDeactivate } from '../../guards/can-deactivate.guard';\r\nimport { SubscriptionModel } from '../../api/subscriptions';\r\nimport { UserModel, UserData } from '../../api/users';\r\nimport { Config } from '../../api/configuration';\r\nimport { InviteSendFailResons, InviteAuthorizationData } from '../../api/invites';\r\nimport { Permissions, RootRoles, GrammaticalGender, ErrorCodes } from '../../api/enums';\r\nimport { SubscriptionAccess, SubscriptionAccessModel } from '../../api/authorization';\r\nimport { StringUtils } from '../../classes/utils';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nconst emailRegex = /^.+\\@.+\\..+$/;\r\n\r\n\r\n@Component({\r\n    selector: 'spa-user-invite',\r\n    templateUrl: './user-invite.component.html',\r\n    styleUrls: ['./user-invite.component.scss'],\r\n    standalone: false\r\n})\r\nexport class UserInviteComponent implements OnInit, OnDestroy, CanComponentDeactivate {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\tprivate $userChangesSubscription: Subscription;\r\n\r\n\tform: UntypedFormGroup;\r\n\tsaving: boolean = false;\r\n\tsubscriptions: SubscriptionModel[];\r\n\tfilteredUsers: Observable<UserModel[]>;\r\n\tprivate closing: boolean = false;\r\n\tsubmitAction$: Observable<string>;\r\n    selectedSubscription: string;\r\n\tmaxSubs = Config.maxShowingSubscriptions;\r\n\tloadingUsers: boolean;\r\n\twaitingInput: boolean;\r\n\tsubscriptionGender: GrammaticalGender = Config.labels.subscriptionGender;\r\n\r\n\tprivate readonly rootSub: SubscriptionModel = {\r\n\t\tid: Config.subscriptionRoot,\r\n\t\tname: 'Sys Admin',\r\n\t};\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate authManagementService: AuthManagementService,\r\n        private inviteService: InviteService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) {\r\n\t\tthis.createForm();\r\n\t}\r\n\r\n\tget roles(): UntypedFormArray {\r\n\t\treturn this.form.get('roles') as UntypedFormArray;\r\n\t}\r\n\r\n\tclearRoles() {\r\n\t\twhile (this.roles.controls.length > 0) {\r\n\t\t\tthis.roles.removeAt(0);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateForm() {\r\n\t\tlet roleOptions = this.spaControl.getSubscriptionRoles(this.spaControl.selectedSubscriptionSnapshot.sub).map(r => { return this.fb.group({ role: r, enabled: false }) });\r\n\r\n\t\tlet selectedSub = this.spaControl.selectedSubscriptionSnapshot.sub;\r\n\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tsub: [(selectedSub !== Config.subscriptionNoFilter) ? selectedSub : '', Validators.required],\r\n\t\t\tuser: ['', this.validateUserControl],\r\n\t\t\troles: this.fb.array(roleOptions, this.validateRoles)\r\n\t\t});\r\n\r\n\t\tif (selectedSub !== Config.subscriptionNoFilter) {\r\n\t\t\tif (selectedSub === Config.subscriptionRoot) {\r\n\t\t\t\tthis.selectedSubscription = this.rootSub.name;\r\n\t\t\t} else {\r\n\t\t\t\tlet currentSub = this.getSubAccess(selectedSub);\r\n\t\t\t\tif (currentSub) {\r\n\t\t\t\t\tthis.selectedSubscription = currentSub.subscription.name;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// since, by default, async validators are only executed when all the other synchronous validators pass, we are manually\r\n\t\t// hanging the async validator 'checkNameAvailable' to the observable 'valueChanges', from the form control 'name'\r\n\t\t// (because we want it to be verified every time the user changes this form control)\r\n\t\tif (this.$userChangesSubscription) {\r\n\t\t\tthis.$userChangesSubscription.unsubscribe();\r\n\t\t}\r\n\t\tthis.$userChangesSubscription = merge(this.form.get('user').valueChanges, this.form.get('sub').valueChanges)\r\n\t\t\t.pipe(switchMap(() => this.validateUserNotInSub(this.form))).subscribe({\r\n\t\t\t\terror: (e: HttpErrorResponse) => {\r\n\t\t\t\t\tif (e?.status == 422 && e?.error?.code == ErrorCodes.UserNotFound) {\r\n\t\t\t\t\t\t//if not found, user is not in subscription so just ignore the error message.\r\n\t\t\t\t\t\tthis.messageService.dismiss();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t}\r\n\r\n\tprivate validateRoles = (control: AbstractControl): ValidationErrors | null => {\r\n\t\tlet array = control as UntypedFormArray;\r\n\r\n\t\tif (array && !array.value.some(r => r.enabled)) {\r\n\t\t\treturn {\r\n\t\t\t\t'selectRole': true\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t};\r\n\r\n\tprivate validateUserControl = (control: AbstractControl): ValidationErrors | null => {\r\n\r\n\t\tif (control.value.id || control.value.emailAddress || emailRegex.exec(control.value) || control.value.subject) {\r\n\t\t\treturn null;\r\n\t\t} else {\r\n\t\t\treturn {\r\n\t\t\t\t'selectOrTypeEmail': true\r\n\t\t\t};\r\n\t\t}\r\n\t};\r\n\r\n\tprivate validateUserNotInSub = (group: UntypedFormGroup): Observable<any> => {\r\n\t\tlet sub = group.get('sub').value as string;\r\n\t\tlet userControl = group.get('user');\r\n\t\tlet userId = userControl.value.id as string;\r\n\r\n\t\tif (!userId) {\r\n\t\t\treturn of(null);\r\n\t\t}\r\n\r\n\t\tthis.logger.logTrace(`Checking whether user ${userId} is already on subscription ${sub}`);\r\n\t\treturn this.authManagementService.getUserSubscriptionRoles(userId, sub).pipe(\r\n\t\t\tmap((sa: SubscriptionAccessModel | RootRoles[]) => {\r\n\t\t\t\tif (!sa) {\r\n\t\t\t\t\tthis.logger.logTrace(`User ${userId} is not on subscription ${sub} yet`);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet roles = (sub != Config.subscriptionRoot) ? (sa as SubscriptionAccessModel).roles : sa as RootRoles[];\r\n\t\t\t\t\tif (roles.length == 0) {\r\n\t\t\t\t\t\tthis.logger.logTrace(`User ${userId} is not on subscription ${sub} yet`);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.logger.logTrace(`User ${userId} is already on subscription ${sub}`);\r\n\t\t\t\t\t\tuserControl.setErrors({ 'userAlreadyInSub': { value: name } });\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t};\r\n\r\n\tgetSubAccess(subId: string): SubscriptionAccess {\r\n\t\treturn this.spaControl.userProfile.subscriptions.find(s => s.subscription.id === subId);\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tlet profile = this.spaControl.userProfile;\r\n\t\tthis.subscriptions = [];\r\n\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ManageAgents).subscribe(canManage => {\r\n\t\t\t\tif (canManage) {\r\n\t\t\t\t\tlet currentSub = this.getSubAccess(this.spaControl.selectedSubscriptionSnapshot.sub);\r\n\r\n\t\t\t\t\tif (currentSub) {\r\n\t\t\t\t\t\tthis.subscriptions.push(currentSub.subscription);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.subscriptions.push(this.rootSub);\r\n\r\n\t\t\t\t\t\tfor (let sa of profile.subscriptions) {\r\n\t\t\t\t\t\t\tthis.subscriptions.push(sa.subscription);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\r\n\t\tlet subControl = this.form.get('sub');\r\n\t\tsubControl.valueChanges.subscribe(s => {\r\n\t\t\tlet roleOptions = this.spaControl.getSubscriptionRoles(s).map(r => { return { role: r, enabled: false } });\r\n\r\n\t\t\tthis.clearRoles();\r\n\r\n\t\t\tfor (let ro of roleOptions) {\r\n\t\t\t\tthis.roles.push(this.fb.group(ro));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet userControl = this.form.get('user');\r\n\t\tthis.filteredUsers = userControl.valueChanges.pipe(\r\n\t\t\tstartWith<string | UserModel>(''),\r\n\t\t\tfilter(value => value && !(value as UserModel).id), // list users only if a user is not yet selected, that is, if the user id is not yet fulfilled\r\n\t\t\tmap(value => typeof value === 'string' ? value : value.name),\r\n\t\t\tdebounceTime(800),\r\n\t\t\tdistinctUntilChanged(),\r\n\t\t\tswitchMap(name => {\r\n\t\t\t\tif (!name) {\r\n\t\t\t\t\treturn of([]);\r\n\t\t\t\t}\r\n\t\t\t\tif (name.length <= 3) {\r\n\t\t\t\t\tthis.waitingInput = true;\r\n\t\t\t\t\treturn of([]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.waitingInput = false;\r\n\t\t\t\t\tthis.loadingUsers = true;\r\n\t\t\t\t\treturn this.userService.listTopGlobalUsers(name);\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\ttap(() => this.loadingUsers = false, () => this.loadingUsers = false)\r\n\t\t);\r\n\t\tthis.submitAction$ = userControl.valueChanges.pipe(\r\n\t\t\tmap(v => v.id || v.subject ? this.transloco.translate('components.user-invite.add-user') : this.transloco.translate('components.user-invite.invite-user')),\r\n\t\t\tstartWith(this.transloco.translate('components.user-invite.add-user'))\r\n\t\t);\r\n\t}\r\n\r\n\tdisplayFn(user?: UserModel): string | undefined {\r\n\t\tif (!user) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t\treturn user.emailAddress ? `${user.name} (${user.emailAddress})` : user.name;\r\n\t}\r\n\r\n\tonSubmit() {\r\n\r\n\t\tthis.logger.logTrace('UserInviteComponent onSubmit');\r\n\t\tif (!this.form.valid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.saving = true;\r\n\r\n\t\tlet formModel = this.form.value;\r\n\t\tlet sub = formModel.sub as string;\r\n        let roles = formModel.roles.filter(ro => ro.enabled).map(ro => ro.role);\r\n        let data = {\r\n            roles: roles\r\n        }\r\n\r\n\t\tif (formModel.user.id) {\r\n\r\n\t\t\tthis.authManagementService.updateSubscriptionRoles(sub, formModel.user.id as string, data).subscribe(() => {\r\n\t\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.user-invite.user-added-successfully'));\r\n\t\t\t\tthis.closing = true;\r\n\t\t\t\tthis.close();\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.saving = false;\r\n\t\t\t});\r\n\r\n\t\t} else if (formModel.user.subject) {\r\n            let isRoot = formModel.sub === Config.subscriptionRoot;\r\n            let authorizationData = { roles: roles };\r\n\t\t\tlet userData: UserData = {\r\n\t\t\t\temailAddress: formModel.user.emailAddress,\r\n\t\t\t\tname: formModel.user.name,\r\n\t\t\t\tsubject: formModel.user.subject,\r\n\t\t\t\tauthorizationData: isRoot ? { roles: [] } : authorizationData,\r\n\t\t\t\trootAuthorizationData: isRoot ? authorizationData : { roles: [] }\r\n\t\t\t}\r\n\r\n\t\t\tthis.userService.create(formModel.sub, userData).subscribe(m => {\r\n\t\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.user-invite.user-added-successfully'));\r\n\t\t\t\tthis.closing = true;\r\n\t\t\t\tthis.close();\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.saving = false;\r\n\t\t\t});\r\n\r\n\t\t} else {\r\n\t\t\tlet email = formModel.user;\r\n\t\t\tlet inviteData = sub === Config.subscriptionRoot ? {  rootAuthorizationData: { roles } } : {  authorizationData: { roles } };\r\n\t\t\tthis.inviteService.create(sub, email, inviteData as InviteAuthorizationData).subscribe(response => {\r\n\t\t\t\tif (response.emailSent) {\r\n\t\t\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.user-invite.user-invited-successfully'));\r\n\t\t\t\t} else if (response.sendFailReason === InviteSendFailResons.EmailDisabled) {\r\n\t\t\t\t\tlet claimAccessLink = `${window.location.origin}/private/claim-access/${response.claimCode}`;\r\n\t\t\t\t\tthis.dialogService.showValue(claimAccessLink, {\r\n\t\t\t\t\t\ttitle: this.transloco.translate('components.user-invite.access-link'),\r\n\t\t\t\t\t\tmessage: this.transloco.translate('components.user-invite.invitation-created-but-email-is-disabled')\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.dialogService.alert(this.transloco.translate('components.user-invite.error-while-sending-email'), this.transloco.translate('common.warning'));\r\n\t\t\t\t}\r\n\t\t\t\tthis.closing = true;\r\n\t\t\t\tthis.close();\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.saving = false;\r\n\t\t\t});\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tcanDeactivate() {\r\n\t\tthis.logger.logTrace('UserInviteComponent canDeactivate', this.dialogService);\r\n\t\tif (!this.closing) {\r\n\t\t\tif (this.saving) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('common.continue-in-background'));\r\n\t\t\t} else if (this.form.dirty) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('components.user-invite.discard-invitation'));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n    }\r\n    \r\n    displaySubscription() {\r\n        return this.selectedSubscription || '';\r\n    }\r\n\r\n    selectSubscription() {\r\n        let subs = this.subscriptions.map(s => {\r\n            let sa : SubscriptionAccess = {\r\n                subscription: s,\r\n                roles: []\r\n            };\r\n            return sa;\r\n        });\r\n\r\n        this.dialogService.subSelector(subs).then((result: SubscriptionAccess) => {\r\n            if (result) {\r\n                this.form.patchValue({\r\n                    sub: result.subscription.id\r\n                });\r\n                this.selectedSubscription = result.subscription.name;\r\n            }\r\n        });\r\n    }\r\n\r\n\tgetErrorMessage(formControlName: string) {\r\n\r\n\t\tlet formControl = this.form.get(formControlName);\r\n\t\tlet subLabel = StringUtils.toLowerCaseFirstLetter(this.transloco.translate('common.subscription'));\r\n\r\n\t\tswitch (formControlName) {\r\n\r\n\t\t\tcase 'sub':\r\n\t\t\t\treturn formControl.hasError('required') ? this.transloco.translate('errors.select-a-subscription', { subLabel, subGender: this.subscriptionGender }) :\r\n\t\t\t\t\t'';\r\n\r\n\t\t\tcase 'user':\r\n\t\t\t\tif (formControl.hasError('selectOrTypeEmail')) {\r\n\t\t\t\t\treturn this.transloco.translate('components.user-invite.select-user-or-type-email');\r\n\t\t\t\t} else if (formControl.hasError('userAlreadyInSub')) {\r\n\t\t\t\t\treturn this.transloco.translate('components.user-invite.user-is-already-in-sub', { subLabel, subGender: this.subscriptionGender });\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t}\r\n\r\n\t\t\tcase 'roles':\r\n\t\t\t\treturn formControl.hasError('selectRole') ? this.transloco.translate('errors.select-at-least-one-role') :\r\n\t\t\t\t\t'';\r\n\t\t}\r\n\r\n\t\treturn this.transloco.translate('errors.field-invalid'); // should not happen\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t\tif (this.$userChangesSubscription) {\r\n\t\t\tthis.$userChangesSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<spa-box [loading]=\"saving\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('components.user-invite.add-user')}}</span>\r\n\r\n\t<form [formGroup]=\"form\">\r\n\r\n\t\t<div class=\"container\">\r\n\t\t\t<div class=\"row mt-3\">\r\n\r\n\t\t\t\t<div class=\"col-md-6 col-12\">\r\n\t\t\t\t\t<div class=\"d-flex flex-column\">\r\n\t\t\t\t\t\t<mat-form-field class=\"col-12 px-0\">\r\n\t\t\t\t\t\t\t<mat-label>{{t('components.user-invite.search-by-user-or-email')}}</mat-label>\r\n\t\t\t\t\t\t\t<input type=\"text\" matInput formControlName=\"user\" [matAutocomplete]=\"auto\">\r\n\t\t\t\t\t\t\t@if (loadingUsers) {\r\n\t\t\t\t\t\t\t\t<mat-icon matSuffix class=\"spin-counterclockwise text-primary\">sync</mat-icon>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t@if (form.get('user').invalid) {\r\n\t\t\t\t\t\t\t\t<mat-error>{{getErrorMessage('user')}}</mat-error>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t<mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayFn\">\r\n\t\t\t\t\t\t\t\t@for (user of filteredUsers | async; track user) {\r\n\t\t\t\t\t\t\t\t\t<mat-option [value]=\"user\">\r\n\t\t\t\t\t\t\t\t\t\t{{ user.name }} ({{user.emailAddress}})\r\n\t\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t</mat-autocomplete>\r\n\t\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t\t\t@if (waitingInput) {\r\n\t\t\t\t\t\t\t<div class=\"col-12 p-0\">\r\n\t\t\t\t\t\t\t\t<p class=\"text-warn d-flex align-items-center\">\r\n\t\t\t\t\t\t\t\t\t<mat-icon class=\"me-2\">warning</mat-icon>\r\n\t\t\t\t\t\t\t\t\t{{t('components.user-invite.type-more-chars')}}\r\n\t\t\t\t\t\t\t\t</p>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t@if (subscriptions.length <= maxSubs) {\r\n\t\t\t\t\t<mat-form-field class=\"col\">\r\n\t\t\t\t\t\t<mat-label>{{t('common.subscription')}}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"sub\">\r\n\t\t\t\t\t\t\t@for (sub of subscriptions; track sub) {\r\n\t\t\t\t\t\t\t\t<mat-option [value]=\"sub.id\">\r\n\t\t\t\t\t\t\t\t\t{{sub.name}}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error>{{getErrorMessage('sub')}}</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (subscriptions.length > maxSubs) {\r\n\t\t\t\t\t<div class=\"col\">\r\n\t\t\t\t\t\t<h3 class=\"mb-0 font-medium\">{{t('common.subscription')}}</h3>\r\n\t\t\t\t\t\t@if (selectedSubscription == null) {\r\n\t\t\t\t\t\t\t<button mat-stroked-button color=\"primary\" (click)=\"selectSubscription()\">\r\n\t\t\t\t\t\t\t\t{{t('common.select')}}\r\n\t\t\t\t\t\t\t\t{{t('common.subscription') | lowercase}}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (selectedSubscription != null) {\r\n\t\t\t\t\t\t\t<button mat-icon-button color=\"primary\" (click)=\"selectSubscription()\"><mat-icon>edit</mat-icon></button>\r\n\t\t\t\t\t\t\t<span class=\"font-medium\">{{selectedSubscription}}</span>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t<mat-error>{{getErrorMessage('sub')}}</mat-error>\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"row mt-3\">\r\n\t\t\t\t<div formArrayName=\"roles\" class=\"col\">\r\n\t\t\t\t\t<h3 class=\"mb-0 font-medium\">{{t('common.roles')}}</h3>\r\n\t\t\t\t\t@if (form.get('roles').invalid) {\r\n\t\t\t\t\t\t<mat-error>{{getErrorMessage('roles')}}</mat-error>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t<div class=\"d-md-flex d-block align-items-center\">\r\n\t\t\t\t\t\t@for (r of roles.controls; track r.value; let i = $index) {\r\n\t\t\t\t\t\t\t<div [formGroupName]=\"i\" class=\"me-4\">\r\n\t\t\t\t\t\t\t\t<mat-checkbox color=\"primary\" formControlName=\"enabled\">{{r.value.role | roles}}</mat-checkbox>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"d-flex justify-content-center\">\r\n\t\t\t\t<spa-submit-button [form]=\"form\" (submit)=\"onSubmit()\">\r\n\t\t\t\t\t{{submitAction$ | async}}\r\n\t\t\t\t</spa-submit-button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\r\n\t</form>\r\n\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Component } from '@angular/core';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Observable } from 'rxjs';\r\nimport { UserService } from '../../services/user.service';\r\nimport { map } from 'rxjs/operators';\r\nimport { Config } from '../../api/configuration';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { UserModel } from '../../api/users';\r\nimport { SubscriptionAccessModel } from '../../api/authorization';\r\n\r\n@Component({\r\n    selector: 'spa-user-list',\r\n    templateUrl: './user-list.component.html',\r\n    styleUrls: ['./user-list.component.scss'],\r\n    standalone: false\r\n})\r\nexport class UserListComponent {\r\n\t\r\n\tcolumnsToDisplay = ['name', 'emailAddress', 'roles'];\r\n\tshowSubs$: Observable<boolean>;\r\n\trootSubSelected$: Observable<boolean>;\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n        public userService: UserService,\r\n        private route: ActivatedRoute,\r\n        private router: Router,\r\n\t\tprivate spaControl: SpaControlService\r\n\t) {\r\n\t\tthis.showSubs$ = spaControl.allSubscriptionsSelected;\r\n\t\tthis.rootSubSelected$ = spaControl.selectedSubscription.pipe(map(s => s.sub === Config.subscriptionRoot));\r\n    }\r\n    \r\n    displayRootRoles(u: UserModel) {\r\n        return Config.hasParentIntegration ? u.parentRootRoles : u.rootRoles;\r\n    }\r\n\r\n    displayRoles(sa: SubscriptionAccessModel) {\r\n        return Config.hasParentIntegration ? sa.parentRoles : sa.roles;\r\n    }\r\n\r\n    navigateToUser(e: UserModel) {\r\n        var route = e.id || `parent/${e.subject}`;\r\n        this.router.navigate([route], { relativeTo: this.route });\r\n    }\r\n}\r\n","<lacm-table [dataSource]=\"userService\" matSort matSortActive=\"name\" *transloco=\"let t\">\r\n\r\n\t<ng-container matColumnDef=\"name\">\r\n\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.name')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">\r\n\t\t\t@if (!e.isLocked) {\r\n\t\t\t\t<a [routerLink]=\"\" (click)=\"navigateToUser(e)\">{{e.name}}</a>\r\n\t\t\t}\r\n\t\t\t@if (e.isLocked) {\r\n\t\t\t\t<a [routerLink]=\"\" (click)=\"navigateToUser(e)\" class=\"d-flex align-items-center agent-locked\" [matTooltip]=\"t('common.user-locked')\">\r\n\t\t\t\t\t<mat-icon class=\"mr-2\">lock</mat-icon>\r\n\t\t\t\t\t{{e.name}}\r\n\t\t\t\t</a>\r\n\t\t\t}\r\n\t\t</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<ng-container matColumnDef=\"emailAddress\">\r\n\t\t<mat-header-cell *matHeaderCellDef>Email</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\">{{e.emailAddress}}</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<ng-container matColumnDef=\"roles\">\r\n\t\t<mat-header-cell *matHeaderCellDef class=\"cell-sm\">{{t('common.roles')}}</mat-header-cell>\r\n\t\t<mat-cell *matCellDef=\"let e\" class=\"cell-sm\">\r\n\t\t\t@if (!(showSubs$ | async) && ((rootSubSelected$ | async) || e.subscriptions.length > 0)) {\r\n\t\t\t\t<span><b>{{ ((rootSubSelected$ | async) ? displayRootRoles(e) : displayRoles(e.subscriptions[0])) | roles}}</b></span>\r\n\t\t\t}\r\n\t\t\t@if (showSubs$ | async) {\r\n\t\t\t\t<ul>\r\n\t\t\t\t\t@if (e.rootRoles.length > 0) {\r\n\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t\tAdmin: <b>{{displayRootRoles(e) | roles}}</b>\r\n\t\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t@for (sa of e.subscriptions; track sa) {\r\n\t\t\t\t\t\t<li>\r\n\t\t\t\t\t\t\t{{ sa.subscriptionId | sub | async }}: <b>{{displayRoles(sa) | roles}}</b>\r\n\t\t\t\t\t\t</li>\r\n\t\t\t\t\t}\r\n\t\t\t\t</ul>\r\n\t\t\t}\r\n\t\t</mat-cell>\r\n\t</ng-container>\r\n\r\n\t<mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></mat-header-row>\r\n\t<mat-row *matRowDef=\"let row; columns: columnsToDisplay; \"></mat-row>\r\n\r\n</lacm-table>\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Permissions, ChildRedirectTypes } from '../../api/enums';\r\nimport { Config } from '../../api/configuration';\r\nimport { ParentRedirectService } from '../../services/parent-redirect.service';\r\n\r\n@Component({\r\n    selector: 'spa-users',\r\n    templateUrl: './users.component.html',\r\n    styleUrls: ['./users.component.scss'],\r\n    standalone: false\r\n})\r\nexport class UsersComponent implements OnInit, OnDestroy {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tcanManage$: Observable<boolean>;\r\n\tcanViewInvites$: Observable<boolean>;\r\n\tparentIntegrationEnabled: boolean = false;\r\n\r\n\tconstructor(\r\n\t\tprivate router: Router,\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate parentRedirectService: ParentRedirectService,\r\n\t) {\r\n\t\tthis.parentIntegrationEnabled = Config.hasParentIntegration;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('UsersComponent ngOnInit');\r\n\t\tthis.canManage$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ManageAgents);\r\n\t\tthis.canViewInvites$ = this.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ViewInvites);\r\n\t}\r\n\r\n\tnavigateToInvite() {\r\n\t\tif (Config.hasParentIntegration) {\r\n\t\t\tthis.$toUnsubscribe.push(\r\n\t\t\t\tthis.parentRedirectService.redirectToParent(ChildRedirectTypes.Invite).subscribe(() => {\r\n\t\t\t\t\tthis.logger.logTrace(\"Redirected to parent application invite\");\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis.router.navigate([\"invite\"], { relativeTo: this.route });\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.logger.logTrace('UsersComponent OnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<spa-box [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('common.users')}}</span>\r\n\r\n\t<div box-commands>\r\n\t\t<button mat-stroked-button color=\"primary\" (click)=\"navigateToInvite()\"\r\n\t\t\t[disabled]=\"!(canManage$ | async)\">{{t('common.add')}}</button>\r\n\t</div>\r\n\r\n\t<spa-user-list></spa-user-list>\r\n\r\n\t@if (!parentIntegrationEnabled && (canViewInvites$ | async)) {\r\n\t\t<h3>{{t('components.users.pending-invitations')}}</h3>\r\n\t\t<spa-invite-list></spa-invite-list>\r\n\t}\r\n\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, AbstractControl, UntypedFormControl, UntypedFormArray, ValidationErrors } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { ApplicationService } from '../../services/application.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { ApplicationData } from '../../api/applications';\r\nimport { switchMap, map } from 'rxjs/operators';\r\nimport { Observable, timer, merge, of } from 'rxjs';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport { Config } from '../../api/configuration';\r\nimport { SubscriptionModel } from '../../api/subscriptions';\r\nimport { Subscription } from 'rxjs';\r\nimport { Permissions, GrammaticalGender } from '../../api/enums';\r\nimport { StringUtils } from '../../classes/utils';\r\nimport { SubscriptionAccess } from '../../api/authorization';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-application-create',\r\n    templateUrl: './application-create.component.html',\r\n    styleUrls: ['./application-create.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ApplicationCreateComponent implements OnInit {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\tprivate $nameChangesSubscription: Subscription;\r\n\r\n\tform: UntypedFormGroup;\r\n\tsaving: boolean = false;\r\n\tsaved: boolean = false;\r\n\tsubscriptions: SubscriptionModel[];\r\n\trootSubSelected: boolean = false;\r\n\tselectedSubscription: string;\r\n\tmaxSubs = Config.maxShowingSubscriptions;\r\n\tsubscriptionGender: GrammaticalGender = Config.labels.subscriptionGender;\r\n\r\n\tprivate readonly rootSub: SubscriptionModel = {\r\n\t\tid: Config.subscriptionRoot,\r\n\t\tname: 'Sys Admin',\r\n\t};\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate appService: ApplicationService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) {\r\n\t\tthis.createForm();\r\n\t}\r\n\r\n\tget roles(): UntypedFormArray {\r\n\t\treturn this.form.get('roles') as UntypedFormArray;\r\n\t}\r\n\r\n\tclearRoles() {\r\n\t\twhile (this.roles.controls.length > 0) {\r\n\t\t\tthis.roles.removeAt(0);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateForm() {\r\n\t\tlet sub = this.spaControl.selectedSubscriptionSnapshot.sub !== Config.subscriptionNoFilter ? this.spaControl.selectedSubscriptionSnapshot.sub : '';\r\n\r\n\t\tthis.rootSubSelected = sub == Config.subscriptionRoot;\r\n\r\n\t\tlet roleOptions = this.spaControl.getSubscriptionRoles(sub).map(r => { return this.fb.group({ role: r, enabled: false }) });\r\n\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tsub: [sub, Validators.required],\r\n\t\t\tname: ['', Validators.required],\r\n\t\t\troles: this.fb.array(roleOptions, this.validateRoles),\r\n\t\t\tappId: ['']\r\n\t\t});\r\n\r\n\t\tif (sub === Config.subscriptionRoot) {\r\n\t\t\tthis.selectedSubscription = this.rootSub.name;\r\n\t\t} else {\r\n\t\t\tlet currentSub = this.getSubAccess(sub);\r\n\t\t\tif (currentSub) {\r\n\t\t\t\tthis.selectedSubscription = currentSub.subscription.name;\r\n\t\t\t\tthis.form.get('sub').disable();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// since, by default, async validators are only executed when all the other synchronous validators pass, we are manually\r\n\t\t// hanging the async validator 'checkNameAvailable' to the observable 'valueChanges', from the form control 'name'\r\n\t\t// (because we want it to be verified every time the user changes this form control)\r\n\t\tif (this.$nameChangesSubscription) {\r\n\t\t\tthis.$nameChangesSubscription.unsubscribe();\r\n\t\t}\r\n\t\tthis.$nameChangesSubscription = merge(this.form.get('name').valueChanges, this.form.get('sub').valueChanges)\r\n\t\t\t.pipe(switchMap(() => this.checkNameAvailable(this.form))).subscribe();\r\n\t}\r\n\r\n\tgetSubAccess(subId: string): SubscriptionAccess {\r\n\t\treturn subId ? this.spaControl.userProfile.subscriptions.find(s => s.subscription.id === subId) : null;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tlet profile = this.spaControl.userProfile;\r\n\t\tthis.subscriptions = [];\r\n\r\n\t\tlet subControl = this.form.get('sub')\r\n\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tsubControl.valueChanges.subscribe(s => {\r\n\t\t\t\tthis.rootSubSelected = s === Config.subscriptionRoot;\r\n\t\t\t\tlet roleOptions = this.spaControl.getSubscriptionRoles(s).map(r => { return { role: r, enabled: false } });\r\n\t\t\t\tthis.clearRoles();\r\n\t\t\t\tfor (let roleOption of roleOptions) {\r\n\t\t\t\t\tthis.roles.push(this.fb.group(roleOption));\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\r\n\t\t\tthis.spaControl.selectedSubscription.subscribe(s => {\r\n\t\t\t\tsubControl.setValue(s.sub !== Config.subscriptionNoFilter ? this.spaControl.selectedSubscriptionSnapshot.sub : '');\r\n\t\t\t}),\r\n\r\n\t\t\tthis.spaControl.userHasPermissionOnSelectedSubscription(Permissions.ManageAgents).subscribe(canManage => {\r\n\t\t\t\tif (canManage) {\r\n\t\t\t\t\tthis.subscriptions = [];\r\n\t\t\t\t\tlet currentSub = this.getSubAccess(this.spaControl.selectedSubscriptionSnapshot.sub);\r\n\r\n\t\t\t\t\tif (currentSub) {\r\n\t\t\t\t\t\tthis.subscriptions.push(currentSub.subscription);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.subscriptions.push(this.rootSub);\r\n\r\n\t\t\t\t\t\tfor (let sa of profile.subscriptions) {\r\n\t\t\t\t\t\t\tthis.subscriptions.push(sa.subscription);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tonSubmit() {\r\n\t\tif (!this.form.valid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet formModel = this.form.getRawValue();\r\n\t\tlet roles = formModel.roles.filter(ro => ro.enabled).map(ro => ro.role);\r\n\t\tlet isRoot = formModel.sub === Config.subscriptionRoot;\r\n\t\tlet authData = {\r\n\t\t\troles: roles\r\n\t\t}\r\n\r\n\t\tif (isRoot) {\r\n\t\t\tauthData['grantAppId'] = formModel.appId || null;\r\n\t\t}\r\n\r\n\t\tlet data: ApplicationData = {\r\n\t\t\tname: formModel.name as string,\r\n\t\t\tauthorizationData: isRoot ? { roles: [] } : authData,\r\n\t\t\trootAuthorizationData: isRoot ? authData : { roles: [] }\r\n\t\t};\r\n\r\n\t\tthis.saving = true;\r\n\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.appService.create(formModel.sub, data).subscribe(m => {\r\n\t\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.application-create.app-created-successfully'));\r\n\t\t\t\tthis.saved = true;\r\n\t\t\t\tthis.router.navigate(['..', m.id], { relativeTo: this.route });\r\n\t\t\t}, err => {\r\n\t\t\t\tthis.saving = false;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tdisplaySubscription() {\r\n\t\treturn this.selectedSubscription || '';\r\n\t}\r\n\r\n\tselectSubscription() {\r\n\t\tlet subs = this.subscriptions.map(s => {\r\n\t\t\tlet sa: SubscriptionAccess = {\r\n\t\t\t\tsubscription: s,\r\n\t\t\t\troles: []\r\n\t\t\t};\r\n\t\t\treturn sa;\r\n\t\t});\r\n\r\n\t\tthis.dialogService.subSelector(subs).then((result: SubscriptionAccess) => {\r\n\t\t\tif (result) {\r\n\t\t\t\tthis.form.patchValue({\r\n\t\t\t\t\tsub: result.subscription.id\r\n\t\t\t\t});\r\n\t\t\t\tthis.selectedSubscription = result.subscription.name;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tcanDeactivate() {\r\n\t\tthis.logger.logTrace('ApplicationCreateComponent canDeactivate', this.dialogService);\r\n\t\tif (!this.saved) {\r\n\t\t\tif (this.saving) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('common.continue-in-background'));\r\n\t\t\t} else if (this.form.dirty) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('components.application-create.discard-app-creation'));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n\r\n\tgetErrorMessage(formControlName: string) {\r\n\r\n\t\tlet formControl = this.form.get(formControlName);\r\n\r\n\t\tswitch (formControlName) {\r\n\r\n\t\t\tcase 'sub':\r\n\t\t\t\tlet subLabel = StringUtils.toLowerCaseFirstLetter(this.transloco.translate('common.subscription'));\r\n\t\t\t\treturn formControl.hasError('required') ? this.transloco.translate('errors.select-a-subscription', { subLabel, subGender: this.subscriptionGender }) :\r\n\t\t\t\t\t'';\r\n\r\n\t\t\tcase 'name':\r\n\t\t\t\tif (formControl.hasError('required')) {\r\n\t\t\t\t\treturn this.transloco.translate('errors.field-required');\r\n\t\t\t\t} else if (formControl.hasError('nameTaken')) {\r\n\t\t\t\t\treturn this.transloco.translate('errors.name-already-taken');\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn '';\r\n\t\t\t\t}\r\n\r\n\t\t\t//case 'roles':\r\n\t\t\t//\treturn formControl.hasError('selectRole') ? 'Você precisa selecionar pelo menos um papel' :\r\n\t\t\t//\t\t'';\r\n\t\t}\r\n\r\n\t\treturn this.transloco.translate('errors.field-invalid'); // should not happen\r\n\t}\r\n\r\n\tprivate checkNameAvailable = (group: UntypedFormGroup): Observable<any> => {\r\n\t\treturn timer(300).pipe(\r\n\t\t\tswitchMap(() => {\r\n\t\t\t\tlet nameControl = group.get('name') as UntypedFormControl;\r\n\t\t\t\tlet sub = group.get('sub').value as string;\r\n\t\t\t\tlet name = nameControl.value as string;\r\n\t\t\t\tif(!name) {\r\n\t\t\t\t\treturn of();\r\n\t\t\t\t}\r\n\t\t\t\tthis.logger.logTrace('Checking name availability:', name, 'on subscription', sub);\r\n\t\t\t\tif (sub) {\r\n\t\t\t\t\treturn this.appService.checkNameAvailable(sub, name as string).pipe(\r\n\t\t\t\t\t\tmap(isAvailable => {\r\n\t\t\t\t\t\t\tthis.logger.logTrace('Name available:', isAvailable);\r\n\t\t\t\t\t\t\tnameControl.setErrors(isAvailable ? null : { 'nameTaken': { value: name } });\r\n\t\t\t\t\t\t\treturn of();\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t)\r\n\t\t\t\t}\r\n\t\t\t\treturn of();\r\n\t\t\t})\r\n\t\t);\r\n\t};\r\n\r\n\tprivate validateRoles = (control: AbstractControl): ValidationErrors | null => {\r\n\t\tlet array = control as UntypedFormArray;\r\n\r\n\t\tif (array && !array.value.some(r => r.enabled)) {\r\n\t\t\treturn {\r\n\t\t\t\t'selectRole': true\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t};\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('ApplicationCreateComponent ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t\tif (this.$nameChangesSubscription) {\r\n\t\t\tthis.$nameChangesSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<spa-box [loading]=\"saving\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t<span box-title>{{t('components.application-create.new-application')}}</span>\r\n\r\n\t<form [formGroup]=\"form\">\r\n\t\t<div class=\"container\">\r\n\t\t\t<div class=\"row mt-3\">\r\n\t\t\t\t<mat-form-field class=\"col\">\r\n\t\t\t\t\t<mat-label>{{t('common.name')}}</mat-label>\r\n\t\t\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t\t\t@if (form.get('name').invalid) {\r\n\t\t\t\t\t\t<mat-error>{{getErrorMessage('name')}}</mat-error>\r\n\t\t\t\t\t}\r\n\t\t\t\t</mat-form-field>\r\n\r\n\t\t\t\t@if (subscriptions.length <= maxSubs) {\r\n\t\t\t\t\t<mat-form-field class=\"col\">\r\n\t\t\t\t\t\t<mat-label>{{t('common.subscription')}}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"sub\">\r\n\t\t\t\t\t\t\t@for (sub of subscriptions; track sub.id) {\r\n\t\t\t\t\t\t\t\t<mat-option [value]=\"sub.id\">\r\n\t\t\t\t\t\t\t\t\t{{sub.name}}\r\n\t\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error>{{getErrorMessage('sub')}}</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (subscriptions.length > maxSubs) {\r\n\t\t\t\t\t<div class=\"col\">\r\n\t\t\t\t\t\t@if (selectedSubscription == null) {\r\n\t\t\t\t\t\t\t<button mat-stroked-button color=\"primary\" (click)=\"selectSubscription()\">\r\n\t\t\t\t\t\t\t\t{{t('common.select')}} {{t('common.subscription')}}\r\n\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (selectedSubscription != null) {\r\n\t\t\t\t\t\t\t<button mat-icon-button color=\"primary\" (click)=\"selectSubscription()\"><mat-icon>edit</mat-icon></button>\r\n\t\t\t\t\t\t\t<span class=\"font-medium\">{{selectedSubscription}}</span>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (rootSubSelected) {\r\n\t\t\t\t\t<mat-form-field class=\"col\">\r\n\t\t\t\t\t\t<mat-label>{{t('common.grant-app-id')}}</mat-label>\r\n\t\t\t\t\t\t<input matInput formControlName=\"appId\">\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\r\n\t\t\t<div class=\"row mt-3\">\r\n\t\t\t\t<div formArrayName=\"roles\" class=\"col\">\r\n\t\t\t\t\t<h3 class=\"mb-0 font-medium\">{{t('common.roles')}}</h3>\r\n\t\t\t\t\t@if (form.get('roles').invalid) {\r\n\t\t\t\t\t\t<mat-error>{{getErrorMessage('roles')}}</mat-error>\r\n\t\t\t\t\t}\r\n\t\t\t\t\t<div class=\"d-md-flex d-block align-items-center\">\r\n\t\t\t\t\t\t@for (r of roles.controls; track r.value; let i = $index) {\r\n\t\t\t\t\t\t\t<div [formGroupName]=\"i\" class=\"me-4\">\r\n\t\t\t\t\t\t\t\t<mat-checkbox color=\"primary\" formControlName=\"enabled\">{{r.value.role | roles}}</mat-checkbox>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\r\n\r\n\t\t\t<div class=\"d-flex justify-content-center\">\r\n\t\t\t\t<spa-submit-button [form]=\"form\" (submit)=\"onSubmit()\">{{t('common.create')}}</spa-submit-button>\r\n\t\t\t</div>\r\n\r\n\t\t</div>\r\n\t</form>\r\n\r\n</spa-box>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, AbstractControl } from '@angular/forms';\r\nimport { Config } from '../../api/configuration';\r\nimport { Observable, timer } from 'rxjs';\r\nimport { switchMap, map } from 'rxjs/operators';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { SubscriptionService } from '../../services/subscription.service';\r\nimport { SubscriptionData, SubscriptionModel } from '../../api/subscriptions';\r\nimport { StringUtils } from '../../classes/utils';\r\nimport { GrammaticalGender } from '../../api/enums';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-subscription-form',\r\n    templateUrl: './subscription-form.component.html',\r\n    styleUrls: ['./subscription-form.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SubscriptionFormComponent implements OnInit {\r\n\r\n\tform: UntypedFormGroup;\r\n\r\n\tprivate _model: SubscriptionModel;\r\n\tget model(): SubscriptionModel {\r\n\t\treturn this._model;\r\n\t}\r\n\t@Input()\r\n\tset model(value: SubscriptionModel) {\r\n\t\tthis._model = value;\r\n\t\tthis.resetForm();\r\n\t}\r\n\r\n\t@Output()\r\n\tsubmitted = new EventEmitter<SubscriptionData>();\r\n\r\n\tget submitAction(): string {\r\n\t\treturn (this.model ? this.transloco.translate('common.save') : this.transloco.translate('common.create'));\r\n\t}\r\n\r\n\tprivate hasParentIntegration: boolean = Config.hasParentIntegration;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate subscriptionService: SubscriptionService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) {\r\n\t\tthis.createForm();\r\n\t}\r\n\r\n\tcreateForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tname: [{ value: '', disabled: this.hasParentIntegration }, [Validators.required, Validators.maxLength(100)], this.checkNameAvailable],\r\n\t\t\talias: [{ value: '', disabled: this.hasParentIntegration }, Validators.maxLength(50)],\r\n\t\t});\r\n\t}\r\n\r\n\tresetForm() {\r\n\t\tif (this.model) {\r\n\t\t\tthis.form.reset({\r\n\t\t\t\tname: this.model.name,\r\n\t\t\t\talias: this.model.alias,\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tonSubmit() {\r\n\r\n\t\tif (!this.form.valid) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet formModel = this.form.value;\r\n\r\n\t\tlet formData: SubscriptionData = {\r\n\t\t\tname: formModel.name,\r\n\t\t\talias: formModel.alias,\r\n\t\t};\r\n\r\n\t\tthis.submitted.emit(formData);\r\n\t}\r\n\r\n\tgetErrorMessage(formControlName: string) {\r\n\r\n\t\tlet formControl = this.form.get(formControlName);\r\n\r\n\t\tif (formControl && formControl.hasError('maxlength')) {\r\n\t\t\treturn this.transloco.translate('errors.max-length', { value: formControl.getError('maxlength').requiredLength });\r\n\t\t}\r\n\r\n\t\tswitch (formControlName) {\r\n\r\n\t\t\tcase 'name':\r\n\t\t\t\treturn formControl.hasError('required') ? this.transloco.translate('errors.field-required') :\r\n\t\t\t\t\tformControl.hasError('nameTaken') ? this.transloco.translate('errors.name-already-taken') :\r\n\t\t\t\t\t\t'';\r\n\t\t}\r\n\r\n\t\treturn this.transloco.translate('errors.field-invalid'); // should not happen\r\n\t}\r\n\r\n\tprivate checkNameAvailable = (control: AbstractControl): Observable<{ [key: string]: any }> => {\r\n\t\treturn timer(300).pipe(\r\n\t\t\tswitchMap(() => {\r\n\t\t\t\tthis.logger.logTrace('Checking subscription name availability: ', control.value);\r\n\t\t\t\treturn this.subscriptionService.checkNameAvailable(control.value as string, this.model ? this.model.id : null).pipe(\r\n\t\t\t\t\tmap(isAvailable => {\r\n\t\t\t\t\t\tthis.logger.logTrace('Name available:', isAvailable);\r\n\t\t\t\t\t\treturn isAvailable ? null : { 'nameTaken': { value: control.value } };\r\n\t\t\t\t\t})\r\n\t\t\t\t)\r\n\t\t\t})\r\n\t\t);\r\n\t};\r\n}\r\n","<form [formGroup]=\"form\" *transloco=\"let t\">\r\n\r\n\t<div class=\"row\">\r\n\t\t<mat-form-field class=\"col\">\r\n\t\t\t<mat-label>{{t('common.name')}}</mat-label>\r\n\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t<mat-error>{{getErrorMessage('name')}}</mat-error>\r\n\t\t</mat-form-field>\r\n\r\n\t\t<mat-form-field class=\"col\">\r\n\t\t\t<mat-label>{{t('common.nickname')}}</mat-label>\r\n\t\t\t<input matInput formControlName=\"alias\">\r\n\t\t\t<mat-error>{{getErrorMessage('alias')}}</mat-error>\r\n\t\t</mat-form-field>\r\n\t</div>\r\n\r\n\t<spa-submit-button [form]=\"form\" (submit)=\"onSubmit()\">{{submitAction}}</spa-submit-button>\r\n\r\n</form>\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { SubscriptionService } from '../../services/subscription.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { CanComponentDeactivate } from '../../guards/can-deactivate.guard';\r\nimport { SubscriptionData } from '../../api/subscriptions';\r\nimport { SubscriptionFormComponent } from '../subscription-form/subscription-form.component';\r\nimport { Config } from '../../api/configuration';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { GrammaticalGender } from '../../api/enums';\r\n\r\n@Component({\r\n    selector: 'spa-subscription-create',\r\n    templateUrl: './subscription-create.component.html',\r\n    styleUrls: ['./subscription-create.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SubscriptionCreateComponent implements OnInit, CanComponentDeactivate {\r\n\r\n\tsaving: boolean = false;\r\n\tclosing: boolean = false;\r\n\tsubscriptionGender: GrammaticalGender = Config.labels.subscriptionGender;\r\n\r\n\t@ViewChild(SubscriptionFormComponent)\r\n\tprivate formComponent: SubscriptionFormComponent;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate subscriptionService: SubscriptionService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tonSubmit(data: SubscriptionData) {\r\n\r\n\t\tthis.logger.logTrace('SubscriptionCreateComponent onSubmit', data);\r\n\r\n\t\tthis.saving = true;\r\n\r\n\t\tthis.subscriptionService.create(data).subscribe(() => {\r\n\t\t\tlet subLabel = this.transloco.translate('common.subscription');\r\n\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.subscription-create.subscription-created-successfully', { subLabel, subGender: this.subscriptionGender }));\r\n\t\t\tthis.closing = true;\r\n\t\t\tthis.close();\r\n\t\t}, err => {\r\n\t\t\tthis.saving = false;\r\n\t\t});\r\n\t}\r\n\r\n\tcanDeactivate() {\r\n\t\tthis.logger.logTrace('SubscriptionCreateComponent canDeactivate', this.dialogService);\r\n\t\tif (!this.closing) {\r\n\t\t\tif (this.saving) {\r\n\t\t\t\treturn this.dialogService.confirmContinueBackground();\r\n\t\t\t} else if (this.formComponent.form.dirty) {\r\n\t\t\t\treturn this.dialogService.confirmDiscard();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n}\r\n","<spa-box [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\t<span box-title>{{t('components.subscription-create.new-subscription', { subLabel: t('common.subscription') | lowercase, subGender: subscriptionGender })}}</span>\r\n\t<spa-subscription-form (submitted)=\"onSubmit($event)\"></spa-subscription-form>\r\n</spa-box>\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { SubscriptionService } from '../../services/subscription.service';\r\nimport { SubscriptionModel } from '../../api/subscriptions';\r\nimport { Config } from '../../api/configuration';\r\nimport { Subscription, merge } from 'rxjs';\r\n\r\n@Component({\r\n    selector: 'spa-subscription-detail',\r\n    templateUrl: './subscription-detail.component.html',\r\n    styleUrls: ['./subscription-detail.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SubscriptionDetailComponent implements OnInit, OnDestroy {\r\n\t\r\n\tmodel: SubscriptionModel;\r\n\tloading: boolean = true;\r\n\thasParentIntegration: boolean = Config.hasParentIntegration;\r\n\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate subscriptionService: SubscriptionService\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace('SubscriptionDetailComponent ngOnInit');\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tmerge(this.route.paramMap, this.subscriptionService.changed).subscribe(() => this.load())\r\n\t\t);\r\n\t}\r\n\r\n\tload() {\r\n\t\tthis.logger.logTrace('SubscriptionDetailComponent load');\r\n\t\tlet subId = this.route.snapshot.params['id'];\r\n\t\tthis.logger.logTrace('SubscriptionDetailComponent -- id:', subId);\r\n\t\tthis.loading = true;\r\n\t\tthis.subscriptionService.get(subId).subscribe(sub => {\r\n\t\t\tthis.logger.logTrace('SubscriptionDetailComponent -- model loaded');\r\n\t\t\tthis.model = sub;\r\n\t\t\tthis.loading = false;\r\n\t\t});\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('SubscriptionDetailComponent ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<spa-box [loading]=\"loading\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\r\n\t@if (!loading) {\r\n\t\t<span box-title>{{t('common.subscription')}} {{model.name}}</span>\r\n\t}\r\n\r\n\t<div box-commands>\r\n\t\t<button mat-stroked-button color=\"primary\" type=\"button\" routerLink=\"edit\">{{t('common.edit')}}</button>\r\n\t</div>\r\n\r\n\t@if (!loading) {\r\n\t\t<div>\r\n\t\t\t<div class=\"row pt-4\">\r\n\t\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t\t<spa-prop label=\"ID\">{{model.id}}</spa-prop>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t\t<spa-prop label=\"{{t('common.name')}}\">{{model.name}}</spa-prop>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-md col-12\">\r\n\t\t\t\t\t<spa-prop label=\"{{t('common.nickname')}}\">{{model.alias}}</spa-prop>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { SubscriptionFormComponent } from '../subscription-form/subscription-form.component';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { SubscriptionService } from '../../services/subscription.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { SubscriptionModel, SubscriptionData } from '../../api/subscriptions';\r\nimport { CanComponentDeactivate } from '../../guards/can-deactivate.guard';\r\nimport { Config } from '../../api/configuration';\r\nimport { GrammaticalGender } from '../../api/enums';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-subscription-edit',\r\n    templateUrl: './subscription-edit.component.html',\r\n    styleUrls: ['./subscription-edit.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SubscriptionEditComponent implements OnInit, CanComponentDeactivate {\r\n\r\n\tloading: boolean = true;\r\n\tsaving: boolean = false;\r\n\tclosing: boolean = false;\r\n\tmodel: SubscriptionModel;\r\n\tsubscriptionGender: GrammaticalGender = Config.labels.subscriptionGender;\r\n\r\n\t@ViewChild(SubscriptionFormComponent)\r\n\tprivate formComponent: SubscriptionFormComponent;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate subscriptionService: SubscriptionService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) {\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace(\"SubscriptionEditComponent ngOnInit\");\r\n\t\tthis.route.parent.paramMap.subscribe(paramMap => {\r\n\t\t\tlet subId = paramMap.get('id');\r\n\t\t\tthis.logger.logTrace('Subscription id:', subId);\r\n\t\t\tthis.loading = true;\r\n\t\t\tthis.subscriptionService.get(subId).subscribe(subscription => {\r\n\t\t\t\tthis.model = subscription;\r\n\t\t\t\tthis.loading = false;\r\n\t\t\t})\r\n\t\t});\r\n\t}\r\n\r\n\tonSubmit(data: SubscriptionData) {\r\n\r\n\t\tthis.saving = true;\r\n\r\n\t\tthis.subscriptionService.update(this.model.id, data).subscribe(() => {\r\n\t\t\tlet subLabel = this.transloco.translate('common.subscription');\r\n\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.subscription-edit.subscription-updated-successfully', { subLabel, subGender: this.subscriptionGender }));\r\n\t\t\tthis.closing = true;\r\n\t\t\tthis.close();\r\n\t\t}, err => {\r\n\t\t\tthis.saving = false;\r\n\t\t});\r\n\t}\r\n\r\n\tcanDeactivate() {\r\n\t\tthis.logger.logTrace('SubscriptionEditComponent canDeactivate', this.dialogService);\r\n\t\tif (!this.closing) {\r\n\t\t\tif (this.saving) {\r\n\t\t\t\treturn this.dialogService.confirmContinueBackground();\r\n\t\t\t} else if (this.formComponent.form.dirty) {\r\n\t\t\t\treturn this.dialogService.confirmDiscard();\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n\t}\r\n}\r\n","<spa-box [loading]=\"saving\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\t<span box-title>{{t('common.edit')}}</span>\r\n\r\n\t<spa-subscription-form [model]=\"model\" (submitted)=\"onSubmit($event)\"></spa-subscription-form>\r\n</spa-box>\r\n\r\n<router-outlet></router-outlet>\r\n","import { Pipe, PipeTransform, Optional, Inject } from '@angular/core';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { GetBreadcrumbDisplayNameFunction } from '../classes/types';\r\nimport { GET_BREADCRUMB_DISPLAY_NAME } from '../classes/injection-tokens';\r\nimport { NamedRoute } from '../api/named-route';\r\nimport { NamedRoutes } from '../api/enums';\r\n\r\n@Pipe({\r\n    name: 'breadcrumb', pure: false,\r\n    standalone: false\r\n})\r\nexport class BreadcrumbPipe implements PipeTransform {\r\n\tstatic translationMap: any = null;\r\n\tstatic langOfTranslationMap: string = null;\r\n\r\n\tstatic fallbackTranslationMap: any = null;\r\n\tstatic fallbackLanguage: string = null;\r\n\r\n\tlatestTransformedValue: string | null;\r\n\tlatestValue: NamedRoutes;\r\n\tlatestLanguageUsed: string;\r\n\r\n\tconstructor(\r\n\t\tprivate transloco: TranslocoService,\r\n\t\t@Optional() @Inject(GET_BREADCRUMB_DISPLAY_NAME) private getOverriddenBreadcrumbDisplayName: GetBreadcrumbDisplayNameFunction,\r\n\t) { }\r\n\r\n\ttransform(value: NamedRoute): any {\r\n\t\tlet currentLang = this.transloco.getActiveLang();\r\n\r\n\t\t// if the transformed value was previously calculated, and the latest language used to calculate is the same as the current one, return the cached value.\r\n\t\tif (this.latestTransformedValue !== undefined && this.latestLanguageUsed == currentLang && this.latestValue == value.name) {\r\n\t\t\t//this.logger.logDebug('cached: ', this.latestTransformedValue);\r\n\t\t\treturn this.latestTransformedValue;\r\n\t\t}\r\n\r\n\t\tlet displayName: string;\r\n\t\tthis.latestValue = value.name;\r\n\t\tthis.latestLanguageUsed = currentLang;\r\n\r\n\t\t// First, try to fetch the display name using the function getOverriddenBreadcrumbDisplayName\r\n\t\t// (this is method is tried first in order to keep the old behavior, avoiding surprises when updating SPA)\r\n\t\tif (this.getOverriddenBreadcrumbDisplayName && (displayName = this.getOverriddenBreadcrumbDisplayName(value.name))) {\r\n\t\t\t//this.logger.logDebug('getOverriddenBreadcrumbDisplayName: ', displayName);\r\n\t\t\tthis.latestTransformedValue = displayName;\r\n\t\t\treturn displayName;\r\n\t\t}\r\n\r\n\t\t// Second, try to get the display name using the translation map\r\n\t\t// (if the translation map wasn't fetched yet or if it was fetched for another language, try to fetch it again)\r\n\t\tif (!BreadcrumbPipe.translationMap || BreadcrumbPipe.langOfTranslationMap != currentLang) {\r\n\t\t\t// if the translation map could not be fetched for this language (probably because i18n file wasn't yet loaded), fetch the fallback translation map\r\n\t\t\tif (!(BreadcrumbPipe.translationMap = this.transloco.translateObject('enums.named-routes'))) {\r\n\t\t\t\t//this.logger.logDebug('FETCHING FALLBACK MAP');\r\n\t\t\t\tlet { fallbackTranslationMap, fallbackLanguage } = this.fetchFallbackTranslationInfo();\r\n\t\t\t\tthis.latestLanguageUsed = fallbackLanguage;\r\n\t\t\t\tBreadcrumbPipe.translationMap = fallbackTranslationMap;\r\n\t\t\t\tBreadcrumbPipe.langOfTranslationMap = fallbackLanguage;\r\n\t\t\t} else {\r\n\t\t\t\t//this.logger.logDebug('FETCHING LANGUAGE MAP');\r\n\t\t\t\tBreadcrumbPipe.langOfTranslationMap = currentLang;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// (check if the translation for the given key exists on the translation map; if so, return it)\r\n\t\tif (BreadcrumbPipe.translationMap && (displayName = BreadcrumbPipe.translationMap[value.name])) { // breadcrumbsTranslationObj should always be evaluated as true, unless something not expected happens...\r\n\t\t\t//this.logger.logDebug('map: ', displayName);\r\n\t\t\tthis.latestTransformedValue = displayName;\r\n\t\t\treturn displayName;\r\n\t\t}\r\n\r\n\t\t// In last case, use NamedRoute.displayName or NamedRoute.name\r\n\t\tdisplayName = value.displayName || value.name\r\n\t\t//this.logger.logDebug('display/name: ', displayName);\r\n\t\tthis.latestTransformedValue = displayName;\r\n\t\treturn displayName;\r\n\t}\r\n\r\n\tfetchFallbackTranslationInfo() {\r\n\t\t// if fallback translation info was already fetched, return it\r\n\t\tif (BreadcrumbPipe.fallbackLanguage && BreadcrumbPipe.fallbackTranslationMap) {\r\n\t\t\treturn {\r\n\t\t\t\tfallbackTranslationMap: BreadcrumbPipe.fallbackTranslationMap,\r\n\t\t\t\tfallbackLanguage: BreadcrumbPipe.fallbackLanguage\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t// otherwise, fetch it and then return it\r\n\t\tBreadcrumbPipe.fallbackLanguage = Array.isArray(this.transloco.config.fallbackLang) ? this.transloco.config.fallbackLang[0] : this.transloco.config.fallbackLang;\r\n\t\tBreadcrumbPipe.fallbackTranslationMap = this.transloco.translateObject('enums.named-routes', {}, BreadcrumbPipe.fallbackLanguage);\r\n\r\n\t\treturn {\r\n\t\t\tfallbackTranslationMap: BreadcrumbPipe.fallbackTranslationMap,\r\n\t\t\tfallbackLanguage: BreadcrumbPipe.fallbackLanguage\r\n\t\t};\r\n\t}\r\n}\r\n","import { Component, OnInit, OnDestroy, Optional, Inject, Output, EventEmitter } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { RouteHelperService } from '../../services/route-helper.service';\r\nimport { NamedRoute } from '../../api/named-route';\r\nimport { GET_BREADCRUMB_DISPLAY_NAME } from '../../classes/injection-tokens';\r\nimport { GetBreadcrumbDisplayNameFunction } from '../../classes/types';\r\nimport { NamedRoutes } from '../../api/enums';\r\nimport { TranslocoService, TRANSLOCO_LOADER, HashMap } from '@ngneat/transloco';\r\nimport { HttpTranslocoLoader } from '../../services/http-transloco.loader';\r\n\r\n// This component was based on:\r\n// https://medium.com/@bo.vandersteene/angular-5-breadcrumb-c225fd9df5cf\r\n\r\n@Component({\r\n    selector: 'spa-breadcrumb',\r\n    templateUrl: './breadcrumb.component.html',\r\n    styleUrls: ['./breadcrumb.component.scss'],\r\n    standalone: false\r\n})\r\nexport class BreadcrumbComponent implements OnInit, OnDestroy {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\t\r\n\tbreadcrumbsArray: NamedRoute[];\r\n\r\n\t//currentLang: string;\r\n\t//lastTranslationLoaded: HashMap<any>;\r\n\r\n\tget isBreadcrumbsArrayEmpty(): boolean {\r\n\t\treturn this.breadcrumbsArray.length == 0;\r\n\t}\r\n\r\n\tget canNavigateUp(): boolean {\r\n\t\treturn this.breadcrumbsArray.length > 1;\r\n\t}\r\n\r\n\t@Output()\r\n\tbreadcrumbsUpdate: EventEmitter<NamedRoute[]> = new EventEmitter();\r\n\r\n\t// Build your breadcrumb starting with the root route of your current activated route\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate routeHelperService: RouteHelperService,\r\n\t\tprivate router: Router,\r\n\t\t//private transloco: TranslocoService,\r\n\t\t//@Inject(TRANSLOCO_LOADER) private translocoLoader: HttpTranslocoLoader,\r\n\t\t@Optional() @Inject(GET_BREADCRUMB_DISPLAY_NAME) private getOverriddenBreadcrumbDisplayName: GetBreadcrumbDisplayNameFunction,\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.logger.logTrace(\"BreadcrumbComponent ngOnInit\");\r\n\r\n\t\t// rebuild the breadcrumbs array every time the collection of activated named routes changes\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.routeHelperService.activatedNamedRoutes.subscribe(this.buildBreadcrumbsArray),\r\n\t\t\t//this.translocoLoader.loaded$.subscribe(translation => this.lastTranslationLoaded = translation),\r\n\t\t\t//this.transloco.langChanges$.subscribe(lang => this.currentLang = lang),\r\n\t\t);\r\n\t}\r\n\r\n\tbuildBreadcrumbsArray = () => {\r\n\t\tlet collection = this.routeHelperService.activatedNamedRoutesSnapshot;\r\n\t\tthis.breadcrumbsArray = collection.activatedRoutes;\r\n\t\tlet indexOfLastBranchRoot = collection.activatedRoutes.map(r => r.branchRoot).lastIndexOf(true);\r\n\r\n\t\t// take only the sub-array that starts with the last breadcrumb that was marked as \"branchRoot\" (if any was marked so)\r\n\t\tif (indexOfLastBranchRoot != -1) {\r\n\t\t\tthis.breadcrumbsArray = this.breadcrumbsArray.slice(indexOfLastBranchRoot);\r\n\t\t}\r\n\r\n\t\tthis.breadcrumbsUpdate.emit(this.breadcrumbsArray);\r\n\t\tthis.logger.logTrace(\"BreadcrumbComponent -- breadcrumbs updated: \", this.breadcrumbsArray);\r\n\t}\r\n\r\n\tnavigateUp() {\r\n\t\tif (this.canNavigateUp) {\r\n\t\t\tthis.router.navigateByUrl(this.breadcrumbsArray[this.breadcrumbsArray.length - 2].url); // navigate to the url of the penultimate breadcrumb\r\n\t\t}\r\n\t}\r\n\r\n\tremoveBreadcrumb(routeName: NamedRoutes) {\r\n\t\tlet index: number;\r\n\t\tif (this.breadcrumbsArray && (index = this.breadcrumbsArray.findIndex(b => b.name == routeName)) > -1) {\r\n\t\t\tthis.breadcrumbsArray.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('BreadcrumbComponent ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","@if (!isBreadcrumbsArrayEmpty) {\r\n\t<div class=\"py-1 d-flex align-items-center align-middle breadcrumb\">\r\n\t\t<button mat-mini-fab class=\"me-2 mat-elevation-z0\" color=\"accent\" (click)=\"navigateUp()\" [disabled]=\"!canNavigateUp\">\r\n\t\t\t@if (canNavigateUp) {\r\n\t\t\t\t<mat-icon>arrow_back_ios</mat-icon>\r\n\t\t\t}\r\n\t\t</button>\r\n\t\t<div class=\"py-2 bg-lighter breadcrumb-bar d-flex align-items-center align-middle\">\r\n\t\t\t@for (namedRoute of breadcrumbsArray; track namedRoute.name; let isLast = $last) {\r\n\t\t\t\t<span [routerLink]=\"[namedRoute.url]\">\r\n\t\t\t\t\t<!--<spa-breadcrumb-name [namedRoute]=\"namedRoute\" [currentLang]=\"currentLang\" [lastTranslationLoaded]=\"lastTranslationLoaded\"></spa-breadcrumb-name>-->\r\n\t\t\t\t\t{{namedRoute | breadcrumb}}\r\n\t\t\t\t</span>\r\n\t\t\t\t@if (!isLast) {\r\n\t\t\t\t\t<mat-icon class=\"text-light\">keyboard_arrow_right</mat-icon>\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t</div>\r\n\t</div>\r\n}\r\n","export interface UploadModel {\r\n\tid: string,\r\n\tname: string,\r\n\tcontentType: string,\r\n\tpercentDone?: number,\r\n}\r\n\r\nexport interface FileModel extends UploadModel {\r\n\tlocation: string\r\n}\r\n\r\nexport interface UpdateFilesRequest {\r\n\tadd: UploadModel[], // files to be added\r\n\tdelete: string[], // IDs of existing files to be deleted \r\n}\r\n\r\nexport enum FileUploadError {\r\n\tMaxSize = 'MaxSize',\r\n\tType = 'Type',\r\n\tZeroByteFile = 'ZeroByteFile',\r\n\tInvalidContentType = 'InvalidContentType',\r\n\tInvalidExtensionForType = 'InvalidExtensionForType',\r\n\tMaxFilenameSize = 'MaxFilenameSize',\r\n};\r\n\r\nexport class FileUploadErrorInfo {\r\n\tfile: string;\r\n\ttype: FileUploadError;\r\n}\r\n\r\nexport interface UploadInspectionModel {\r\n\tname: string;\r\n\tcontentType: string;\r\n}\r\n\r\nexport interface UploadInspectionResultModel {\r\n\tisContentTypeValid: boolean;\r\n\tisExtensionValid: boolean;\r\n}\r\n\r\nexport interface CaptchaTicketRequest {\r\n\tcaptcha: string;\r\n}\r\n\r\nexport interface CaptchaTicketModel {\r\n\tticket: string;\r\n\texpirationDate: string;\r\n\tsecondsToExpire: number;\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { FileUploadErrorInfo, FileUploadError } from '../../api/files';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport mime from 'mime';\r\n\r\n@Component({\r\n    selector: 'spa-dialog-upload-error',\r\n    templateUrl: './dialog-upload-error.component.html',\r\n    styleUrls: ['./dialog-upload-error.component.scss'],\r\n    standalone: false\r\n})\r\nexport class DialogUploadErrorComponent implements OnInit {\r\n\r\n\ttitle: string;\r\n\terrors: FileUploadErrorInfo[] = null;\r\n\tacceptedTypes: string[];\r\n\tmaxFileSize: number;\r\n\tmaxFilenameSize: number;\r\n\r\n\tconstructor(\r\n\t\t@Inject(MAT_DIALOG_DATA) public data: any,\r\n\t\tprivate transloco: TranslocoService\r\n\t) {\r\n\t\tthis.title = data.title || this.transloco.translate('components.dialog-upload-error.errors-on-upload');\r\n\t\tthis.errors = data.errors;\r\n\t\tthis.acceptedTypes = data.acceptedTypes || [];\r\n\t\tthis.maxFileSize = data.maxFileSize;\r\n\t\tthis.maxFilenameSize = data.maxFilenameSize;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n\r\n\tgetError(type: FileUploadError): string {\r\n\t\tswitch (type) {\r\n\t\t\tcase FileUploadError.MaxSize:\r\n\t\t\t\treturn this.transloco.translate('components.dialog-upload-error.size-limit-reached', { value: this.formatFileSize(this.maxFileSize)});\r\n\t\t\tcase FileUploadError.Type:\r\n\t\t\t\treturn this.transloco.translate('components.dialog-upload-error.invalid-file-type', { value: this.formatListOfAcceptedTypes() });\r\n\t\t\tcase FileUploadError.ZeroByteFile:\r\n\t\t\t\treturn this.transloco.translate('components.dialog-upload-error.cant-upload-empty-file');\r\n\t\t\tcase FileUploadError.InvalidContentType:\r\n\t\t\t\treturn this.transloco.translate('components.dialog-upload-error.invalid-content-type');\r\n\t\t\tcase FileUploadError.InvalidExtensionForType:\r\n\t\t\t\treturn this.transloco.translate('components.dialog-upload-error.invalid-extension-for-type');\r\n\t\t\tcase FileUploadError.MaxFilenameSize:\r\n\t\t\t\treturn this.transloco.translate('components.dialog-upload-error.filename-size-limit-reached', { value: this.maxFilenameSize });\r\n\t\t\tdefault:\r\n\t\t\t\treturn this.transloco.translate('common.error');\r\n\t\t}\r\n\t}\r\n\r\n\tprivate formatListOfAcceptedTypes(): string {\r\n\t\tlet acceptedTypesLength = this.acceptedTypes.length;\r\n\t\tlet acceptedExtensions = this.acceptedTypes.map(type => {\r\n\t\t\tlet extension = mime.getExtension(type);\r\n\t\t\treturn extension ? `.${extension}` : type;\r\n\t\t});\r\n\t\treturn (acceptedTypesLength > 1) ? `\"${acceptedExtensions.slice(0, acceptedTypesLength).join('\", \"')}\"` : `\"${acceptedExtensions[0]}\"`;\r\n\t}\r\n\r\n\tprivate formatFileSize(bytes) {\r\n\t\tvar thresh = 1024;\r\n\t\tif (Math.abs(bytes) < thresh) {\r\n\t\t\treturn bytes + ' B';\r\n\t\t}\r\n\t\tvar units = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n\t\tvar u = -1;\r\n\t\tdo {\r\n\t\t\tbytes /= thresh;\r\n\t\t\t++u;\r\n\t\t} while (Math.abs(bytes) >= thresh && u < units.length - 1);\r\n\t\treturn bytes.toFixed(1) + ' ' + units[u];\r\n\t}\r\n\r\n}\r\n","<div class=\"mat-typography\">\r\n\t<spa-dialog-title>{{title}}</spa-dialog-title>\r\n\t<div mat-dialog-content *transloco=\"let t\">\r\n\t\t<div>\r\n\t\t\t<span>{{t('components.dialog-upload-error.following-files-had-errors')}}</span>\r\n\t\t</div>\r\n\t\t@if (errors) {\r\n\t\t\t<div class=\"row overflow-x-auto padding__top\">\r\n\t\t\t\t<mat-list role=\"list\">\r\n\t\t\t\t\t@for (err of errors; track err) {\r\n\t\t\t\t\t\t<mat-list-item class=\"w-max-content padding__top\" lines=\"2\">\r\n\t\t\t\t\t\t\t<mat-icon matListItemIcon>arrow_right_alt</mat-icon>\r\n\t\t\t\t\t\t\t<span matListItemTitle>{{err.file}}</span>\r\n\t\t\t\t\t\t\t<span matListItemLine>{{getError(err.type)}}</span>\r\n\t\t\t\t\t\t</mat-list-item>\r\n\t\t\t\t\t}\r\n\t\t\t\t</mat-list>\r\n\t\t\t</div>\r\n\t\t}\r\n\t</div>\r\n\t<div mat-dialog-actions>\r\n\t\t<button mat-flat-button mat-dialog-close color=\"primary\">OK</button>\r\n\t</div>\r\n</div>\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpEvent, HttpParams, HttpRequest, HttpHeaders, HttpEventType, HttpResponse } from '@angular/common/http';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { SpaControlService } from './spa-control.service';\r\nimport { Config } from '../api/configuration';\r\nimport { CaptchaTicketModel, CaptchaTicketRequest, FileModel, UploadInspectionModel, UploadInspectionResultModel } from '../api/files';\r\nimport { filter, map } from 'rxjs/operators';\r\n\r\nexport const enum UploadEventTypes {\r\n\tProgress = 'Progress',\r\n\tCompleted = 'Completed',\r\n}\r\n\r\nexport class UploadEvent {\r\n\tconstructor(\r\n\t\tpublic type: UploadEventTypes,\r\n\t\tpublic model?: FileModel,\r\n\t\tpublic progress?: number,\r\n\t) {\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class UploadService {\r\n\r\n\tget defaultApiRoute(): string {\r\n\t\treturn this.spaControl.userProfile ? '/api/uploads' : '/api/uploads/public'\r\n\t}\r\n\r\n\tconstructor(private http: HttpClient, private spaControl: SpaControlService) {\r\n\t}\r\n\r\n\t// Obsolete\r\n\tuploadFile(formData: FormData, uploadUrl?: string, params?: HttpParams, headers?: HttpHeaders): Observable<HttpEvent<any>> {\r\n\t\treturn this.sendUploadRequest(formData, uploadUrl || this.defaultApiRoute, params, headers);\r\n\t}\r\n\r\n\t// Obsolete\r\n\tstartSegmentedUpload(): Observable<string> {\r\n\t\treturn this.sendStartSegmentedUploadRequest(this.defaultApiRoute);\r\n\t}\r\n\r\n\tuploadFile2(file: File, uploadUrl?: string, params?: HttpParams, headers?: HttpHeaders): Observable<UploadEvent> {\r\n\r\n\t\tuploadUrl = uploadUrl || this.defaultApiRoute;\r\n\r\n\t\tif (file.size < Config.segmentedUploadThreshold) {\r\n\t\t\t// `uploadFileSingleSegment` returns a cold observable, while `uploadFileSegmentedly` returns a hot one. Here,\r\n\t\t\t// we turn the cold observable into hot, so that this function always return the same kind of observable (hot).\r\n\t\t\treturn this.makeHot(this.uploadFileSingleSegment(file, uploadUrl, params, headers));\r\n\t\t} else {\r\n\t\t\treturn this.uploadFileSegmentedly(file, uploadUrl, params, headers);\r\n\t\t}\r\n\t}\r\n\r\n\tvalidate(uploads: UploadInspectionModel[]): Observable<UploadInspectionResultModel[]> {\r\n\t\treturn this.http.post<UploadInspectionResultModel[]>(`${this.defaultApiRoute}/inspection`, uploads);\r\n\t}\r\n\r\n\tgenerateCaptchaTicket(captcha: string): Observable<CaptchaTicketModel> {\r\n\t\treturn this.http.post<CaptchaTicketModel>(`${this.defaultApiRoute}/captcha-ticket`, <CaptchaTicketRequest>{ captcha: captcha });\r\n\t}\r\n\r\n\tprivate uploadFileSingleSegment(file: File, uploadUrl: string, params?: HttpParams, headers?: HttpHeaders): Observable<UploadEvent> {\r\n\r\n\t\tconst body = new FormData();\r\n\t\tbody.append(\"file\", file);\r\n\t\tbody.append(\"name\", file.name);\r\n\t\tbody.append(\"contentType\", file.type);\r\n\r\n\t\treturn this.sendUploadRequest(body, uploadUrl, params, headers).pipe(\r\n\t\t\tmap(event => {\r\n\t\t\t\tif (event.type === HttpEventType.UploadProgress) {\r\n\t\t\t\t\treturn new UploadEvent(UploadEventTypes.Progress, null, Math.round(100 * event.loaded / event.total));\r\n\t\t\t\t} else if (event instanceof HttpResponse) {\r\n\t\t\t\t\treturn new UploadEvent(UploadEventTypes.Completed, event.body as FileModel);\r\n\t\t\t\t}\r\n\t\t\t}),\r\n\t\t\tfilter(event => event != null),\r\n\t\t);\r\n\t}\r\n\r\n\tprivate uploadFileSegmentedly(file: File, uploadUrl: string, params?: HttpParams, headers?: HttpHeaders): Observable<UploadEvent> {\r\n\r\n\t\tconst result: Subject<UploadEvent> = new Subject();\r\n\t\tconst uploadSegmentLength = Config.uploadSegmentLength;\r\n\r\n\t\t// start the segmented upload, and get the ticket\r\n\t\tthis.sendStartSegmentedUploadRequest(uploadUrl, params, headers).subscribe(ticket => {\r\n\t\t\tconst segmentsControl: Subject<number> = new Subject(); // controls the chaining of segment requests\r\n\r\n\t\t\tconst paramsWithTicket = (params || new HttpParams()).append('ticket', ticket);\r\n\r\n\t\t\t// the code below describes the upload of each segment\r\n\t\t\tsegmentsControl.subscribe(segmentNumber => {\r\n\t\t\t\tconst segmentStart = segmentNumber * uploadSegmentLength;\r\n\t\t\t\tlet segmentEnd = (segmentNumber + 1) * uploadSegmentLength;\r\n\t\t\t\tsegmentEnd = (segmentEnd > file.size) ? file.size : segmentEnd; // check if segmentEnd is greater than file size, and adjust it if so\r\n\r\n\t\t\t\tconst segmentBody = new FormData();\r\n\t\t\t\tsegmentBody.append(\"file\", file.slice(segmentStart, segmentEnd));\r\n\t\t\t\tsegmentBody.append(\"name\", file.name);\r\n\t\t\t\tsegmentBody.append(\"contentType\", file.type);\r\n\r\n\t\t\t\tconst segmentHeaders = (headers || new HttpHeaders()).append('content-range', `bytes ${segmentStart}-${segmentEnd - 1}/${file.size}`);\r\n\r\n\t\t\t\tthis.sendUploadRequest(segmentBody, uploadUrl, paramsWithTicket, segmentHeaders).subscribe(event => {\r\n\t\t\t\t\tif (event.type === HttpEventType.UploadProgress) {\r\n\t\t\t\t\t\tresult.next(new UploadEvent(UploadEventTypes.Progress, null, Math.round(100 * ((segmentStart / file.size) + (event.loaded / event.total) * ((segmentEnd - segmentStart) / file.size)))));\r\n\t\t\t\t\t} else if (event instanceof HttpResponse) {\r\n\t\t\t\t\t\tconst nextSegmentNumber = ++segmentNumber;\r\n\t\t\t\t\t\tif (nextSegmentNumber * uploadSegmentLength < file.size) { // if this was not the last segment yet...\r\n\t\t\t\t\t\t\tsegmentsControl.next(nextSegmentNumber); // send the next segment\r\n\t\t\t\t\t\t} else { // if this was the last segment...\r\n\t\t\t\t\t\t\tresult.next(new UploadEvent(UploadEventTypes.Completed, event.body as FileModel));\r\n\t\t\t\t\t\t\tresult.complete();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}, err => {\r\n\t\t\t\t\tresult.error(err);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tsegmentsControl.next(0); // send the first segment\r\n\r\n\t\t}, err => {\r\n\t\t\tresult.error(err);\r\n\t\t});\r\n\r\n\t\treturn result.asObservable();\r\n\t}\r\n\r\n\tprivate sendUploadRequest(formData: FormData, uploadUrl: string, params?: HttpParams, headers?: HttpHeaders): Observable<HttpEvent<any>> {\r\n\t\tconst options = {\r\n\t\t\theaders: headers,\r\n\t\t\tparams: params,\r\n\t\t\treportProgress: true,\r\n\t\t};\r\n\t\tconst req = new HttpRequest('POST', uploadUrl, formData, options);\r\n\t\treturn this.http.request(req);\r\n\t}\r\n\r\n\tprivate sendStartSegmentedUploadRequest(uploadUrl: string, params?: HttpParams, headers?: HttpHeaders): Observable<string> {\r\n\t\tconst options = {\r\n\t\t\theaders: headers,\r\n\t\t\tparams: params,\r\n\t\t};\r\n\t\treturn this.http.post<string>(uploadUrl + '/segmented-upload-ticket', {}, options);\r\n\t}\r\n\r\n\tprivate makeHot<T>(cold: Observable<T>): Observable<T> {\r\n\t\tconst subject = new Subject<T>();\r\n\t\tcold.subscribe(subject);\r\n\t\treturn subject.asObservable();\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n    name: 'fileSize',\r\n    standalone: false\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n\ttransform(bytes: number): string {\r\n\t\tvar thresh = 1024;\r\n\t\tif (Math.abs(bytes) < thresh) {\r\n\t\t\treturn bytes + ' B';\r\n\t\t}\r\n\t\tvar units = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\r\n\t\tvar u = -1;\r\n\t\tdo {\r\n\t\t\tbytes /= thresh;\r\n\t\t\t++u;\r\n\t\t} while (Math.abs(bytes) >= thresh && u < units.length - 1);\r\n\t\treturn bytes.toFixed(1) + ' ' + units[u];\r\n\t}\r\n}\r\n","import { Directive, EventEmitter, HostListener, Output } from '@angular/core';\r\n\r\n@Directive({\r\n    selector: '[spaDnd]',\r\n    standalone: false\r\n})\r\nexport class DndDirective {\r\n\t@Output() filesDropped = new EventEmitter<any>();\r\n\r\n\t@Output() filesOver = new EventEmitter<boolean>();\r\n\r\n\tconstructor() { }\r\n\r\n\t@HostListener('dragover', ['$event']) onDragOver(evt) {\r\n\t\tevt.preventDefault();\r\n\t\tevt.stopPropagation();\r\n\t\tthis.filesOver.emit(true);\r\n\t}\r\n\r\n\t@HostListener('dragleave', ['$event']) public onDragLeave(evt) {\r\n\t\tevt.preventDefault();\r\n\t\tevt.stopPropagation();\r\n\t\tthis.filesOver.emit(false);\r\n\t}\r\n\r\n\t@HostListener('drop', ['$event']) public onDrop(evt) {\r\n\t\tevt.preventDefault();\r\n\t\tevt.stopPropagation();\r\n\t\tthis.filesOver.emit(false);\r\n\t\tthis.filesDropped.emit(evt);\r\n\t}\r\n}\r\n","import { Component, OnInit, Input, ViewChild, ElementRef, Output, EventEmitter, HostListener, Directive, ContentChildren, QueryList, TemplateRef } from '@angular/core';\r\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { FileModel, FileUploadErrorInfo, FileUploadError, UploadInspectionModel, UploadInspectionResultModel } from '../../api/files';\r\nimport { Config } from '../../api/configuration';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { HttpHeaders, HttpParams } from '@angular/common/http';\r\nimport { UploadService, UploadEventTypes } from '../../services/upload.service';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { DialogUploadErrorComponent } from '../../components/dialog-upload-error/dialog-upload-error.component';\r\nimport { FileSizePipe } from '../../pipes/file-size.pipe';\r\nimport { SpaControlService } from '../../services/spa-control.service';\r\nimport * as momentJs from 'moment'; const moment = momentJs[\"default\"]; // https://github.com/ng-packagr/ng-packagr/issues/217#issuecomment-360176759\r\nimport { CaptchaService } from '../../services/captcha.service';\r\n\r\n@Directive({\r\n    selector: '[filesAction]',\r\n    standalone: false\r\n})\r\nexport class FilesActionDirective { }\r\n\r\n@Component({\r\n    selector: 'spa-files',\r\n    templateUrl: './files.component.html',\r\n    styleUrls: ['./files.component.scss'],\r\n    standalone: false\r\n})\r\nexport class FilesComponent implements OnInit {\r\n\r\n\t// these FormArrays will be binded to a control of a FormGroup from the parent component\r\n\t@Input() filesToAdd: UntypedFormArray;\r\n\t@Input() filesToDelete: UntypedFormArray;\r\n\r\n\t@Input() existingFiles: FileModel[];\r\n\r\n\t@Input() acceptedTypes: string[];\r\n\r\n\t// this will input be forwarded to <input> accept Attribute\r\n\t@Input() accept: string = '';\r\n\r\n\t@Input() onFileClick: (file: FileModel) => any;\r\n\r\n\t@Input() uploadUrl: string;\r\n\r\n\t@Input() httpParams?: HttpParams\r\n\t@Input() httpHeaders?: HttpHeaders;\r\n\r\n\t@Input({transform: coerceBooleanProperty}) readOnly: boolean;\r\n\r\n\t@Input({transform: coerceBooleanProperty}) single: boolean;\r\n\r\n\t@Input()\r\n\tget maxFileSize(): number { return this._maxFileSize || Config.maxFileSize; }\r\n\tset maxFileSize(maxSize: number) {\r\n\t\tthis._maxFileSize = maxSize;\r\n\t}\r\n\tprivate _maxFileSize: number;\r\n\r\n\t@Input({transform: coerceBooleanProperty}) hideViewButton: boolean;\r\n\r\n\t@Input({transform: coerceBooleanProperty}) hideDeleteButton: boolean;\r\n\r\n\t@Input()\r\n\tget maxFilenameSize(): number { return this._maxFilenameSize ? this._maxFilenameSize : Config.maxFilenameSize; }\r\n\tset maxFilenameSize(maxFilenameSize: number) {\r\n\t\tthis._maxFilenameSize = maxFilenameSize;\r\n\t}\r\n\tprivate _maxFilenameSize: number;\r\n\r\n\t@ViewChild('fileInp') fileButton: ElementRef;\r\n\t@ContentChildren(FilesActionDirective, { read: TemplateRef }) filesActions: QueryList<TemplateRef<any>>;\r\n\r\n\thighlightContainer: boolean;\r\n\ttouched: boolean;\r\n\r\n\t// both filesLoading and loading files can be used by the parent to know if there is still any file loading\r\n\t@Output() filesLoading: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\tprivate numberOfFilesLoading: number = 0;\r\n\tprivate _loadingFiles: boolean = false;\r\n\tget loadingFiles(): boolean { return this._loadingFiles }\r\n\r\n\t// this info can be used by the parent, to know if there is any changes pending\r\n\tget changesPending(): boolean {\r\n\t\tif ((this.filesToAdd && this.filesToAdd.length > 0) || (this.filesToDelete && this.filesToDelete.length > 0)) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\tget filesToShow(): FileModel[] {\r\n\t\tlet filesToShow: FileModel[] = [];\r\n\t\tif (this.existingFiles != null) {\r\n\t\t\tfilesToShow.push(...this.existingFiles);\r\n\t\t}\r\n\t\tif (this.filesToDelete != null) {\r\n\t\t\tfilesToShow = filesToShow.filter(elem => !(this.filesToDelete.value.some(deletedFile => deletedFile.id == elem.id))); // remove the deleted files from this list\r\n\t\t}\r\n\t\tif (this.filesToAdd != null) {\r\n\t\t\tfilesToShow.push(...(this.filesToAdd.value.filter(e => e.id != null)));\r\n\t\t}\r\n\t\treturn filesToShow;\r\n\t}\r\n\r\n\tget willSwapFile() {\r\n\t\treturn this.single && (this.filesToAdd && this.filesToAdd.length > 0 || this.existingFiles && this.existingFiles.length > 0);\r\n\t}\r\n\r\n\tloading: boolean;\r\n\tuseCaptcha: boolean;\r\n\tcaptchaTicketExpiration: momentJs.Moment;\r\n\r\n\tconstructor(\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate uploadService: UploadService,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate dialog: MatDialog,\r\n\t\tprivate fileSizePipe: FileSizePipe,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate captchaService: CaptchaService,\r\n\t) {\r\n\t\tthis.useCaptcha = Config.captcha.enabled;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tif (this.filesToAdd == undefined && !this.readOnly) {\r\n\t\t\tthrow (\"A FormArray representing the files to be added need to be passed to FilesComponent, but none was received.\");\r\n\t\t}\r\n\t\telse if (this.filesToAdd != undefined && this.readOnly) {\r\n\t\t\tthis.logger.logWarning(\"FilesComponent -- a filesToAdd array was passed to this component unnecessarily, since it is in read only mode\");\r\n\t\t}\r\n\r\n\t\tif (this.filesToDelete == undefined && !this.readOnly && this.existingFiles != undefined) {\r\n\t\t\tthrow (\"A FormArray representing the files to be deleted need to be passed to FilesComponent, but none was received.\");\r\n\t\t}\r\n\t\telse if (this.filesToDelete != undefined && this.readOnly) {\r\n\t\t\tthis.logger.logWarning(\"FilesComponent -- a filesToDelete array was passed to this component unnecessarily, since it is in read only mode\");\r\n\t\t}\r\n\r\n\t\tif (this.existingFiles == undefined && this.readOnly) {\r\n\t\t\tthis.logger.logWarning(\"FilesComponent -- read only mode is activated but the input 'existingFiles' is undefined\");\r\n\t\t}\r\n\r\n\t\tif (this.existingFiles != undefined && this.existingFiles.length > 1 && this.single) {\r\n\t\t\tthrow (\"FilesComponent is marked as single, but an existingFiles array containing more than one file was passed\");\r\n\t\t}\r\n\t}\r\n\r\n\tasync transferDataSuccess($event) {\r\n\t\tif (!this.readOnly) { // files data are only to be processed when this component is not in read only mode\r\n\t\t\tif ($event.target?.files || $event.srcElement?.files || $event.dataTransfer?.files) {\r\n\t\t\t\tlet transferedFiles: File[] = [];\r\n\t\t\t\tlet validFiles = 0;\r\n\r\n\t\t\t\tif ($event.dataTransfer?.files) {\r\n                    transferedFiles = $event.dataTransfer.files;\r\n                } else if ($event.target?.files) {\r\n                    transferedFiles = $event.target.files\r\n                } else {\r\n                    transferedFiles = $event.srcElement.files\r\n                }\r\n\r\n\t\t\t\tif (this.single && transferedFiles.length > 1) {\r\n\t\t\t\t\tthis.logger.logWarning('FilesComponent -- multiple files were selected, but the property \"single\" is set to true. Thus, only the first valid file will be added.');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet errors: FileUploadErrorInfo[] = [];\r\n\r\n\t\t\t\tif (this.useCaptcha && !this.spaControl.userProfile) {\r\n\t\t\t\t\tif (!this.captchaTicketExpiration || moment().isAfter(this.captchaTicketExpiration)) {\r\n\t\t\t\t\t\tthis.loading = true;\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tawait this.setCaptchaHeaders();\r\n\t\t\t\t\t\t} finally {\r\n\t\t\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet inspectionResult: UploadInspectionResultModel[];\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tthis.loading = true;\r\n\t\t\t\t\tinspectionResult = await this.uploadService.validate(this.convertFilesToInspectionModel(transferedFiles)).toPromise();\r\n\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t} catch (e) {\r\n\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let i = 0; i < transferedFiles.length; i++) {\r\n\t\t\t\t\tlet transferedFile = transferedFiles[i];\r\n\t\t\t\t\tlet fileInspectionResult = inspectionResult[i];\r\n\r\n\t\t\t\t\tif (transferedFile.size == 0) {\r\n\t\t\t\t\t\terrors.push({\r\n\t\t\t\t\t\t\tfile: `${transferedFile.name} (${this.fileSizePipe.transform(transferedFile.size)})`,\r\n\t\t\t\t\t\t\ttype: FileUploadError.ZeroByteFile\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (transferedFile.size > this.maxFileSize) {\r\n\r\n\t\t\t\t\t\terrors.push({\r\n\t\t\t\t\t\t\tfile: `${transferedFile.name} (${this.fileSizePipe.transform(transferedFile.size)})`,\r\n\t\t\t\t\t\t\ttype: FileUploadError.MaxSize\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t//this.dialogService.alert(`O arquivo ${transferedFile.name} (${this.formatFileSize(transferedFile.size)}) tem tamanho maior que o permitido (${this.formatFileSize(Config.maxFileSize)})!`, \"Erro ao enviar arquivo!\");\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (transferedFile.name.length > this.maxFilenameSize) {\r\n\r\n\t\t\t\t\t\terrors.push({\r\n\t\t\t\t\t\t\tfile: `${transferedFile.name}`,\r\n\t\t\t\t\t\t\ttype: FileUploadError.MaxFilenameSize\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (this.acceptedTypes && !this.acceptedTypes.some(t => t == transferedFile.type)) {\r\n\t\t\t\t\t\terrors.push({\r\n\t\t\t\t\t\t\tfile: `${transferedFile.name} (${this.fileSizePipe.transform(transferedFile.size)})`,\r\n\t\t\t\t\t\t\ttype: FileUploadError.Type\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t//this.dialogService.alert(`O arquivo ${transferedFile.name} (${this.formatFileSize(transferedFile.size)}) não possui formato PDF!`, \"Erro ao enviar arquivo!\");\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t} else if (!fileInspectionResult.isContentTypeValid || !fileInspectionResult.isExtensionValid) {\r\n\t\t\t\t\t\tif (!fileInspectionResult.isContentTypeValid) {\r\n\t\t\t\t\t\t\terrors.push({\r\n\t\t\t\t\t\t\t\tfile: `${transferedFile.name} (${this.fileSizePipe.transform(transferedFile.size)})`,\r\n\t\t\t\t\t\t\t\ttype: FileUploadError.InvalidContentType\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!fileInspectionResult.isExtensionValid) {\r\n\t\t\t\t\t\t\terrors.push({\r\n\t\t\t\t\t\t\t\tfile: `${transferedFile.name} (${transferedFile.type})`,\r\n\t\t\t\t\t\t\t\ttype: FileUploadError.InvalidExtensionForType\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// if the property single is set to 'true' and no valid files have been added yet, delete any file that was added before, and then proceed to adding this valid file.\r\n\t\t\t\t\t// otherwise, if the property single is set to 'true', but another valid file has already been processed, go to the next iteration (just to fulfill the array of errors)\r\n\t\t\t\t\tif (this.single) {\r\n\t\t\t\t\t\tif (validFiles == 0) {\r\n\t\t\t\t\t\t\tif (this.filesToAdd.length == 1) {\r\n\t\t\t\t\t\t\t\tthis.logger.logInformation(`FilesComponent -- as the property \"single\" is set to true, the file that was added before (${this.filesToAdd.controls[0].get('name').value}) will be overwritten by this new valid file (\"${transferedFile.name}\")`);\r\n\t\t\t\t\t\t\t\tthis.filesToAdd.removeAt(0);\r\n\t\t\t\t\t\t\t} else if (this.existingFiles && this.existingFiles.length == 1) {\r\n\t\t\t\t\t\t\t\tthis.logger.logInformation(`FilesComponent -- as the property \"single\" is set to true, the existing file \"${this.existingFiles[0].name}\" will be overwritten by this new valid file (\"${transferedFile.name}\")`);\r\n\t\t\t\t\t\t\t\tthis.delete(this.existingFiles[0]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else { // if (validFiles > 0) ...\r\n\t\t\t\t\t\t\tcontinue; // go to the next file and check if there are any errors in it\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// if this line was reached, it means that this file is valid. Therefore, increase validFiles\r\n\t\t\t\t\tvalidFiles++;\r\n\r\n\t\t\t\t\tthis.uploadFile(transferedFile);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Upload errors dialog.\r\n\t\t\t\tif (errors && errors.length > 0) {\r\n\t\t\t\t\tthis.openErrorDetailsDialog(errors);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprivate convertFilesToInspectionModel(transferedFiles: File[]): UploadInspectionModel[]{\r\n\t\tlet uploads = [];\r\n\r\n\t\tif (transferedFiles) {\r\n\t\t\tfor (let i = 0; i < transferedFiles.length; i++) {\r\n\t\t\t\tlet f = transferedFiles[i];\r\n\r\n\t\t\t\tuploads.push(<UploadInspectionModel>{\r\n\t\t\t\t\tname: f.name,\r\n\t\t\t\t\tcontentType: f.type ? f.type : 'application/octet-stream',\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn uploads;\r\n\t}\r\n\r\n\tprivate uploadFile(transferedFile: File) {\r\n\r\n\t\tthis.fileStartedLoading();\r\n\t\tconst file = this.addEmptyFile();\r\n\r\n\t\tthis.uploadService.uploadFile2(transferedFile, this.uploadUrl, this.httpParams, this.httpHeaders).subscribe(event => {\r\n\t\t\tif (event.type === UploadEventTypes.Progress) {\r\n\t\t\t\tfile.controls['percentDone'].setValue(event.progress);\r\n\t\t\t} else if (event.type === UploadEventTypes.Completed) {\r\n\t\t\t\tfile.controls['id'].setValue(event.model.id);\r\n\t\t\t\tfile.controls['name'].setValue(event.model.name);\r\n\t\t\t\tfile.controls['contentType'].setValue(event.model.contentType);\r\n\t\t\t\tfile.controls['location'].setValue(event.model.location);\r\n\t\t\t\tthis.fileFinishedLoading();\r\n\t\t\t}\r\n\t\t}, () => {\r\n\t\t\tthis.fileFinishedLoading();\r\n\t\t});\r\n\t}\r\n\r\n\tprivate openErrorDetailsDialog(errors: FileUploadErrorInfo[], title: string = null) {\r\n\t\tlet dialogRef = this.dialog.open(DialogUploadErrorComponent, {\r\n\t\t\twidth: '720px',\r\n\t\t\tdata: {\r\n\t\t\t\terrors: errors,\r\n\t\t\t\ttitle: title,\r\n\t\t\t\tacceptedTypes: this.acceptedTypes,\r\n\t\t\t\tmaxFileSize: this.maxFileSize,\r\n\t\t\t\tmaxFilenameSize: this.maxFilenameSize,\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn dialogRef.afterClosed().toPromise();\r\n\t}\r\n\r\n\t// this method emits \"true\" to the parent component ONCE when any file is loading\r\n\t// (if 4 files are simultaneously loading, this component will emit \"true\" only once, when the first file starts loading)\r\n\tprivate fileStartedLoading() {\r\n\t\tif (this.numberOfFilesLoading == 0) {\r\n\t\t\tthis.filesLoading.emit(true);\r\n\t\t\tthis._loadingFiles = true;\r\n\t\t\tthis.logger.logTrace(\"FilesComponent -- file(s) started loading\");\r\n\t\t}\r\n\t\tthis.numberOfFilesLoading++;\r\n\t}\r\n\r\n\t// this method emits \"false\" to the parent component ONCE when all the files are not loading anymore\r\n\t// (if 4 files are simultaneously loading, this component will emit \"false\" only once, when the last of the files finishes loading)\r\n\tprivate fileFinishedLoading() {\r\n\t\tif (this.numberOfFilesLoading > 0) {\r\n\t\t\tthis.numberOfFilesLoading--;\r\n\t\t}\r\n\r\n\t\tif (this.numberOfFilesLoading == 0) {\r\n\t\t\tthis.filesLoading.emit(false);\r\n\t\t\tthis._loadingFiles = false;\r\n\t\t\tthis.logger.logTrace(\"FilesComponent -- file(s) finished loading\");\r\n\t\t}\r\n\t}\r\n\r\n\tprivate fileModelToFormGroup(model: FileModel): UntypedFormGroup {\r\n\t\treturn this.fb.group({\r\n\t\t\tid: [model.id, Validators.required],\r\n\t\t\tname: [model.name, Validators.required],\r\n\t\t\tcontentType: [model.contentType, Validators.required],\r\n\t\t\tlocation: [''],\r\n\r\n\t\t\trequest: [null],\r\n\t\t\tpercentDone: [''],\r\n\t\t});\r\n\t}\r\n\r\n\tprivate addEmptyFile(): UntypedFormGroup {\r\n\t\tlet model: FileModel = {\r\n\t\t\tid: \"\",\r\n\t\t\tname: \"\",\r\n\t\t\tcontentType: \"\",\r\n\t\t\tlocation: \"\",\r\n\t\t};\r\n\r\n\t\tlet file = this.fileModelToFormGroup(model);\r\n\r\n\t\tthis.filesToAdd.push(file);\r\n\r\n\t\treturn file;\r\n\t}\r\n\r\n\tprivate async setCaptchaHeaders(): Promise<void> {\r\n\t\tlet captcha = await this.captchaService.executeAsync(() => { this.loading = false; });\r\n\t\tlet t = await this.uploadService.generateCaptchaTicket(captcha).toPromise();\r\n\t\tthis.captchaTicketExpiration = moment().add(Math.max(t.secondsToExpire - 60, 60), 'seconds');\r\n\t\tif (!this.httpHeaders) {\r\n\t\t\tthis.httpHeaders = new HttpHeaders();\r\n\t\t}\r\n\t\tthis.httpHeaders = this.httpHeaders.set('X-Captcha-Ticket', t.ticket);\r\n\t}\r\n\r\n\tfileButtonClick() {\r\n\t\tthis.touched = true;\r\n\r\n\t\tif (!this.readOnly) { // you can only open the file input if this component is not in read only mode\r\n\t\t\tthis.fileButton.nativeElement.click();\r\n\t\t}\r\n\t}\r\n\r\n\tdelete(file) {\r\n\t\tif (!this.readOnly) { // you can only delete files if this component is not in read only mode\r\n\t\t\tvar index = this.filesToAdd.value.findIndex(fileToAdd => fileToAdd.id == file.id);\r\n\t\t\tif (index > -1) { // if it is in filesToAdd array, just remove it from there\r\n\t\t\t\tthis.filesToAdd.removeAt(index);\r\n\t\t\t} else { // otherwise, push it to filesToDelete array\r\n\t\t\t\tthis.filesToDelete.push(this.fileModelToFormGroup(file));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tviewFile(file) {\r\n\t\tvar index = this.filesToShow.findIndex(f => f.id == file.id);\r\n\t\tif (index > -1) {\r\n\t\t\tthis.dialogService.openFile(this.filesToShow, index);\r\n\t\t}\r\n\t}\r\n}\r\n","<div spaDnd (filesOver)=\"highlightContainer = $event\" (filesDropped)=\"transferDataSuccess($event)\" class=\"stretch top-container\" *transloco=\"let t\">\r\n\t<lacm-loading [show]=\"loading\"></lacm-loading>\r\n\t<div class=\"dnd-container\" [ngClass]=\"{'invalid' : ((filesToAdd && !filesToAdd.valid) || (filesToDelete && !filesToDelete?.valid)) && !loadingFiles && touched}\">\r\n\t\t<div class=\"dnd-highlight\" [ngClass]=\"{'dnd-drag-over': highlightContainer && !readOnly}\">\r\n\t\t\t<div class=\"hightligh-text\">\r\n\t\t\t\t{{t('components.files.click-or-drop-files', { single: single })}}\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t\t<div class=\"dnd-height\">\r\n\t\t\t<div class=\"dropzone\">\r\n\t\t\t\t@if (!(filesToShow.length > 0)) {\r\n\t\t\t\t\t<div (click)=\"fileButtonClick()\">\r\n\t\t\t\t\t\t@if (!readOnly) {\r\n\t\t\t\t\t\t\t<div class=\"dnd-text\">\r\n\t\t\t\t\t\t\t\t<div class=\"text-bottom\" [ngClass]=\"{'text-hidden': highlightContainer}\">\r\n\t\t\t\t\t\t\t\t\t{{t('components.files.click-or-drop-files', { single: single })}}\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t@if (readOnly) {\r\n\t\t\t\t\t\t\t<div class=\"centered\">{{t('components.files.no-files-added')}}</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\r\n\t\t\t\t@if (filesToShow.length > 0) {\r\n\t\t\t\t\t<div>\r\n\t\t\t\t\t\t@for (item of filesToShow; track item; let i = $index) {\r\n\t\t\t\t\t\t\t<div>\r\n\t\t\t\t\t\t\t\t<div class=\"d-flex align-items-center px-3 py-3\">\r\n\t\t\t\t\t\t\t\t\t@if (!hideViewButton) {\r\n\t\t\t\t\t\t\t\t\t\t<button (click)=\"onFileClick ? onFileClick(item) : viewFile(item)\" class=\"view-button me-2\" type=\"button\">\r\n\t\t\t\t\t\t\t\t\t\t\t<mat-icon>find_in_page</mat-icon>\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@if (!readOnly && !hideDeleteButton) {\r\n\t\t\t\t\t\t\t\t\t\t<button (click)=\"delete(item)\" class=\"delete-button me-2\" type=\"button\">\r\n\t\t\t\t\t\t\t\t\t\t\t<mat-icon>delete</mat-icon>\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t@for (filesAction of filesActions; track filesAction) {\r\n\t\t\t\t\t\t\t\t\t\t<ng-container *ngTemplateOutlet=\"filesAction; context: {$implicit: item}\"></ng-container>\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t<div class=\"file-data\">\r\n\t\t\t\t\t\t\t\t\t\t@if (item.location == '' && (item.percentDone != null && item.percentDone != 100)) {\r\n\t\t\t\t\t\t\t\t\t\t\t<mat-progress-bar mode=\"determinate\" value=\"{{item.percentDone}}\"></mat-progress-bar>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t@if (item.location == '' && (item.percentDone != null && item.percentDone == 100)) {\r\n\t\t\t\t\t\t\t\t\t\t\t<mat-progress-bar mode=\"indeterminate\"></mat-progress-bar>\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t<h4 class=\"ps-1\" (click)=\"onFileClick ? onFileClick(item) : viewFile(item)\">{{item.name}}</h4>\r\n\t\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t\t\t<mat-divider></mat-divider>\r\n\t\t\t\t\t\t\t</div>\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t</div>\r\n\t\t\t\t}\r\n\t\t\t</div>\r\n\r\n\t\t</div>\r\n\t</div>\r\n\r\n\t@if (!readOnly) {\r\n\t\t<div class=\"button-container\">\r\n\t\t\t<input type=\"file\" (change)=\"transferDataSuccess($event)\" id=\"file-input\" hidden #fileInp [multiple]=\"!single\" (click)=\"fileInp.value = null\" [accept]=\"accept\">\r\n\t\t\t<div>\r\n\t\t\t\t<button mat-mini-fab color=\"primary\" (click)=\"fileButtonClick()\" type=\"button\">\r\n\t\t\t\t\t@if (willSwapFile) {\r\n\t\t\t\t\t\t<mat-icon aria-label=\"Swap file\">swap_vert</mat-icon>\r\n\t\t\t\t\t} @else {\r\n\t\t\t\t\t\t<mat-icon aria-label=\"Add file\">add</mat-icon>\r\n\t\t\t\t\t}\r\n\t\t\t\t</button>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t}\r\n</div>\r\n","export const successAnim = {\"v\":\"4.12.0\",\"fr\":29.9700012207031,\"ip\":0,\"op\":30.0000012219251,\"w\":60,\"h\":60,\"nm\":\"check_draw_outline\",\"ddd\":0,\"assets\":[],\"layers\":[{\"ddd\":0,\"ind\":1,\"ty\":4,\"nm\":\"Shape Layer 1\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[30,30,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100,100],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"ind\":0,\"ty\":\"sh\",\"ix\":1,\"ks\":{\"a\":0,\"k\":{\"i\":[[0,0],[0,0],[0,0]],\"o\":[[0,0],[0,0],[0,0]],\"v\":[[-14.75,-3],[-1.25,8.25],[14.25,-11.25]],\"c\":false},\"ix\":2},\"nm\":\"Path 1\",\"mn\":\"ADBE Vector Shape - Group\",\"hd\":false},{\"ty\":\"tm\",\"s\":{\"a\":0,\"k\":0,\"ix\":1},\"e\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.274],\"y\":[1]},\"o\":{\"x\":[0.556],\"y\":[0]},\"n\":[\"0p274_1_0p556_0\"],\"t\":3,\"s\":[0],\"e\":[100]},{\"t\":14.0000005702317}],\"ix\":2},\"o\":{\"a\":0,\"k\":0,\"ix\":3},\"m\":1,\"ix\":2,\"nm\":\"Trim Paths 1\",\"mn\":\"ADBE Vector Filter - Trim\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[1,1,1,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":7,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Shape 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":3.00000012219251,\"op\":30.0000012219251,\"st\":-15.0000006109625,\"bm\":0},{\"ddd\":0,\"ind\":3,\"ty\":4,\"nm\":\"Circ\",\"sr\":1,\"ks\":{\"o\":{\"a\":0,\"k\":100,\"ix\":11},\"r\":{\"a\":0,\"k\":0,\"ix\":10},\"p\":{\"a\":0,\"k\":[30,29.25,0],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0,0],\"ix\":1},\"s\":{\"a\":1,\"k\":[{\"i\":{\"x\":[0.432,0.432,0.601],\"y\":[1.002,1.002,3.751]},\"o\":{\"x\":[0.052,0.052,0.172],\"y\":[0.12,0.12,-1.405]},\"n\":[\"0p432_1p002_0p052_0p12\",\"0p432_1p002_0p052_0p12\",\"0p601_3p751_0p172_-1p405\"],\"t\":1,\"s\":[17.895,17.895,100],\"e\":[94.836,94.836,100]},{\"i\":{\"x\":[0.368,0.368,0.691],\"y\":[1.118,1.118,0.734]},\"o\":{\"x\":[0.453,0.453,0.35],\"y\":[-0.038,-0.038,-2.656]},\"n\":[\"0p368_1p118_0p453_-0p038\",\"0p368_1p118_0p453_-0p038\",\"0p691_0p734_0p35_-2p656\"],\"t\":11,\"s\":[94.836,94.836,100],\"e\":[88.847,88.847,100]},{\"t\":22.0000008960784}],\"ix\":6}},\"ao\":0,\"shapes\":[{\"ty\":\"gr\",\"it\":[{\"d\":1,\"ty\":\"el\",\"s\":{\"a\":0,\"k\":[59.396,59.396],\"ix\":2},\"p\":{\"a\":0,\"k\":[0,0],\"ix\":3},\"nm\":\"Ellipse Path 1\",\"mn\":\"ADBE Vector Shape - Ellipse\",\"hd\":false},{\"ty\":\"st\",\"c\":{\"a\":0,\"k\":[0.463,0.733,0.404,1],\"ix\":3},\"o\":{\"a\":0,\"k\":100,\"ix\":4},\"w\":{\"a\":0,\"k\":3,\"ix\":5},\"lc\":1,\"lj\":1,\"ml\":4,\"nm\":\"Stroke 1\",\"mn\":\"ADBE Vector Graphic - Stroke\",\"hd\":false},{\"ty\":\"fl\",\"c\":{\"a\":0,\"k\":[0.463,0.733,0.404,1],\"ix\":4},\"o\":{\"a\":0,\"k\":100,\"ix\":5},\"r\":1,\"nm\":\"Fill 1\",\"mn\":\"ADBE Vector Graphic - Fill\",\"hd\":false},{\"ty\":\"tr\",\"p\":{\"a\":0,\"k\":[0,0.75],\"ix\":2},\"a\":{\"a\":0,\"k\":[0,0],\"ix\":1},\"s\":{\"a\":0,\"k\":[100,100],\"ix\":3},\"r\":{\"a\":0,\"k\":0,\"ix\":6},\"o\":{\"a\":0,\"k\":100,\"ix\":7},\"sk\":{\"a\":0,\"k\":0,\"ix\":4},\"sa\":{\"a\":0,\"k\":0,\"ix\":5},\"nm\":\"Transform\"}],\"nm\":\"Ellipse 1\",\"np\":3,\"cix\":2,\"ix\":1,\"mn\":\"ADBE Vector Group\",\"hd\":false}],\"ip\":1.00000004073083,\"op\":30.000001221925,\"st\":-3.00000012219251,\"bm\":0}]}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { successAnim } from './success-anim';\r\nimport { AnimationOptions } from 'ngx-lottie';\r\n\r\n@Component({\r\n    selector: 'spa-success-panel',\r\n    templateUrl: './success-panel.component.html',\r\n    styleUrls: ['./success-panel.component.scss'],\r\n    standalone: false\r\n})\r\nexport class SuccessPanelComponent implements OnInit {\r\n\r\n\tpublic lottieConfig: AnimationOptions;\r\n\tprivate anim: any;\r\n\tprivate animationSpeed: number = .01;\r\n\r\n\tconstructor() {\r\n\t\tthis.lottieConfig = {\r\n\t\t\tanimationData: successAnim,\r\n\t\t\tautoplay: true,\r\n\t\t\tloop: false\r\n\t\t};\r\n\t}\r\n\r\n\thandleAnimation(anim: any) {\r\n\t\tthis.anim = anim;\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t}\r\n}\r\n","<div class=\"d-flex px-2 my-5\">\r\n\t<div class=\"success-wrapper mx-auto p-4\">\r\n\t\t<ng-lottie [options]=\"lottieConfig\"\r\n\t\t\t\t\t\t\t   [width]=\"150\"\r\n\t\t\t\t\t\t\t   (animCreated)=\"handleAnimation($event)\">\r\n\t\t</ng-lottie>\r\n\t\t<h2 class=\"success-title\">\r\n\t\t\t<ng-content select=\"[success-title]\"></ng-content>\r\n\t\t</h2>\r\n\t\t<div class=\"success-actions\">\r\n\t\t\t<ng-content select=\"[success-actions]\"></ng-content>\r\n\t\t</div>\r\n\t</div>\r\n</div>\r\n","import { Injectable, ErrorHandler } from '@angular/core';\r\nimport { HttpErrorResponse, HttpRequest, HttpEvent, HttpHandler } from '@angular/common/http';\r\nimport { ApplicationInsightsService } from './application-insights.service';\r\nimport { Observable, throwError, NEVER, Subject } from 'rxjs';\r\nimport { SpaControlService } from './spa-control.service';\r\nimport { Logger } from './logger.service';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { MessageService } from './message.service';\r\nimport { Config } from '../api/configuration';\r\nimport { DialogService } from './dialog.service';\r\nimport { switchMap, tap } from 'rxjs/operators';\r\nimport { RootAuthenticationResponse } from '../api/root-authentication';\r\nimport { RootLoginResult } from '../api/enums';\r\nimport { FaroService } from './faro.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SpaErrorHandlingService extends ErrorHandler {\r\n\r\n\trefreshRootTokenSubject: Subject<RootAuthenticationResponse>;\r\n\r\n\tconstructor(\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate appInsightsService: ApplicationInsightsService,\r\n\t\tprivate faroService: FaroService,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\tpublic dialogService: DialogService,\r\n\t\tprivate messageService: MessageService,\r\n\t) {\r\n\t\tsuper();\r\n\t}\r\n\r\n\thandleError(error: any): void {\r\n\t\tif (this.appInsightsService.initialized) {\r\n\t\t\tthis.appInsightsService.appInsights.trackException({error})\r\n\t\t}\r\n\r\n\t\tif (error instanceof Error && this.faroService.initialized) {\r\n\t\t\t\tthis.faroService.faro.api.pushError(error)\r\n\t\t}\r\n\r\n\t\tsuper.handleError(error);\r\n\t}\r\n\r\n\tprivate refreshRootTokenAndRetry(err: HttpErrorResponse, request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\t\tthis.logger.logInformation('ErrorHandlingService -- API unauthorized while using root token auth. Error: ', err, ', request: ', request);\r\n\t\tthis.messageService.showWarning(this.transloco.translate('errors.session-expired'), {duration: 5000});\r\n\r\n\t\tif (!this.refreshRootTokenSubject) {\r\n\t\t\tthis.logger.logDebug('ErrorHandlingService -- creating subject that represents the request that will refresh the root token');\r\n\t\t\tthis.refreshRootTokenSubject = new Subject<RootAuthenticationResponse>();\r\n\t\t\tthis.dialogService.rootLogin({ disableClose: true, navigateHomeIfCancelled: true, message: this.transloco.translate('services.error-handling.session-expired-insert-password') }).pipe(\r\n\t\t\t\ttap(_ => this.refreshRootTokenSubject = null)\r\n\t\t\t).subscribe(this.refreshRootTokenSubject);\r\n\t\t} else {\r\n\t\t\tthis.logger.logDebug('ErrorHandlingService -- using the existing subject that represents the request that will refresh the root token');\r\n\t\t}\r\n\r\n\t\treturn this.refreshRootTokenSubject.asObservable().pipe(\r\n\t\t\tswitchMap(res => {\r\n\t\t\t\tif (res && res.result == RootLoginResult.Success) {\r\n\t\t\t\t\tthis.logger.logDebug('ErrorHandlingService -- since the root token has just been refreshed, retry the request, now with the new root token');\r\n\t\t\t\t\trequest = request.clone({\r\n\t\t\t\t\t\tsetHeaders: { Authorization: `RootToken ${res.rootToken}` }\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn next.handle(request);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tthis.messageService.showInfo(this.transloco.translate('services.error-handling.redirected-home-since-session-expired'), {duration: 10000});\r\n\t\t\t\t\tthis.logger.logDebug('ErrorHandlingService -- failed refreshing root token.');\r\n\t\t\t\t\treturn throwError(err);\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tpublic onApiError = (err: HttpErrorResponse, request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> => {\r\n\t\tif (!this.spaControl._initialized) {\r\n\t\t\treturn throwError(err);\r\n\t\t} else if (err.status === 401) {\r\n\t\t\tif (Config.rootAuthenticationEnabled && this.spaControl.hasRootToken()) {\r\n\t\t\t\treturn this.refreshRootTokenAndRetry(err, request, next);\r\n\t\t\t} else if (Config.oidc.enabled && this.spaControl.shouldAttemptLogin()) {\r\n\t\t\t\tlet returnUrl = window.location.pathname + window.location.search;\r\n\t\t\t\tthis.logger.logInformation('ErrorHandlingService -- API unauthorized while using OIDC auth. Error: ', err, ', request: ', request, ', returnUrl: ', returnUrl);\r\n\t\t\t\tthis.spaControl.startLogin(returnUrl);\r\n\t\t\t\treturn NEVER;\r\n\t\t\t}\r\n\t\t} else if (err.status === 403) {\r\n\t\t\tthis.logger.logError('ErrorHandlingService -- API forbidden error: ', err, ', request: ', request);\r\n\t\t\tthis.messageService.showError(this.transloco.translate('services.spa-control.user-doesnt-have-permission'));\r\n\t\t\treturn throwError(err);\r\n\t\t} else if (err.status === 0) {\r\n\t\t\tthis.logger.logError('ErrorHandlingService -- API connectivity error: ', err, ', request: ', request);\r\n\t\t\tthis.messageService.showError(this.transloco.translate('services.spa-control.no-communication-with-server'));\r\n\t\t\treturn throwError(err);\r\n\t\t} else if (err.status === 429) {\r\n\t\t\tthis.logger.logError('ErrorHandlingService -- API \"too many requests\" error: ', err, ', request: ', request);\r\n\t\t\tthis.messageService.showError(this.transloco.translate('services.error-handling.too-many-requests-try-again-later'));\r\n\t\t\treturn throwError(err);\r\n\t\t} else {\r\n\t\t\tthis.logger.logError('ErrorHandlingService -- API error: ', err, ', request: ', request);\r\n\t\t\tlet msg = (err.error && err.error.message) ? err.error.message : this.transloco.translate('services.spa-control.an-error-has-occurred', { message: err.message });\r\n\t\t\tthis.messageService.showError(msg);\r\n\t\t\treturn throwError(err);\r\n\t\t}\r\n\t};\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Translation, TRANSLOCO_LOADER, TranslocoLoader, HashMap } from '@ngneat/transloco';\r\nimport { Injectable } from '@angular/core';\r\nimport { tap } from 'rxjs/operators';\r\nimport { Logger } from './logger.service';\r\nimport { Subject, Observable } from 'rxjs';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class HttpTranslocoLoader implements TranslocoLoader {\r\n\tprivate loadedSubject: Subject<HashMap<any>> = new Subject();\r\n\tloaded$: Observable<HashMap<any>> = this.loadedSubject.asObservable();\r\n\r\n\tconstructor(private http: HttpClient, private logger: Logger) { }\r\n\r\n\tgetTranslation(langPath: string) {\r\n\t\tthis.logger.logDebug(`HttpTranslocoLoader -- loading translation file for language \"${langPath}\"...`)\r\n\t\treturn this.http.get<Translation>(`/api/i18n/${langPath}`).pipe(\r\n\t\t\ttap(translation => {\r\n\t\t\t\tthis.logger.logDebug(`HttpTranslocoLoader -- loaded translation file for language \"${langPath}\": `, translation);\r\n\t\t\t\tthis.loadedSubject.next(translation);\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { DialogService } from '../../services/dialog.service';\r\n\r\n@Component({\r\n    selector: 'spa-language-button',\r\n    templateUrl: './language-button.component.html',\r\n    styleUrls: ['./language-button.component.scss'],\r\n    standalone: false\r\n})\r\nexport class LanguageButtonComponent implements OnInit, OnDestroy {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\t@Input() btnClass: string;\r\n\tcurrentLang: string;\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate translocoService: TranslocoService,\r\n\t\tprivate dialogService: DialogService\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.translocoService.langChanges$.subscribe(newLang => this.currentLang = newLang)\r\n\t\t);\r\n\t}\r\n\r\n\topenLangSelector() {\r\n\t\tthis.dialogService.openLanguageSelector();\r\n\t}\r\n\r\n\tngOnDestroy(){\r\n\t\tthis.logger.logTrace('LanguageButtonComponent ngOnDestroy');\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<button mat-mini-fab [class]=\"btnClass\" (click)=\"openLangSelector()\" class=\"spa-language-button\">\r\n\t{{currentLang | uppercase}}\r\n</button>\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { SpaLanguageService } from '../../services/spa-language.service';\r\nimport { Router } from '@angular/router';\r\nimport { LANGUAGE_ROUTE_ENABLED } from '../../classes/injection-tokens';\r\n\r\n// ************************************************************************************************\r\n// THIS COMPONENT IS DEPRECATED!\r\n// (It was replaced by DialogLanguageSelectorComponent, which also supports selection of locales)\r\n// ************************************************************************************************\r\n@Component({\r\n    selector: 'spa-language-selector',\r\n    templateUrl: './language-selector.component.html',\r\n    styleUrls: ['./language-selector.component.scss'],\r\n    standalone: false\r\n})\r\nexport class LanguageSelectorComponent implements OnInit {\r\n\r\n\tavailableLanguages: string[];\r\n\r\n\tconstructor(\r\n\t\tpublic router: Router,\r\n\t\tpublic spaLanguage: SpaLanguageService,\r\n\t\t@Inject(LANGUAGE_ROUTE_ENABLED) private languageRouteEnabled: boolean,\r\n\t) { }\r\n\r\n\tngOnInit() {\r\n\t\tthis.availableLanguages = this.spaLanguage.getApplicationAvailableLangs();\r\n\t}\r\n\r\n\tchangeLanguage(newLang: string) {\r\n\t\tthis.spaLanguage.setLanguagePreferenceInCookie(newLang);\r\n\r\n\t\t// if language route is enabled, navigate to the route with the new url, and let the root component deal with setting up the new language.\r\n\t\t// otherwise, call directly the melhod setActiveLanguageIfDifferent, passing the new language.\r\n\t\tif (this.languageRouteEnabled) {\r\n\t\t\tthis.router.navigateByUrl(this.spaLanguage.replaceOrInsertLangInUrl(this.router.url, newLang));\r\n\t\t} else {\r\n\t\t\tthis.spaLanguage.setActiveLanguageIfDifferent(newLang);\r\n\t\t}\r\n\t}\r\n}\r\n","@for (lang of availableLanguages; track lang) {\r\n\t<button class=\"language-menu-item\" mat-menu-item (click)=\"changeLanguage(lang)\">\r\n\t\t{{lang | uppercase}}\r\n\t</button>\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { CurrencyPipe } from '@angular/common';\r\nimport { SpaLanguageService } from '../services/spa-language.service';\r\nimport { LocaleSensitivePipe, LocaleSensitivePipeArgs } from './locale-sensitive.pipe';\r\n\r\n@Pipe({\r\n    name: 'spaCurrency', pure: false,\r\n    standalone: false\r\n})\r\nexport class SpaCurrencyPipe extends LocaleSensitivePipe implements PipeTransform {\r\n\tprivate currencyPipe: CurrencyPipe = new CurrencyPipe(this.currentLocale);\r\n\r\n\tconstructor(private spaLanguage: SpaLanguageService) { super(spaLanguage) }\r\n\r\n\ttransform(\r\n\t\tvalue: any,\r\n\t\tcurrencyCode?: string,\r\n\t\tdisplay: 'code' | 'symbol' | 'symbol-narrow' | string | boolean = 'symbol',\r\n\t\tdigitsInfo?: string,\r\n\t\tlocale?: string\r\n\t): string | null {\r\n\t\treturn this.transformUsingCache({ value, currencyCode, display, digitsInfo, locale });\r\n\t}\r\n\r\n\ttransformFunction(args: LocaleSensitivePipeArgs): string | null {\r\n\t\treturn this.currencyPipe.transform(args.value, args.currencyCode, args.display, args.digitsInfo, args.locale);\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DecimalPipe } from '@angular/common';\r\nimport { SpaLanguageService } from '../services/spa-language.service';\r\nimport { LocaleSensitivePipe, LocaleSensitivePipeArgs } from './locale-sensitive.pipe';\r\n\r\n@Pipe({\r\n    name: 'spaNumber', pure: false,\r\n    standalone: false\r\n})\r\nexport class SpaDecimalPipe extends LocaleSensitivePipe implements PipeTransform {\r\n\tprivate decimalPipe: DecimalPipe = new DecimalPipe(this.currentLocale);\r\n\r\n\tconstructor(private spaLanguage: SpaLanguageService) { super(spaLanguage) }\r\n\r\n\ttransform(value: any, digitsInfo?: string, locale?: string): string | null {\r\n\t\treturn this.transformUsingCache({ value, digitsInfo, locale });\r\n\t}\r\n\r\n\ttransformFunction(args: LocaleSensitivePipeArgs): string | null {\r\n\t\treturn this.decimalPipe.transform(args.value, args.digitsInfo, args.locale);\r\n\t}\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { PercentPipe } from '@angular/common';\r\nimport { SpaLanguageService } from '../services/spa-language.service';\r\nimport { LocaleSensitivePipe, LocaleSensitivePipeArgs } from './locale-sensitive.pipe';\r\n\r\n@Pipe({\r\n    name: 'spaPercent', pure: false,\r\n    standalone: false\r\n})\r\nexport class SpaPercentPipe extends LocaleSensitivePipe implements PipeTransform {\r\n\tprivate percentPipe: PercentPipe = new PercentPipe(this.currentLocale);\r\n\r\n\tconstructor(private spaLanguage: SpaLanguageService) { super(spaLanguage) }\r\n\r\n\ttransform(value: any, digitsInfo?: string, locale?: string): string | null {\r\n\t\treturn this.transformUsingCache({ value, digitsInfo, locale });\r\n\t}\r\n\r\n\ttransformFunction(args: LocaleSensitivePipeArgs): string | null {\r\n\t\treturn this.percentPipe.transform(args.value, args.digitsInfo, args.locale);\r\n\t}\r\n}\r\n","import { Component, OnInit, OnDestroy } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { Logger } from '../../services/logger.service';\r\nimport { DialogService } from '../../services/dialog.service';\r\nimport { MessageService } from '../../services/message.service';\r\nimport { UserService } from '../../services/user.service';\r\nimport { CanComponentDeactivate } from '../../guards/can-deactivate.guard';\r\nimport { UserModel, UserData } from '../../api/users';\r\nimport { Config } from '../../api/configuration';\r\nimport { GrammaticalGender } from '../../api/enums';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Component({\r\n    selector: 'spa-user-edit',\r\n    templateUrl: './user-edit.component.html',\r\n    styleUrls: ['./user-edit.component.scss'],\r\n    standalone: false\r\n})\r\nexport class UserEditComponent implements OnInit, OnDestroy, CanComponentDeactivate {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\tform: UntypedFormGroup;\r\n\tmodel: UserModel;\r\n\r\n\tprivate closing: boolean = false;\r\n\tsaving: boolean = false;\r\n\tloading: boolean = true;\r\n\tsubscriptionGender: GrammaticalGender = Config.labels.subscriptionGender;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate router: Router,\r\n\t\tprivate logger: Logger,\r\n\t\tprivate fb: UntypedFormBuilder,\r\n\t\tprivate dialogService: DialogService,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) {\r\n\t\tthis.createForm();\r\n\t}\r\n\r\n\tcreateForm() {\r\n\t\tthis.form = this.fb.group({\r\n\t\t\tname: ['', Validators.required],\r\n\t\t\temail: ['', Validators.required],\r\n\t\t});\r\n\t}\r\n\r\n\trebuildForm() {\r\n\t\tthis.form.reset({\r\n\t\t\tname: this.model.name,\r\n\t\t\temail: this.model.emailAddress,\r\n\t\t});\r\n\t}\r\n\r\n\tngOnInit() {\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.route.parent.paramMap.subscribe(paramMap => {\r\n\t\t\t\tlet userId = paramMap.get('userId');\r\n\t\t\t\tthis.logger.logTrace('User id:', userId);\r\n\t\t\t\tthis.loading = true;\r\n\t\t\t\tthis.userService.get(userId).subscribe(user => {\r\n\t\t\t\t\tthis.model = user;\r\n\t\t\t\t\tthis.rebuildForm();\r\n\t\t\t\t\tthis.loading = false;\r\n\t\t\t\t});\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tonSubmit() {\r\n\t\tthis.logger.logTrace('UserEditComponent onSubmit');\r\n\t\tif (!this.form.valid || !this.model) {\r\n\t\t\tthis.logger.logInformation('UserEditComponent -- not submitting form, since it is not valid, or the model is not loaded yet')\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.saving = true;\r\n\r\n\t\tlet formModel = this.form.value;\r\n\r\n\t\tlet userData: UserData = {\r\n\t\t\temailAddress: formModel.email,\r\n\t\t\tname: formModel.name,\r\n\t\t\tsubject: null,\r\n\t\t\tauthorizationData: null,\r\n\t\t\trootAuthorizationData: null\r\n\t\t}\r\n\r\n\t\tthis.userService.update(this.model.subject, userData).subscribe(m => {\r\n\t\t\tthis.messageService.showSuccess(this.transloco.translate('components.user-edit.user-updated-successfully'));\r\n\t\t\tthis.closing = true;\r\n\t\t\tthis.close();\r\n\t\t}, err => {\r\n\t\t\tthis.saving = false;\r\n\t\t});\r\n\t}\r\n\r\n\tcanDeactivate() {\r\n\t\tthis.logger.logTrace('UserEditComponent canDeactivate', this.dialogService);\r\n\t\tif (!this.closing) {\r\n\t\t\tif (this.saving) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('common.continue-in-background'));\r\n\t\t\t} else if (this.form.dirty) {\r\n\t\t\t\treturn this.dialogService.confirm(this.transloco.translate('components.user-edit.discard-changes-on-user'));\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n\r\n\tclose() {\r\n\t\tthis.router.navigate(['..'], { relativeTo: this.route });\r\n    }\r\n\r\n\tgetErrorMessage(formControlName: string) {\r\n\r\n\t\tlet formControl = this.form.get(formControlName);\r\n\r\n\t\tswitch (formControlName) {\r\n\r\n\t\t\tcase 'name':\r\n\t\t\t\treturn formControl.hasError('required') ? this.transloco.translate('errors.field-required') : '';\r\n\r\n\t\t\tcase 'email':\r\n\t\t\t\treturn formControl.hasError('required') ? this.transloco.translate('errors.field-required') : '';\r\n\r\n\t\t}\r\n\r\n\t\treturn this.transloco.translate('errors.field-invalid'); // should not happen\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","<spa-box [loading]=\"saving || loading\" *transloco=\"let t\">\r\n\t<span box-title>{{t('components.user-edit.edit-user-info')}}</span>\r\n\r\n\t<form [formGroup]=\"form\">\r\n\t\t<div class=\"row pt-4\">\r\n\t\t\t<mat-form-field class=\"col-12\">\r\n\t\t\t\t<mat-label>{{t('common.name')}}</mat-label>\r\n\t\t\t\t<input matInput formControlName=\"name\">\r\n\t\t\t\t<mat-error>{{getErrorMessage('name')}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\r\n\t\t\t<mat-form-field class=\"col-12\">\r\n\t\t\t\t<mat-label>{{t('common.email')}}</mat-label>\r\n\t\t\t\t<input matInput formControlName=\"email\">\r\n\t\t\t\t<mat-error>{{getErrorMessage('email')}}</mat-error>\r\n\t\t\t</mat-form-field>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"mt-3\">\r\n\t\t\t<spa-submit-button class=\"me-2\" [form]=\"form\" (submit)=\"onSubmit()\" [disabled]=\"form.pristine\">\r\n\t\t\t\t{{t('common.save')}}\r\n\t\t\t</spa-submit-button>\r\n\t\t\t<button mat-flat-button color=\"warn\" type=\"button\" (click)=\"rebuildForm()\" [disabled]=\"form.pristine\">\r\n\t\t\t\t{{t('common.undo')}}\r\n\t\t\t</button>\r\n\t\t</div>\r\n\t</form>\r\n</spa-box>\r\n","import { Component, Input, Optional, Inject, ChangeDetectionStrategy, OnDestroy, OnInit, ChangeDetectorRef } from '@angular/core';\r\nimport { NamedRoute } from '../../api/named-route';\r\nimport { NamedRoutes } from '../../api/enums';\r\nimport { TranslocoService, TRANSLOCO_LOADER, HashMap } from '@ngneat/transloco';\r\nimport { GetBreadcrumbDisplayNameFunction } from '../../classes/types';\r\nimport { GET_BREADCRUMB_DISPLAY_NAME } from '../../classes/injection-tokens';\r\nimport { Subscription, merge } from 'rxjs';\r\nimport { HttpTranslocoLoader } from '../../services/http-transloco.loader';\r\n\r\n@Component({\r\n    selector: 'spa-breadcrumb-name',\r\n    templateUrl: './breadcrumb-name.component.html',\r\n    styleUrls: ['./breadcrumb-name.component.scss'],\r\n    changeDetection: ChangeDetectionStrategy.OnPush,\r\n    standalone: false\r\n})\r\nexport class BreadcrumbNameComponent implements OnInit, OnDestroy {\r\n\tprivate $toUnsubscribe: Subscription[] = [];\r\n\r\n\t@Input() namedRoute: NamedRoute;\r\n\t@Input() currentLang: string;\r\n\t@Input() lastTranslationLoaded: HashMap<any>;\r\n\r\n\tstatic translationMap: any = null;\r\n\tstatic langOfTranslationMap: string = null;\r\n\r\n\tstatic fallbackTranslationMap: any = null;\r\n\tstatic fallbackLanguage: string = null;\r\n\r\n\tlatestTransformedValue: string | null;\r\n\tlatestValue: NamedRoutes;\r\n\tlatestLanguageUsed: string;\r\n\r\n\tconstructor(\r\n\t\tprivate transloco: TranslocoService,\r\n\t\t//private changeDetector: ChangeDetectorRef,\r\n\t\t//@Inject(TRANSLOCO_LOADER) private translocoLoader: HttpTranslocoLoader,\r\n\t\t@Optional() @Inject(GET_BREADCRUMB_DISPLAY_NAME) private getOverriddenBreadcrumbDisplayName: GetBreadcrumbDisplayNameFunction,\r\n\t) { }\r\n\r\n\tngOnInit(): void {\r\n\t\t//this.$toUnsubscribe.push(\r\n\t\t//\tmerge(this.translocoLoader.loaded$, this.transloco.langChanges$).subscribe(() => this.changeDetector.markForCheck())\r\n\t\t//);\r\n\t}\r\n\r\n\tgetBreadcrumbDisplayName() {\r\n\t\tif (!this.namedRoute) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\t//let currentLang = this.transloco.getActiveLang();\r\n\r\n\t\t// (this first check is probably not necessary in this component, only in BreadcrumbPipe, since this method, in this component, is only called when something changes)\r\n\t\t// if the transformed value was previously calculated, and the latest language used to calculate is the same as the current one, return the cached value.\r\n\t\tif (this.latestTransformedValue !== undefined && this.latestLanguageUsed == this.currentLang && this.latestValue == this.namedRoute.name) {\r\n\t\t\t//this.logger.logDebug('cached: ', this.latestTransformedValue);\r\n\t\t\treturn this.latestTransformedValue;\r\n\t\t}\r\n\r\n\t\tlet displayName: string;\r\n\t\tthis.latestValue = this.namedRoute.name;\r\n\t\tthis.latestLanguageUsed = this.currentLang;\r\n\r\n\t\t// First, try to fetch the display name using the function getOverriddenBreadcrumbDisplayName\r\n\t\t// (this is method is tried first in order to keep the old behavior, avoiding surprises when updating SPA)\r\n\t\tif (this.getOverriddenBreadcrumbDisplayName && (displayName = this.getOverriddenBreadcrumbDisplayName(this.namedRoute.name))) {\r\n\t\t\t//this.logger.logDebug('getOverriddenBreadcrumbDisplayName: ', displayName);\r\n\t\t\tthis.latestTransformedValue = displayName;\r\n\t\t\treturn displayName;\r\n\t\t}\r\n\r\n\t\t// Second, try to get the display name using the translation map\r\n\t\t// (if the translation map wasn't fetched yet or if it was fetched for another language, try to fetch it again)\r\n\t\tif (!BreadcrumbNameComponent.translationMap || BreadcrumbNameComponent.langOfTranslationMap != this.currentLang) {\r\n\t\t\t// if the translation map could not be fetched for this language (probably because i18n file wasn't yet loaded), fetch the fallback translation map\r\n\t\t\tif (!(BreadcrumbNameComponent.translationMap = this.transloco.translateObject('enums.named-routes'))) {\r\n\t\t\t\t//this.logger.logDebug('FETCHING FALLBACK MAP');\r\n\t\t\t\tlet { fallbackTranslationMap, fallbackLanguage } = this.fetchFallbackTranslationInfo();\r\n\t\t\t\tthis.latestLanguageUsed = fallbackLanguage;\r\n\t\t\t\tBreadcrumbNameComponent.translationMap = fallbackTranslationMap;\r\n\t\t\t\tBreadcrumbNameComponent.langOfTranslationMap = fallbackLanguage;\r\n\t\t\t} else {\r\n\t\t\t\t//this.logger.logDebug('FETCHING LANGUAGE MAP');\r\n\t\t\t\tBreadcrumbNameComponent.langOfTranslationMap = this.currentLang;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// (check if the translation for the given key exists on the translation map; if so, return it)\r\n\t\tif (BreadcrumbNameComponent.translationMap && (displayName = BreadcrumbNameComponent.translationMap[this.namedRoute.name])) { // breadcrumbsTranslationObj should always be evaluated as true, unless something not expected happens...\r\n\t\t\t//this.logger.logDebug('map: ', displayName);\r\n\t\t\tthis.latestTransformedValue = displayName;\r\n\t\t\treturn displayName;\r\n\t\t}\r\n\r\n\t\t// In last case, use NamedRoute.displayName or NamedRoute.name\r\n\t\tdisplayName = this.namedRoute.displayName || this.namedRoute.name\r\n\t\t//this.logger.logDebug('display/name: ', displayName);\r\n\t\tthis.latestTransformedValue = displayName;\r\n\t\treturn displayName;\r\n\t}\r\n\r\n\tfetchFallbackTranslationInfo() {\r\n\t\t// if fallback translation info was already fetched, return it\r\n\t\tif (BreadcrumbNameComponent.fallbackLanguage && BreadcrumbNameComponent.fallbackTranslationMap) {\r\n\t\t\treturn {\r\n\t\t\t\tfallbackTranslationMap: BreadcrumbNameComponent.fallbackTranslationMap,\r\n\t\t\t\tfallbackLanguage: BreadcrumbNameComponent.fallbackLanguage\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t// otherwise, fetch it and then return it\r\n\t\tBreadcrumbNameComponent.fallbackLanguage = Array.isArray(this.transloco.config.fallbackLang) ? this.transloco.config.fallbackLang[0] : this.transloco.config.fallbackLang;\r\n\t\tBreadcrumbNameComponent.fallbackTranslationMap = this.transloco.translateObject('enums.named-routes', {}, BreadcrumbNameComponent.fallbackLanguage);\r\n\r\n\t\treturn {\r\n\t\t\tfallbackTranslationMap: BreadcrumbNameComponent.fallbackTranslationMap,\r\n\t\t\tfallbackLanguage: BreadcrumbNameComponent.fallbackLanguage\r\n\t\t};\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tfor (let s of this.$toUnsubscribe) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","{{ getBreadcrumbDisplayName() }}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n    name: 'safe',\r\n    standalone: false\r\n})\r\nexport class SafePipe implements PipeTransform {\r\n\r\n\tconstructor(protected sanitizer: DomSanitizer) { }\r\n\r\n\ttransform(value: any, type: string = 'html'): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n\t\tswitch (type) {\r\n\t\t\tcase 'html': return this.sanitizer.bypassSecurityTrustHtml(value);\r\n\t\t\tcase 'style': return this.sanitizer.bypassSecurityTrustStyle(value);\r\n\t\t\tcase 'script': return this.sanitizer.bypassSecurityTrustScript(value);\r\n\t\t\tcase 'url': return this.sanitizer.bypassSecurityTrustUrl(value);\r\n\t\t\tcase 'resourceUrl': return this.sanitizer.bypassSecurityTrustResourceUrl(value); \r\n\t\t\tdefault: throw new Error(`Invalid safe type specified: ${type}`);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { EventModel } from '../api/events';\r\nimport { EventViewer } from '../classes/types';\r\nimport { DialogService } from './dialog.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SpaEventViewingService implements EventViewer {\r\n\r\n\tconstructor(\r\n\t\tprivate dialogService: DialogService\r\n\t) { }\r\n\r\n\tshow(event: EventModel): Promise<void> {\r\n\t\treturn this.dialogService.showEvent(event);\r\n\t}\r\n}\r\n","/*\r\n * This was taken from the Transloco PR [feat(transloco): add intlmessageformat transpiler #649](https://github.com/ngneat/transloco/pull/649)\r\n *\r\n * https://github.com/ngneat/transloco/pull/649/files#diff-9486f5902a64999e590fb3c6d31912bb5c47a623cfaa60ff889fd844fcfd2706\r\n *\r\n * This should be removed when said PR is merged (if ever).\r\n */\r\nimport { InjectionToken } from '@angular/core';\r\n\r\nimport IntlMessageFormat from 'intl-messageformat';\r\nimport { Formats } from 'intl-messageformat/src/formatters';\r\nimport { Options } from 'intl-messageformat/src/core';\r\n\r\nexport const TRANSLOCO_INTL_MESSAGE_FORMAT_CONFIG =\r\n\tnew InjectionToken<IntlMessageFormatConfig>('TRANSLOCO_INTL_MESSAGE_FORMAT_CONFIG');\r\n\r\nexport type MFLocale = ConstructorParameters<typeof IntlMessageFormat>[1];\r\n\r\nexport interface IntlMessageFormatConfig {\r\n\tlocales?: MFLocale;\r\n\tformats?: Partial<Formats>\r\n\topts?: Options,\r\n\tenableCache?: boolean;\r\n}\r\n","/*\r\n * This was taken from the Transloco PR [feat(transloco): add intlmessageformat transpiler #649](https://github.com/ngneat/transloco/pull/649)\r\n *\r\n * https://github.com/ngneat/transloco/pull/649/files#diff-e711707d4d58213a4506600f42ccab0e62830cd1c9f23ea6413e4892c33aaa37\r\n *\r\n * This should be removed when said PR is merged (if ever).\r\n */\r\nimport { MFLocale } from './intlmessageformat.config';\r\n\r\nimport IntlMessageFormat from 'intl-messageformat';\r\nimport { Formats, PrimitiveType } from 'intl-messageformat/src/formatters';\r\nimport { Options } from 'intl-messageformat/src/core';\r\nimport { MessageFormatElement } from '@formatjs/icu-messageformat-parser';\r\n\r\nexport type MFFactoryFn = (message: string | MessageFormatElement[], values?: Record<string, PrimitiveType>) => string | string[] | undefined;\r\n\r\nexport function defaultFactory(\r\n\tlocales: MFLocale,\r\n\tformats?: Partial<Formats>,\r\n\topts?: Options\r\n): MFFactoryFn {\r\n\treturn (message: string | MessageFormatElement[], values?: Record<string, PrimitiveType>) => {\r\n\t\treturn new IntlMessageFormat(message, locales, formats, opts).format<string>(values);\r\n\t}\r\n}\r\n\r\nconst cache = new Map<string, string | string[] | undefined>();\r\n\r\nexport function cachedFactory(\r\n\tlocales: MFLocale,\r\n\tformats?: Partial<Formats>,\r\n\topts?: Options\r\n): MFFactoryFn {\r\n\treturn (message: string | MessageFormatElement[], values?: Record<string, PrimitiveType>) => {\r\n\t\tconst localeKey = `__${locales?.toString() || IntlMessageFormat.defaultLocale}__`;\r\n\r\n\t\tconst cacheKey = `${localeKey}${values}`;\r\n\t\tconst cachedMsg = cache.get(cacheKey);\r\n\r\n\t\tif (cachedMsg) {\r\n\t\t\treturn cachedMsg;\r\n\t\t}\r\n\r\n\t\tconst msg = defaultFactory(locales, formats, opts)(message, values);\r\n\t\tcache.set(cacheKey, msg);\r\n\r\n\t\treturn msg;\r\n\t}\r\n}\r\n","/*\r\n * This was taken from the Transloco PR [feat(transloco): add intlmessageformat transpiler #649](https://github.com/ngneat/transloco/pull/649)\r\n *\r\n * https://github.com/ngneat/transloco/pull/649/files#diff-20195dc077527cba3ed9c6fb23060c848582de0b7259a3543c18f83666c43463\r\n *\r\n * This should be removed when said PR is merged (if ever).\r\n */\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport {\r\n\tDefaultTranspiler,\r\n\tgetValue,\r\n\tHashMap,\r\n\tisObject,\r\n\tsetValue,\r\n\tTranslation,\r\n\tTRANSLOCO_CONFIG,\r\n\tTranslocoConfig,\r\n} from '@ngneat/transloco';\r\n\r\nimport {\r\n\tIntlMessageFormatConfig,\r\n\tMFLocale,\r\n\tTRANSLOCO_INTL_MESSAGE_FORMAT_CONFIG,\r\n} from './intlmessageformat.config';\r\nimport {\r\n\tcachedFactory,\r\n\tdefaultFactory,\r\n\tMFFactoryFn,\r\n} from './intlmessageformat.factory';\r\n\r\n@Injectable()\r\nexport class IntlMessageFormatTranspiler extends DefaultTranspiler {\r\n\tprivate config: IntlMessageFormatConfig;\r\n\r\n\tprivate mfFactory: MFFactoryFn;\r\n\r\n\tconstructor(\r\n\t\t@Inject(TRANSLOCO_INTL_MESSAGE_FORMAT_CONFIG) config?: IntlMessageFormatConfig,\r\n\t\t@Optional() @Inject(TRANSLOCO_CONFIG) userConfig?: TranslocoConfig\r\n\t) {\r\n\t\tsuper(userConfig);\r\n\r\n\t\tthis.config = config;\r\n\t\tthis.mfFactory = this.getMFFactory(config?.locales);\r\n\t}\r\n\r\n\toverride transpile(value: any, params: HashMap = {}, translation: Translation, key: string): any {\r\n\t\tif (!value) {\r\n\t\t\treturn value;\r\n\t\t}\r\n\t\tif (isObject(value) && params) {\r\n\t\t\tObject.keys(params).forEach((p) => {\r\n\t\t\t\tconst v = getValue(value, p);\r\n\t\t\t\tconst getParams = getValue(params, p);\r\n\t\t\t\tconst transpiled = super.transpile(v, getParams, translation, key);\r\n\t\t\t\tconst message = this.mfFactory(transpiled, getParams);\r\n\t\t\t\tvalue = setValue(value, p, message);\r\n\t\t\t});\r\n\t\t} else if (!Array.isArray(value)) {\r\n\t\t\tconst transpiled = super.transpile(value, params, translation, key);\r\n\r\n\t\t\treturn this.mfFactory(transpiled, params);\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t}\r\n\r\n\tonLangChanged(lang: string) {\r\n\t\tthis.mfFactory = this.getMFFactory(lang);\r\n\t}\r\n\r\n\tprivate getMFFactory(locales: string | string[] | undefined): MFFactoryFn {\r\n\t\treturn this.config?.enableCache ?\r\n\t\t\tcachedFactory(locales, this.config?.formats, this.config?.opts) :\r\n\t\t\tdefaultFactory(locales, this.config?.formats, this.config?.opts);\r\n\t}\r\n\r\n}\r\n","/*\r\n * This was taken from the Transloco PR [feat(transloco): add intlmessageformat transpiler #649](https://github.com/ngneat/transloco/pull/649)\r\n *\r\n * https://github.com/ngneat/transloco/pull/649/files#diff-706573639645f2fd5b1dafd6f565ea2fd4d67588ab49cfbb7ac0ababff9c679f\r\n *\r\n * This should be removed when said PR is merged (if ever).\r\n */\r\nimport { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { TRANSLOCO_TRANSPILER } from '@ngneat/transloco';\r\nimport { IntlMessageFormatTranspiler } from './intlmessageformat.transpiler';\r\nimport {\r\n\tTRANSLOCO_INTL_MESSAGE_FORMAT_CONFIG,\r\n\tIntlMessageFormatConfig,\r\n} from './intlmessageformat.config';\r\n\r\n@NgModule()\r\nexport class TranslocoIntlMessageFormatModule {\r\n\tstatic forRoot(\r\n\t\tconfig?: IntlMessageFormatConfig\r\n\t): ModuleWithProviders<TranslocoIntlMessageFormatModule> {\r\n\t\treturn {\r\n\t\t\tngModule: TranslocoIntlMessageFormatModule,\r\n\t\t\tproviders: [\r\n\t\t\t\t{ provide: TRANSLOCO_INTL_MESSAGE_FORMAT_CONFIG, useValue: config },\r\n\t\t\t\t{\r\n\t\t\t\t\tprovide: TRANSLOCO_TRANSPILER,\r\n\t\t\t\t\tuseClass: IntlMessageFormatTranspiler,\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t};\r\n\t}\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { ServerSummary } from \"../api/servers\";\r\n\r\nconst apiRoute = '/api/servers';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ServerService {\r\n\r\n\tconstructor(\r\n\t\tprotected http: HttpClient\r\n\t) { }\r\n\r\n\tlist() {\r\n\t\treturn this.http.get<ServerSummary[]>(apiRoute);\r\n\t}\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\nimport { ServerSummary } from '../../api/servers';\r\nimport { ServerService } from '../../services/server.service';\r\n\r\n@Component({\r\n    selector: 'spa-servers-list',\r\n    templateUrl: './servers-list.component.html',\r\n    styleUrls: ['./servers-list.component.scss'],\r\n    standalone: false\r\n})\r\nexport class ServersListComponent implements OnInit {\r\n\r\n\tserversDataSource: ServerSummary[];\r\n\r\n\tisLoading: boolean;\r\n\r\n\tconstructor(\r\n\t\tpublic route: ActivatedRoute,\r\n\t\tprivate serverService: ServerService,\r\n\t) { }\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.isLoading = true;\r\n\t\tthis.serverService.list().subscribe(s => {\r\n\t\t\tthis.serversDataSource = s;\r\n\t\t\tthis.isLoading = false;\r\n\t\t}, _ => this.isLoading = false);\r\n\t}\r\n\r\n}\r\n","<spa-box [loading]=\"isLoading\" [hidden]=\"route.firstChild\" *transloco=\"let t\">\r\n\t<span box-title>{{t('common.servers')}}</span>\r\n\t@if (serversDataSource) {\r\n\t\t<lacm-table [dataSource]=\"serversDataSource\" matSort matSortActive=\"name\">\r\n\t\t\t<ng-container matColumnDef=\"name\">\r\n\t\t\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.name')}}</mat-header-cell>\r\n\t\t\t\t<mat-cell *matCellDef=\"let e\">{{e.name}}</mat-cell>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container matColumnDef=\"startDate\">\r\n\t\t\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.start-date')}}</mat-header-cell>\r\n\t\t\t\t<mat-cell *matCellDef=\"let e\">\r\n\t\t\t\t\t{{e.startDate | spaDate:'shortDate'}} {{e.startDate | spaDate:'mediumTime'}}\r\n\t\t\t\t</mat-cell>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container matColumnDef=\"lastHeartbeat\">\r\n\t\t\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.last-heartbeat')}}</mat-header-cell>\r\n\t\t\t\t<mat-cell *matCellDef=\"let e\">\r\n\t\t\t\t\t{{e.lastHeartbeat | spaDate:'shortDate'}} {{e.lastHeartbeat | spaDate:'mediumTime'}}\r\n\t\t\t\t</mat-cell>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container matColumnDef=\"isHealthy\">\r\n\t\t\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.healthy')}}</mat-header-cell>\r\n\t\t\t\t<mat-cell *matCellDef=\"let e\">{{e.isHealthy ? t('common.yes') : t('common.no')}}</mat-cell>\r\n\t\t\t</ng-container>\r\n\t\t\t<ng-container matColumnDef=\"failedHealthCheck\">\r\n\t\t\t\t<mat-header-cell *matHeaderCellDef mat-sort-header>{{t('common.failed-health-check')}}</mat-header-cell>\r\n\t\t\t\t<mat-cell *matCellDef=\"let e\">{{e.failedHealthCheck}}</mat-cell>\r\n\t\t\t</ng-container>\r\n\t\t</lacm-table>\r\n\t}\r\n</spa-box>\r\n","import { BooleanInput, coerceBooleanProperty } from \"@angular/cdk/coercion\";\r\nimport { Component, DoCheck, ElementRef, HostBinding, Input, OnDestroy, Optional, Self, ViewChild } from \"@angular/core\";\r\nimport { ControlValueAccessor, FormBuilder, FormGroup, FormGroupDirective, NgControl, NgForm } from \"@angular/forms\";\r\nimport { MatFormField, MatFormFieldControl } from \"@angular/material/form-field\";\r\nimport { Subject, Subscription } from \"rxjs\";\r\nimport { SpaLanguageService } from \"../../services/spa-language.service\";\r\nimport { MatDatepicker } from \"@angular/material/datepicker\";\r\nimport { TranslocoService } from \"@ngneat/transloco\";\r\n\r\n@Component({\r\n    selector: 'spa-date-input',\r\n    templateUrl: './spa-date.input.html',\r\n    styleUrls: ['./spa-date.input.scss'],\r\n    providers: [{ provide: MatFormFieldControl, useExisting: SpaDateInput }],\r\n    standalone: false\r\n})\r\nexport class SpaDateInput implements MatFormFieldControl<string>, ControlValueAccessor, OnDestroy, DoCheck {\r\n\r\n\tstatic nextId = 0;\r\n\r\n\t$toUnsubscribe: Subscription[] = [];\r\n\r\n\t@ViewChild('datePicker') datePicker: MatDatepicker<Date>;\r\n\r\n\t// No idea why sometimes I receive HTMLInputElement and other times ElementRef<HTMLInputElement>\r\n\t@ViewChild('dateInput') dateInput: HTMLInputElement|ElementRef<HTMLInputElement>;\r\n\t@ViewChild('hourInput') hourInput: HTMLInputElement|ElementRef<HTMLInputElement>;\r\n\t@ViewChild('minuteInput') minuteInput: HTMLInputElement|ElementRef<HTMLInputElement>;\r\n\t@ViewChild('secondInput') secondInput: HTMLInputElement|ElementRef<HTMLInputElement>;\r\n\r\n\tform: FormGroup;\r\n\r\n\t@Input()\r\n\tget value(): string {\r\n\t\treturn this.getValueFromForm();\r\n\t}\r\n\tset value(date: string|Date) {\r\n\t\tif (!date) {\r\n\t\t\tthis.onChange(date);\r\n\t\t\tthis.clear();\r\n\t\t\tthis.stateChanges.next();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet dateOnPicker = null;\r\n\t\tlet validChange = false;\r\n\t\tif (this.dayStart || this.dayEnd || this.withTime) {\r\n\t\t\tif (date instanceof Date) {\r\n\t\t\t\tif (this.dayEnd) {\r\n\t\t\t\t\tdate.setDate(date.getDate() - 1);\r\n\t\t\t\t}\r\n\t\t\t\tdateOnPicker = date;\r\n\t\t\t\tthis.setValueFromDate(date);\r\n\t\t\t\tvalidChange = true;\r\n\t\t\t} else {\r\n\t\t\t\tlet _date = new Date(date);\r\n\t\t\t\tif (!isNaN(_date.getTime())) {\r\n\t\t\t\t\tif (this.dayEnd) {\r\n\t\t\t\t\t\t_date.setDate(_date.getDate() - 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdateOnPicker = _date;\r\n\t\t\t\t\tthis.setValueFromDate(_date);\r\n\t\t\t\t\tvalidChange = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (date instanceof Date) {\r\n\t\t\t\tdateOnPicker = date;\r\n\t\t\t\tthis.setDateValue(date.getFullYear(), date.getMonth() + 1, date.getDate());\r\n\t\t\t\tvalidChange = true;\r\n\t\t\t} else {\r\n\t\t\t\tconst match = date.match(DateInputConstants.DATE_REGEX);\r\n\t\t\t\tif (match) {\r\n\t\t\t\t\tconst year = match[1];\r\n\t\t\t\t\tconst month = match[2];\r\n\t\t\t\t\tconst day = match[3];\r\n\t\t\t\t\tdateOnPicker = new Date(parseInt(year), parseInt(month) - 1, parseInt(day));\r\n\t\t\t\t\tthis.setDateValue(year, month, day);\r\n\t\t\t\t\tvalidChange = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (dateOnPicker) {\r\n\t\t\tthis.form.controls.datePicker.setValue(dateOnPicker);\r\n\t\t}\r\n\r\n\t\tif (!validChange) {\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tthis.writeValue(null);\r\n\t\t\t\tthis.onChange(null);\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tconst _value = this.getValueFromForm();\r\n\t\t\tif (_value != date) {\r\n\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\tthis.writeValue(_value);\r\n\t\t\t\t\tthis.onChange(_value);\r\n\t\t\t\t}, 0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\r\n\r\n\tstateChanges = new Subject<void>();\r\n\r\n\t@HostBinding() id = `spa-date-input-${SpaDateInput.nextId++}`;\r\n\r\n\t@Input()\r\n\tget placeholder() {\r\n\t\tif (this._placeholder) {\r\n\t\t\treturn this._placeholder;\r\n\t\t}\r\n\r\n\t\treturn this.currentLocale == \"en-US\" ? this.transloco.translate('common.date-format-mm-dd-yyyy') : this.transloco.translate('common.date-format-dd-mm-yyyy');\r\n\t}\r\n\tset placeholder(plh) {\r\n\t\tthis._placeholder = plh;\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\tprivate _placeholder: string;\r\n\r\n\tfocused = false;\r\n\ttouched = false;\r\n\r\n\tget empty() {\r\n\t\treturn !this.form.controls.date.value;\r\n\t}\r\n\r\n\t@HostBinding('class.floating')\r\n\tget shouldLabelFloat() {\r\n\t\tif (this.readonly) {\r\n\t\t\treturn !this.empty;\r\n\t\t}\r\n\t\treturn this.focused || !this.empty;\r\n\t}\r\n\r\n\t@Input()\r\n\tget required(): boolean { return this._required; }\r\n\tset required(req: BooleanInput) {\r\n\t\tthis._required = coerceBooleanProperty(req);\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\tprivate _required = false;\r\n\r\n\t@Input()\r\n\tget disabled(): boolean { return this._disabled; }\r\n\tset disabled(value: BooleanInput) {\r\n\t\tthis._disabled = coerceBooleanProperty(value);\r\n\t\tthis._disabled ? this.form.disable() : this.form.enable();\r\n\t\tthis.stateChanges.next();\r\n\t}\r\n\tprivate _disabled = false;\r\n\r\n\terrorState: boolean = false;\r\n\r\n\tcontrolType = 'spa-date-input';\r\n\r\n\t@Input('aria-describedby') userAriaDescribedBy: string;\r\n\r\n\tdescribedBy = '';\r\n\r\n\t@Input()\r\n\tget dayStart(): boolean { return this._dayStart; }\r\n\tset dayStart(value: BooleanInput) {\r\n\t\tthis._dayStart = coerceBooleanProperty(value);\r\n\t\tthis.stateChanges.next();\r\n\t\tthis.handleInput();\r\n\t}\r\n\tprivate _dayStart = false;\r\n\r\n\t@Input()\r\n\tget dayEnd(): boolean { return this._dayEnd; }\r\n\tset dayEnd(value: BooleanInput) {\r\n\t\tthis._dayEnd = coerceBooleanProperty(value);\r\n\t\tthis.stateChanges.next();\r\n\t\tthis.handleInput();\r\n\t}\r\n\tprivate _dayEnd = false;\r\n\r\n\t@Input()\r\n\tget readonly(): boolean { return this._readonly; }\r\n\tset readonly(value: BooleanInput) {\r\n\t\tthis._readonly = coerceBooleanProperty(value);\r\n\t\tthis.stateChanges.next();\r\n\t\tthis.handleInput();\r\n\t}\r\n\tprivate _readonly = false;\r\n\r\n\t@Input()\r\n\tget withTime(): boolean { return this._withTime; }\r\n\tset withTime(value: BooleanInput) {\r\n\t\tthis._withTime = coerceBooleanProperty(value);\r\n\t\tthis.stateChanges.next();\r\n\t\tthis.handleInput();\r\n\t}\r\n\tprivate _withTime = false;\r\n\r\n\t@Input()\r\n\tget showSeconds(): boolean { return this._showSeconds; }\r\n\tset showSeconds(value: BooleanInput) {\r\n\t\tthis._showSeconds = coerceBooleanProperty(value);\r\n\t\tthis.stateChanges.next();\r\n\t\tthis.handleInput();\r\n\t}\r\n\tprivate _showSeconds = false;\r\n\r\n\t@Input()\r\n\tget noTimeZone(): boolean { return this._noTimeZone; }\r\n\tset noTimeZone(value: BooleanInput) {\r\n\t\tthis._noTimeZone = coerceBooleanProperty(value);\r\n\t\tthis.stateChanges.next();\r\n\t\tthis.handleInput();\r\n\t}\r\n\tprivate _noTimeZone = false;\r\n\r\n\t@Input()\r\n\tget hideClear(): boolean { return this._hideClear; }\r\n\tset hideClear(value: BooleanInput) {\r\n\t\tthis._hideClear = coerceBooleanProperty(value);\r\n\t\tthis.stateChanges.next();\r\n\t\tthis.handleInput();\r\n\t}\r\n\tprivate _hideClear = false;\r\n\r\n\t@Input()\r\n\tget hidePicker(): boolean { return this._hidePicker; }\r\n\tset hidePicker(value: BooleanInput) {\r\n\t\tthis._hidePicker = coerceBooleanProperty(value);\r\n\t\tthis.stateChanges.next();\r\n\t\tthis.handleInput();\r\n\t}\r\n\tprivate _hidePicker = false;\r\n\r\n\tprivate get hours() {\r\n\t\tlet val = Number(this.form.controls['hours'].value);\r\n\t\treturn isNaN(val) ? 0 : val;\r\n\t};\r\n\r\n\tprivate get minutes() {\r\n\t\tlet val = Number(this.form.controls['minutes'].value);\r\n\t\treturn isNaN(val) ? 0 : val;\r\n\t};\r\n\r\n\tprivate get seconds() {\r\n\t\tlet val = Number(this.form.controls['seconds'].value);\r\n\t\treturn isNaN(val) ? 0 : val;\r\n\t};\r\n\r\n\t@Input() stepHours: number = DateInputConstants.DEFAULT_STEP;\r\n\t@Input() stepMinutes: number = DateInputConstants.DEFAULT_STEP;\r\n\t@Input() stepSeconds: number = DateInputConstants.DEFAULT_STEP;\r\n\r\n\tprivate currentLocale: string;\r\n\r\n\tconstructor(\r\n\t\tfb: FormBuilder,\r\n\t\t@Optional() @Self() public ngControl: NgControl,\r\n\t\t@Optional() private parentForm: NgForm,\r\n\t\t@Optional() private parentFormGroup: FormGroupDirective,\r\n\t\t@Optional() public parentFormField: MatFormField,\r\n\t\tprivate elementRef: ElementRef<HTMLElement>,\r\n\t\tprivate spaLanguage: SpaLanguageService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) {\r\n\t\tthis.form = fb.group({\r\n\t\t\tdate: '',\r\n\t\t\tdatePicker: '',\r\n\t\t\thours: '00',\r\n\t\t\tminutes: '00',\r\n\t\t\tseconds: '00',\r\n\t\t});\r\n\r\n\t\tif (this.ngControl != null) {\r\n\t\t\t// Setting the value accessor directly (instead of using\r\n\t\t\t// the providers) to avoid running into a circular import.\r\n\t\t\tthis.ngControl.valueAccessor = this;\r\n\t\t}\r\n\r\n\t\tthis.$toUnsubscribe.push(\r\n\t\t\tthis.form.controls.datePicker.valueChanges.subscribe(v => {\r\n\t\t\t\tthis.setValueFromDate(v, false);\r\n\t\t\t\tthis.handleInput();\r\n\t\t\t}),\r\n\t\t\tthis.spaLanguage.currentLocale.subscribe(l => {\r\n\t\t\t\tconst parts = this.form.controls.date.value?.split('/');\r\n\t\t\t\tif (parts?.length == 3) {\r\n\t\t\t\t\tconst first = parseInt(parts[0]).toString().padStart(2, '0');\r\n\t\t\t\t\tconst second = parseInt(parts[1]).toString().padStart(2, '0');\r\n\t\t\t\t\tconst third = parseInt(parts[2]);\r\n\r\n\t\t\t\t\tconst dateInOtherLocate = `${second}/${first}/${third}`;\r\n\t\t\t\t\tswitch (this.currentLocale) {\r\n\t\t\t\t\t\tcase \"en-US\":\r\n\t\t\t\t\t\t\tif (l == \"pt-BR\" || l == \"es-ES\") {\r\n\t\t\t\t\t\t\t\tthis.form.controls.date.setValue(dateInOtherLocate);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"pt-BR\":\r\n\t\t\t\t\t\tcase \"es-ES\":\r\n\t\t\t\t\t\t\tif (l == \"en-US\") {\r\n\t\t\t\t\t\t\t\tthis.form.controls.date.setValue(dateInOtherLocate);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tthis.currentLocale = l;\r\n\t\t\t}),\r\n\t\t);\r\n\t}\r\n\r\n\tprivate getValueFromForm() {\r\n\t\tconst selectedDate = this.getSelectedDate();\r\n\t\tif (!selectedDate) {\r\n\t\t\treturn \"\";\r\n\t\t}\r\n\r\n\t\tlet dateStr = `${selectedDate.year}-${selectedDate.month.toString().padStart(2, '0')}-${selectedDate.day.toString().padStart(2, '0')}`;\r\n\t\tif (this.dayEnd) {\r\n\t\t\tconst date = new Date(Date.UTC(selectedDate.year, selectedDate.month - 1, selectedDate.day + 1));\r\n\t\t\tconst year = date.getUTCFullYear();\r\n\t\t\tconst month = (date.getUTCMonth() + 1).toString().padStart(2, '0');\r\n\t\t\tconst day = date.getUTCDate().toString().padStart(2, '0');\r\n\t\t\tdateStr = `${year}-${month}-${day}`;\r\n\t\t}\r\n\r\n\t\tconst invalidDateError = {invalidDate: true};\r\n\t\tif (this.dayStart || this.dayEnd || this.withTime) {\r\n\t\t\tconst date = new Date(`${dateStr}T${this.form.controls.hours.value}:${this.form.controls.minutes.value}:${this.form.controls.seconds.value}`);\r\n\r\n\r\n            if (!date || isNaN(date.getTime())) {\r\n\t\t\t\tthis.form.controls.date.setErrors(invalidDateError);\r\n                return \"\";\r\n            } else {\r\n\t\t\t\tthis.form.controls.date.setErrors(null);\r\n\t\t\t}\r\n\r\n            const year = date.getFullYear();\r\n            const month = (date.getMonth() + 1).toString().padStart(2, '0');\r\n            const day = date.getDate().toString().padStart(2, '0');\r\n            const hours = this.dayStart || this.dayEnd ? \"00\" : date.getHours().toString().padStart(2, '0');\r\n            const minutes = this.dayStart || this.dayEnd ? \"00\" : date.getMinutes().toString().padStart(2, '0');\r\n            const seconds = this.dayStart || this.dayEnd ? \"00\" : date.getSeconds().toString().padStart(2, '0');\r\n            const milliseconds = date.getMilliseconds().toString().padStart(3, '0');\r\n            const offsetMinutes = date.getTimezoneOffset();\r\n            const offsetHours = Math.abs(offsetMinutes) / 60;\r\n            const offsetMinutesRemainder = Math.abs(offsetMinutes) % 60;\r\n            const offsetSign = offsetMinutes >= 0 ? '-' : '+';\r\n            let value = `${year}-${month}-${day}T${hours}:${minutes}:${seconds}.${milliseconds}`;\r\n\r\n            if (!this.noTimeZone) {\r\n                value += `${offsetSign}${offsetHours.toString().padStart(2, '0')}:${offsetMinutesRemainder.toString().padStart(2, '0')}`;\r\n            }\r\n\r\n            return value;\r\n\t\t} else {\r\n\t\t\tconst date = new Date(dateStr);\r\n\r\n\t\t\tif (!date || isNaN(date.getTime())) {\r\n\t\t\t\tthis.form.controls.date.setErrors(invalidDateError);\r\n\t\t\t\treturn \"\";\r\n\t\t\t} else {\r\n\t\t\t\tthis.form.controls.date.setErrors(null);\r\n\t\t\t}\r\n\r\n\t\t\treturn dateStr;\r\n\t\t}\r\n\t}\r\n\r\n\tonFocusIn(event: FocusEvent) {\r\n\t\tif (!this.focused) {\r\n\t\t\tthis.focused = true;\r\n\t\t\tthis.stateChanges.next();\r\n\t\t}\r\n\t}\r\n\r\n\tonFocusOut(event: FocusEvent) {\r\n\t\tif (!this.elementRef.nativeElement.contains(event.relatedTarget as Element)) {\r\n\t\t\tthis.touched = true;\r\n\t\t\tthis.focused = false;\r\n\t\t\tthis.onTouched();\r\n\t\t\tthis.stateChanges.next();\r\n\t\t}\r\n\t}\r\n\r\n\tonChange = (_: any) => { };\r\n\tonTouched = () => { };\r\n\r\n\tngOnDestroy() {\r\n\t\tthis.stateChanges.complete();\r\n\t\tthis.$toUnsubscribe.forEach(s => s.unsubscribe());\r\n\t}\r\n\r\n\tngDoCheck() {\r\n\t\tif (this.ngControl) {\r\n\t\t\tthis.updateErrorState();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate updateErrorState() {\r\n\t\tconst parent = this.parentFormGroup || this.parentForm;\r\n\r\n\t\tconst oldState = this.errorState;\r\n\t\tconst newState = (this.ngControl?.invalid || this.form.invalid) && (this.touched || parent.submitted);\r\n\r\n\t\tif (oldState !== newState) {\r\n\t\t\tthis.errorState = newState;\r\n\t\t\tthis.stateChanges.next();\r\n\t\t}\r\n\t}\r\n\r\n\tsetDescribedByIds(ids: string[]) {\r\n\t\tthis.describedBy = ids.join(' ');\r\n\t}\r\n\r\n\tonContainerClick(event: MouseEvent) {\r\n\t\tif ((event.target as Element).tagName.toLowerCase() != 'input') {\r\n\t\t\tthis.elementRef.nativeElement.querySelector('input').focus();\r\n\t\t}\r\n\t}\r\n\r\n\twriteValue(s: string): void {\r\n\t\tthis.value = s;\r\n\t}\r\n\r\n\tregisterOnChange(fn: any): void {\r\n\t\tthis.onChange = fn;\r\n\t}\r\n\r\n\tregisterOnTouched(fn: any): void {\r\n\t\tthis.onTouched = fn;\r\n\t}\r\n\r\n\tsetDisabledState(isDisabled: boolean): void {\r\n\t\tthis.disabled = isDisabled;\r\n\t}\r\n\r\n\thandleInput() {\r\n\t\tthis.onChange(this.value);\r\n\r\n\t\tconst selectedDate = this.getSelectedDate();\r\n\t\tif (selectedDate) {\r\n\t\t\tconst date = new Date(selectedDate.year, selectedDate.month - 1, selectedDate.day);\r\n\t\t\tthis.form.controls.datePicker.setValue(date, { onlySelf: false, emitEvent: false });\r\n\t\t}\r\n\t}\r\n\r\n\tprivate setValueFromDate(date: Date, setTime: boolean = true) {\r\n\t\tif (!date) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tthis.setDateValue(date.getFullYear(), date.getMonth() + 1, date.getDate());\r\n\r\n\t\tif (setTime) {\r\n\t\t\tthis.form.controls.hours.setValue(this.formatTwoDigitTimeValue(date.getHours()));\r\n\t\t\tthis.form.controls.minutes.setValue(this.formatTwoDigitTimeValue(date.getMinutes()));\r\n\t\t\tthis.form.controls.seconds.setValue(this.formatTwoDigitTimeValue(date.getSeconds()));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tprivate setDateValue(year: number|string, month: number|string, day: number|string) {\r\n\t\tconst _year = year.toString();\r\n\t\tconst _month = month.toString().padStart(2, '0');\r\n\t\tconst _day = day.toString().padStart(2, '0');\r\n\t\tswitch (this.currentLocale) {\r\n\t\t\tcase \"en-US\":\r\n\t\t\t\tthis.form.controls.date.setValue(`${_month}/${_day}/${_year}`);\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pt-BR\":\r\n\t\t\tcase \"es-ES\":\r\n\t\t\tdefault:\r\n\t\t\t\tthis.form.controls.date.setValue(`${_day}/${_month}/${_year}`);\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t}\r\n\r\n\topenPicker() {\r\n\t\tthis.datePicker.open();\r\n\t}\r\n\r\n\tclear() {\r\n\t\tsetTimeout(_ => {\r\n\t\t\tthis.form.controls.date.setValue('');\r\n\t\t\tthis.form.controls.hours.setValue('00');\r\n\t\t\tthis.form.controls.minutes.setValue('00');\r\n\t\t\tthis.form.controls.seconds.setValue('00');\r\n\t\t\tthis.form.controls.datePicker.setValue('');\r\n\t\t\tthis.handleInput();\r\n\t\t}, 0);\r\n\t}\r\n\r\n\tpublic change(prop: string, up?: boolean) {\r\n\t\tconst next = this.getNextValueByProp(prop, up);\r\n\t\tthis.form.controls[prop].setValue(this.formatTwoDigitTimeValue(next), { onlySelf: false, emitEvent: false });\r\n\t\tthis.handleInput();\r\n\t}\r\n\r\n\tprivate getNextValueByProp(prop: string, up?: boolean): number {\r\n\t\tconst keyProp = prop[0].toUpperCase() + prop.slice(1);\r\n\t\tconst min = DateInputConstants.LIMIT_TIMES[`min${keyProp}`];\r\n\t\tlet max = DateInputConstants.LIMIT_TIMES[`max${keyProp}`];\r\n\r\n\t\tlet next;\r\n\t\tif (up == null) {\r\n\t\t\tnext = this[prop] % (max);\r\n\t\t} else {\r\n\t\t\tnext = up ? this[prop] + this[`step${keyProp}`] : this[prop] - this[`step${keyProp}`];\r\n\t\t\tnext = next % max;\r\n\t\t\tif (up) {\r\n\t\t\t\tnext = next > max ? (next - max + min) : next;\r\n\t\t\t} else {\r\n\t\t\t\tnext = next < min ? (next - min + max) : next;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn next;\r\n\t}\r\n\r\n\tprivate formatTwoDigitTimeValue(val: number) {\r\n\t\tconst txt = val.toString();\r\n\t\treturn txt.length > 1 ? txt : `0${txt}`;\r\n\t}\r\n\r\n\tselectInputIfCursorStart(e: KeyboardEvent, el: HTMLInputElement|ElementRef<HTMLInputElement>) {\r\n\t\tif (!el) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst selectionStart = (e.target as any).selectionStart;\r\n\t\tif (selectionStart <= 0) {\r\n\t\t\tconst element = el instanceof ElementRef ? el.nativeElement : el;\r\n\t\t\telement.focus();\r\n\t\t\telement.selectionStart = element.selectionEnd = element.value.length;\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\tselectInputIfCursorEnd(e: KeyboardEvent, el: HTMLInputElement|ElementRef<HTMLInputElement>, end: number) {\r\n\t\tif (!el) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst selectionStart = (e.target as any).selectionStart;\r\n\t\tif (selectionStart >= end) {\r\n\t\t\tconst element = el instanceof ElementRef ? el.nativeElement : el;\r\n\t\t\telement.focus();\r\n\t\t\telement.selectionStart = element.selectionEnd = 0;\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t}\r\n\r\n\tprivate getSelectedDate() {\r\n\t\tconst parts = this.form.controls.date.value.split('/');\r\n\t\tif (parts.length != 3) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst first = parseInt(parts[0]);\r\n\t\tconst second = parseInt(parts[1]);\r\n\r\n\t\t// Expecting full year\r\n\t\tif (parts[2].length != 4) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tconst third = parseInt(parts[2]);\r\n\r\n\t\tif (isNaN(first) || isNaN(second) || isNaN(third)) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet year: number = third;\r\n\r\n\t\tlet month: number;\r\n\t\tlet day: number;\r\n\t\tswitch (this.currentLocale) {\r\n\t\t\tcase \"en-US\":\r\n\t\t\t\tmonth = first;\r\n\t\t\t\tday = second;\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pt-BR\":\r\n\t\t\tcase \"es-ES\":\r\n\t\t\tdefault:\r\n\t\t\t\tmonth = second;\r\n\t\t\t\tday = first;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\treturn { year: year, month: month, day: day };\r\n\t}\r\n\r\n\tonPaste(e: ClipboardEvent) {\r\n\t\tif (!this.withTime) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst dateTimeRegex = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}[, ]?(\\d{2}):(\\d{2}):?(\\d{2})?$/;\r\n\t\tconst match = e.clipboardData.getData('text/plain').match(dateTimeRegex);\r\n\r\n\t\tif (match) {\r\n\t\t\tthis.form.controls.date.setValue(\"\");\r\n\r\n\t\t\tconst hours = match[1];\r\n\t\t\tthis.form.controls.hours.setValue(this.formatTwoDigitTimeValue(parseInt(hours)), { onlySelf: false, emitEvent: false });\r\n\t\t\tconst minutes = match[2];\r\n\t\t\tthis.form.controls.minutes.setValue(this.formatTwoDigitTimeValue(parseInt(minutes)), { onlySelf: false, emitEvent: false });\r\n\t\t\tif (match.length >= 4) {\r\n\t\t\t\tconst seconds = match[3];\r\n\t\t\t\tthis.form.controls.seconds.setValue(this.formatTwoDigitTimeValue(parseInt(seconds)), { onlySelf: false, emitEvent: false });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nclass DateInputConstants {\r\n\tstatic NUMERIC_REGEX = /[^0-9]/g;\r\n\tstatic DATE_REGEX = /^(\\d{4})-(\\d{2})-(\\d{2})/;\r\n\tstatic DEFAULT_STEP = 1;\r\n\tstatic LIMIT_TIMES = {\r\n\t\tminHours: 0,\r\n\t\tmaxHours: 24,\r\n\t\tminMinutes: 0,\r\n\t\tmaxMinutes: 60,\r\n\t\tminSeconds: 0,\r\n\t\tmaxSeconds: 60,\r\n\t}\r\n}\r\n","<div [formGroup]=\"form\" [attr.aria-describedby]=\"describedBy\" (focusin)=\"onFocusIn($event)\"\r\n\t(focusout)=\"onFocusOut($event)\" [attr.aria-labelledby]=\"parentFormField?.getLabelId()\" [id]=\"id\"\r\n\t[attr.aria-describedby]=\"describedBy\">\r\n\t<div class=\"d-flex\">\r\n\t\t<input #dateInput [ngClass]=\"{'w-100': empty, 'date-input': !empty}\" [readonly]=\"readonly\"\r\n\t\t\t[placeholder]=\"placeholder\" matInput formControlName=\"date\"\r\n\t\t\t(input)=\"handleInput(); selectInputIfCursorEnd($event, hourInput, 10)\" mask=\"00/00/0000\"\r\n\t\t\t[dropSpecialCharacters]=\"false\" (keydown.ArrowRight)=\"selectInputIfCursorEnd($event, hourInput, 10)\"\r\n\t\t\t(paste)=\"onPaste($event)\">\r\n\t\t@if (withTime && !empty) {\r\n\t\t\t<span class=\"me-1\">,</span>\r\n\t\t\t<input #hourInput [readonly]=\"readonly\" placeholder=\"00\" matInput formControlName=\"hours\" mask=\"00\"\r\n\t\t\t\tclass=\"time-input\" (input)=\"selectInputIfCursorEnd($event, minuteInput, 2)\"\r\n\t\t\t\t(keydown.ArrowUp)=\"change('hours', true); $event.preventDefault()\"\r\n\t\t\t\t(keydown.ArrowDown)=\"change('hours', false); $event.preventDefault()\"\r\n\t\t\t\t(keydown.ArrowLeft)=\"selectInputIfCursorStart($event, dateInput)\"\r\n\t\t\t\t(keydown.ArrowRight)=\"selectInputIfCursorEnd($event, minuteInput, 2)\" (blur)=\"change('hours')\">\r\n\t\t\t<span>:</span>\r\n\t\t\t<input #minuteInput [readonly]=\"readonly\" placeholder=\"00\" matInput formControlName=\"minutes\" mask=\"00\"\r\n\t\t\t\tclass=\"time-input\" (input)=\"selectInputIfCursorEnd($event, secondInput, 2)\"\r\n\t\t\t\t(keydown.ArrowUp)=\"change('minutes', true); $event.preventDefault()\"\r\n\t\t\t\t(keydown.ArrowDown)=\"change('minutes', false); $event.preventDefault()\"\r\n\t\t\t\t(keydown.ArrowLeft)=\"selectInputIfCursorStart($event, hourInput)\"\r\n\t\t\t\t(keydown.ArrowRight)=\"selectInputIfCursorEnd($event, secondInput, 2)\" (blur)=\"change('minutes')\">\r\n\t\t\t@if (showSeconds) {\r\n\t\t\t\t<span>:</span>\r\n\t\t\t\t<input #secondInput [readonly]=\"readonly\" placeholder=\"00\" matInput formControlName=\"seconds\" mask=\"00\"\r\n\t\t\t\t\tclass=\"time-input\" (keydown.ArrowUp)=\"change('seconds', true); $event.preventDefault()\"\r\n\t\t\t\t\t(keydown.ArrowDown)=\"change('seconds', false); $event.preventDefault()\"\r\n\t\t\t\t\t(keydown.ArrowLeft)=\"selectInputIfCursorStart($event, minuteInput)\" (blur)=\"change('seconds')\">\r\n\t\t\t}\r\n\t\t}\r\n\t\t<div class=\"date-icons\">\r\n\t\t\t@if (!hideClear) {\r\n\t\t\t\t<button [disabled]=\"!form.controls.date.value\" mat-icon-button (click)=\"clear()\">\r\n\t\t\t\t\t<mat-icon>close</mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t}\r\n\t\t\t@if (!hidePicker) {\r\n\t\t\t\t<button mat-icon-button (click)=\"openPicker()\">\r\n\t\t\t\t\t<mat-icon>calendar_month</mat-icon>\r\n\t\t\t\t</button>\r\n\t\t\t}\r\n\t\t</div>\r\n\t</div>\r\n\t<input formControlName=\"datePicker\" hidden [matDatepicker]=\"datePicker\">\r\n\t<mat-datepicker #datePicker></mat-datepicker>\r\n</div>\r\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-clickable-area',\r\n    templateUrl: './clickable-area.component.html',\r\n    styleUrl: './clickable-area.component.scss',\r\n    standalone: false\r\n})\r\nexport class ClickableAreaComponent {\r\n\r\n\t@Output() trigger = new EventEmitter<void>();\r\n\r\n\t@Input({transform: coerceBooleanProperty}) stretch: boolean;\r\n\r\n\tconstructor() { }\r\n\r\n\tonClick() {\r\n\t\tthis.trigger.emit();\r\n\t}\r\n\r\n}\r\n","<!-- TODO: Maybe add a background when hover? Or it should come from content? -->\r\n<button (click)=\"onClick()\" class=\"clean-button d-block\" [ngClass]=\"{ 'w-100': stretch }\">\r\n\t<ng-content></ng-content>\r\n</button>\r\n","import { Component, EventEmitter, Output } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'spa-link-button',\r\n    templateUrl: './link-button.component.html',\r\n    styleUrl: './link-button.component.scss',\r\n    standalone: false\r\n})\r\nexport class LinkButtonComponent {\r\n\r\n\t@Output() trigger = new EventEmitter<void>();\r\n\r\n\tconstructor() { }\r\n\r\n\tonClick() {\r\n\t\tthis.trigger.emit();\r\n\t}\r\n\r\n}\r\n","<button (click)=\"onClick()\" class=\"clean-button link\">\r\n\t<ng-content></ng-content>\r\n</button>\r\n","// inspired on https://github.com/verto-health/ngx-turnstile/blob/main/projects/ngx-turnstile/src/lib/ngx-turnstile-value-accessor.directive.ts\r\nimport { Directive, forwardRef, inject, OnInit } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { CaptchaComponent } from './captcha.component';\r\n\r\n@Directive({\r\n    selector: 'spa-captcha[formControl], spa-captcha[formControlName], spa-captcha[ngModel]',\r\n    providers: [\r\n        {\r\n            provide: NG_VALUE_ACCESSOR,\r\n            useExisting: forwardRef(() => CaptchaValueAccessorDirective),\r\n            multi: true\r\n        }\r\n    ],\r\n    standalone: false\r\n})\r\nexport class CaptchaValueAccessorDirective implements ControlValueAccessor, OnInit {\r\n\tprivate readonly captchaComponent = inject(CaptchaComponent);\r\n\r\n\tprivate onChange!: (value: string) => void;\r\n\tprivate onTouched!: () => void;\r\n\tprivate resolved: boolean = false;\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.captchaComponent.resolved.subscribe((token: string) => {\r\n\t\t\tthis.resolved = !!token;\r\n\r\n\t\t\tif (this.onChange) {\r\n\t\t\t\tthis.onChange(token);\r\n\t\t\t}\r\n\r\n\t\t\tif (this.onTouched) {\r\n\t\t\t\tthis.onTouched();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t// Prevent form control from setting token value\r\n\twriteValue(_: any): void {\r\n\t\t// reset captcha component if form control sets the value after already receiving a valid token\r\n\t\tif (this.resolved) {\r\n\t\t\tthis.resolved = false;\r\n\t\t\tthis.captchaComponent.reset();\r\n\t\t}\r\n\t}\r\n\tregisterOnChange(fn: any): void {\r\n\t\tthis.onChange = fn;\r\n\t}\r\n\tregisterOnTouched(fn: any): void {\r\n\t\tthis.onTouched = fn;\r\n\t}\r\n\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { SPA_ACCESS_LOCKED_SHOW_RETURN_TO_HOME_BUTTON } from '../../classes/injection-tokens';\r\n\r\n@Component({\r\n    selector: 'spa-access-locked',\r\n    templateUrl: './access-locked.component.html',\r\n    styleUrls: ['./access-locked.component.scss'],\r\n    standalone: false\r\n})\r\nexport class AccessLockedComponent {\r\n\r\n\tconstructor(\r\n\t\t@Inject(SPA_ACCESS_LOCKED_SHOW_RETURN_TO_HOME_BUTTON) public showReturnToHomeButton: boolean,\r\n\t) { }\r\n\r\n\tgoToHome(): void {\r\n\t\twindow.location.href = '/';\r\n\t}\r\n}\r\n","<ng-container *transloco=\"let t\">\r\n\t<div class=\"row g-0\">\r\n\t\t<div class=\"col-md-8 offset-md-2 col-lg-6 offset-lg-3 col-xl-4 offset-xl-4\">\r\n\t\t\t<mat-card>\r\n\t\t\t\t<div class=\"d-flex flex-column align-items-center justify-content-center\">\r\n\t\t\t\t\t<div class=\"main-icon\">\r\n\t\t\t\t\t\t<mat-icon class=\"icon\">no_accounts</mat-icon>\r\n\t\t\t\t\t</div>\r\n\r\n\t\t\t\t\t<h2>{{t('components.access-locked.account-locked')}}</h2>\r\n\t\t\t\t\t<p class=\"px-4\">{{t('components.access-locked.account-locked-description')}}</p>\r\n\t\t\t\t</div>\r\n\r\n\t\t\t\t<div class=\"d-flex flex-column align-items-center justify-content-center my-4\">\r\n\t\t\t\t\t<button mat-raised-button color=\"accent\" [routerLink]=\"['..', 'sign-out']\" class=\"me-0\">{{t('components.access-locked.use-another-account')}}</button>\r\n\t\t\t\t\t@if (showReturnToHomeButton) {\r\n\t\t\t\t\t\t<button mat-stroked-button color=\"primary\" class=\"mt-3 ms-0\" (click)=\"goToHome()\">{{t('components.access-locked.return-to-home')}}</button>\r\n\t\t\t\t\t}\r\n\t\t\t\t</div>\r\n\t\t\t</mat-card>\r\n\t\t</div>\r\n\t</div>\r\n</ng-container>\r\n","import { NgModule, ModuleWithProviders, ErrorHandler, inject, provideAppInitializer } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { OAuthModule } from 'lacuna-oauth2-oidc';\r\nimport { PdfViewerModule } from 'ng2-pdf-viewer';\r\nimport { LottieComponent, provideLottieOptions } from 'ngx-lottie';\r\nimport player from 'lottie-web';\r\nimport { TranslocoConfig, TRANSLOCO_CONFIG, TRANSLOCO_LOADER, TranslocoModule } from '@ngneat/transloco';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MAT_DIALOG_DEFAULT_OPTIONS, MatDialogModule } from '@angular/material/dialog';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatListModule } from '@angular/material/list';\r\nimport { MatMenuModule } from '@angular/material/menu';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatTableModule } from '@angular/material/table';\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\nimport { NoAccessComponent } from './components/no-access/no-access.component';\r\nimport { SignInComponent } from './components/sign-in/sign-in.component';\r\nimport { SignOutComponent } from './components/sign-out/sign-out.component';\r\nimport { PrivateAreaUnavailableComponent } from './components/private-area-unavailable/private-area-unavailable.component';\r\nimport { DummyComponent } from './components/dummy/dummy.component';\r\nimport { PrivateAreaComponent } from './components/private-area/private-area.component';\r\nimport { DialogShowValueComponent } from './components/dialog-show-value/dialog-show-value.component';\r\nimport { DialogAlertComponent } from './components/dialog-alert/dialog-alert.component';\r\nimport { DialogErrorMessagesComponent } from './components/dialog-error-messages/dialog-error-messages.component';\r\nimport { DialogFancyConfirmComponent } from './components/dialog-fancy-confirm/dialog-fancy-confirm.component';\r\nimport { DialogSubscriptionSelectorComponent } from './components/dialog-subscription-selector/dialog-subscription-selector.component';\r\nimport { DialogConfirmWithCheckboxComponent } from './components/dialog-confirm-with-checkbox/dialog-confirm-with-checkbox.component';\r\nimport { StartupService } from './services/startup.service';\r\nimport { AppHttpInterceptor } from './services/http-intercept.service';\r\nimport { SpaEntityNavigationService } from './services/spa-entity-navigation.service';\r\nimport { SubscriptionPipe } from './pipes/subscription.pipe';\r\nimport { ServiceUnavailableComponent } from './components/service-unavailable/service-unavailable.component';\r\nimport { AgentPipe } from './pipes/agent.pipe';\r\nimport { CpfPipe } from './pipes/cpf.pipe';\r\nimport { EntityNamePipe } from './pipes/entity-name.pipe';\r\nimport { RolesPipe } from './pipes/roles.pipe';\r\nimport { RootComponent } from './components/root/root.component';\r\nimport { DialogValidationResultsComponent } from './components/dialog-validation-results/dialog-validation-results.component';\r\nimport { DialogMobileAuthorizationRequiredComponent } from './components/dialog-mobile-authorization-required/dialog-mobile-authorization-required.component';\r\nimport { LacunaFooterComponent } from './components/lacuna-footer/lacuna-footer.component';\r\nimport { ApplicationActionsComponent } from './components/application-actions/application-actions.component';\r\nimport { ApplicationDetailComponent } from './components/application-detail/application-detail.component';\r\nimport { ApplicationEditComponent } from './components/application-edit/application-edit.component';\r\nimport { ApplicationEventsComponent } from './components/application-events/application-events.component';\r\nimport { ApplicationKeyCreateComponent } from './components/application-key-create/application-key-create.component';\r\nimport { ApplicationKeysComponent } from './components/application-keys/application-keys.component';\r\nimport { ApplicationListComponent } from './components/application-list/application-list.component';\r\nimport { ApplicationsComponent } from './components/applications/applications.component';\r\nimport { CloseButtonComponent } from './components/close-button/close-button.component';\r\nimport { EventListComponent } from './components/event-list/event-list.component';\r\nimport { EventsComponent } from './components/events/events.component';\r\nimport { InviteDetailComponent } from './components/invite-detail/invite-detail.component';\r\nimport { InviteEditComponent } from './components/invite-edit/invite-edit.component';\r\nimport { InviteListComponent } from './components/invite-list/invite-list.component';\r\nimport { SubscriptionListComponent } from './components/subscription-list/subscription-list.component';\r\nimport { SubscriptionsComponent } from './components/subscriptions/subscriptions.component';\r\nimport { UserAccessEditComponent } from './components/user-access-edit/user-access-edit.component';\r\nimport { UserActionsComponent } from './components/user-actions/user-actions.component';\r\nimport { UserDetailComponent } from './components/user-detail/user-detail.component';\r\nimport { UserEventsComponent } from './components/user-events/user-events.component';\r\nimport { UserInviteComponent } from './components/user-invite/user-invite.component';\r\nimport { UserListComponent } from './components/user-list/user-list.component';\r\nimport { UsersComponent } from './components/users/users.component';\r\nimport { ApplicationCreateComponent } from './components/application-create/application-create.component';\r\nimport { EntityIconPipe } from './pipes/entity-icon.pipe';\r\nimport { EventEntityCellComponent } from './components/event-entity-cell/event-entity-cell.component';\r\nimport { SubmitButtonComponent } from './components/submit-button/submit-button.component';\r\nimport { EventTypePipe } from './pipes/event-type.pipe';\r\nimport { LIST_OF_ROLES, LIST_OF_ROOT_ROLES, GET_ENTITY_ICON, GET_EVENT_TYPE_NAME, GET_ROLE_NAME, REQUIRED_ID_CLAIMS, ASYNC_INIT, ENTITY_NAVIGATOR, ON_API_ERROR, GET_BREADCRUMB_DISPLAY_NAME, LIST_OF_UNASSIGNABLE_ROLES, LANGUAGE_ROUTE_ENABLED, LANGUAGE_TO_LOCALES_MAPPING, EVENT_VIEWER, OIDC_REDIRECT_PATH, SPA_ACCESS_LOCKED_SHOW_RETURN_TO_HOME_BUTTON, SPA_INVISIBLE_CAPTCHA_ENABLED } from './classes/injection-tokens';\r\nimport { SubscriptionCreateComponent } from './components/subscription-create/subscription-create.component';\r\nimport { SubscriptionDetailComponent } from './components/subscription-detail/subscription-detail.component';\r\nimport { SubscriptionFormComponent } from './components/subscription-form/subscription-form.component';\r\nimport { SubscriptionEditComponent } from './components/subscription-edit/subscription-edit.component';\r\nimport { BreadcrumbComponent } from './components/breadcrumb/breadcrumb.component';\r\nimport { BoxComponent } from './components/box/box.component';\r\nimport { PropComponent } from './components/prop/prop.component';\r\nimport { FilesComponent, FilesActionDirective } from './components/files/files.component';\r\nimport { DialogUploadErrorComponent } from './components/dialog-upload-error/dialog-upload-error.component';\r\nimport { DialogViewFileComponent } from './components/dialog-view-file/dialog-view-file.component';\r\nimport { LacunaSpaModuleParams, OnApiErrorFunction } from './classes/types';\r\nimport { SuccessPanelComponent } from './components/success-panel/success-panel.component';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { FileSizePipe } from './pipes/file-size.pipe';\r\nimport { MessageComponent } from './components/message/message.component';\r\nimport { SpaErrorHandlingService } from './services/spa-error-handling.service';\r\nimport { HttpTranslocoLoader } from './services/http-transloco.loader';\r\nimport { SpaLanguageService } from './services/spa-language.service';\r\nimport { LanguageButtonComponent } from './components/language-button/language-button.component';\r\nimport { DialogRootLoginComponent } from './components/dialog-root-login/dialog-root-login.component';\r\nimport { DialogLanguageSelectorComponent } from './components/dialog-language-selector/dialog-language-selector.component';\r\nimport { LanguageSelectorComponent } from './components/language-selector/language-selector.component';\r\nimport { SpaDatePipe } from './pipes/spa-date.pipe';\r\nimport { SpaCurrencyPipe } from './pipes/spa-currency.pipe';\r\nimport { SpaDecimalPipe } from './pipes/spa-decimal.pipe';\r\nimport { SpaPercentPipe } from './pipes/spa-percent.pipe';\r\nimport { UserEditComponent } from './components/user-edit/user-edit.component';\r\nimport { BreadcrumbPipe } from './pipes/breadcrumb.pipe';\r\nimport { BreadcrumbNameComponent } from './components/breadcrumb-name/breadcrumb-name.component';\r\nimport { SafePipe } from './pipes/safe.pipe';\r\nimport { SpaEventViewingService } from './services/spa-event-viewing.service';\r\nimport { DialogEventDetailsComponent } from './components/dialog-event-details/dialog-event-details.component';\r\nimport { EntityTypePipe } from './pipes/entity-type.pipe';\r\nimport { DndDirective } from './directives/dnd.directive';\r\nimport { TranslocoIntlMessageFormatModule } from '../transloco-intlmessageformat/intlmessageformat.module';\r\nimport { ServersListComponent } from './components/servers-list/servers-list.component';\r\nimport { SpaDateInput } from './inputs/spa-date/spa-date.input';\r\nimport { NgxMaskDirective, NgxMaskPipe, provideNgxMask } from 'ngx-mask';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatNativeDateModule } from '@angular/material/core';\r\nimport { SpaDialogTitleComponent } from './components/dialog-title/dialog-title.component';\r\nimport { ClickableAreaComponent } from './components/clickable-area/clickable-area.component';\r\nimport { LinkButtonComponent } from './components/link-button/link-button.component';\r\nimport { CaptchaComponent } from './components/captcha/captcha.component';\r\nimport { CaptchaValueAccessorDirective } from './components/captcha/captcha-value-accessor.directive';\r\nimport { AccessLockedComponent } from './components/access-locked/access-locked.component';\r\nimport { DialogConfirmWithReasonComponent } from './components/dialog-confirm-with-reason/dialog-confirm-with-reason.component';\r\nimport { LacunaMatModule } from '@lacuna/material';\r\n\r\nexport function playerFactory() {\r\n\treturn player;\r\n}\r\n\r\nexport function initFactoryFunction(startup: StartupService) {\r\n\t// Initialize services that are required before app loads\r\n\t// NOTE: this factory needs to return a function (that then returns a promise)\r\n\tconst initFunction = () => startup.init(); //https://github.com/ng-packagr/ng-packagr/issues/696\r\n\treturn initFunction;\r\n}\r\n\r\nexport function initSpaTranslationFactoryFunction(spaLanguage: SpaLanguageService) {\r\n\t// Initialize SpaTranslation, Transloco features and translation files\r\n\tconst initSpaTranslationFunction = () => spaLanguage.init();\r\n\treturn initSpaTranslationFunction;\r\n}\r\n\r\nexport function onApiErrorFactoryFunction(errorHandlingService: SpaErrorHandlingService): OnApiErrorFunction {\r\n\treturn errorHandlingService.onApiError;\r\n}\r\n\r\nexport const DEFAULT_SPA_TRANSLOCO_CONFIG: TranslocoConfig = {\r\n\tavailableLangs: [\r\n\t\t// There are two ways of setting available langs (https://netbasal.gitbook.io/transloco/installation#set-the-available-languages).\r\n\t\t// This one can be handy when using dropdowns:\r\n\t\t//{ id: 'en', label: 'English' },\r\n\t\t//{ id: 'pt', label: 'Português' },\r\n\t\t//{ id: 'es', label: 'Español' },\r\n\r\n\t\t// Or simply like this:\r\n\t\t'en', 'pt', 'es'\r\n\t],\r\n\tdefaultLang: 'en',\r\n\tfallbackLang: 'en',\r\n\tmissingHandler: {\r\n\t\tuseFallbackTranslation: true,\r\n\t}\r\n};\r\n\r\nconst DECLARED_AND_EXPORTED_CLASSES = [\r\n\t// components\r\n\tApplicationActionsComponent,\r\n\tApplicationCreateComponent,\r\n\tApplicationDetailComponent,\r\n\tApplicationEditComponent,\r\n\tApplicationEventsComponent,\r\n\tApplicationKeyCreateComponent,\r\n\tApplicationKeysComponent,\r\n\tApplicationListComponent,\r\n\tApplicationsComponent,\r\n\tBoxComponent,\r\n\tBreadcrumbComponent,\r\n\tBreadcrumbNameComponent,\r\n\tCloseButtonComponent,\r\n\tPrivateAreaUnavailableComponent,\r\n\tDialogMobileAuthorizationRequiredComponent,\r\n\tDialogShowValueComponent,\r\n\tDialogAlertComponent,\r\n\tDialogFancyConfirmComponent,\r\n\tDialogLanguageSelectorComponent,\r\n\tDialogRootLoginComponent,\r\n\tDialogSubscriptionSelectorComponent,\r\n\tDialogConfirmWithCheckboxComponent,\r\n\tDialogUploadErrorComponent,\r\n\tDialogValidationResultsComponent,\r\n\tDialogViewFileComponent,\r\n\tDialogErrorMessagesComponent,\r\n\tDialogEventDetailsComponent,\r\n\tDummyComponent,\r\n\tEventEntityCellComponent,\r\n\tEventListComponent,\r\n\tEventsComponent,\r\n\tFilesActionDirective,\r\n\tFilesComponent,\r\n\tInviteDetailComponent,\r\n\tInviteEditComponent,\r\n\tInviteListComponent,\r\n\tLacunaFooterComponent,\r\n\tLanguageButtonComponent,\r\n\tLanguageSelectorComponent,\r\n\tMessageComponent,\r\n\tNoAccessComponent,\r\n\tPrivateAreaComponent,\r\n\tPropComponent,\r\n\tRootComponent,\r\n\tServiceUnavailableComponent,\r\n\tSignInComponent,\r\n\tSignOutComponent,\r\n\tSubmitButtonComponent,\r\n\tSubscriptionCreateComponent,\r\n\tSubscriptionDetailComponent,\r\n\tSubscriptionListComponent,\r\n\tSubscriptionFormComponent,\r\n\tSubscriptionEditComponent,\r\n\tSubscriptionsComponent,\r\n\tSuccessPanelComponent,\r\n\tUserAccessEditComponent,\r\n\tUserActionsComponent,\r\n\tUserDetailComponent,\r\n\tUserEditComponent,\r\n\tUserEventsComponent,\r\n\tUserInviteComponent,\r\n\tUserListComponent,\r\n\tUsersComponent,\r\n\tAccessLockedComponent,\r\n\tDialogConfirmWithReasonComponent,\r\n\tServersListComponent,\r\n\tSpaDialogTitleComponent,\r\n\tClickableAreaComponent,\r\n\tLinkButtonComponent,\r\n\tCaptchaComponent,\r\n\r\n\t// pipes\r\n\tAgentPipe,\r\n\tBreadcrumbPipe,\r\n\tCpfPipe,\r\n\tEntityIconPipe,\r\n\tEntityNamePipe,\r\n\tEventTypePipe,\r\n\tRolesPipe,\r\n\tSubscriptionPipe,\r\n\tFileSizePipe,\r\n\tSafePipe,\r\n\tSpaDatePipe,\r\n\tSpaCurrencyPipe,\r\n\tSpaDecimalPipe,\r\n\tSpaPercentPipe,\r\n\r\n\t// directives\r\n\tDndDirective,\r\n\tCaptchaValueAccessorDirective,\r\n\r\n\t// inputs\r\n\tSpaDateInput,\r\n];\r\n\r\n@NgModule({\r\n\timports: [\r\n\t\tCommonModule,\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tOAuthModule, // the final app needs to import this module as Root (using forRoot() static method)\r\n\t\tMatMenuModule,\r\n\t\tMatIconModule,\r\n\t\tMatInputModule,\r\n\t\tMatButtonModule,\r\n\t\tMatToolbarModule,\r\n\t\tMatListModule,\r\n\t\tMatDialogModule,\r\n\t\tMatTooltipModule,\r\n\t\tMatCardModule,\r\n\t\tMatProgressBarModule,\r\n\t\tMatProgressSpinnerModule,\r\n\t\tMatSidenavModule,\r\n\t\tMatSelectModule,\r\n\t\tMatExpansionModule,\r\n\t\tMatAutocompleteModule,\r\n\t\tMatCheckboxModule,\r\n\t\tMatSnackBarModule,\r\n\t\tPdfViewerModule,\r\n\t\tTranslocoModule,\r\n\t\tTranslocoIntlMessageFormatModule.forRoot(),\r\n\t\tRouterModule, // the final app needs to import this module as Root (using forRoot() static method)\r\n\t\tNgxMaskDirective,\r\n\t\tNgxMaskPipe,\r\n\t\tMatDatepickerModule,\r\n\t\tMatNativeDateModule,\r\n\t\tLacunaMatModule,\r\n\t\tLottieComponent,\r\n\t],\r\n\tdeclarations: [\r\n\t\tDECLARED_AND_EXPORTED_CLASSES,\r\n\t\tEntityTypePipe,\r\n\t],\r\n\texports: [\r\n\t\t// Re-exporting these modules, so that the final application can use components from both these modules, without the need of re-importing them:\r\n\t\tFormsModule,\r\n\t\tReactiveFormsModule,\r\n\t\tMatMenuModule,\r\n\t\tMatIconModule,\r\n\t\tMatDialogModule,\r\n\t\tMatButtonModule,\r\n\t\tMatInputModule,\r\n\t\tMatToolbarModule,\r\n\t\tMatListModule,\r\n\t\tMatCardModule,\r\n\t\tMatProgressSpinnerModule,\r\n\t\tMatSidenavModule,\r\n\t\tMatExpansionModule,\r\n\t\tMatAutocompleteModule,\r\n\t\tMatCheckboxModule,\r\n\t\tMatTableModule,\r\n\t\tMatSortModule,\r\n\t\tMatSnackBarModule,\r\n\t\tPdfViewerModule,\r\n\t\tTranslocoModule,\r\n\t\tLacunaMatModule,\r\n\r\n\t\t// Exported components:\r\n\t\tDECLARED_AND_EXPORTED_CLASSES\r\n\t],\r\n\tproviders: [\r\n\t\tprovideAppInitializer(() => {\r\n\t\t\tconst initializerFn = (initFactoryFunction)(inject(StartupService));\r\n\t\t\treturn initializerFn();\r\n\t\t}),\r\n\t\tprovideAppInitializer(() => {\r\n\t\t\tconst initializerFn = (initSpaTranslationFactoryFunction)(inject(SpaLanguageService));\r\n\t\t\treturn initializerFn();\r\n\t\t}),\r\n\t\t{\r\n\t\t\tprovide: HTTP_INTERCEPTORS,\r\n\t\t\tuseClass: AppHttpInterceptor,\r\n\t\t\tmulti: true\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: ON_API_ERROR,\r\n\t\t\tuseFactory: onApiErrorFactoryFunction,\r\n\t\t\tdeps: [SpaErrorHandlingService]\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: ErrorHandler,\r\n\t\t\tuseClass: SpaErrorHandlingService\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: TRANSLOCO_LOADER,\r\n\t\t\tuseClass: HttpTranslocoLoader\r\n\t\t},\r\n\t\t{\r\n\t\t\tprovide: MAT_DIALOG_DEFAULT_OPTIONS,\r\n\t\t\tuseValue: {\r\n\t\t\t\tautoFocus: false,\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tCookieService,\r\n\r\n\t\t// Services & Guards\r\n\t\t// For these injectables, we started using the Injectable property \"providedIn\" to register the providers (for services and guards),\r\n\t\t// so that they can be tree-shakable, as described in https://angular.io/guide/dependency-injection-providers#tree-shakable-providers\r\n\r\n\t\t// Pipes\r\n\t\tAgentPipe,\r\n\t\tBreadcrumbPipe,\r\n\t\tCpfPipe,\r\n\t\tEntityIconPipe,\r\n\t\tEntityNamePipe,\r\n\t\tEntityTypePipe,\r\n\t\tEventTypePipe,\r\n\t\tRolesPipe,\r\n\t\tSubscriptionPipe,\r\n\t\tFileSizePipe,\r\n\t\tSafePipe,\r\n\t\tSpaDatePipe,\r\n\t\tSpaCurrencyPipe,\r\n\t\tSpaDecimalPipe,\r\n\t\tSpaPercentPipe,\r\n\t\tprovideNgxMask(),\r\n\t\tprovideLottieOptions({\r\n\t\t\tplayer: () => player,\r\n\t\t}),\r\n\t],\r\n})\r\nexport class LacunaSpaModule {\r\n\r\n\tstatic forRoot(params: LacunaSpaModuleParams): ModuleWithProviders<LacunaSpaModule> {\r\n\t\treturn {\r\n\t\t\tngModule: LacunaSpaModule,\r\n\t\t\tproviders: [\r\n\t\t\t\t{ provide: LIST_OF_ROLES, useValue: params.listOfRoles },\r\n\t\t\t\t{ provide: LIST_OF_ROOT_ROLES, useValue: params.listOfRootRoles },\r\n\t\t\t\t{ provide: TRANSLOCO_CONFIG, useValue: { ...DEFAULT_SPA_TRANSLOCO_CONFIG, ...params.translocoConfig } },\r\n\t\t\t\t{ provide: LANGUAGE_TO_LOCALES_MAPPING, useValue: params.languageToLocalesMapping },\r\n\t\t\t\t{ provide: REQUIRED_ID_CLAIMS, useValue: params.requiredIdClaims },\r\n\t\t\t\t{ provide: ASYNC_INIT, useValue: params.asyncInit },\r\n\t\t\t\t{ provide: ENTITY_NAVIGATOR, useExisting: (params.entityNavigator != null) ? params.entityNavigator : SpaEntityNavigationService },\r\n\t\t\t\t{ provide: EVENT_VIEWER, useExisting: (params.eventViewer != null) ? params.eventViewer : SpaEventViewingService },\r\n\t\t\t\t{ provide: GET_ENTITY_ICON, useValue: params.getEntityIcon },\r\n\t\t\t\t{ provide: GET_EVENT_TYPE_NAME, useValue: params.getEventTypeName },\r\n\t\t\t\t{ provide: GET_ROLE_NAME, useValue: params.getRoleName },\r\n\t\t\t\t{ provide: LIST_OF_UNASSIGNABLE_ROLES, useValue: params.listOfUnassignableRoles ? params.listOfUnassignableRoles : [] },\r\n\t\t\t\t{ provide: GET_BREADCRUMB_DISPLAY_NAME, useValue: params.getBreadcrumbDisplayName },\r\n\t\t\t\t{ provide: LANGUAGE_ROUTE_ENABLED, useValue: params.enableLanguageRoute },\r\n\t\t\t\t{ provide: OIDC_REDIRECT_PATH, useValue: params.oidcRedirectPath },\r\n\t\t\t\t{ provide: SPA_ACCESS_LOCKED_SHOW_RETURN_TO_HOME_BUTTON, useValue: params.showReturnToHomeButton },\r\n\t\t\t\t{ provide: SPA_INVISIBLE_CAPTCHA_ENABLED, useValue: params.enableInvisibleCaptcha ?? true },\r\n\t\t\t]\r\n\t\t};\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { StartupService } from '../services/startup.service';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SpaInitSuccessGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('SpaInitSuccessGuard canActivate', route, state);\r\n\t\treturn this.spaControl.initialized.pipe(\r\n\t\t\tmap(() => {\r\n\t\t\t\tif (this.spaControl.initError) {\r\n\t\t\t\t\tthis.logger.logDebug('SpaInitSuccessGuard -- Due to initialization error, redirecting to \"/private-unavailable\"');\r\n\t\t\t\t\tthis.router.navigateByUrl('/private-unavailable');\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SpaInitErrorGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('SpaInitErrorGuard canActivate', route, state);\r\n\t\treturn this.spaControl.initialized.pipe(map(() => {\r\n\t\t\tif (!this.spaControl.initError) {\r\n\t\t\t\tthis.logger.logDebug('SpaInitErrorGuard -- Due to the lack of initialization errors, redirecting to \"/\"');\r\n\t\t\t\tthis.router.navigateByUrl('/');\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t}));\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable ,  NEVER ,  of } from 'rxjs';\r\nimport { Config } from '../api/configuration';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AuthenticatedGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\r\n\t\tthis.logger.logTrace('AuthenticatedGuard canActivate', route, state);\r\n\r\n\t\tif (this.spaControl.signInError) {\r\n\r\n\t\t\tlet warningMsg = 'AuthenticatedGuard -- detected sign in error, ';\r\n\r\n\t\t\tif (this.spaControl.shouldAttemptLogin()) {\r\n\t\t\t\twarningMsg += 'trying login again';\r\n\t\t\t\tthis.spaControl.startLogin();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\twarningMsg += 'sending user to sign-in page';\r\n\t\t\t\tthis.router.navigateByUrl('/private/sign-in');\r\n\t\t\t}\r\n\r\n\t\t\tthis.logger.logWarning(warningMsg);\r\n\r\n\t\t\treturn of(false);\r\n\r\n\t\t} else if (!this.spaControl.userProfile) {\r\n\r\n\t\t\tif (!Config.oidc.enabled) {\r\n\t\t\t\tthis.logger.logInformation(`AuthenticatedGuard -- navigating back to \"${this.router.url}\", since user is not authenticated, and OIDC is disabled`);\r\n\t\t\t\tthis.router.navigateByUrl(this.router.url);\r\n\t\t\t\treturn of(false);\r\n\t\t\t} else if (this.spaControl.shouldAttemptLogin()) {\r\n\t\t\t\tthis.logger.logInformation('AuthenticatedGuard -- starting login with the following return url: ', state.url);\r\n\t\t\t\tthis.spaControl.startLogin(state.url /*state.url != '/private/s' ? state.url : null*/);\r\n\t\t\t\treturn NEVER; // never resolve, preventing user from seeing the private area while we redirect\r\n\t\t\t} else {\r\n\t\t\t\tthis.logger.logInformation('AuthenticatedGuard -- navigating to \"sign in\" page');\r\n\t\t\t\tthis.router.navigateByUrl('/private/sign-in');\r\n\t\t\t\treturn of(false);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.logger.logTrace('AuthenticatedGuard -- user is authenticated');\r\n\r\n\t\t\treturn of(true);\r\n\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class FillSubscriptionGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('FillSubscriptionGuard canActivate', route, state);\r\n\r\n\t\tlet goto = route.queryParams['goto'];\r\n\t\tthis.logger.logTrace(`FillSubscriptionGuard -- goto: ${goto}`);\r\n\r\n\t\tlet sub: string = this.spaControl.guessSubscription();\r\n\r\n\t\tif (sub) {\r\n\t\t\tlet navigateTo = ['/private', 's', sub];\r\n\t\t\tif (goto) {\r\n\t\t\t\tnavigateTo = navigateTo.concat(goto.split('/'));\r\n\t\t\t}\r\n\t\t\tthis.logger.logInformation(`FillSubscriptionGuard -- redirecting to subscription ${sub} ${goto}`);\r\n\t\t\tthis.router.navigate(navigateTo);\r\n\t\t} else { // should not happen, because of PrivateAccessGuard\r\n\t\t\tthis.logger.logTrace(`SubscriptionAccessGuard -- because the user has no access any subscription, redirecting to '/private/no-access'`);\r\n\t\t\tthis.router.navigate(['/private/no-access']);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable, NEVER } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\nimport { tap, take } from 'rxjs/operators';\r\nimport { Config } from '../api/configuration';\r\nimport { MessageService } from '../services/message.service';\r\nimport { GrammaticalGender } from '../api/enums';\r\nimport { StringUtils } from '../classes/utils';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SubscriptionAccessGuard  {\r\n\r\n\tsubscriptionGender: GrammaticalGender = Config.labels.subscriptionGender;\r\n\ttheSubscription = StringUtils.toLowerCaseFirstLetter(Config.labels.theSubscription);\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) { }\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('SubscriptionAccessGuard canActivate', route, state);\r\n\r\n\t\tlet sub = route.params['sub'];\r\n\r\n\t\tthis.logger.logTrace(`SubscriptionAccessGuard -- sub: ${sub}`);\r\n\r\n\t\tif (sub == Config.subscriptionRoot) { // should not happen anymore\r\n\t\t\tthis.router.navigate(['/private']);\r\n\t\t\treturn NEVER;\r\n\t\t} else if (sub != Config.subscriptionNoFilter && !this.spaControl.userProfile.subscriptions.map(s => s.subscription.id).includes(sub)) {\r\n\t\t\t// if this subscription is not subscriptionNoFilter and is not listed in user's subscriptions, try to guess a new one,\r\n\t\t\t// since this indicates that the subscription does not exist or the user has no access to it\r\n\r\n\t\t\tlet newSub = this.spaControl.guessSubscription();\r\n\r\n\t\t\tif (newSub) {\r\n\t\t\t\tthis.transloco.selectTranslate('common.subscription').pipe(take(1)).subscribe(subLabel => {\r\n\t\t\t\t\tlet lowerCaseSubLabel = StringUtils.toLowerCaseFirstLetter(subLabel);\r\n\t\t\t\t\tlet message = this.transloco.translate('guards.subscription-access.redirected-to-another-sub', { subLabel: lowerCaseSubLabel, subGender: this.subscriptionGender });\r\n\t\t\t\t\tthis.messageService.showInfo(message, { duration: 0 });\r\n\t\t\t\t});\r\n\r\n\t\t\t\tthis.router.navigate(['/private/s', newSub]);\r\n\t\t\t\treturn false;\r\n\t\t\t} else { // should not happen, because of PrivateAccessGuard\r\n\t\t\t\tthis.logger.logTrace(`SubscriptionAccessGuard -- because the user has no access any subscription, redirecting to '/private/no-access'`);\r\n\t\t\t\tthis.router.navigate(['/private/no-access']);\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\treturn this.spaControl.trySetSubscription(sub).pipe(\r\n\t\t\t\ttap(hasAccess => {\r\n\t\t\t\t\tif (!hasAccess) {\r\n\t\t\t\t\t\tthis.logger.logTrace(`SubscriptionAccessGuard -- because the user has no access to subscription ${sub}, redirecting to '/private/no-access'`);\r\n\t\t\t\t\t\tthis.router.navigate(['/private/no-access']);\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class NotAuthenticatedGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('NotAuthenticatedGuard canActivate', route, state);\r\n\t\tif (this.spaControl.userProfile) {\r\n\t\t\tthis.router.navigateByUrl('/private');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SignOutGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\r\n\t\tthis.logger.logTrace(`SignOutGuard -- canActivate`, route, state);\r\n\r\n\t\tlet redirectTo = this.spaControl.signOut();\r\n\t\tif (redirectTo) {\r\n\t\t\tthis.router.navigateByUrl(redirectTo);\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\nimport { Config } from '../api/configuration';\r\nimport { MessageService } from '../services/message.service';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class NoAccessGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router,\r\n\t\tprivate messageService: MessageService,\r\n\t\tprivate transloco: TranslocoService,\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('NoAccessGuard canActivate', route, state);\r\n\r\n\t\tlet selectedSub = this.spaControl.selectedSubscriptionSnapshot;\r\n\r\n\t\tif (!Config.oidc.enabled) {\r\n\t\t\tthis.logger.logTrace('NoAccessGuard -- since Oidc is disabled, navigating to \"/\"');\r\n\t\t\tthis.router.navigateByUrl('/');\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!this.spaControl.userProfile /* not authenticated */ || (this.spaControl.userHasAnyRole() && (!selectedSub.sub /* permissions not yet known */ || selectedSub.permissions.length > 0 /* has access */)) ) {\r\n\t\t\tthis.logger.logTrace('NoAccessGuard -- since user is not authenticated, or user permissions are not yet known, or user has indeed permissions, navigating to \"/private/s\"');\r\n\t\t\tthis.router.navigateByUrl(this.router.createUrlTree([`private/s`], { queryParams: route.queryParams }));\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable ,  NEVER } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ClaimAccessGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\r\n\t\tthis.logger.logTrace(`ClaimAccessGuard -- canActivate`, route, state);\r\n\r\n\t\tlet claimCode = route.params['code'];\r\n\r\n\t\tif (!this.spaControl.userProfile) {\r\n\t\t\tthis.spaControl.startLogin(state.url);\r\n\t\t\treturn NEVER; // never resolve, preventing user from seeing anything while we redirect\r\n\t\t}\r\n\r\n\t\treturn new Promise<boolean>((resolve, reject) => {\r\n\t\t\tthis.spaControl.claimAccess(claimCode).catch(err => {\r\n\t\t\t\tthis.logger.logError(`Error claiming access with code ${claimCode}`, err);\r\n\t\t\t\tthis.router.navigate(['/']);\r\n\t\t\t\tresolve(false);\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { StartupService } from '../services/startup.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class InitSuccessGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate startup: StartupService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('InitSuccessGuard canActivate', route, state);\r\n\t\tif (this.startup.initError) {\r\n\t\t\tthis.router.navigateByUrl('/unavailable');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class InitErrorGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate startup: StartupService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('InitErrorGuard canActivate', route, state);\r\n\t\tif (!this.startup.initError) {\r\n\t\t\tthis.router.navigateByUrl('/');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\nimport { Permissions } from '../api/enums';\r\nimport { AuthenticatedGuard } from './authenticated.guard';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class PrivateAccessGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router,\r\n\t\tprivate authenticatedGuard: AuthenticatedGuard\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('PrivateRouteGuard canActivate', route, state);\r\n\r\n\t\tif (!this.spaControl.userHasAnyRole()) {\r\n\t\t\tthis.logger.logInformation('PrivateRouteGuard -- user has no access');\r\n\t\t\tthis.router.navigateByUrl('/private/no-access');\r\n\t\t\treturn false;\r\n\t\t} else {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t//// https://stackoverflow.com/questions/44460661/how-to-wait-for-guards-in-angular/44462275#44462275\r\n\t\t//return (this.authenticatedGuard.canActivate(route, state) as Observable<boolean>).pipe(\r\n\t\t//\tmap(r => {\r\n\t\t//\t\tif (r && !this.spaControl.userHasAnyRole()) {\r\n\t\t//\t\t\tthis.logger.logInformation('PrivateRouteGuard -- user has no access');\r\n\t\t//\t\t\tthis.router.navigateByUrl('/private/no-access');\r\n\t\t//\t\t\treturn false;\r\n\t\t//\t\t}\r\n\r\n\t\t//\t\treturn r;\r\n\t\t//\t})\r\n\t\t//);\r\n\t}\r\n}\r\n","// https://angular.io/guide/router#candeactivate-handling-unsaved-changes\r\n\r\nimport { Injectable } from '@angular/core';\r\nimport { firstValueFrom, isObservable, Observable } from 'rxjs';\r\n\r\n\r\nexport interface CanComponentDeactivate {\r\n\tcanDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class CanDeactivateGuard  {\r\n\tcanDeactivate(component: CanComponentDeactivate): Observable<boolean> | Promise<boolean> | boolean {\r\n\t\tif (!component.canDeactivate) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\treturn this.canDeactivateAsync(component);\r\n\t}\r\n\r\n\tprivate async canDeactivateAsync(component: CanComponentDeactivate) {\r\n\t\tlet r = component.canDeactivate();\r\n\t\treturn !!(isObservable(r) ? await firstValueFrom(r) : await Promise.resolve(r));\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\nimport { Config } from '../api/configuration';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class UserAccessEditGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('UserAccessEditGuard canActivate', route, state);\r\n\r\n\t\tlet subId = route.params['subId'];\r\n\t\tlet selectedSubscription = this.spaControl.selectedSubscriptionSnapshot.sub;\r\n\r\n\t\tif (selectedSubscription != Config.subscriptionNoFilter && selectedSubscription != subId) {\r\n\t\t\tthis.logger.logTrace(`Cannot edit user access of subscription ${subId} from subscription ${selectedSubscription}`);\r\n\t\t\tthis.router.navigateByUrl('/private');\r\n\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\nimport { Config } from '../api/configuration';\r\nimport { tap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class RootAccessGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\r\n\t\tthis.logger.logTrace('RootAccessGuard -- canActivate', route, state);\r\n\r\n\t\t// TODO: merely having any root role should not be enough!\r\n\r\n\t\treturn this.spaControl.trySetSubscription(Config.subscriptionRoot).pipe(\r\n\t\t\ttap(p => {\r\n\t\t\t\tif (!p) {\r\n\t\t\t\t\tthis.router.navigate(['/private/s'])\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { Logger } from '../services/logger.service';\r\nimport { Config } from '../api/configuration';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ParentIntegrationDisabledGuard  {\r\n\r\n    constructor(\r\n        private logger: Logger,\r\n        private router: Router\r\n    ) {\r\n    }\r\n    canActivate(\r\n        next: ActivatedRouteSnapshot,\r\n        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\r\n\t\tthis.logger.logTrace(`ParentIntegrationDisabledGuard -- invoked`);\r\n\r\n        if (Config.hasParentIntegration) {\r\n\t\t\tthis.logger.logTrace('ParentIntegrationDisabledGuard -- parent integration enabled, redirecting home.');\r\n            this.router.navigateByUrl('/');\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    }\r\n}\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class ParentIntegrationEnabledGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\tcanActivate(\r\n\t\tnext: ActivatedRouteSnapshot,\r\n\t\tstate: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\r\n\t\tthis.logger.logTrace(`ParentIntegrationEnabledGuard -- invoked`);\r\n\r\n\t\tif (!Config.hasParentIntegration) {\r\n\t\t\tthis.logger.logTrace('ParentIntegrationEnabledGuard -- parent integration disabled, redirecting home.');\r\n\t\t\tthis.router.navigateByUrl('/');\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { ChildRedirectTypes } from '../api/enums';\r\nimport { Config } from '../api/configuration';\r\nimport { Logger } from '../services/logger.service';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class ChildRedirectGuard  {\r\n\r\n    constructor(\r\n        private logger: Logger,\r\n        private router: Router\r\n    ) { }\r\n\r\n    canActivate(\r\n        next: ActivatedRouteSnapshot,\r\n        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\r\n\r\n        this.logger.logTrace('ChildRedirectGuard -- canActivate', next, state);\r\n\r\n        if (next.queryParams.redirectType && next.queryParams.subscriptionId) {\r\n            let redirectType = next.queryParams.redirectType as ChildRedirectTypes;\r\n            let subscriptionId = next.queryParams.subscriptionId as string;\r\n            let baseRoute = subscriptionId === Config.subscriptionRoot ? '/private/sysadmin' : `/private/s/${subscriptionId}/admin`\r\n            if (redirectType === ChildRedirectTypes.Invite) {\r\n                this.logger.logTrace('ChildRedirectGuard -- redirecting to invite');\r\n                this.router.navigateByUrl(`${baseRoute}/users/invite`);\r\n                return false;\r\n            }\r\n\r\n            let userId = next.queryParams.userId as string;\r\n            if (userId) {\r\n                if (redirectType === ChildRedirectTypes.UserDetails) {\r\n                    this.logger.logTrace('ChildRedirectGuard -- redirecting to user details');\r\n                    this.router.navigateByUrl(`${baseRoute}/users/${userId}`);\r\n                    return false;\r\n                } else if (redirectType === ChildRedirectTypes.UserEditAccess) {\r\n                    this.logger.logTrace('ChildRedirectGuard -- redirecting to user access edit details');\r\n                    this.router.navigateByUrl(`${baseRoute}/users/${userId}/access/${subscriptionId}`);\r\n                    return false;\r\n                }\r\n            }\r\n        }\r\n\r\n        this.router.navigateByUrl('/');\r\n        return false;\r\n    }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { TranslocoService } from '@ngneat/transloco';\r\nimport { LANGUAGE_ROUTE_ENABLED } from '../classes/injection-tokens';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class TranslationLoadedGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate transloco: TranslocoService,\r\n\t\t@Inject(LANGUAGE_ROUTE_ENABLED) private languageRouteEnabled: boolean,\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('TranslationLoadedGuard canActivate', route, state);\r\n\r\n\t\tif (this.languageRouteEnabled) {\r\n\t\t\tlet activeLang = this.transloco.getActiveLang();\r\n\t\t\tlet translation: any;\r\n\t\t\tif ((translation = this.transloco.getTranslation(activeLang)) && Object.keys(translation).length > 0) {\r\n\t\t\t\tthis.logger.logTrace(`TranslationLoadedGuard -- translation file of language \"${activeLang}\" is already loaded: `, translation);\r\n\t\t\t\treturn true;\r\n\t\t\t} else {\r\n\t\t\t\tthis.logger.logTrace(`TranslationLoadedGuard -- loading translation file of language \"${activeLang}\"...`);\r\n\t\t\t\treturn this.transloco.load(activeLang).pipe(map(translation => !!translation));\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.logger.logTrace('TranslationLoadedGuard -- nothing to do, since language route is disabled...');\r\n\t\t\treturn true;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AccessNotLockedGuard implements CanActivate {\r\n\r\n\tconstructor(\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router,\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tif (!this.spaControl.userProfile?.isLocked) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\tthis.router.navigateByUrl('/private/access-locked');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class AccessLockedGuard implements CanActivate {\r\n\r\n\tconstructor(\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router,\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tif (this.spaControl.userProfile?.isLocked) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\tthis.router.navigateByUrl('/private');\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n}\r\n","import { Routes, mapToCanActivate, mapToCanDeactivate } from \"@angular/router\";\r\nimport { Type } from \"@angular/core\";\r\n\r\nimport { SpaInitSuccessGuard, SpaInitErrorGuard } from \"./guards/spa-init.guard\";\r\nimport { AuthenticatedGuard } from \"./guards/authenticated.guard\";\r\nimport { FillSubscriptionGuard } from \"./guards/fill-subscription.guard\";\r\nimport { SubscriptionAccessGuard } from \"./guards/subscription-access.guard\";\r\nimport { SignInComponent } from \"./components/sign-in/sign-in.component\";\r\nimport { NotAuthenticatedGuard } from \"./guards/not-authenticated.guard\";\r\nimport { SignOutComponent } from \"./components/sign-out/sign-out.component\";\r\nimport { SignOutGuard } from \"./guards/sign-out.guard\";\r\nimport { NoAccessComponent } from \"./components/no-access/no-access.component\";\r\nimport { NoAccessGuard } from \"./guards/no-access.guard\";\r\nimport { ClaimAccessGuard } from \"./guards/claim-access.guard\";\r\nimport { PrivateAreaUnavailableComponent } from \"./components/private-area-unavailable/private-area-unavailable.component\";\r\nimport { InitSuccessGuard, InitErrorGuard } from \"./guards/init.guard\";\r\nimport { ServiceUnavailableComponent } from \"./components/service-unavailable/service-unavailable.component\";\r\nimport { PrivateAccessGuard } from './guards/private-access.guard';\r\nimport { RootComponent } from './components/root/root.component';\r\nimport { CanDeactivateGuard } from './guards/can-deactivate.guard';\r\nimport { UserAccessEditGuard } from \"./guards/user-access-edit.guard\";\r\nimport { SubscriptionsComponent } from \"./components/subscriptions/subscriptions.component\";\r\nimport { UsersComponent } from \"./components/users/users.component\";\r\nimport { ApplicationsComponent } from \"./components/applications/applications.component\";\r\nimport { EventsComponent } from \"./components/events/events.component\";\r\nimport { UserInviteComponent } from \"./components/user-invite/user-invite.component\";\r\nimport { UserDetailComponent } from \"./components/user-detail/user-detail.component\";\r\nimport { UserEventsComponent } from \"./components/user-events/user-events.component\";\r\nimport { UserActionsComponent } from \"./components/user-actions/user-actions.component\";\r\nimport { UserAccessEditComponent } from \"./components/user-access-edit/user-access-edit.component\";\r\nimport { InviteDetailComponent } from \"./components/invite-detail/invite-detail.component\";\r\nimport { InviteEditComponent } from \"./components/invite-edit/invite-edit.component\";\r\nimport { ApplicationCreateComponent } from \"./components/application-create/application-create.component\";\r\nimport { ApplicationDetailComponent } from \"./components/application-detail/application-detail.component\";\r\nimport { ApplicationEditComponent } from \"./components/application-edit/application-edit.component\";\r\nimport { ApplicationEventsComponent } from \"./components/application-events/application-events.component\";\r\nimport { ApplicationActionsComponent } from \"./components/application-actions/application-actions.component\";\r\nimport { ApplicationKeysComponent } from \"./components/application-keys/application-keys.component\";\r\nimport { ApplicationKeyCreateComponent } from \"./components/application-key-create/application-key-create.component\";\r\nimport { SubscriptionCreateComponent } from './components/subscription-create/subscription-create.component';\r\nimport { SubscriptionDetailComponent } from './components/subscription-detail/subscription-detail.component';\r\nimport { SubscriptionEditComponent } from './components/subscription-edit/subscription-edit.component';\r\nimport { NamedRoutes, UserModes } from './api/enums';\r\nimport { DummyComponent } from './components/dummy/dummy.component';\r\nimport { RootAccessGuard } from './guards/root-access.guard';\r\nimport { ParentIntegrationDisabledGuard, ParentIntegrationEnabledGuard } from './guards/parent-integration.guard';\r\nimport { ChildRedirectGuard } from './guards/child-redirect.guard';\r\nimport { TranslationLoadedGuard } from './guards/translation-loaded.guard';\r\nimport { UserEditComponent } from './components/user-edit/user-edit.component';\r\nimport { AccessNotLockedGuard } from \"./guards/access-not-locked.guard\";\r\nimport { AccessLockedGuard } from \"./guards/access-locked.guard\";\r\nimport { AccessLockedComponent } from \"./components/access-locked/access-locked.component\";\r\nimport { ServersListComponent } from \"./components/servers-list/servers-list.component\";\r\n\r\nexport interface RouteComponents {\r\n\t// general components\r\n\thomeComponent: Type<any>,\r\n\tlayoutComponent: Type<any>,\r\n\tprivateAreaComponent?: Type<any>,\r\n\tsignInComponent?: Type<any>,\r\n\tsignOutComponent?: Type<any>,\r\n\tnoAccessComponent?: Type<any>,\r\n\tprivateAreaUnavailableComponent?: Type<any>,\r\n\tserviceUnavailableComponent?: Type<any>,\r\n\tprivateHomeComponent?: Type<any>,\r\n\teventsComponent?: Type<any>,\r\n\taccessLockedComponent?: Type<any>,\r\n\r\n\t// subscription components\r\n\tsubscriptionsComponent?: Type<any>,\r\n\tsubscriptionCreateComponent?: Type<any>,\r\n\tsubscriptionDetailComponent?: Type<any>,\r\n\tsubscriptionEditComponent?: Type<any>,\r\n\r\n\t// user components\r\n\tusersComponent?: Type<any>,\r\n\tuserInviteComponent?: Type<any>,\r\n\tuserDetailComponent?: Type<any>,\r\n\tuserEventsComponent?: Type<any>,\r\n\tuserActionsComponent?: Type<any>,\r\n\tuserEditComponent?: Type<any>,\r\n\tuserAccessEditComponent?: Type<any>,\r\n\r\n\t// invite components (part of user route branch)\r\n\tinviteDetailComponent?: Type<any>,\r\n\tinviteEditComponent?: Type<any>,\r\n\r\n\t// application components\r\n\tapplicationsComponent?: Type<any>,\r\n\tapplicationCreateComponent?: Type<any>,\r\n\tapplicationDetailComponent?: Type<any>,\r\n\tapplicationEditComponent?: Type<any>,\r\n\tapplicationEventsComponent?: Type<any>,\r\n\tapplicationActionsComponent?: Type<any>,\r\n\tapplicationKeysComponent?: Type<any>,\r\n\tapplicationKeyCreateComponent?: Type<any>,\r\n}\r\n\r\nexport interface IncrementalRouteTree {\r\n\tpublicRoutes?: Routes, // Home component and public stuff as well (e.g. on ENotariado.Servicos: Privacy Policy, Validator Component, ...)\r\n\tprivateRoutes?: Routes, // Besides requiring authentication, these routes also require the user to have any subscription or to be admin (e.g. on ENotariado.Servicos: CA Activation, Signer, ...)\r\n\tsubscriptionRoutes?: Routes, // Routes that require only authentication (e.g. on ENotariado.Servicos: Web Signature and Cert Check)\r\n\tsysAdminRoutes?: Routes, // Custom routes that will be inside the SysAdmin Area\r\n}\r\n\r\nexport function LacunaSpaRouteTree(routedComponents: RouteComponents, routesLevelsToIncrement: IncrementalRouteTree,\r\n\thomeGuard?: Type<any>, childRedirectGuard?: Type<any>, enableLanguageRoute?: boolean): Routes {\r\n\t//// this snippet strangely causes a bizarre error while compiling (\"ERROR in Cannot read property 'loadChildren' of undefined\")\r\n\t//if (!customRouteComponents) {\r\n\t//  customRouteComponents = {};\r\n\t//}\r\n\r\n\treturn [\r\n\t\t{\r\n\t\t\tpath: enableLanguageRoute ? ':lang' : '',\r\n\t\t\tcanActivate: mapToCanActivate([TranslationLoadedGuard]),\r\n\t\t\tchildren: [\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: '',\r\n\t\t\t\t\tcanActivate: mapToCanActivate([InitSuccessGuard]),\r\n\t\t\t\t\tcomponent: routedComponents.layoutComponent,\r\n\t\t\t\t\tdata: { routeName: NamedRoutes.Home },\r\n\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t...(routesLevelsToIncrement.publicRoutes || []),\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\t\tpathMatch: 'full',\r\n\t\t\t\t\t\t\tcanActivate: homeGuard ? [homeGuard] : [],\r\n\t\t\t\t\t\t\tcomponent: routedComponents.homeComponent\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpath: 'private',\r\n\t\t\t\t\t\t\tcanActivate: mapToCanActivate([SpaInitSuccessGuard]),\r\n\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\t\t\t\tcanActivate: mapToCanActivate([AuthenticatedGuard]),\r\n\t\t\t\t\t\t\t\t\tdata: { routeName: NamedRoutes.Private, branchRoot: true },\r\n\t\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\t\t\t\t\t\tcanActivate: [AccessNotLockedGuard],\r\n\t\t\t\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t...(routesLevelsToIncrement.privateRoutes || []),\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpath: 's',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcanActivate: mapToCanActivate([PrivateAccessGuard]),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ path: '', canActivate: mapToCanActivate([FillSubscriptionGuard]), component: DummyComponent }, // FillSubscriptionGuard always returns false\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath: ':sub',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcanActivate: mapToCanActivate([SubscriptionAccessGuard]),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata: { routeName: NamedRoutes.Sub, branchRoot: true },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t//component: routedComponents.privateAreaComponent || PrivateAreaComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchildren: routesLevelsToIncrement.subscriptionRoutes || []\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tpath: 'sysadmin',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tcanActivate: mapToCanActivate([RootAccessGuard]),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdata: { routeName: NamedRoutes.SysAdmin, branchRoot: true },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...(routesLevelsToIncrement.sysAdminRoutes || []),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath: 'subscriptions',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent: routedComponents.subscriptionsComponent || SubscriptionsComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata: { routeName: NamedRoutes.Subscriptions },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ path: 'new', pathMatch: 'full', component: routedComponents.subscriptionCreateComponent || SubscriptionCreateComponent, canActivate: mapToCanActivate([ParentIntegrationDisabledGuard]), canDeactivate: mapToCanDeactivate([CanDeactivateGuard]), data: { routeName: NamedRoutes.SubscriptionCreate } },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath: ':id',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent: routedComponents.subscriptionDetailComponent || SubscriptionDetailComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata: { routeName: NamedRoutes.SubscriptionDetail },\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{ path: 'edit', component: routedComponents.subscriptionEditComponent || SubscriptionEditComponent, canDeactivate: mapToCanDeactivate([CanDeactivateGuard]), data: { routeName: NamedRoutes.SubscriptionEdit } }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath: 'servers',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent: ServersListComponent,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata: { routeName: NamedRoutes.ServersList }\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...ManagementRoutes(routedComponents),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpath: '',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpathMatch: 'full',\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tredirectTo: 'subscriptions'\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ path: 'no-access', component: routedComponents.noAccessComponent || NoAccessComponent, canActivate: [NoAccessGuard] },\r\n\t\t\t\t\t\t\t\t\t\t\t\t{ path: 'claim-access/:code', canActivate: [ClaimAccessGuard], component: DummyComponent }, // ClaimAccessGuard always returns false\r\n\t\t\t\t\t\t\t\t\t\t\t\troutedComponents.privateHomeComponent ? { path: '', pathMatch: 'full', component: routedComponents.privateHomeComponent } : { path: '', redirectTo: 's', pathMatch: 'full' },\r\n\t\t\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t\t\t{ path: 'access-locked', component: routedComponents.accessLockedComponent || AccessLockedComponent, canActivate: [AccessLockedGuard], data: { routeName: NamedRoutes.AccessLocked }, },\r\n\t\t\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\t{ path: 'sign-in', component: routedComponents.signInComponent || SignInComponent, canActivate: mapToCanActivate([NotAuthenticatedGuard]) },\r\n\t\t\t\t\t\t\t\t{ path: 'sign-out', component: routedComponents.signOutComponent || SignOutComponent, canActivate: mapToCanActivate([SignOutGuard]) },\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{ path: 'private-unavailable', component: routedComponents.privateAreaUnavailableComponent || PrivateAreaUnavailableComponent, canActivate: mapToCanActivate([SpaInitErrorGuard]) }\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n                { path: 'unavailable', component: routedComponents.serviceUnavailableComponent || ServiceUnavailableComponent, canActivate: mapToCanActivate([InitErrorGuard]) },\r\n                { path: 'child-redirect', component: DummyComponent, canActivate: mapToCanActivate([childRedirectGuard || ChildRedirectGuard]) }\r\n\t\t\t]\r\n\t\t}\r\n\t];\r\n}\r\n\r\nexport function ManagementRoutes(routedComponents: RouteComponents): Routes {\r\n\treturn [\r\n\t\t{\r\n\t\t\tpath: 'users',\r\n\t\t\tcomponent: routedComponents.usersComponent || UsersComponent,\r\n\t\t\tdata: { routeName: NamedRoutes.Users },\r\n\t\t\tchildren: [\r\n\t\t\t\t{ path: 'invite', pathMatch: 'full', component: routedComponents.userInviteComponent || UserInviteComponent, canActivate: mapToCanActivate([ParentIntegrationDisabledGuard]), canDeactivate: mapToCanDeactivate([CanDeactivateGuard]), data: { routeName: NamedRoutes.Invite } },\r\n                {\r\n\t\t\t\t\tpath: 'parent/:userId',\r\n\t\t\t\t\tcomponent: routedComponents.userDetailComponent || UserDetailComponent,\r\n\t\t\t\t\tcanActivate: mapToCanActivate([ParentIntegrationEnabledGuard]),\r\n\t\t\t\t\tdata: { mode: UserModes.Parent, routeName: NamedRoutes.UserDetail }\r\n                },\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: ':userId',\r\n\t\t\t\t\tcomponent: routedComponents.userDetailComponent || UserDetailComponent,\r\n\t\t\t\t\tdata: { routeName: NamedRoutes.UserDetail, mode: UserModes.App },\r\n\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t{ path: 'events', component: routedComponents.userEventsComponent || UserEventsComponent, data: { routeName: NamedRoutes.UserEvents } },\r\n\t\t\t\t\t\t{ path: 'actions', component: routedComponents.userActionsComponent || UserActionsComponent, data: { routeName: NamedRoutes.UserActions } },\r\n\t\t\t\t\t\t{ path: 'edit', component: routedComponents.userEditComponent || UserEditComponent, canDeactivate: mapToCanDeactivate([CanDeactivateGuard]), data: { routeName: NamedRoutes.UserEdit } },\r\n\t\t\t\t\t\t{ path: 'access/:subId', component: routedComponents.userAccessEditComponent || UserAccessEditComponent, canActivate: mapToCanActivate([UserAccessEditGuard, ParentIntegrationDisabledGuard]), canDeactivate: mapToCanDeactivate([CanDeactivateGuard]), data: { routeName: NamedRoutes.UserAccessEdit } }\r\n\t\t\t\t\t]\r\n\t\t\t\t},\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: 'invites/:inviteId',\r\n\t\t\t\t\tcomponent: routedComponents.inviteDetailComponent || InviteDetailComponent,\r\n                    canActivate: mapToCanActivate([ParentIntegrationDisabledGuard]),\r\n\t\t\t\t\tdata: { routeName: NamedRoutes.InviteDetail },\r\n\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t{ path: 'edit', component: routedComponents.inviteEditComponent || InviteEditComponent, canDeactivate: mapToCanDeactivate([CanDeactivateGuard]), data: { routeName: NamedRoutes.InviteEdit } }\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'applications',\r\n\t\t\tcomponent: routedComponents.applicationsComponent || ApplicationsComponent,\r\n\t\t\tdata: { routeName: NamedRoutes.Applications },\r\n\t\t\tchildren: [\r\n\t\t\t\t{ path: 'new', pathMatch: 'full', component: routedComponents.applicationCreateComponent || ApplicationCreateComponent, canDeactivate: mapToCanDeactivate([CanDeactivateGuard]), data: { routeName: NamedRoutes.ApplicationCreate } },\r\n\t\t\t\t{\r\n\t\t\t\t\tpath: ':id',\r\n\t\t\t\t\tcomponent: routedComponents.applicationDetailComponent || ApplicationDetailComponent,\r\n\t\t\t\t\tdata: { routeName: NamedRoutes.ApplicationDetail },\r\n\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t{ path: 'edit', component: routedComponents.applicationEditComponent || ApplicationEditComponent, canDeactivate: mapToCanDeactivate([CanDeactivateGuard]), data: { routeName: NamedRoutes.ApplicationEdit } },\r\n\t\t\t\t\t\t{ path: 'events', component: routedComponents.applicationEventsComponent || ApplicationEventsComponent, data: { routeName: NamedRoutes.ApplicationEvents } },\r\n\t\t\t\t\t\t{ path: 'actions', component: routedComponents.applicationActionsComponent || ApplicationActionsComponent, data: { routeName: NamedRoutes.ApplicationActions } },\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tpath: 'keys',\r\n\t\t\t\t\t\t\tcomponent: routedComponents.applicationKeysComponent || ApplicationKeysComponent,\r\n\t\t\t\t\t\t\tdata: { routeName: NamedRoutes.ApplicationKeys },\r\n\t\t\t\t\t\t\tchildren: [\r\n\t\t\t\t\t\t\t\t{ path: 'new', component: routedComponents.applicationKeyCreateComponent || ApplicationKeyCreateComponent, canDeactivate: mapToCanDeactivate([CanDeactivateGuard]), data: { routeName: NamedRoutes.ApplicationKeyCreate } },\r\n\t\t\t\t\t\t\t]\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t]\r\n\t\t\t\t}\r\n\t\t\t]\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'events',\r\n\t\t\tcomponent: routedComponents.eventsComponent || EventsComponent,\r\n\t\t\tdata: { routeName: NamedRoutes.Events }\r\n\t\t},\r\n\t];\r\n}\r\n","import { ValidationErrors, AbstractControl, Validators, ValidatorFn, UntypedFormArray } from \"@angular/forms\";\r\nimport { StringUtils } from './utils';\r\n\r\nexport class SpaValidators {\r\n\r\n\tstatic arrayMin(val: number): ValidatorFn {\r\n\t\tlet validatorFn = (c: AbstractControl): ValidationErrors | null => {\r\n\t\t\tvar arr = c as UntypedFormArray;\r\n\r\n\t\t\tif (!arr || arr.controls.length >= val) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\treturn { arrayMin: true };\r\n\t\t};\r\n\r\n\t\treturn validatorFn;\r\n\t}\r\n\r\n\tstatic optionalEmail(control: AbstractControl): ValidationErrors | null {\r\n\t\treturn control.value == null || control.value === '' ? null : Validators.email(control);\r\n\t}\r\n\r\n\tstatic requiredEmail(control: AbstractControl): ValidationErrors | null {\r\n\t\treturn control.value == null || control.value === '' ? { 'required': { value: control.value } } : Validators.email(control);\r\n\t}\r\n\r\n\tstatic cpf(control: AbstractControl): ValidationErrors | null {\r\n\t\tlet error = { 'cpf': true };\r\n\t\tlet cpf = StringUtils.removeNonDigits(control.value as string);\r\n\r\n\t\tif (cpf == null || cpf.length === 0) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (cpf.length != 11) {\r\n\t\t\treturn error;\r\n\t\t}\r\n\r\n\t\tif ((cpf == '00000000000') || (cpf == '11111111111') || (cpf == '22222222222') || (cpf == '33333333333') || (cpf == '44444444444') || (cpf == '55555555555') || (cpf == '66666666666') || (cpf == '77777777777') || (cpf == '88888888888') || (cpf == '99999999999')) {\r\n\t\t\treturn error;\r\n\t\t}\r\n\r\n\t\tlet numero: number = 0;\r\n\t\tlet caracter: string = '';\r\n\t\tlet numeros: string = '0123456789';\r\n\t\tlet j: number = 10;\r\n\t\tlet somatorio: number = 0;\r\n\t\tlet resto: number = 0;\r\n\t\tlet digito1: number = 0;\r\n\t\tlet digito2: number = 0;\r\n\t\tlet cpfAux: string = '';\r\n\r\n\t\tcpfAux = cpf.substring(0, 9);\r\n\r\n\t\tfor (let i: number = 0; i < 9; i++) {\r\n\t\t\tcaracter = cpfAux.charAt(i);\r\n\r\n\t\t\tif (numeros.search(caracter) == -1) {\r\n\t\t\t\treturn error;\r\n\t\t\t}\r\n\r\n\t\t\tnumero = Number(caracter);\r\n\t\t\tsomatorio = somatorio + (numero * j);\r\n\t\t\tj--;\r\n\t\t}\r\n\r\n\t\tresto = somatorio % 11;\r\n\t\tdigito1 = 11 - resto;\r\n\r\n\t\tif (digito1 > 9) {\r\n\t\t\tdigito1 = 0;\r\n\t\t}\r\n\r\n\t\tj = 11;\r\n\t\tsomatorio = 0;\r\n\t\tcpfAux = cpfAux + digito1;\r\n\r\n\t\tfor (let i: number = 0; i < 10; i++) {\r\n\t\t\tcaracter = cpfAux.charAt(i);\r\n\t\t\tnumero = Number(caracter);\r\n\t\t\tsomatorio = somatorio + (numero * j);\r\n\t\t\tj--;\r\n\t\t}\r\n\r\n\t\tresto = somatorio % 11;\r\n\t\tdigito2 = 11 - resto;\r\n\r\n\t\tif (digito2 > 9) {\r\n\t\t\tdigito2 = 0;\r\n\t\t}\r\n\r\n\t\tcpfAux = cpfAux + digito2;\r\n\r\n\t\tif (cpf != cpfAux) {\r\n\t\t\treturn error;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\r\n\tstatic cnpj(control: AbstractControl): ValidationErrors | null {\r\n\t\tlet error = { 'cnpj': true };\r\n\t\tlet cnpj = control.value;\r\n\r\n\t\tif (cnpj == null || cnpj.length < 1) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tvar b = [6, 5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2];\r\n\r\n\t\t// removes non-alphanumeric chars and check length\r\n\t\tif ((cnpj = cnpj.replace(/[^a-zA-Z0-9]/g, \"\")).length != 14) {\r\n\t\t\treturn error;\r\n\t\t}\r\n\r\n\t\t// returns error if 00.000.000/0000-00\r\n\t\tif (/0{14}/.test(cnpj)) {\r\n\t\t\treturn error;\r\n\t\t}\r\n\r\n\t\tcnpj = cnpj.toUpperCase();\r\n\r\n\t\t// calc check digits\r\n\t\tfor (var i = 0, n = 0; i < 12; n += (cnpj.charCodeAt(i) - 48) * b[++i]);\r\n\t\tif (cnpj[12] != (((n %= 11) < 2) ? 0 : 11 - n)) {\r\n\t\t\treturn error;\r\n\t\t}\r\n\r\n\t\tfor (var i = 0, n = 0; i <= 12; n += (cnpj.charCodeAt(i) - 48) * b[i++]);\r\n\t\tif (cnpj[13] != (((n %= 11) < 2) ? 0 : 11 - n)) {\r\n\t\t\treturn error;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Logger } from '../services/logger.service';\r\nimport { RouterStateSnapshot, ActivatedRouteSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { SpaControlService } from '../services/spa-control.service';\r\nimport { Config } from '../api/configuration';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class SubscriptionSelectedGuard  {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate router: Router\r\n\t) {\r\n\t}\r\n\r\n\tcanActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean | Observable<boolean> | Promise<boolean> {\r\n\t\tthis.logger.logTrace('SubscriptionSelectedGuard canActivate', route, state);\r\n\r\n\t\tthis.logger.logTrace(`SubscriptionSelectedGuard -- sub ${this.spaControl.selectedSubscriptionSnapshot.sub}`);\r\n\r\n\t\tif (this.spaControl.selectedSubscriptionSnapshot.sub === Config.subscriptionNoFilter) {\r\n\t\t\tthis.logger.logTrace('SubscriptionSelectedGuard -- redirecting to private/s');\r\n\t\t\tthis.router.navigateByUrl('/private/s');\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable ,  of ,  merge } from 'rxjs';\r\nimport { UserService } from './user.service';\r\nimport { SubscriptionService } from './subscription.service';\r\nimport { map, scan } from 'rxjs/operators';\r\nimport { Logger } from './logger.service';\r\nimport { ApplicationService } from './application.service';\r\nimport { PaginatedSearchParams } from '@lacuna/material';\r\nimport { EntityTypes } from '../api/enums';\r\nimport { Config } from '../api/configuration';\r\n\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class GlobalSearchService {\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate subscriptionService: SubscriptionService,\r\n\t\tprivate userService: UserService,\r\n\t\tprivate appService: ApplicationService\r\n\t) { }\r\n\r\n\tsearch(query: string): Observable<GlobalSearchResult[]> {\r\n\r\n\t\tthis.logger.logTrace(`Global search for ${query}`)\r\n\r\n\t\tlet queryTrimmed = query.trim();\r\n\t\tif (!queryTrimmed) {\r\n\t\t\treturn of(new Array<GlobalSearchResult>());\r\n\t\t}\r\n\r\n\t\tlet users = this.userService.list(queryTrimmed, false).pipe(\r\n\t\t\tmap(c =>\r\n\t\t\t\tc.filter(\r\n\t\t\t\t\te =>\r\n\t\t\t\t\t\te.name.toLowerCase().indexOf(query.toLowerCase()) >= 0\r\n\t\t\t\t\t\t|| e.emailAddress.toLowerCase().indexOf(query.toLowerCase()) >= 0\r\n\t\t\t\t).map(\r\n\t\t\t\t\te => new GlobalSearchResult(EntityTypes.User, e.id, e.name, null)\r\n\t\t\t\t)\r\n\t\t\t)\r\n\t\t);\r\n\r\n\t\tlet apps = this.appService.listPaginated(new PaginatedSearchParams()\r\n\t\t\t.withSearchTerm(queryTrimmed)\r\n\t\t\t.withOrder('name', 'asc')\r\n\t\t\t.withLimit(10)\r\n\t\t).pipe(\r\n\t\t\tmap(c => c.items.map(e => new GlobalSearchResult(EntityTypes.Application, e.id, e.name, e.subscriptionId)))\r\n\t\t);\r\n\r\n\t\tlet merged: Observable<GlobalSearchResult[]>;\r\n\t\tif (Config.hasParentIntegration) {\r\n\t\t\tmerged = merge(users, apps);\r\n\t\t} else {\r\n\t\t\tlet subscriptions = this.subscriptionService.list().pipe(\r\n\t\t\t\tmap(c => c.filter(e => e.name.toLowerCase().indexOf(query.toLowerCase()) >= 0).map(e => new GlobalSearchResult(EntityTypes.Subscription, e.id, e.name, Config.subscriptionRoot)))\r\n\t\t\t);\r\n\r\n\t\t\tmerged = merge(subscriptions, users, apps);\r\n\t\t}\r\n\r\n\t\treturn merged.pipe(\r\n\t\t\tscan((c1, c2) => c1.concat(c2).sort((r1, r2) => r1.name.localeCompare(r2.name)))\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport class GlobalSearchResult {\r\n\tconstructor(public type: EntityTypes, public id: string, public name: string, public subscriptionId: string) {\r\n\t}\r\n}\r\n","import { Injectable, OnDestroy } from '@angular/core';\r\nimport { EventModel } from '../api/events';\r\nimport { ObservableSearchService, PaginatedSearchParams, PaginatedSearchResult, SearchService } from '@lacuna/material';\r\nimport { Subscription ,  Subject ,  Observable } from 'rxjs';\r\nimport { Logger } from './logger.service';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { SpaControlService } from './spa-control.service';\r\nimport { AuthManagementService } from './auth-management.service';\r\nimport { map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n\tprovidedIn: 'root'\r\n})\r\nexport class LatestEventsService implements OnDestroy, ObservableSearchService, SearchService<EventModel> {\r\n\r\n\tprivate $subscriptions: Subscription[] = [];\r\n\tprivate changedSubject: Subject<any> = new Subject<any>();\r\n\r\n\tchanged: Observable<string> = this.changedSubject.asObservable();\r\n\r\n\tconstructor(\r\n\t\tprivate logger: Logger,\r\n\t\tprivate http: HttpClient,\r\n\t\tprivate spaControl: SpaControlService,\r\n\t\tprivate authManager: AuthManagementService\r\n\t) {\r\n\t\tthis.$subscriptions.push(\r\n\t\t\tthis.spaControl.selectedSubscription.subscribe(() => {\r\n\t\t\t\tthis.logger.logTrace('LatestEventsService -- emitting change notification due to subscription change');\r\n\t\t\t\tthis.changedSubject.next(null)\r\n\t\t\t})\r\n\t\t);\r\n\t}\r\n\r\n\tlist(): Observable<EventModel[]> {\r\n\t\treturn this.http.get<PaginatedSearchResult<EventModel>>('/api/events', {\r\n\t\t\tparams: new PaginatedSearchParams().withOrder('date', 'desc').withLimit(10).getHttpParams()\r\n\t\t}).pipe(map(r => r.items));\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis.logger.logTrace('LatestEventsService ngOnDestroy');\r\n\t\tfor (let s of this.$subscriptions) {\r\n\t\t\ts.unsubscribe();\r\n\t\t}\r\n\t}\r\n}\r\n","// Main exports\r\nexport * from './src/lacuna-spa.module';\r\nexport * from './src/routing';\r\n\r\n// API\r\nexport * from './src/api/agents';\r\nexport * from './src/api/app-keys';\r\nexport * from './src/api/applications';\r\nexport * from './src/api/authorization';\r\nexport * from './src/api/configuration';\r\nexport * from './src/api/entities';\r\nexport * from './src/api/enums';\r\nexport * from './src/api/events';\r\nexport * from './src/api/files';\r\nexport * from './src/api/invites';\r\nexport * from './src/api/named-route';\r\nexport * from './src/api/profile';\r\nexport * from './src/api/root-authentication';\r\nexport * from './src/api/subscriptions';\r\nexport * from './src/api/users';\r\n\r\n// Classes\r\nexport * from './src/classes/injection-tokens';\r\nexport * from './src/classes/language-and-locale-code-map';\r\nexport * from './src/classes/spa-validators';\r\nexport * from './src/classes/types';\r\nexport * from './src/classes/utils';\r\n\r\n// Components\r\nexport * from './src/components/application-actions/application-actions.component';\r\nexport * from './src/components/application-create/application-create.component';\r\nexport * from './src/components/application-detail/application-detail.component';\r\nexport * from './src/components/application-edit/application-edit.component';\r\nexport * from './src/components/application-events/application-events.component';\r\nexport * from './src/components/application-key-create/application-key-create.component';\r\nexport * from './src/components/application-keys/application-keys.component';\r\nexport * from './src/components/application-list/application-list.component';\r\nexport * from './src/components/applications/applications.component';\r\nexport * from './src/components/box/box.component';\r\nexport * from './src/components/breadcrumb/breadcrumb.component';\r\nexport * from './src/components/breadcrumb-name/breadcrumb-name.component';\r\nexport * from './src/components/close-button/close-button.component';\r\nexport * from './src/components/dialog-alert/dialog-alert.component';\r\nexport * from './src/components/dialog-confirm-with-checkbox/dialog-confirm-with-checkbox.component';\r\nexport * from './src/components/dialog-error-messages/dialog-error-messages.component';\r\nexport * from './src/components/dialog-fancy-confirm/dialog-fancy-confirm.component';\r\nexport * from './src/components/dialog-language-selector/dialog-language-selector.component';\r\nexport * from './src/components/dialog-mobile-authorization-required/dialog-mobile-authorization-required.component';\r\nexport * from './src/components/dialog-root-login/dialog-root-login.component';\r\nexport * from './src/components/dialog-show-value/dialog-show-value.component';\r\nexport * from './src/components/dialog-subscription-selector/dialog-subscription-selector.component';\r\nexport * from './src/components/dialog-upload-error/dialog-upload-error.component';\r\nexport * from './src/components/dialog-validation-results/dialog-validation-results.component';\r\nexport * from './src/components/dialog-view-file/dialog-view-file.component';\r\nexport * from './src/components/dialog-event-details/dialog-event-details.component';\r\nexport * from './src/components/dummy/dummy.component';\r\nexport * from './src/components/event-entity-cell/event-entity-cell.component';\r\nexport * from './src/components/event-list/event-list.component';\r\nexport * from './src/components/events/events.component';\r\nexport * from './src/components/files/files.component';\r\nexport * from './src/components/invite-detail/invite-detail.component';\r\nexport * from './src/components/invite-edit/invite-edit.component';\r\nexport * from './src/components/invite-list/invite-list.component';\r\nexport * from './src/components/lacuna-footer/lacuna-footer.component';\r\nexport * from './src/components/language-button/language-button.component';\r\nexport * from './src/components/language-selector/language-selector.component';\r\nexport * from './src/components/message/message.component';\r\nexport * from './src/components/no-access/no-access.component';\r\nexport * from './src/components/private-area/private-area.component';\r\nexport * from './src/components/private-area-unavailable/private-area-unavailable.component';\r\nexport * from './src/components/prop/prop.component';\r\nexport * from './src/components/root/root.component';\r\nexport * from './src/components/service-unavailable/service-unavailable.component';\r\nexport * from './src/components/sign-in/sign-in.component';\r\nexport * from './src/components/sign-out/sign-out.component';\r\nexport * from './src/components/submit-button/submit-button.component';\r\nexport * from './src/components/subscription-create/subscription-create.component';\r\nexport * from './src/components/subscription-detail/subscription-detail.component';\r\nexport * from './src/components/subscription-edit/subscription-edit.component';\r\nexport * from './src/components/subscription-form/subscription-form.component';\r\nexport * from './src/components/subscription-list/subscription-list.component';\r\nexport * from './src/components/subscriptions/subscriptions.component';\r\nexport * from './src/components/success-panel/success-panel.component';\r\nexport * from './src/components/user-access-edit/user-access-edit.component';\r\nexport * from './src/components/user-actions/user-actions.component';\r\nexport * from './src/components/user-detail/user-detail.component';\r\nexport * from './src/components/user-edit/user-edit.component';\r\nexport * from './src/components/user-events/user-events.component';\r\nexport * from './src/components/user-invite/user-invite.component';\r\nexport * from './src/components/user-list/user-list.component';\r\nexport * from './src/components/users/users.component';\r\nexport * from './src/components/access-locked/access-locked.component';\r\nexport * from './src/components/dialog-confirm-with-reason/dialog-confirm-with-reason.component';\r\nexport * from './src/components/servers-list/servers-list.component'\r\nexport * from './src/components/dialog-title/dialog-title.component'\r\nexport * from './src/components/clickable-area/clickable-area.component';\r\nexport * from './src/components/link-button/link-button.component';\r\nexport * from './src/components/captcha/captcha.component';\r\n\r\n// Guards\r\nexport * from './src/guards/access-locked.guard';\r\nexport * from './src/guards/access-not-locked.guard';\r\nexport * from './src/guards/authenticated.guard';\r\nexport * from './src/guards/can-deactivate.guard';\r\nexport * from './src/guards/child-redirect.guard';\r\nexport * from './src/guards/claim-access.guard';\r\nexport * from './src/guards/fill-subscription.guard';\r\nexport * from './src/guards/init.guard';\r\nexport * from './src/guards/no-access.guard';\r\nexport * from './src/guards/not-authenticated.guard';\r\nexport * from './src/guards/parent-integration.guard';\r\nexport * from './src/guards/private-access.guard';\r\nexport * from './src/guards/root-access.guard';\r\nexport * from './src/guards/sign-out.guard';\r\nexport * from './src/guards/spa-init.guard';\r\nexport * from './src/guards/subscription-access.guard';\r\nexport * from './src/guards/subscription-selected.guard';\r\nexport * from './src/guards/translation-loaded.guard';\r\nexport * from './src/guards/user-access-edit.guard';\r\n\r\n// Pipes\r\nexport * from './src/pipes/agent.pipe';\r\nexport * from './src/pipes/breadcrumb.pipe';\r\nexport * from './src/pipes/cpf.pipe';\r\nexport * from './src/pipes/entity-icon.pipe';\r\nexport * from './src/pipes/entity-name.pipe';\r\nexport * from './src/pipes/event-type.pipe';\r\nexport * from './src/pipes/file-size.pipe';\r\nexport * from './src/pipes/locale-sensitive.pipe';\r\nexport * from './src/pipes/roles.pipe';\r\nexport * from './src/pipes/safe.pipe';\r\nexport * from './src/pipes/spa-currency.pipe';\r\nexport * from './src/pipes/spa-date.pipe';\r\nexport * from './src/pipes/spa-decimal.pipe';\r\nexport * from './src/pipes/spa-percent.pipe';\r\nexport * from './src/pipes/subscription.pipe';\r\n\r\n// Services\r\nexport * from './src/services/agent.service';\r\nexport * from './src/services/agent-lookup.service';\r\nexport * from './src/services/application.service';\r\nexport * from './src/services/application-key.service';\r\nexport * from './src/services/auth-management.service';\r\nexport * from './src/services/cookie-storage.service';\r\nexport * from './src/services/dialog.service';\r\nexport * from './src/services/entity-lookup.service';\r\nexport * from './src/services/event.service';\r\nexport * from './src/services/global-search.service';\r\nexport * from './src/services/http-intercept.service';\r\nexport * from './src/services/http-transloco.loader';\r\nexport * from './src/services/invite.service';\r\nexport * from './src/services/latest-events.service';\r\nexport * from './src/services/logger.service';\r\nexport * from './src/services/message.service';\r\nexport * from './src/services/parent-redirect.service';\r\nexport * from './src/services/captcha.service';\r\nexport * from './src/services/route-helper.service';\r\nexport * from './src/services/spa-api-headers.service';\r\nexport * from './src/services/spa-control.service';\r\nexport * from './src/services/spa-entity-navigation.service';\r\nexport * from './src/services/spa-error-handling.service';\r\nexport * from './src/services/spa-language.service';\r\nexport * from './src/services/startup.service';\r\nexport * from './src/services/subscription.service';\r\nexport * from './src/services/upload.service';\r\nexport * from './src/services/user.service';\r\nexport * from './src/services/server.service';\r\n\r\n// directives\r\nexport * from './src/directives/dnd.directive';\r\nexport * from './src/components/captcha/captcha-value-accessor.directive';\r\n\r\n// inputs\r\nexport * from './src/inputs/spa-date/spa-date.input';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1","i2.Logger","i3","i2","i4","i5.SpaDialogTitleComponent","moment","i3.SpaApiHeadersService","i4.Logger","i5.CookieStorageService","i6.MessageService","i7","i5","i6.SpaDialogTitleComponent","i6","i7.SpaDialogTitleComponent","i8","i8.SpaDialogTitleComponent","i4.SpaDialogTitleComponent","i3.Logger","i9","i10.SpaDialogTitleComponent","i2.SpaControlService","i6.Logger","i10","i11.SubmitButtonComponent","i12.SpaDialogTitleComponent","i3.SpaLanguageService","i10.SubmitButtonComponent","i11.SpaDialogTitleComponent","i12","apiRoute","i1.AgentLookupService","i1.EntityLookupService","i1.SpaControlService","i2.EntityLookupService","i1.SpaLanguageService","i4.PropComponent","i7.AgentPipe","i8.EntityIconPipe","i9.EntityNamePipe","i10.EventTypePipe","i11.SubscriptionPipe","i12.SpaDatePipe","i13.EntityTypePipe","i3.DialogService","i1.Logger","_throw","i3.RouteHelperService","i3.SpaControlService","i4.RouteHelperService","i5.GoogleAnalyticsService","i6.SpaLanguageService","i8.CaptchaComponent","i4.AuthManagementService","i1.EntityTypePipe","i5.EntityIconPipe","i2.DialogService","i4.AgentLookupService","i5.UserService","i10.EventEntityCellComponent","i11","i12.AgentPipe","i13.EntityNamePipe","i14.EventTypePipe","i15.SubscriptionPipe","i16.SpaDatePipe","i2.EventService","i5.BoxComponent","i6.EventListComponent","i2.UserService","i3.ApplicationService","i4.DialogService","i5.MessageService","i6.SpaControlService","i8.AgentService","i10.BoxComponent","i11.PropComponent","i13.RolesPipe","i14.SubscriptionPipe","i12.BoxComponent","i4.SpaControlService","i5.ApplicationKeyServiceFactory","i7.DialogService","i11.BoxComponent","i12.SubmitButtonComponent","i4.ApplicationKeyServiceFactory","i13","i1.ApplicationService","i11.RolesPipe","i12.SubscriptionPipe","i6.ApplicationListComponent","i7.BoxComponent","finalize","i3.InviteService","i9.BoxComponent","i10.PropComponent","i12.RolesPipe","i13.SubscriptionPipe","i2.InviteService","i10.RolesPipe","i1.SubscriptionService","i3.SubscriptionService","i8.SubscriptionListComponent","i7.AuthManagementService","i9.UserService","i13.BoxComponent","i14.PropComponent","i15.RolesPipe","i1.RouteHelperService","i3.UserService","i6.DialogService","i8.ParentRedirectService","i10.AgentService","i13.PropComponent","i14","i16.SubscriptionPipe","i7.UserService","i8.AuthManagementService","i9.InviteService","i16","i17.BoxComponent","i18.SubmitButtonComponent","i19","i20.RolesPipe","i4.ParentRedirectService","i8.InviteListComponent","i9.UserListComponent","i5.ApplicationService","i7.SpaControlService","i14.BoxComponent","i15.SubmitButtonComponent","i16.RolesPipe","i6.SubmitButtonComponent","i4.SubscriptionService","i8.SubscriptionFormComponent","i6.BoxComponent","i7.PropComponent","i6.BreadcrumbPipe","i3.UploadService","i6.FileSizePipe","i8.CaptchaService","i15","i16.DndDirective","i2.ApplicationInsightsService","i3.FaroService","i7.MessageService","i6.UserService","i1.DialogService","i2.ServerService","i8.SpaDatePipe","i1.TranslocoIntlMessageFormatModule","i4.MessageService","i2.StartupService","i4.AuthenticatedGuard","i2.SubscriptionService","i4.ApplicationService"],"mappings":"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EAAC,EAAC,KAAK,EAAC,CAAC,EAAC,KAAK,EAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,CAAC,EAAC,IAAI,EAAC,EAAC,GAAG,EAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,GAAG,EAAC,IAAI,EAAC,EAAE,EAAC,EAAC,GAAG,EAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,IAAI,EAAC,EAAE,EAAC,EAAC,GAAG,EAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAE,EAAC,KAAK,EAAC,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,GAAG,EAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,CAAC,EAAC,CAAC,EAAC,CAAC,CAAC,EAAC,IAAI,EAAC,CAAC,EAAC,EAAC,GAAG,EAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,EAAC,GAAG,EAAC,CAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC,EAAC,GAAG,EAAC,CAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC,EAAC,EAAC,GAAG,EAAC,EAAC,GAAG,EAAC,CAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC,EAAC,GAAG,EAAC,CAAC,IAAI,EAAC,IAAI,EAAC,CAAC,KAAK,CAAC,EAAC,EAAC,GAAG,EAAC,CAAC,wBAAwB,EAAC,wBAAwB,EAAC,0BAA0B,CAAC,EAAC,GAAG,EAAC,CAAC,EAAC,GAAG,EAAC,CAAC,MAAM,EAAC,MAAM,EAAC,GAAG,CAAC,EAAC,GAAG,EAAC,CAAC,MAAM,EAAC,MAAM,EAAC,GAAG,CAAC,EAAC,EAAC,EAAC,GAAG,EAAC,EAAC,GAAG,EAAC,CAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC,EAAC,GAAG,EAAC,CAAC,KAAK,EAAC,KAAK,EAAC,KAAK,CAAC,EAAC,EAAC,GAAG,EAAC,EAAC,GAAG,EAAC,CAAC,KAAK,EAAC,KAAK,EAAC,IAAI,CAAC,EAAC,GAAG,EAAC,CAAC,CAAC,KAAK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"}