{ "version": 3, "sources": ["src/app/core/guard/auth.guard.ts", "src/app/core/guard/page.guard.ts", "src/app/core/guard/index.ts"], "sourcesContent": ["// Angular\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\r\n// Rxjs\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { iif, Observable, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n// Caloudi\r\nimport { AuthService } from '@core/service/api';\r\nimport { AuthenticationService } from '@core/service/config';\r\n// Store\r\nimport { AutoLoginAction, TokenExpiredAction } from '@Actions';\r\nimport { Store } from '@ngrx/store';\r\nimport { AppState } from '@Reducers';\r\n// Interface\r\nimport { AuthUser } from '@core/model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard implements CanActivate {\r\n constructor(\r\n private readonly logger: NGXLogger,\r\n private readonly store: Store,\r\n private readonly router: Router,\r\n private readonly authenticationService: AuthenticationService,\r\n private readonly authService: AuthService\r\n ) { }\r\n\r\n public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable {\r\n const paramKeys = route.queryParamMap.keys;\r\n const encUserToken = route.queryParamMap.get('encUserToken');\r\n this.logger.trace('authGuard:', [route, state, paramKeys, route.queryParamMap, encUserToken]);\r\n\r\n return iif(\r\n // Condition\r\n () => encUserToken !== null,\r\n\r\n // True Result\r\n this.authService.autoLogin(encUserToken).pipe(\r\n map(authUser => {\r\n this.logger.debug('auto login', [authUser, this.router]);\r\n this.store.dispatch(AutoLoginAction({ authUser: { ...authUser } }));\r\n // return true;\r\n return !!authUser;\r\n }),\r\n catchError((err: HttpErrorResponse) => {\r\n this.logger.debug('err', err);\r\n // if (!err.ok) history.back();\r\n if (!err.ok) this.router.navigate(['/login']);\r\n return of(!!err.ok);\r\n })\r\n ),\r\n\r\n // False Result\r\n of(false).pipe(\r\n map(() => {\r\n const currentRoute = state.url;\r\n this.logger.trace('currentRoute', currentRoute);\r\n const currentUser: AuthUser = this.authenticationService.currentUser.value;\r\n this.logger.trace('auth guard currentUser:', [currentUser]);\r\n if (currentUser?.accessToken) {\r\n let { expireDuration } = this.authenticationService.getTokenDuration();\r\n if (expireDuration < 0) {\r\n this.store.dispatch(TokenExpiredAction({ authUser: currentUser }));\r\n return false;\r\n }\r\n // Authorized so return true\r\n return true;\r\n } else {\r\n sessionStorage.setItem('loginReturnUrl', state.url);\r\n }\r\n this.logger.trace('AuthGuard to login page');\r\n // Not logged in so redirect to login page with the return url\r\n this.router.navigate(['/login']);\r\n return false;\r\n }),\r\n catchError((err, cau) => {\r\n if (err) {\r\n console.error(err);\r\n return of(false);\r\n } else return cau;\r\n })\r\n )\r\n );\r\n }\r\n}\r\n", "// Angular\nimport { Injectable } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivate, Router, RouterStateSnapshot } from '@angular/router';\n// Rxjs\nimport { BehaviorSubject } from 'rxjs';\n// Ngrx plugin\nimport { Store } from '@ngrx/store';\nimport { NGXLogger } from 'ngx-logger';\n// Caloudi\nimport { LayoutService } from '@base/service/layout';\nimport { CollectionUtil, CommonUtil, MenuUtil } from '../util';\n// Store\nimport { AppState } from '@Reducers';\nimport { getBreadcrumbs, getTabMenuFlatBreadcrumbs } from '@Selectors';\n// Interface\nimport { LayoutType } from '@base/model';\nimport { Breadcrumb } from '../model/breadcrumb';\n\n@Injectable({ providedIn: 'root' })\nexport class PageGuard implements CanActivate {\n private readonly breadcrumbs$: BehaviorSubject;\n private readonly tabMenuBreadcrumbs$: BehaviorSubject;\n\n constructor(\n private readonly logger: NGXLogger,\n private readonly router: Router,\n private readonly store: Store,\n private readonly layoutService: LayoutService\n ) {\n this.breadcrumbs$ = CommonUtil.observable2BehaviorSub(this.store.select(getBreadcrumbs));\n this.tabMenuBreadcrumbs$ = CommonUtil.observable2BehaviorSub(this.store.select(getTabMenuFlatBreadcrumbs));\n }\n\n public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {\n this.logger.trace('PageGuard stateUrl:', [\n route,\n state,\n this.breadcrumbs$,\n this.tabMenuBreadcrumbs$,\n MenuUtil.isRouterLink(this.breadcrumbs$.value, state.url),\n ]);\n\n /**\n * LayoutTypes: 0 (Legacy)\n */\n if (this.layoutService.config.layoutType === LayoutType.LEGACY) {\n if (\n CollectionUtil.isNotEmpty(this.breadcrumbs$.value) &&\n !MenuUtil.isRouterLink(this.breadcrumbs$.value, state.url)\n ) {\n this.logger.warn('accessdenied:', [\n route,\n state,\n this.breadcrumbs$.value,\n this.layoutService.config.layoutType,\n ]);\n this.router.navigate(['/accessdenied']);\n }\n this.logger.trace('PageGuard Check OK');\n return true;\n } else if (this.layoutService.config.layoutType === LayoutType.TABMENU) {\n /**\n * LayoutTypes: 1 (Tab Menu)\n */\n this.logger.trace('LayoutTypes1:', [route, state]);\n if (\n CollectionUtil.isNotEmpty(this.tabMenuBreadcrumbs$.value) &&\n !this.tabMenuBreadcrumbs$.value.some(tab => new RegExp(tab).test(state.url))\n ) {\n this.logger.warn('accessdenied:', [\n route,\n state,\n this.tabMenuBreadcrumbs$.value,\n this.layoutService.config.layoutType,\n ]);\n this.router.navigate(['/accessdenied']);\n }\n this.logger.trace('PageGuard Check OK');\n return true;\n } else {\n /**\n * Future LayoutTypes\n */\n this.router.navigate(['/accessdenied']);\n return true;\n }\n }\n}\n", "export * from './auth.guard';\nexport * from './page.guard';\n"], "mappings": "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", "names": [] }