@huntsman-cancer-institute/authentication 12.5.0 → 14.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/authentication.component.d.ts +1 -1
  2. package/directlogin.component.d.ts +4 -4
  3. package/esm2020/authentication.component.mjs +131 -0
  4. package/esm2020/authentication.module.mjs +105 -0
  5. package/esm2020/authentication.provider.mjs +36 -0
  6. package/esm2020/authentication.service.mjs +393 -0
  7. package/esm2020/authorization.interceptor.mjs +79 -0
  8. package/esm2020/directlogin.component.mjs +96 -0
  9. package/esm2020/huntsman-cancer-institute-authentication.mjs +5 -0
  10. package/esm2020/index.mjs +13 -0
  11. package/esm2020/route-guard.service.mjs +52 -0
  12. package/esm2020/timeout-notification.component.mjs +148 -0
  13. package/fesm2015/huntsman-cancer-institute-authentication.mjs +1000 -0
  14. package/fesm2015/huntsman-cancer-institute-authentication.mjs.map +1 -0
  15. package/{fesm2015/huntsman-cancer-institute-authentication.js → fesm2020/huntsman-cancer-institute-authentication.mjs} +64 -189
  16. package/fesm2020/huntsman-cancer-institute-authentication.mjs.map +1 -0
  17. package/package.json +26 -18
  18. package/timeout-notification.component.d.ts +1 -1
  19. package/CHANGELOG.md +0 -4
  20. package/bundles/huntsman-cancer-institute-authentication.umd.js +0 -945
  21. package/bundles/huntsman-cancer-institute-authentication.umd.js.map +0 -1
  22. package/bundles/huntsman-cancer-institute-authentication.umd.min.js +0 -2
  23. package/bundles/huntsman-cancer-institute-authentication.umd.min.js.map +0 -1
  24. package/esm2015/authentication.component.js +0 -153
  25. package/esm2015/authentication.module.js +0 -107
  26. package/esm2015/authentication.provider.js +0 -36
  27. package/esm2015/authentication.service.js +0 -393
  28. package/esm2015/authorization.interceptor.js +0 -79
  29. package/esm2015/directlogin.component.js +0 -146
  30. package/esm2015/huntsman-cancer-institute-authentication.js +0 -5
  31. package/esm2015/index.js +0 -13
  32. package/esm2015/route-guard.service.js +0 -52
  33. package/esm2015/timeout-notification.component.js +0 -205
  34. package/esm5/authentication.component.js +0 -120
  35. package/esm5/authentication.module.js +0 -109
  36. package/esm5/authentication.provider.js +0 -47
  37. package/esm5/authentication.service.js +0 -411
  38. package/esm5/authorization.interceptor.js +0 -81
  39. package/esm5/directlogin.component.js +0 -53
  40. package/esm5/huntsman-cancer-institute-authentication.js +0 -5
  41. package/esm5/index.js +0 -13
  42. package/esm5/route-guard.service.js +0 -55
  43. package/esm5/timeout-notification.component.js +0 -125
  44. package/fesm2015/huntsman-cancer-institute-authentication.js.map +0 -1
  45. package/fesm5/huntsman-cancer-institute-authentication.js +0 -937
  46. package/fesm5/huntsman-cancer-institute-authentication.js.map +0 -1
  47. package/huntsman-cancer-institute-authentication.d.ts +0 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"huntsman-cancer-institute-authentication.mjs","sources":["../../../projects/authentication/src/authentication.provider.ts","../../../projects/authentication/src/authentication.service.ts","../../../projects/authentication/src/route-guard.service.ts","../../../projects/authentication/src/authentication.component.ts","../../../projects/authentication/src/directlogin.component.ts","../../../projects/authentication/src/timeout-notification.component.ts","../../../projects/authentication/src/authorization.interceptor.ts","../../../projects/authentication/src/authentication.module.ts","../../../projects/authentication/src/huntsman-cancer-institute-authentication.ts"],"sourcesContent":["import {Inject, Injectable, InjectionToken, Injector} from \"@angular/core\";\r\n\r\nimport {Subject} from \"rxjs\";\r\n\r\nimport {CoolLocalStorage} from '@angular-cool/storage';\r\n\r\nexport let AUTHENTICATION_TOKEN_KEY = new InjectionToken<string>(\"authentication_token_key\");\r\n\r\n@Injectable()\r\nexport class AuthenticationProvider {\r\n\r\n public whitelistedDomains = [\r\n \"localhost\",\r\n new RegExp(\".*[.]utah[.]edu\")\r\n ];\r\n\r\n constructor(private _localStorageService: CoolLocalStorage,\r\n @Inject(AUTHENTICATION_TOKEN_KEY) private _authenticationTokenKey: string) {}\r\n\r\n public tokenGetter = () => {\r\n return this.authToken;\r\n }\r\n\r\n get authenticationTokenKey(): string {\r\n return this._authenticationTokenKey;\r\n }\r\n\r\n set authenticationTokenKey(_authenticationTokenKey: string) {\r\n this._authenticationTokenKey = _authenticationTokenKey;\r\n }\r\n\r\n get authToken(): string {\r\n return <string>this._localStorageService.getItem(this._authenticationTokenKey);\r\n }\r\n\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {Injectable, InjectionToken, Inject, Optional, isDevMode} from \"@angular/core\";\r\nimport {LocationStrategy} from \"@angular/common\";\r\nimport {Router} from \"@angular/router\";\r\nimport {HttpClient, HttpHeaders, HttpRequest, HttpResponse} from \"@angular/common/http\";\r\n\r\nimport {interval, Observable, BehaviorSubject, Subscription, throwError, of} from \"rxjs\";\r\nimport {catchError, first, map} from \"rxjs/operators\";\r\nimport {JwtHelperService} from \"@auth0/angular-jwt\";\r\n\r\nimport {AuthenticationProvider} from \"./authentication.provider\";\r\nimport { CoolLocalStorage } from \"@angular-cool/storage\";\r\n\r\n/**\r\n * The token used for injection of the server side endpoint for the currently authenticated subject.\r\n *\r\n * @type {InjectionToken}\r\n */\r\nexport let AUTHENTICATION_SERVER_URL = new InjectionToken<string>(\"authentication_server_rest_api\");\r\nexport let AUTHENTICATION_LOGOUT_PATH = new InjectionToken<string>(\"authentication_logout_path\");\r\nexport let AUTHENTICATION_DIRECT_ENDPOINT = new InjectionToken<string>(\"authentication_direct_endpoint\");\r\nexport let AUTHENTICATION_TOKEN_ENDPOINT = new InjectionToken<string>(\"authentication_token_endpoint\");\r\nexport let AUTHENTICATION_ROUTE = new InjectionToken<string>(\"authentication_route\");\r\nexport let AUTHENTICATION_MAX_INACTIVITY_MINUTES = new InjectionToken<number>(\"authentication_max_inactivity\");\r\nexport let AUTHENTICATION_USER_COUNTDOWN_SECONDS = new InjectionToken<number>(\"authentication_user_countdown_seconds\");\r\nexport let AUTHENTICATION_IDP_INACTIVITY_MINUTES = new InjectionToken<number>(\"authentication_idp_inactivity_minutes\");\r\n\r\n/**\r\n * @since 1.0.0\r\n */\r\n@Injectable()\r\nexport class AuthenticationService {\r\n\r\n /**\r\n * The generic error message used when a server error is thrown without a status.\r\n *\r\n * @type {string}\r\n */\r\n public static GENERIC_ERR_MSG: string = \"Server error\";\r\n\r\n private static CONTENT_TYPE: string = \"Content-Type\";\r\n private static SEC_GOV_CLASS_HEADER: string = \"SecurityGovernorClass\";\r\n private static SEC_GOV_ID_HEADER: string = \"SecurityGovernorId\";\r\n private static DEIDENT_HEADER: string = \"DeidentifiedContext\";\r\n private static LIMITED_HEADER: string = \"LimitedContext\";\r\n\r\n public userCountdownSeconds: number = 60;\r\n public idpInactivityMinutes: number = 5;\r\n\r\n public contentType: string = \"application/json\";\r\n public securityGovernorClass: string;\r\n public securityGovernorId: number;\r\n public limitedContext: boolean = false;\r\n public deidentifiedContext: boolean = false;\r\n\r\n private maxViewPermission: BehaviorSubject<\"view\" | \"viewident\" | \"viewlimited\"> = new BehaviorSubject<\"view\" | \"viewident\" | \"viewlimited\">(\"viewident\");\r\n private _isAuthenticatedSubject: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n private _userIsAboutToTimeOut: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\r\n private _redirectUrl: string;\r\n private _refreshSubscription: Subscription;\r\n private _lastUserInteraction: Date;\r\n private _maxInactivityMinutes: number = 120;\r\n\r\n private baseUrl: string;\r\n private contextRoot: string = \"\";\r\n\r\n constructor(private _http: HttpClient,\r\n private _router: Router,\r\n private _localStorageService: CoolLocalStorage,\r\n private _jwtHelper: JwtHelperService,\r\n private authenticationProvider: AuthenticationProvider,\r\n @Inject(AUTHENTICATION_ROUTE) private _authenticationRoute: string,\r\n @Inject(AUTHENTICATION_LOGOUT_PATH) private _logoutPath: string,\r\n @Inject(AUTHENTICATION_TOKEN_ENDPOINT) private _tokenEndpoint: string,\r\n @Optional() @Inject(AUTHENTICATION_SERVER_URL) private _serverUrl: string,\r\n @Optional() @Inject(AUTHENTICATION_DIRECT_ENDPOINT) private _directEndpoint: string,\r\n @Optional() @Inject(AUTHENTICATION_MAX_INACTIVITY_MINUTES) private _maxInactivity: number,\r\n @Optional() @Inject(AUTHENTICATION_USER_COUNTDOWN_SECONDS) private _userCountdownSeconds: number,\r\n @Optional() @Inject(AUTHENTICATION_IDP_INACTIVITY_MINUTES) private _idpInactivityMinutes: number,\r\n @Optional() @Inject(LocationStrategy) private locationStrategy: LocationStrategy) {\r\n if (isDevMode()) {\r\n console.debug(\"window.location.href: \" + window.location.href);\r\n }\r\n\r\n if (window.location) {\r\n let parts: string[] = window.location.href.split(\"/\");\r\n this.baseUrl = parts[0] + \"//\" + parts[2];\r\n if (parts.length > 3) {\r\n this.contextRoot = parts[3];\r\n }\r\n }\r\n\r\n if (this._localStorageService.getItem(\"maxViewPermission\")) {\r\n this.maxViewPermission.next(<\"view\" | \"viewident\" | \"viewlimited\">this._localStorageService.getItem(\"maxViewPermission\"));\r\n }\r\n\r\n if (_maxInactivity) {\r\n this._maxInactivityMinutes = _maxInactivity;\r\n }\r\n\r\n if (_userCountdownSeconds) {\r\n this.userCountdownSeconds = _userCountdownSeconds;\r\n }\r\n\r\n if (_idpInactivityMinutes) {\r\n this.idpInactivityMinutes = _idpInactivityMinutes;\r\n }\r\n\r\n this.hasValidConfig();\r\n\r\n //There could be a non-expired token in local storage.\r\n let token: string = this.authenticationProvider.authToken;\r\n this.storeToken(token);\r\n }\r\n\r\n getBaseUrl(): string {\r\n return (this.baseUrl) ? this.baseUrl : \"\";\r\n }\r\n\r\n getContextRoot(): string {\r\n return this.contextRoot;\r\n }\r\n\r\n getHeaders(req: HttpRequest<any>): HttpHeaders {\r\n let headers: HttpHeaders = req.headers;\r\n\r\n //Don't set content type if already set\r\n if (!req.headers.get(AuthenticationService.CONTENT_TYPE)) {\r\n headers = headers.set(AuthenticationService.CONTENT_TYPE, this.contentType.toString());\r\n }\r\n\r\n if (headers.get(AuthenticationService.SEC_GOV_CLASS_HEADER) === \"\") {\r\n headers = headers.delete(AuthenticationService.SEC_GOV_CLASS_HEADER);\r\n } else if (this.securityGovernorClass && !headers.get(AuthenticationService.SEC_GOV_CLASS_HEADER)) {\r\n headers = headers.set(AuthenticationService.SEC_GOV_CLASS_HEADER, this.securityGovernorClass);\r\n }\r\n\r\n if (headers.get(AuthenticationService.SEC_GOV_ID_HEADER) === \"\") {\r\n headers = headers.delete(AuthenticationService.SEC_GOV_ID_HEADER);\r\n } else if (this.securityGovernorId && !headers.get(AuthenticationService.SEC_GOV_ID_HEADER)) {\r\n headers = headers.set(AuthenticationService.SEC_GOV_ID_HEADER, this.securityGovernorId.toString());\r\n }\r\n\r\n headers = headers.set(AuthenticationService.DEIDENT_HEADER, this.deidentifiedContext.toString());\r\n headers = headers.set(AuthenticationService.LIMITED_HEADER, this.limitedContext.toString());\r\n\r\n return headers;\r\n }\r\n\r\n get authenticationTokenKey(): string {\r\n return this.authenticationProvider.authenticationTokenKey;\r\n }\r\n\r\n get authToken(): string {\r\n return this.authenticationProvider.authToken;\r\n }\r\n\r\n public updateUserActivity(): void {\r\n if (this._isAuthenticatedSubject.value) {\r\n this._lastUserInteraction = new Date();\r\n this._userIsAboutToTimeOut.next(false);\r\n }\r\n }\r\n\r\n /**\r\n * A mutator for identifying the clients original request location. Setting this value will influence the end location\r\n * navigated to by {@link #navigateToPath}.\r\n *\r\n * @param redirectUrl location of the users request before authentication\r\n */\r\n set redirectUrl(redirectUrl: string) {\r\n this._redirectUrl = redirectUrl;\r\n }\r\n\r\n get redirectUrl() {\r\n return this._redirectUrl;\r\n }\r\n\r\n requestAccessToken(redirectOnSuccess: boolean): void {\r\n\r\n this._http.get(this.tokenLocation(), {withCredentials: true})\r\n .subscribe(\r\n (response: any) => {\r\n this.storeToken(response.auth_token);\r\n if (redirectOnSuccess) {\r\n this.proceedIfAuthenticated();\r\n }\r\n },\r\n (error) => {\r\n //Token refresh failed.\r\n this.logout(true);\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Verifies whether or not a current user session exists.\r\n *\r\n * @returns {Observable<boolean>} evaluates to true if the user is authenticated, false otherwise.\r\n */\r\n isAuthenticated(): Observable<boolean> {\r\n return this._isAuthenticatedSubject.asObservable();\r\n }\r\n\r\n isAboutToTimeOut(): Observable<boolean> {\r\n return this._userIsAboutToTimeOut.asObservable();\r\n }\r\n\r\n getTimeoutStart(): number {\r\n if (this._lastUserInteraction) {\r\n return this._lastUserInteraction.valueOf() + (((this._maxInactivityMinutes * 60) - this.userCountdownSeconds) * 1000);\r\n }\r\n }\r\n\r\n tokenLocation(): string {\r\n if (this._serverUrl) {\r\n return this._serverUrl + this._tokenEndpoint;\r\n } else {\r\n return this._tokenEndpoint;\r\n }\r\n }\r\n\r\n directLoginLocation(): string {\r\n if (this._serverUrl) {\r\n return this._serverUrl + this._directEndpoint;\r\n } else {\r\n return this._directEndpoint;\r\n }\r\n }\r\n\r\n logoutLocation(): string {\r\n if (this._serverUrl) {\r\n return this._serverUrl + this._logoutPath;\r\n } else {\r\n return this._logoutPath;\r\n }\r\n }\r\n\r\n /**\r\n * A function to authenticated the user with the provided credentials. Failure results in an error that describes the\r\n * server response (status and status message) and should be actionable by the client application.\r\n *\r\n * @param username of the authenticating user to verify\r\n * @param password of the authenticating user to verify\r\n * @returns {Observable<R>} describing the result of the login action, true or an error\r\n */\r\n login(_username: string, _password: string): Observable<boolean> {\r\n return this._http.post(\r\n this.directLoginLocation(),\r\n {username: _username, password: _password},\r\n {observe: \"response\"}\r\n ).pipe(map((resp: HttpResponse<any>) => {\r\n if (resp.status === 201) {\r\n return true;\r\n } else {\r\n throw new Error(\"Authentication failed. \" + resp.status + \": \" + resp.statusText);\r\n }\r\n }),\r\n catchError(this.handleError));\r\n }\r\n\r\n\r\n clearLogin(): Observable<Response> {\r\n //Front-end logout\r\n try {\r\n this._localStorageService.removeItem(this.authenticationProvider.authenticationTokenKey);\r\n this.unsubscribeFromTokenRefresh();\r\n this._isAuthenticatedSubject.next(false);\r\n this._userIsAboutToTimeOut.next(false);\r\n } catch (Error) {\r\n }\r\n\r\n //Back-end logout\r\n let headers = new HttpHeaders().set(AuthenticationService.CONTENT_TYPE, \"text/plain\");\r\n return <Observable<Response>>this._http.get(this.logoutLocation(), {headers: headers});\r\n }\r\n\r\n /**\r\n * A function to signal the termination of the current session. Invoking this function will clean up any relevant state\r\n * related to the last active session.\r\n */\r\n logout(keepCurrentRoute: boolean = false): void {\r\n //Prevent logout if already on authentication route. Doing otherwise screws up SAML\r\n if (! this._router.routerState || this._router.routerState.snapshot.url !== this._authenticationRoute) {\r\n this._redirectUrl = (keepCurrentRoute && this._router.routerState && this._router.routerState.snapshot) ? this._router.routerState.snapshot.url : \"\";\r\n\r\n if (this._redirectUrl.startsWith(\"/\")) {\r\n this._redirectUrl = this._redirectUrl.substring(1);\r\n }\r\n\r\n this.clearLogin().subscribe(\r\n (response) => {\r\n window.location.replace(this._redirectUrl);\r\n },\r\n (error) => {\r\n window.location.replace(this._redirectUrl);\r\n }\r\n );\r\n }\r\n }\r\n\r\n storeToken(token: string): void {\r\n let valid = this.validateToken(token);\r\n\r\n // unsubscribe from refesh before we decide wether to resubscribe\r\n this.unsubscribeFromTokenRefresh();\r\n\r\n if (valid) {\r\n this._localStorageService.setItem(this.authenticationProvider.authenticationTokenKey, token);\r\n this.subscribeToTokenRefresh(token);\r\n\r\n //Change the BehaviorSubject if the user was not previously authenticated.\r\n //Since other code may be subscribing to this observable, we don't want to cause new events to fire if just refreshing the JWT.\r\n if (! this._isAuthenticatedSubject.value) {\r\n this._isAuthenticatedSubject.next(true);\r\n }\r\n } else {\r\n this._localStorageService.removeItem(this.authenticationProvider.authenticationTokenKey);\r\n this._isAuthenticatedSubject.next(false);\r\n }\r\n }\r\n\r\n proceedIfAuthenticated(): boolean {\r\n if (isDevMode()) {\r\n console.debug(\"AuthenticationService.proceedIfAuthenticated: \" + this._redirectUrl);\r\n }\r\n\r\n if (this._isAuthenticatedSubject.value) {\r\n //Login counts as user activity, too\r\n this.updateUserActivity();\r\n\r\n if (this._redirectUrl && this._redirectUrl && this._redirectUrl !== \"\") {\r\n this._router.navigateByUrl(this._redirectUrl);\r\n } else {\r\n this._router.navigate([\"\"]);\r\n }\r\n\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n validateToken(token: string): boolean {\r\n return (token && !this._jwtHelper.isTokenExpired(token));\r\n }\r\n\r\n subscribeToTokenRefresh(token: any): void {\r\n let exp = this._jwtHelper.getTokenExpirationDate(token);\r\n\r\n // Use a timer to periodically check timeouts\r\n this._refreshSubscription = interval(1000)\r\n .subscribe(() => {\r\n\r\n // If a tab is inactive we can't know if our timer is accurate\r\n // so when the interval hits check against timestamps\r\n if (this._isAuthenticatedSubject.value && Date.now() > this.getTimeoutStart()) {\r\n //Don't update the subject more than once! Doing so initializes more than one countdown timer!\r\n if (this._userIsAboutToTimeOut.getValue() !== true) {\r\n this._userIsAboutToTimeOut.next(true);\r\n }\r\n }\r\n\r\n // check for refresh token\r\n let msToExpiry = (exp.valueOf() - new Date().valueOf());\r\n\r\n // Refresh 60 seconds before expiry\r\n if (msToExpiry <= 60000) {\r\n this.refreshTokenIfUserIsActive();\r\n }\r\n });\r\n }\r\n\r\n unsubscribeFromTokenRefresh(): void {\r\n if (this._refreshSubscription && ! this._refreshSubscription.closed) {\r\n this._refreshSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n getMaxViewPermission(): \"view\" | \"viewident\" | \"viewlimited\" {\r\n return this.maxViewPermission.getValue();\r\n }\r\n\r\n getMaxViewPermissionSubject(): BehaviorSubject<\"view\" | \"viewident\" | \"viewlimited\"> {\r\n return this.maxViewPermission;\r\n }\r\n\r\n setMaxViewPermission(maxViewPermission: \"view\" | \"viewident\" | \"viewlimited\"): void {\r\n this._localStorageService.setItem(\"maxViewPermission\", maxViewPermission);\r\n this.maxViewPermission.next(maxViewPermission);\r\n }\r\n\r\n private refreshTokenIfUserIsActive(): void {\r\n //Only refresh if the user has been active\r\n if (this._lastUserInteraction && ((new Date().valueOf() - this._lastUserInteraction.valueOf()) <= (this._maxInactivityMinutes * 60 * 1000))) {\r\n this.requestAccessToken(false);\r\n }\r\n }\r\n\r\n private hasValidConfig(): void {\r\n if (this._tokenEndpoint == null && (this._serverUrl === null || this._logoutPath === null)) {\r\n throw new Error(\"BUG ALERT! Invalid AuthenticationService configuration. No valid configuration for authentication endpoint(s).\");\r\n }\r\n if (this._localStorageService === null || this.authenticationProvider.authenticationTokenKey === null) {\r\n throw new Error(\"BUG ALERT! Invalid AuthenticationService configuration. No valid configuration for local storage\");\r\n }\r\n }\r\n\r\n private handleError(error: any) : Observable<never> {\r\n let errMsg = (error.message) ? error.message : AuthenticationService.GENERIC_ERR_MSG;\r\n return throwError(errMsg);\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {Injectable, Inject} from \"@angular/core\";\r\nimport {CanActivate, Router, ActivatedRouteSnapshot, RouterStateSnapshot} from \"@angular/router\";\r\n\r\nimport {Observable} from \"rxjs\";\r\nimport {map} from \"rxjs/operators\";\r\n\r\nimport {AuthenticationService, AUTHENTICATION_ROUTE} from \"./authentication.service\";\r\n\r\n/**\r\n * A {@code CanActivate} implementation which makes its calculation based on the current authentication state.\r\n *\r\n * @since 1.0.0\r\n */\r\n@Injectable()\r\nexport class RouteGuardService implements CanActivate {\r\n\r\n constructor(private _authenticationService: AuthenticationService,\r\n private _router: Router,\r\n @Inject(AUTHENTICATION_ROUTE) private _authenticationRoute: string) {\r\n }\r\n\r\n /**\r\n * Determines whether or not a route can be activated, based on the current authentication state.\r\n *\r\n * @param route for activation to be determined on\r\n * @param state of the router snapshot\r\n * @returns {Observable<boolean>} describing the result of this calculation\r\n */\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {\r\n return this._authenticationService.isAuthenticated().pipe(map((authenticated) => {\r\n if (!authenticated) {\r\n // Store the attempted URL for redirecting\r\n this._authenticationService.redirectUrl = state.url;\r\n\r\n // Navigate to the login page\r\n this._router.navigate([this._authenticationRoute]);\r\n }\r\n\r\n return authenticated;\r\n }, (error: any) => {\r\n return false;\r\n }));\r\n };\r\n}\r\n\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {Component, ElementRef, ViewChild, Inject, Renderer2} from \"@angular/core\";\r\nimport {Location, PopStateEvent} from \"@angular/common\";\r\nimport {Router} from \"@angular/router\";\r\nimport {DomSanitizer} from \"@angular/platform-browser\";\r\n\r\nimport {interval, Subscription} from \"rxjs\";\r\nimport {first} from \"rxjs/operators\";\r\n\r\nimport {AuthenticationService, AUTHENTICATION_ROUTE} from \"./authentication.service\";\r\n\r\n@Component({\r\n selector: \"authentication-iframe\",\r\n template: `\r\n <div class=\"container\">\r\n <iframe #iframe class=\"frame\" [src]=\"url\" (load)=\"handleChanges()\"></iframe>\r\n <div *ngIf=\"_errorMsg\" class=\"alert-box\">\r\n <div class=\"alert alert-danger\">\r\n <h5 class=\"alert-heading\">Authentication Failed</h5>\r\n <span id=\"hci-login-error\" class=\"alert-text\">{{_errorMsg}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n \r\n :host {\r\n background-color: white;\r\n }\r\n \r\n .container {\r\n max-width: 100%;\r\n margin-top: 60px;\r\n padding-top: 15px;\r\n }\r\n\r\n .frame {\r\n width: 100%;\r\n height: 100%;\r\n border: 0px;\r\n }\r\n `],\r\n host: {class: \"outlet-row\"}\r\n})\r\nexport class AuthenticationComponent {\r\n\r\n public url;\r\n public _errorMsg: string;\r\n\r\n @ViewChild(\"iframe\", {static: true}) iframe : ElementRef;\r\n\r\n private resetSubscription: Subscription;\r\n private popstateSubscription: Subscription;\r\n\r\n constructor(private authenticationService: AuthenticationService,\r\n private domSanitizer : DomSanitizer,\r\n private router: Router,\r\n private location: Location,\r\n private renderer: Renderer2,\r\n @Inject(AUTHENTICATION_ROUTE) private authenticationRoute: string) {\r\n }\r\n\r\n ngOnInit() {\r\n /*\r\n * Fix back bug\r\n * Issue is that the browser will go back to the previous route. If it's guarded, the route guard will just load the login again\r\n * Eventually the browser gets to the /authenticate route and going back from there loads the iframe history and Shibboleth displays\r\n * an error relating to navigating back.\r\n */\r\n history.pushState(null, null, this.location.prepareExternalUrl(this.authenticationRoute));\r\n\r\n this.popstateSubscription = <Subscription> this.location.subscribe((value: PopStateEvent) => {\r\n //This is going to prevent back from working from the login component\r\n history.go(1);\r\n });\r\n\r\n this.beginAuthenticationProcess();\r\n }\r\n\r\n handleChanges(): void {\r\n if (!this.iframe.nativeElement.contentDocument) {\r\n return;\r\n }\r\n\r\n try {\r\n let element: HTMLElement = this.iframe.nativeElement.contentDocument.body;\r\n if (element.querySelector(\"pre\")) {\r\n element = element.querySelector(\"pre\");\r\n }\r\n\r\n this._errorMsg = null;\r\n var jsonText = element.innerText;\r\n\r\n var json = JSON.parse(jsonText);\r\n this.authenticationService.storeToken(json.auth_token);\r\n var authenticated = this.authenticationService.proceedIfAuthenticated();\r\n\r\n if (!authenticated) {\r\n this.resetSubscription.unsubscribe();\r\n this.beginAuthenticationProcess();\r\n }\r\n } catch (error) {\r\n if (this.iframe.nativeElement.contentDocument.title.toUpperCase() === \"ERROR\") {\r\n if (this.iframe.nativeElement.contentDocument.body.innerHTML.toUpperCase() === \"FORBIDDEN\") {\r\n this._errorMsg = \"You do not have permission to log into this application\";\r\n } else {\r\n this._errorMsg = null;\r\n }\r\n\r\n //A bit of a workaround for a WildFly issue. Success on Pac4j authentication, but failure on DB load of user put things in a weird state. Just logout, and redo the login.\r\n this.clearLoginAndRetry();\r\n }\r\n }\r\n\r\n // After the iframe loads, make the background transparent so we use the implementation's background and not the sso background.\r\n this.renderer.setStyle(this.iframe.nativeElement.contentDocument.body, \"background-color\", \"transparent\");\r\n }\r\n\r\n ngOnDestroy() {\r\n this.resetSubscription.unsubscribe();\r\n this.popstateSubscription.unsubscribe();\r\n }\r\n\r\n private clearLoginAndRetry(): void {\r\n this.resetSubscription.unsubscribe();\r\n this.authenticationService.clearLogin().subscribe(\r\n () => { this.beginAuthenticationProcess(); },\r\n (error) => { this.beginAuthenticationProcess(); }\r\n );\r\n }\r\n\r\n private beginAuthenticationProcess(): void {\r\n var tokenEndpoint = this.authenticationService.tokenLocation();\r\n\r\n if (tokenEndpoint !== \"\") {\r\n this.url = this.domSanitizer.bypassSecurityTrustResourceUrl(tokenEndpoint);\r\n }\r\n\r\n /**\r\n * If the user doesn't complete authentication before the IdP session times out, that will be a problem when they eventually\r\n * attampt to log in. It is likely that users will do this often when they log out or are timed out in the evening, leave\r\n * their browser open, then attempt to log back in in the morning. In order to work around this, this component will re-request\r\n * the token prior to IdP timeout, which will reset the process. This will happen 1 minute before idpInactivityMinutes\r\n **/\r\n this.resetSubscription = interval((this.authenticationService.idpInactivityMinutes - 1) * 60 * 1000)\r\n .pipe(first())\r\n .subscribe((value) => {\r\n this.beginAuthenticationProcess();\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {Component, OnInit} from \"@angular/core\";\r\nimport {AuthenticationService} from \"./authentication.service\";\r\nimport {UntypedFormBuilder, UntypedFormGroup, Validators} from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"hci-login-form\",\r\n template: `\r\n <div class=\"container\">\r\n <div class=\"login-box\" id=\"hci-login-form-box\">\r\n <div class=\"login-heading\" id=\"hci-login-form-heading\">\r\n <h3>Sign in</h3>\r\n </div>\r\n <div class=\"panel-body\">\r\n <form [formGroup]=\"_loginForm\" (ngSubmit)=\"login()\">\r\n <input formControlName=\"username\" class=\"form-control\" id=\"username\" name=\"username\" placeholder=\"Username\" type=\"text\">\r\n <input formControlName=\"password\" class=\"form-control\" id=\"password\" name=\"password\" type=\"password\" placeholder=\"Password\">\r\n \r\n <div *ngIf=\"_errorMsg\" class=\"alert-box\">\r\n <div class=\"alert alert-danger\">\r\n <h5 class=\"alert-heading\">Authentication Failed</h5>\r\n <span id=\"hci-login-error\" class=\"alert-text\">{{_errorMsg}}</span>\r\n </div>\r\n </div>\r\n \r\n <div class=\"btn-box\">\r\n <button class=\"btn btn-primary\" id=\"hci-login-form-submit-button\" type=\"submit\" [disabled]=\"!_loginForm.valid\">Login</button>\r\n </div>\r\n </form>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n styles: [`\r\n .container {\r\n max-width: 400px;\r\n margin-top: 20px;\r\n padding-top: 15px;\r\n }\r\n \r\n .login-box {\r\n border-radius: 10px;\r\n box-shadow: 0 0 2px #ccc;\r\n padding: 15px;\r\n }\r\n \r\n .login-box .login-heading h3 {\r\n line-height:1.5;\r\n margin: 0 0 10px\r\n }\r\n \r\n .login-box .form-control {\r\n padding: 10px;\r\n border: 1px solid #ccc;\r\n }\r\n \r\n .login-box input[type=\"password\"] {\r\n margin-bottom: 10px;\r\n border-top-left-radius: 0;\r\n border-top-right-radius: 0;\r\n }\r\n \r\n .login-box input[type=\"text\"] {\r\n margin-bottom: -1px;\r\n border-bottom-right-radius: 0;\r\n border-bottom-left-radius: 0;\r\n }\r\n \r\n .login-box .alert-box {\r\n margin: 10px 0 -5px 0\r\n }\r\n \r\n .login-box .alert-text {\r\n font-size: small;\r\n }\r\n \r\n .login-box .btn-box {\r\n margin: 10px 0 0px 0\r\n }\r\n `]\r\n})\r\nexport class DirectLoginComponent implements OnInit {\r\n public _loginForm: UntypedFormGroup;\r\n public _errorMsg: string;\r\n\r\n constructor(private _authenticationService: AuthenticationService, private _formBuilder: UntypedFormBuilder) {}\r\n\r\n /**\r\n * Initializes the authentication form.\r\n */\r\n ngOnInit(): void {\r\n this._loginForm = this._formBuilder.group({\r\n username: [\"\", Validators.required],\r\n password: [\"\", Validators.required]\r\n });\r\n }\r\n\r\n /**\r\n * A function to submit the login form the the {@link UserService}.\r\n */\r\n login() {\r\n this._authenticationService.login(this._loginForm.value.username, this._loginForm.value.password)\r\n .subscribe((res) => {\r\n if (res) {\r\n this._errorMsg = null;\r\n this._authenticationService.requestAccessToken(true);\r\n }\r\n }, (error: any) => {\r\n this._errorMsg = \"Please check your username and password.\";\r\n });\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {Component} from \"@angular/core\";\r\nimport {animate, state, style, transition, trigger} from \"@angular/animations\";\r\n\r\nimport {Observable, Subscription, timer} from \"rxjs\";\r\nimport {map, takeWhile} from \"rxjs/operators\";\r\n\r\nimport {AuthenticationService} from \"./authentication.service\";\r\n\r\n@Component({\r\n selector: \"timeout-notification\",\r\n template: `\r\n <div class=\"flyout-max\" [@openBacksplash]=\"openState\">\r\n <div class=\"modal-dialog\" [@openModal]=\"openState\" role=\"document\">\r\n <div class=\"modal-header\">\r\n <h4 class=\"modal-title\">Your Session Is About To Expire</h4>\r\n </div>\r\n <div class=\"modal-body\">\r\n <p>For your security, your session is about to automatically time out in the next <b>{{seconds | async}}</b> seconds. Would you like to stay signed in?</p>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <ng-container>\r\n <button id=\"updateBtn\" type=\"button\" class=\"btn btn-secondary\" (click)=\"click()\">Yes, Keep me signed in</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n `,\r\n animations: [\r\n trigger(\"openBacksplash\",\r\n [\r\n state(\"in\", style({\r\n \"display\": \"none\"\r\n })),\r\n state(\"hidden\", style({\r\n \"display\": \"none\"\r\n })),\r\n state(\"opened\", style({\r\n \"display\": \"inherit\"\r\n })),\r\n transition(\"hidden => opened\", animate(100)),\r\n transition(\"opened => hidden\", animate(200))\r\n ]\r\n ),\r\n trigger(\"openModal\",\r\n [\r\n state(\"in\", style({\r\n \"opacity\": \"0\",\r\n \"left\": \"-50vw\"\r\n })),\r\n state(\"hidden\", style({\r\n \"opacity\": \"0\",\r\n \"left\": \"-50vw\"\r\n })),\r\n state(\"opened\", style({\r\n \"opacity\": \"1\",\r\n \"left\": \"25vw\"\r\n })),\r\n transition(\"hidden => opened\", animate(500)),\r\n transition(\"opened => hidden\", animate(300))\r\n ]\r\n )\r\n ],\r\n styles: [`\r\n\r\n .flyout-max {\r\n position: fixed;\r\n z-index: 9999;\r\n top: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.4);\r\n width: 100vw;\r\n }\r\n \r\n .modal-dialog {\r\n position: fixed;\r\n max-width: 50vw;\r\n min-width: 50vw;\r\n left: -50vw;\r\n top: 25vw;\r\n margin: 0;\r\n background-color: white;\r\n border: black 1px solid;\r\n border-left: none;\r\n border-top-right-radius: 20px;\r\n border-bottom-right-radius: 20px;\r\n border-top-left-radius: 20px;\r\n border-bottom-left-radius: 20px;\r\n pointer-events: all;\r\n }\r\n \r\n .modal-body {\r\n width: 100%;\r\n display: inline-block;\r\n }\r\n \r\n .modal-body-left {\r\n display: inline-block;\r\n overflow-y: auto;\r\n overflow-x: hidden;\r\n min-height: 300px;\r\n max-height: 300px;\r\n }\r\n \r\n .modal-body-right {\r\n width: 70%;\r\n vertical-align: top;\r\n padding-left: 15px;\r\n border-left: black 1px solid;\r\n margin-left: 15px;\r\n display: inline-block;\r\n overflow-y: auto;\r\n min-height: 300px;\r\n max-height: 300px;\r\n }\r\n `]\r\n})\r\nexport class TimeoutNotificationComponent {\r\n public seconds: Observable<number>;\r\n public openState: string = \"hidden\";\r\n\r\n private subscription: Subscription;\r\n\r\n constructor(private authenticationService: AuthenticationService) {\r\n authenticationService.isAboutToTimeOut().subscribe((isAboutToTimeOut) => {\r\n\r\n if (isAboutToTimeOut) {\r\n this.openState = \"opened\";\r\n this.startCountdown();\r\n } else {\r\n this.openState = \"hidden\";\r\n //If something changed mid-timeout, cancel the timeout/logout.\r\n if (this.subscription != null && !this.subscription.closed) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n });\r\n }\r\n\r\n startCountdown(): void {\r\n this.seconds = timer(0, 1000)\r\n .pipe(\r\n map(() => {\r\n const elapsed: number = Math.round((Date.now() - this.authenticationService.getTimeoutStart()) / 1000);\r\n return this.authenticationService.userCountdownSeconds - elapsed;\r\n }),\r\n // The true argument emits the final value that completed the observable\r\n takeWhile((value) => value > 0, true),\r\n );\r\n\r\n this.subscription = this.seconds.subscribe((value) => {\r\n if (value < 1) {\r\n this.subscription.unsubscribe();\r\n this.authenticationService.logout(true);\r\n }\r\n });\r\n }\r\n\r\n click(): void {\r\n this.subscription.unsubscribe();\r\n this.authenticationService.updateUserActivity();\r\n }\r\n}\r\n","import {Injectable, Injector, isDevMode} from \"@angular/core\";\r\nimport {HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpHeaders, HttpParams} from \"@angular/common/http\";\r\n\r\nimport {Observable, throwError} from \"rxjs\";\r\nimport {catchError} from \"rxjs/operators\";\r\n\r\nimport {AuthenticationService} from \"./authentication.service\";\r\n\r\n@Injectable()\r\nexport class AuthorizationInterceptor implements HttpInterceptor {\r\n\r\n constructor(private injector: Injector) {}\r\n\r\n intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n if (isDevMode()) {\r\n console.debug(\"AuthorizationInterceptor.intercept\");\r\n }\r\n \r\n let authService: AuthenticationService = this.injector.get(AuthenticationService);\r\n \r\n //Don't want to include background token refreshes in considering the user 'active'\r\n if (req.url !== authService.tokenLocation()) {\r\n //Update user activity. Done here instead of the previous method using a subscription to a subject in AuthenticationProvider\r\n authService.updateUserActivity();\r\n }\r\n \r\n let headers: HttpHeaders = authService.getHeaders(req);\r\n let url: string = req.url;\r\n if (url.startsWith(\"/\")) {\r\n url = authService.getBaseUrl() + url;\r\n } else if (!url.startsWith(\"http\")) {\r\n if (authService.getContextRoot().length > 0) {\r\n url = authService.getBaseUrl() + \"/\" + authService.getContextRoot() + \"/\" + url;\r\n } else {\r\n url = authService.getBaseUrl() + \"/\" + url;\r\n }\r\n }\r\n\r\n let params: HttpParams = req.params;\r\n if (url.indexOf(\"/crud/\") > 0) {\r\n params = params.set(\"maxViewPermission\", authService.getMaxViewPermission());\r\n }\r\n\r\n let reqClone = req.clone({\r\n url: url,\r\n withCredentials: true,\r\n headers: headers,\r\n params: params\r\n });\r\n\r\n return next.handle(reqClone)\r\n .pipe(catchError((error) => {\r\n if (isDevMode()) {\r\n console.error(\"AuthorizationInterceptor.error\");\r\n console.error(error);\r\n }\r\n\r\n /**\r\n * If the token is not authenticated which angular does not know about, then a REST request to the backend will\r\n * return a 401. To duplicate this, open Core in two tabs. In one tab, logout, in the other, perform a request\r\n * that hits a protected resource.\r\n */\r\n if (error.status === 401) {\r\n authService.isAuthenticated().subscribe((authenticated) => {\r\n if (authenticated) {\r\n // If authenticated, then logout which will redirect.\r\n authService.logout(true);\r\n return throwError(error.message);\r\n } else {\r\n // Otherwise, for example, when the user first opens Core, 401s are expected.\r\n return throwError(error);\r\n }\r\n });\r\n }\r\n if (error.status === 403) {\r\n // TODO: Trigger notification for unauthorized.\r\n }\r\n return throwError(error);\r\n }));\r\n }\r\n}\r\n","/*\r\n * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary\r\n */\r\nimport {ModuleWithProviders, NgModule, Optional, SkipSelf} from \"@angular/core\";\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {ReactiveFormsModule, FormsModule} from \"@angular/forms\";\r\nimport {HTTP_INTERCEPTORS, HttpClientModule} from \"@angular/common/http\";\r\nimport {RouterModule} from \"@angular/router\";\r\n\r\nimport {CoolStorageModule} from \"@angular-cool/storage\";\r\nimport {JWT_OPTIONS, JwtHelperService, JwtInterceptor, JwtModule} from \"@auth0/angular-jwt\";\r\n\r\nimport {AuthenticationService} from \"./authentication.service\";\r\nimport {RouteGuardService} from \"./route-guard.service\";\r\nimport {AuthenticationComponent} from \"./authentication.component\";\r\nimport {DirectLoginComponent} from \"./directlogin.component\";\r\nimport {TimeoutNotificationComponent} from \"./timeout-notification.component\";\r\nimport {AuthorizationInterceptor} from \"./authorization.interceptor\";\r\nimport {AuthenticationProvider} from \"./authentication.provider\";\r\n\r\n/**\r\n * Provide a single auth service and interceptor for the implementing application. Also provide everything\r\n * from the angular-jwt library.\r\n *\r\n * @since 1.0.0\r\n */\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n HttpClientModule,\r\n //JwtModule,\r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n CoolStorageModule\r\n ],\r\n declarations: [\r\n AuthenticationComponent,\r\n DirectLoginComponent,\r\n TimeoutNotificationComponent\r\n ],\r\n exports: [\r\n AuthenticationComponent,\r\n DirectLoginComponent,\r\n TimeoutNotificationComponent\r\n ]\r\n})\r\nexport class AuthenticationModule {\r\n constructor(@Optional() @SkipSelf() parentModule: JwtModule) {\r\n if (parentModule) {\r\n throw new Error(\"AuthenticationModule is already loaded.\");\r\n }\r\n }\r\n static forRoot(): ModuleWithProviders<AuthenticationModule> {\r\n return {\r\n providers: [\r\n AuthenticationProvider,\r\n JwtHelperService,\r\n AuthenticationService,\r\n RouteGuardService,\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthorizationInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: JwtInterceptor,\r\n multi: true\r\n },\r\n {\r\n provide: JWT_OPTIONS,\r\n useClass: AuthenticationProvider\r\n }\r\n ],\r\n ngModule: AuthenticationModule\r\n }\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4","i1.AuthenticationService","i2","i3","i1"],"mappings":"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"}
@@ -1,14 +1,20 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, ɵɵngDeclareFactory, ɵɵFactoryTarget, ɵɵngDeclareInjectable, ɵɵngDeclareClassMetadata, Injectable, Inject, isDevMode, Optional, Renderer2, ɵɵngDeclareComponent, Component, ViewChild, Injector, ɵɵngDeclareNgModule, ɵɵngDeclareInjector, NgModule, SkipSelf } from '@angular/core';
3
- import { LocationStrategy, Location, NgIf, AsyncPipe, CommonModule } from '@angular/common';
4
- import { Validators, FormBuilder, ɵNgNoValidate, NgControlStatusGroup, FormGroupDirective, DefaultValueAccessor, NgControlStatus, FormControlName, FormsModule, ReactiveFormsModule } from '@angular/forms';
5
- import { HttpHeaders, HttpClient, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
6
- import { Router, RouterModule } from '@angular/router';
7
- import { CoolLocalStorage, CoolStorageModule } from '@angular-cool/storage';
8
- import { JwtHelperService, JwtInterceptor, JWT_OPTIONS, JwtModule } from '@auth0/angular-jwt';
2
+ import { InjectionToken, Injectable, Inject, isDevMode, Optional, Component, ViewChild, NgModule, SkipSelf } from '@angular/core';
3
+ import * as i4$1 from '@angular/common';
4
+ import { LocationStrategy, CommonModule } from '@angular/common';
5
+ import * as i2$2 from '@angular/forms';
6
+ import { Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
7
+ import * as i1$1 from '@angular/common/http';
8
+ import { HttpHeaders, HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';
9
+ import * as i2 from '@angular/router';
10
+ import { RouterModule } from '@angular/router';
11
+ import * as i1 from '@angular-cool/storage';
12
+ import { CoolStorageModule } from '@angular-cool/storage';
13
+ import * as i4 from '@auth0/angular-jwt';
14
+ import { JwtHelperService, JwtInterceptor, JWT_OPTIONS } from '@auth0/angular-jwt';
9
15
  import { BehaviorSubject, interval, throwError, timer } from 'rxjs';
10
16
  import { map, catchError, first, takeWhile } from 'rxjs/operators';
11
- import { DomSanitizer } from '@angular/platform-browser';
17
+ import * as i2$1 from '@angular/platform-browser';
12
18
  import { trigger, state, style, transition, animate } from '@angular/animations';
13
19
 
14
20
  let AUTHENTICATION_TOKEN_KEY = new InjectionToken("authentication_token_key");
@@ -34,11 +40,11 @@ class AuthenticationProvider {
34
40
  return this._localStorageService.getItem(this._authenticationTokenKey);
35
41
  }
36
42
  }
37
- AuthenticationProvider.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationProvider, deps: [{ token: CoolLocalStorage }, { token: AUTHENTICATION_TOKEN_KEY }], target: ɵɵFactoryTarget.Injectable });
38
- AuthenticationProvider.ɵprov = ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationProvider });
39
- ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationProvider, decorators: [{
43
+ AuthenticationProvider.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationProvider, deps: [{ token: i1.CoolLocalStorage }, { token: AUTHENTICATION_TOKEN_KEY }], target: i0.ɵɵFactoryTarget.Injectable });
44
+ AuthenticationProvider.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationProvider });
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationProvider, decorators: [{
40
46
  type: Injectable
41
- }], ctorParameters: function () { return [{ type: CoolLocalStorage }, { type: undefined, decorators: [{
47
+ }], ctorParameters: function () { return [{ type: i1.CoolLocalStorage }, { type: undefined, decorators: [{
42
48
  type: Inject,
43
49
  args: [AUTHENTICATION_TOKEN_KEY]
44
50
  }] }]; } });
@@ -375,11 +381,11 @@ AuthenticationService.SEC_GOV_CLASS_HEADER = "SecurityGovernorClass";
375
381
  AuthenticationService.SEC_GOV_ID_HEADER = "SecurityGovernorId";
376
382
  AuthenticationService.DEIDENT_HEADER = "DeidentifiedContext";
377
383
  AuthenticationService.LIMITED_HEADER = "LimitedContext";
378
- AuthenticationService.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationService, deps: [{ token: HttpClient }, { token: Router }, { token: CoolLocalStorage }, { token: JwtHelperService }, { token: AuthenticationProvider }, { token: AUTHENTICATION_ROUTE }, { token: AUTHENTICATION_LOGOUT_PATH }, { token: AUTHENTICATION_TOKEN_ENDPOINT }, { token: AUTHENTICATION_SERVER_URL, optional: true }, { token: AUTHENTICATION_DIRECT_ENDPOINT, optional: true }, { token: AUTHENTICATION_MAX_INACTIVITY_MINUTES, optional: true }, { token: AUTHENTICATION_USER_COUNTDOWN_SECONDS, optional: true }, { token: AUTHENTICATION_IDP_INACTIVITY_MINUTES, optional: true }, { token: LocationStrategy, optional: true }], target: ɵɵFactoryTarget.Injectable });
379
- AuthenticationService.ɵprov = ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationService });
380
- ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationService, decorators: [{
384
+ AuthenticationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationService, deps: [{ token: i1$1.HttpClient }, { token: i2.Router }, { token: i1.CoolLocalStorage }, { token: i4.JwtHelperService }, { token: AuthenticationProvider }, { token: AUTHENTICATION_ROUTE }, { token: AUTHENTICATION_LOGOUT_PATH }, { token: AUTHENTICATION_TOKEN_ENDPOINT }, { token: AUTHENTICATION_SERVER_URL, optional: true }, { token: AUTHENTICATION_DIRECT_ENDPOINT, optional: true }, { token: AUTHENTICATION_MAX_INACTIVITY_MINUTES, optional: true }, { token: AUTHENTICATION_USER_COUNTDOWN_SECONDS, optional: true }, { token: AUTHENTICATION_IDP_INACTIVITY_MINUTES, optional: true }, { token: LocationStrategy, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
385
+ AuthenticationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationService });
386
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationService, decorators: [{
381
387
  type: Injectable
382
- }], ctorParameters: function () { return [{ type: HttpClient }, { type: Router }, { type: CoolLocalStorage }, { type: JwtHelperService }, { type: AuthenticationProvider }, { type: undefined, decorators: [{
388
+ }], ctorParameters: function () { return [{ type: i1$1.HttpClient }, { type: i2.Router }, { type: i1.CoolLocalStorage }, { type: i4.JwtHelperService }, { type: AuthenticationProvider }, { type: undefined, decorators: [{
383
389
  type: Inject,
384
390
  args: [AUTHENTICATION_ROUTE]
385
391
  }] }, { type: undefined, decorators: [{
@@ -413,7 +419,7 @@ AuthenticationService.ɵprov = ɵɵngDeclareInjectable({ minVersion: "12.0.0", v
413
419
  }, {
414
420
  type: Inject,
415
421
  args: [AUTHENTICATION_IDP_INACTIVITY_MINUTES]
416
- }] }, { type: LocationStrategy, decorators: [{
422
+ }] }, { type: i4$1.LocationStrategy, decorators: [{
417
423
  type: Optional
418
424
  }, {
419
425
  type: Inject,
@@ -456,11 +462,11 @@ class RouteGuardService {
456
462
  }
457
463
  ;
458
464
  }
459
- RouteGuardService.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RouteGuardService, deps: [{ token: AuthenticationService }, { token: Router }, { token: AUTHENTICATION_ROUTE }], target: ɵɵFactoryTarget.Injectable });
460
- RouteGuardService.ɵprov = ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RouteGuardService });
461
- ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: RouteGuardService, decorators: [{
465
+ RouteGuardService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RouteGuardService, deps: [{ token: AuthenticationService }, { token: i2.Router }, { token: AUTHENTICATION_ROUTE }], target: i0.ɵɵFactoryTarget.Injectable });
466
+ RouteGuardService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RouteGuardService });
467
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RouteGuardService, decorators: [{
462
468
  type: Injectable
463
- }], ctorParameters: function () { return [{ type: AuthenticationService }, { type: Router }, { type: undefined, decorators: [{
469
+ }], ctorParameters: function () { return [{ type: AuthenticationService }, { type: i2.Router }, { type: undefined, decorators: [{
464
470
  type: Inject,
465
471
  args: [AUTHENTICATION_ROUTE]
466
472
  }] }]; } });
@@ -551,8 +557,8 @@ class AuthenticationComponent {
551
557
  });
552
558
  }
553
559
  }
554
- AuthenticationComponent.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationComponent, deps: [{ token: AuthenticationService }, { token: DomSanitizer }, { token: Router }, { token: Location }, { token: Renderer2 }, { token: AUTHENTICATION_ROUTE }], target: ɵɵFactoryTarget.Component });
555
- AuthenticationComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: AuthenticationComponent, selector: "authentication-iframe", host: { classAttribute: "outlet-row" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], ngImport: i0, template: `
560
+ AuthenticationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationComponent, deps: [{ token: AuthenticationService }, { token: i2$1.DomSanitizer }, { token: i2.Router }, { token: i4$1.Location }, { token: i0.Renderer2 }, { token: AUTHENTICATION_ROUTE }], target: i0.ɵɵFactoryTarget.Component });
561
+ AuthenticationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: AuthenticationComponent, selector: "authentication-iframe", host: { classAttribute: "outlet-row" }, viewQueries: [{ propertyName: "iframe", first: true, predicate: ["iframe"], descendants: true, static: true }], ngImport: i0, template: `
556
562
  <div class="container">
557
563
  <iframe #iframe class="frame" [src]="url" (load)="handleChanges()"></iframe>
558
564
  <div *ngIf="_errorMsg" class="alert-box">
@@ -562,12 +568,10 @@ AuthenticationComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", v
562
568
  </div>
563
569
  </div>
564
570
  </div>
565
- `, isInline: true, styles: ["\n \n :host {\n background-color: white;\n }\n \n .container {\n max-width: 100%;\n margin-top: 60px;\n padding-top: 15px;\n }\n\n .frame {\n width: 100%;\n height: 100%;\n border: 0px;\n }\n "], directives: [{ type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
566
- ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationComponent, decorators: [{
571
+ `, isInline: true, styles: [":host{background-color:#fff}.container{max-width:100%;margin-top:60px;padding-top:15px}.frame{width:100%;height:100%;border:0px}\n"], dependencies: [{ kind: "directive", type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
572
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationComponent, decorators: [{
567
573
  type: Component,
568
- args: [{
569
- selector: "authentication-iframe",
570
- template: `
574
+ args: [{ selector: "authentication-iframe", template: `
571
575
  <div class="container">
572
576
  <iframe #iframe class="frame" [src]="url" (load)="handleChanges()"></iframe>
573
577
  <div *ngIf="_errorMsg" class="alert-box">
@@ -577,28 +581,8 @@ AuthenticationComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", v
577
581
  </div>
578
582
  </div>
579
583
  </div>
580
- `,
581
- styles: [`
582
-
583
- :host {
584
- background-color: white;
585
- }
586
-
587
- .container {
588
- max-width: 100%;
589
- margin-top: 60px;
590
- padding-top: 15px;
591
- }
592
-
593
- .frame {
594
- width: 100%;
595
- height: 100%;
596
- border: 0px;
597
- }
598
- `],
599
- host: { class: "outlet-row" }
600
- }]
601
- }], ctorParameters: function () { return [{ type: AuthenticationService }, { type: DomSanitizer }, { type: Router }, { type: Location }, { type: Renderer2 }, { type: undefined, decorators: [{
584
+ `, host: { class: "outlet-row" }, styles: [":host{background-color:#fff}.container{max-width:100%;margin-top:60px;padding-top:15px}.frame{width:100%;height:100%;border:0px}\n"] }]
585
+ }], ctorParameters: function () { return [{ type: AuthenticationService }, { type: i2$1.DomSanitizer }, { type: i2.Router }, { type: i4$1.Location }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
602
586
  type: Inject,
603
587
  args: [AUTHENTICATION_ROUTE]
604
588
  }] }]; }, propDecorators: { iframe: [{
@@ -638,8 +622,8 @@ class DirectLoginComponent {
638
622
  });
639
623
  }
640
624
  }
641
- DirectLoginComponent.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DirectLoginComponent, deps: [{ token: AuthenticationService }, { token: FormBuilder }], target: ɵɵFactoryTarget.Component });
642
- DirectLoginComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: DirectLoginComponent, selector: "hci-login-form", ngImport: i0, template: `
625
+ DirectLoginComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DirectLoginComponent, deps: [{ token: AuthenticationService }, { token: i2$2.UntypedFormBuilder }], target: i0.ɵɵFactoryTarget.Component });
626
+ DirectLoginComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: DirectLoginComponent, selector: "hci-login-form", ngImport: i0, template: `
643
627
  <div class="container">
644
628
  <div class="login-box" id="hci-login-form-box">
645
629
  <div class="login-heading" id="hci-login-form-heading">
@@ -664,12 +648,10 @@ DirectLoginComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
664
648
  </div>
665
649
  </div>
666
650
  </div>
667
- `, isInline: true, styles: ["\n .container {\n max-width: 400px;\n margin-top: 20px;\n padding-top: 15px;\n }\n \n .login-box {\n border-radius: 10px;\n box-shadow: 0 0 2px #ccc;\n padding: 15px;\n }\n \n .login-box .login-heading h3 {\n line-height:1.5;\n margin: 0 0 10px\n }\n \n .login-box .form-control {\n padding: 10px;\n border: 1px solid #ccc;\n }\n \n .login-box input[type=\"password\"] {\n margin-bottom: 10px;\n border-top-left-radius: 0;\n border-top-right-radius: 0;\n }\n \n .login-box input[type=\"text\"] {\n margin-bottom: -1px;\n border-bottom-right-radius: 0;\n border-bottom-left-radius: 0;\n }\n \n .login-box .alert-box {\n margin: 10px 0 -5px 0\n }\n \n .login-box .alert-text {\n font-size: small;\n }\n \n .login-box .btn-box {\n margin: 10px 0 0px 0\n }\n "], directives: [{ type: ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { type: NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: FormControlName, selector: "[formControlName]", inputs: ["disabled", "formControlName", "ngModel"], outputs: ["ngModelChange"] }, { type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
668
- ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: DirectLoginComponent, decorators: [{
651
+ `, isInline: true, styles: [".container{max-width:400px;margin-top:20px;padding-top:15px}.login-box{border-radius:10px;box-shadow:0 0 2px #ccc;padding:15px}.login-box .login-heading h3{line-height:1.5;margin:0 0 10px}.login-box .form-control{padding:10px;border:1px solid #ccc}.login-box input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}.login-box input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.login-box .alert-box{margin:10px 0 -5px}.login-box .alert-text{font-size:small}.login-box .btn-box{margin:10px 0 0}\n"], dependencies: [{ kind: "directive", type: i4$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2$2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2$2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2$2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2$2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2$2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
652
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: DirectLoginComponent, decorators: [{
669
653
  type: Component,
670
- args: [{
671
- selector: "hci-login-form",
672
- template: `
654
+ args: [{ selector: "hci-login-form", template: `
673
655
  <div class="container">
674
656
  <div class="login-box" id="hci-login-form-box">
675
657
  <div class="login-heading" id="hci-login-form-heading">
@@ -694,56 +676,8 @@ DirectLoginComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", vers
694
676
  </div>
695
677
  </div>
696
678
  </div>
697
- `,
698
- styles: [`
699
- .container {
700
- max-width: 400px;
701
- margin-top: 20px;
702
- padding-top: 15px;
703
- }
704
-
705
- .login-box {
706
- border-radius: 10px;
707
- box-shadow: 0 0 2px #ccc;
708
- padding: 15px;
709
- }
710
-
711
- .login-box .login-heading h3 {
712
- line-height:1.5;
713
- margin: 0 0 10px
714
- }
715
-
716
- .login-box .form-control {
717
- padding: 10px;
718
- border: 1px solid #ccc;
719
- }
720
-
721
- .login-box input[type="password"] {
722
- margin-bottom: 10px;
723
- border-top-left-radius: 0;
724
- border-top-right-radius: 0;
725
- }
726
-
727
- .login-box input[type="text"] {
728
- margin-bottom: -1px;
729
- border-bottom-right-radius: 0;
730
- border-bottom-left-radius: 0;
731
- }
732
-
733
- .login-box .alert-box {
734
- margin: 10px 0 -5px 0
735
- }
736
-
737
- .login-box .alert-text {
738
- font-size: small;
739
- }
740
-
741
- .login-box .btn-box {
742
- margin: 10px 0 0px 0
743
- }
744
- `]
745
- }]
746
- }], ctorParameters: function () { return [{ type: AuthenticationService }, { type: FormBuilder }]; } });
679
+ `, styles: [".container{max-width:400px;margin-top:20px;padding-top:15px}.login-box{border-radius:10px;box-shadow:0 0 2px #ccc;padding:15px}.login-box .login-heading h3{line-height:1.5;margin:0 0 10px}.login-box .form-control{padding:10px;border:1px solid #ccc}.login-box input[type=password]{margin-bottom:10px;border-top-left-radius:0;border-top-right-radius:0}.login-box input[type=text]{margin-bottom:-1px;border-bottom-right-radius:0;border-bottom-left-radius:0}.login-box .alert-box{margin:10px 0 -5px}.login-box .alert-text{font-size:small}.login-box .btn-box{margin:10px 0 0}\n"] }]
680
+ }], ctorParameters: function () { return [{ type: AuthenticationService }, { type: i2$2.UntypedFormBuilder }]; } });
747
681
 
748
682
  /*
749
683
  * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary
@@ -786,8 +720,8 @@ class TimeoutNotificationComponent {
786
720
  this.authenticationService.updateUserActivity();
787
721
  }
788
722
  }
789
- TimeoutNotificationComponent.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimeoutNotificationComponent, deps: [{ token: AuthenticationService }], target: ɵɵFactoryTarget.Component });
790
- TimeoutNotificationComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: TimeoutNotificationComponent, selector: "timeout-notification", ngImport: i0, template: `
723
+ TimeoutNotificationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TimeoutNotificationComponent, deps: [{ token: AuthenticationService }], target: i0.ɵɵFactoryTarget.Component });
724
+ TimeoutNotificationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: TimeoutNotificationComponent, selector: "timeout-notification", ngImport: i0, template: `
791
725
  <div class="flyout-max" [@openBacksplash]="openState">
792
726
  <div class="modal-dialog" [@openModal]="openState" role="document">
793
727
  <div class="modal-header">
@@ -803,7 +737,7 @@ TimeoutNotificationComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.
803
737
  </div>
804
738
  </div>
805
739
  </div>
806
- `, isInline: true, styles: ["\n\n .flyout-max {\n position: fixed;\n z-index: 9999;\n top: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.4);\n width: 100vw;\n }\n \n .modal-dialog {\n position: fixed;\n max-width: 50vw;\n min-width: 50vw;\n left: -50vw;\n top: 25vw;\n margin: 0;\n background-color: white;\n border: black 1px solid;\n border-left: none;\n border-top-right-radius: 20px;\n border-bottom-right-radius: 20px;\n border-top-left-radius: 20px;\n border-bottom-left-radius: 20px;\n pointer-events: all;\n }\n \n .modal-body {\n width: 100%;\n display: inline-block;\n }\n \n .modal-body-left {\n display: inline-block;\n overflow-y: auto;\n overflow-x: hidden;\n min-height: 300px;\n max-height: 300px;\n }\n \n .modal-body-right {\n width: 70%;\n vertical-align: top;\n padding-left: 15px;\n border-left: black 1px solid;\n margin-left: 15px;\n display: inline-block;\n overflow-y: auto;\n min-height: 300px;\n max-height: 300px;\n }\n "], pipes: { "async": AsyncPipe }, animations: [
740
+ `, isInline: true, styles: [".flyout-max{position:fixed;z-index:9999;top:0;bottom:0;background-color:#0006;width:100vw}.modal-dialog{position:fixed;max-width:50vw;min-width:50vw;left:-50vw;top:25vw;margin:0;background-color:#fff;border:black 1px solid;border-left:none;border-radius:20px;pointer-events:all}.modal-body{width:100%;display:inline-block}.modal-body-left{display:inline-block;overflow-y:auto;overflow-x:hidden;min-height:300px;max-height:300px}.modal-body-right{width:70%;vertical-align:top;padding-left:15px;border-left:black 1px solid;margin-left:15px;display:inline-block;overflow-y:auto;min-height:300px;max-height:300px}\n"], dependencies: [{ kind: "pipe", type: i4$1.AsyncPipe, name: "async" }], animations: [
807
741
  trigger("openBacksplash", [
808
742
  state("in", style({
809
743
  "display": "none"
@@ -834,11 +768,9 @@ TimeoutNotificationComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.
834
768
  transition("opened => hidden", animate(300))
835
769
  ])
836
770
  ] });
837
- ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: TimeoutNotificationComponent, decorators: [{
771
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: TimeoutNotificationComponent, decorators: [{
838
772
  type: Component,
839
- args: [{
840
- selector: "timeout-notification",
841
- template: `
773
+ args: [{ selector: "timeout-notification", template: `
842
774
  <div class="flyout-max" [@openBacksplash]="openState">
843
775
  <div class="modal-dialog" [@openModal]="openState" role="document">
844
776
  <div class="modal-header">
@@ -854,8 +786,7 @@ TimeoutNotificationComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.
854
786
  </div>
855
787
  </div>
856
788
  </div>
857
- `,
858
- animations: [
789
+ `, animations: [
859
790
  trigger("openBacksplash", [
860
791
  state("in", style({
861
792
  "display": "none"
@@ -885,61 +816,7 @@ TimeoutNotificationComponent.ɵcmp = ɵɵngDeclareComponent({ minVersion: "12.0.
885
816
  transition("hidden => opened", animate(500)),
886
817
  transition("opened => hidden", animate(300))
887
818
  ])
888
- ],
889
- styles: [`
890
-
891
- .flyout-max {
892
- position: fixed;
893
- z-index: 9999;
894
- top: 0;
895
- bottom: 0;
896
- background-color: rgba(0, 0, 0, 0.4);
897
- width: 100vw;
898
- }
899
-
900
- .modal-dialog {
901
- position: fixed;
902
- max-width: 50vw;
903
- min-width: 50vw;
904
- left: -50vw;
905
- top: 25vw;
906
- margin: 0;
907
- background-color: white;
908
- border: black 1px solid;
909
- border-left: none;
910
- border-top-right-radius: 20px;
911
- border-bottom-right-radius: 20px;
912
- border-top-left-radius: 20px;
913
- border-bottom-left-radius: 20px;
914
- pointer-events: all;
915
- }
916
-
917
- .modal-body {
918
- width: 100%;
919
- display: inline-block;
920
- }
921
-
922
- .modal-body-left {
923
- display: inline-block;
924
- overflow-y: auto;
925
- overflow-x: hidden;
926
- min-height: 300px;
927
- max-height: 300px;
928
- }
929
-
930
- .modal-body-right {
931
- width: 70%;
932
- vertical-align: top;
933
- padding-left: 15px;
934
- border-left: black 1px solid;
935
- margin-left: 15px;
936
- display: inline-block;
937
- overflow-y: auto;
938
- min-height: 300px;
939
- max-height: 300px;
940
- }
941
- `]
942
- }]
819
+ ], styles: [".flyout-max{position:fixed;z-index:9999;top:0;bottom:0;background-color:#0006;width:100vw}.modal-dialog{position:fixed;max-width:50vw;min-width:50vw;left:-50vw;top:25vw;margin:0;background-color:#fff;border:black 1px solid;border-left:none;border-radius:20px;pointer-events:all}.modal-body{width:100%;display:inline-block}.modal-body-left{display:inline-block;overflow-y:auto;overflow-x:hidden;min-height:300px;max-height:300px}.modal-body-right{width:70%;vertical-align:top;padding-left:15px;border-left:black 1px solid;margin-left:15px;display:inline-block;overflow-y:auto;min-height:300px;max-height:300px}\n"] }]
943
820
  }], ctorParameters: function () { return [{ type: AuthenticationService }]; } });
944
821
 
945
822
  class AuthorizationInterceptor {
@@ -1010,11 +887,11 @@ class AuthorizationInterceptor {
1010
887
  }));
1011
888
  }
1012
889
  }
1013
- AuthorizationInterceptor.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthorizationInterceptor, deps: [{ token: Injector }], target: ɵɵFactoryTarget.Injectable });
1014
- AuthorizationInterceptor.ɵprov = ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthorizationInterceptor });
1015
- ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthorizationInterceptor, decorators: [{
890
+ AuthorizationInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthorizationInterceptor, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
891
+ AuthorizationInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthorizationInterceptor });
892
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthorizationInterceptor, decorators: [{
1016
893
  type: Injectable
1017
- }], ctorParameters: function () { return [{ type: Injector }]; } });
894
+ }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
1018
895
 
1019
896
  /*
1020
897
  * Copyright (c) 2016 Huntsman Cancer Institute at the University of Utah, Confidential and Proprietary
@@ -1057,8 +934,8 @@ class AuthenticationModule {
1057
934
  };
1058
935
  }
1059
936
  }
1060
- AuthenticationModule.ɵfac = ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationModule, deps: [{ token: JwtModule, optional: true, skipSelf: true }], target: ɵɵFactoryTarget.NgModule });
1061
- AuthenticationModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationModule, declarations: [AuthenticationComponent,
937
+ AuthenticationModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationModule, deps: [{ token: i4.JwtModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });
938
+ AuthenticationModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationModule, declarations: [AuthenticationComponent,
1062
939
  DirectLoginComponent,
1063
940
  TimeoutNotificationComponent], imports: [CommonModule,
1064
941
  HttpClientModule,
@@ -1069,16 +946,14 @@ AuthenticationModule.ɵmod = ɵɵngDeclareNgModule({ minVersion: "12.0.0", versi
1069
946
  CoolStorageModule], exports: [AuthenticationComponent,
1070
947
  DirectLoginComponent,
1071
948
  TimeoutNotificationComponent] });
1072
- AuthenticationModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationModule, imports: [[
1073
- CommonModule,
1074
- HttpClientModule,
1075
- //JwtModule,
1076
- RouterModule,
1077
- FormsModule,
1078
- ReactiveFormsModule,
1079
- CoolStorageModule
1080
- ]] });
1081
- ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AuthenticationModule, decorators: [{
949
+ AuthenticationModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationModule, imports: [CommonModule,
950
+ HttpClientModule,
951
+ //JwtModule,
952
+ RouterModule,
953
+ FormsModule,
954
+ ReactiveFormsModule,
955
+ CoolStorageModule] });
956
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: AuthenticationModule, decorators: [{
1082
957
  type: NgModule,
1083
958
  args: [{
1084
959
  imports: [
@@ -1101,7 +976,7 @@ AuthenticationModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
1101
976
  TimeoutNotificationComponent
1102
977
  ]
1103
978
  }]
1104
- }], ctorParameters: function () { return [{ type: JwtModule, decorators: [{
979
+ }], ctorParameters: function () { return [{ type: i4.JwtModule, decorators: [{
1105
980
  type: Optional
1106
981
  }, {
1107
982
  type: SkipSelf
@@ -1112,4 +987,4 @@ AuthenticationModule.ɵinj = ɵɵngDeclareInjector({ minVersion: "12.0.0", versi
1112
987
  */
1113
988
 
1114
989
  export { AUTHENTICATION_DIRECT_ENDPOINT, AUTHENTICATION_IDP_INACTIVITY_MINUTES, AUTHENTICATION_LOGOUT_PATH, AUTHENTICATION_MAX_INACTIVITY_MINUTES, AUTHENTICATION_ROUTE, AUTHENTICATION_SERVER_URL, AUTHENTICATION_TOKEN_ENDPOINT, AUTHENTICATION_TOKEN_KEY, AUTHENTICATION_USER_COUNTDOWN_SECONDS, AuthenticationComponent, AuthenticationModule, AuthenticationService, AuthorizationInterceptor, DirectLoginComponent, RouteGuardService, TimeoutNotificationComponent };
1115
- //# sourceMappingURL=huntsman-cancer-institute-authentication.js.map
990
+ //# sourceMappingURL=huntsman-cancer-institute-authentication.mjs.map