{ "version": 3, "sources": ["src/app/language.guard.ts", "src/app/app.routes.ts"], "sourcesContent": ["import { Injectable } from \"@angular/core\";\r\nimport { ActivatedRouteSnapshot, CanActivate, Params, RedirectCommand, RouterStateSnapshot, UrlSerializer } from \"@angular/router\";\r\nimport { LocaleService } from \"./core/locale/locale.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class LanguageGuard implements CanActivate {\r\n constructor(\r\n private localeService: LocaleService,\r\n private urlSerializer: UrlSerializer,\r\n ) { }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const lang = route.params['lang']\r\n\r\n // check language and optionally change the language\r\n const culture = this.localeService.supported.find(s => s.language === lang)\r\n if (culture) {\r\n if (culture.language !== this.localeService.currentLang())\r\n this.localeService.setCultureAsync(culture.culture)\r\n\r\n return true\r\n }\r\n\r\n // Redirect /Raum/Tenant to url without /Raum\r\n if (route.params['catalog'] === 'Raum') {\r\n const urlTree = this.urlSerializer.parse(`/${route.params['lang']}/${this.localeService.currentLang()}`)\r\n urlTree.queryParams = route.queryParams\r\n return new RedirectCommand(urlTree)\r\n }\r\n\r\n // Redirect URLs like /Tenant/Warenkorb to /Tenant/de/cart\r\n switch (lang.toLowerCase()) {\r\n case 'warenkorb':\r\n case 'cart':\r\n return this.redirectWithLangPrefix(route.params, state, 'cart')\r\n case 'bestellung':\r\n case 'checkout':\r\n return this.redirectWithLangPrefix(route.params, state, 'checkout')\r\n case 'agb':\r\n case 'rechtliches':\r\n case 'terms-and-conditions':\r\n return this.redirectWithLangPrefix(route.params, state, 'terms-and-conditions')\r\n case 'login':\r\n return this.redirectWithLangPrefix(route.params, state, 'login')\r\n case 'coupon':\r\n return this.redirectWithLangPrefix(route.params, state, 'coupon')\r\n case 'order-success':\r\n case 'ordersuccess':\r\n return this.redirectWithLangPrefix(route.params, state, 'order-success')\r\n case 'pw-reset':\r\n case 'pwreset':\r\n return this.redirectWithLangPrefix(route.params, state, 'pw-reset')\r\n default:\r\n return true\r\n }\r\n }\r\n\r\n // redirect routes without language-prefix to routes with language prefix\r\n private redirectWithLangPrefix(params: Params, state: RouterStateSnapshot, newKeyword: string) {\r\n const find = `/${params['catalog']}/${params['lang']}`\r\n const replace = `/${params['catalog']}/${this.localeService.currentLang()}/${newKeyword}`\r\n const newUrl = state.url.replace(find, replace)\r\n\r\n return new RedirectCommand(this.urlSerializer.parse(newUrl))\r\n }\r\n}\r\n", "import { inject } from '@angular/core';\r\nimport { Routes, ɵEmptyOutletComponent } from '@angular/router';\r\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\r\nimport { LocaleService } from 'src/app/core/locale/locale.service';\r\nimport { CatalogResolver } from './core/catalog.resolver';\r\nimport { LanguageGuard } from './language.guard';\r\n\r\nexport enum RouteId {\r\n OrderStatus = 'OrderStatus',\r\n Cart = 'Cart',\r\n Checkout = 'Checkout',\r\n OrderSuccess = 'OrderSuccess',\r\n Login = 'Login',\r\n TermsAndConditions = 'TermsAndConditions',\r\n PwReset = 'PwReset',\r\n ObjectChoice = 'ObjectChoice',\r\n GiftCard = 'GiftCard'\r\n}\r\n\r\nexport const routes: Routes = [\r\n {\r\n path: 'Order/:OrderIdStatus',\r\n loadComponent: () => import('./order-status/order-status.component').then(m => m.OrderStatusComponent),\r\n data: {\r\n titleTranslationKey: _('ORDER_STATUS.PAGE_TITLE'),\r\n routeId: RouteId.OrderStatus\r\n },\r\n resolve: [CatalogResolver]\r\n },\r\n {\r\n path: 'Infoscreen/m/:key',\r\n loadComponent: () => import('./infoscreen/infoscreen.component').then(m => m.InfoscreenComponent)\r\n },\r\n {\r\n path: ':catalog/Admin',\r\n resolve: [CatalogResolver],\r\n loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule)\r\n },\r\n {\r\n path: ':catalog/:lang',\r\n resolve: [CatalogResolver],\r\n canActivate: [LanguageGuard],\r\n children: [\r\n {\r\n path: 'cart',\r\n loadComponent: () => import('./cart/cart.component').then(c => c.CartComponent),\r\n data: {\r\n titleTranslationKey: _('NAVIGATION.CART'),\r\n routeId: RouteId.Cart\r\n }\r\n },\r\n {\r\n path: 'checkout',\r\n loadComponent: () => import('./checkout/checkout.component').then(c => c.CheckoutComponent),\r\n data: {\r\n titleTranslationKey: _('CHECKOUT.PAGE_TITLE'),\r\n routeId: RouteId.Checkout\r\n }\r\n },\r\n {\r\n path: 'order-success/:OrderIdSuccess',\r\n loadComponent: () => import('./checkout/checkout-success/checkout-success.component').then(c => c.CheckoutSuccessComponent),\r\n data: {\r\n titleTranslationKey: _('CHECKOUT.SUCCESS_HEADING'),\r\n routeId: RouteId.OrderSuccess\r\n }\r\n },\r\n {\r\n path: 'terms-and-conditions',\r\n loadComponent: () => import('./terms-and-conditions/terms-and-conditions.component').then(c => c.TermsAndConditionsComponent),\r\n data: {\r\n titleTranslationKey: _('TERMS_AND_CONDITIONS'),\r\n routeId: RouteId.TermsAndConditions\r\n }\r\n },\r\n {\r\n path: 'terms-and-conditions/:entityId',\r\n loadComponent: () => import('./terms-and-conditions/terms-and-conditions-details/terms-and-conditions-details.component').then(c => c.TermsAndConditionsDetailsComponent),\r\n data: {\r\n titleTranslationKey: _('TERMS_AND_CONDITIONS'),\r\n routeId: RouteId.TermsAndConditions\r\n }\r\n },\r\n {\r\n path: 'login',\r\n loadComponent: () => import('./user/login-route/login-route.component').then(c => c.LoginRouteComponent),\r\n data: {\r\n titleTranslationKey: _('LOGIN.LOGIN'),\r\n routeId: RouteId.Login\r\n }\r\n },\r\n {\r\n path: 'pw-reset',\r\n loadComponent: () => import('./user/login-route/login-route.component').then(c => c.LoginRouteComponent),\r\n data: {\r\n titleTranslationKey: _('PW.RESET_PW'),\r\n routeId: RouteId.PwReset\r\n }\r\n },\r\n {\r\n path: 'coupon',\r\n loadComponent: () => import('./gift-card/gift-card-insight/gift-card-insight.component').then(c => c.GiftCardInsightComponent),\r\n data: { titleTranslationKey: _('GIFT_CARD.GIFT_CARD'), routeId: RouteId.GiftCard },\r\n children: [\r\n {\r\n path: ':couponCode',\r\n component: ɵEmptyOutletComponent,\r\n data: { titleTranslationKey: _('GIFT_CARD.GIFT_CARD'), routeId: RouteId.GiftCard }\r\n }\r\n ]\r\n },\r\n {\r\n path: '**',\r\n loadComponent: () => {\r\n if (document.location.pathname.startsWith('/GKGBE'))\r\n return import('./customizations/ref-bern/object-choice/object-choice-refbern.component').then(m => m.ObjectChoiceRefBernComponent)\r\n else\r\n return import('./object-choice/object-choice/object-choice.component').then(m => m.ObjectChoiceComponent)\r\n },\r\n data: {\r\n titleTranslationKey: _('NAVIGATION.CHOICES_PAGE_TITLE'),\r\n routeId: RouteId.ObjectChoice\r\n }\r\n }\r\n ],\r\n },\r\n // when the language is missing in the route: redirect to the current language\r\n {\r\n path: ':catalog',\r\n resolve: [CatalogResolver],\r\n redirectTo: () => ':catalog/' + inject(LocaleService).currentLang()\r\n },\r\n]\r\n"], "mappings": "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", "names": ["LanguageGuard", "constructor", "localeService", "urlSerializer", "canActivate", "route", "state", "lang", "params", "culture", "supported", "find", "s", "language", "currentLang", "setCultureAsync", "urlTree", "parse", "queryParams", "RedirectCommand", "toLowerCase", "redirectWithLangPrefix", "newKeyword", "replace", "newUrl", "url", "\u0275\u0275inject", "LocaleService", "UrlSerializer", "factory", "\u0275fac", "providedIn", "_LanguageGuard", "RouteId", "routes", "path", "loadComponent", "then", "m", "OrderStatusComponent", "data", "titleTranslationKey", "routeId", "OrderStatus", "resolve", "CatalogResolver", "InfoscreenComponent", "loadChildren", "AdminModule", "canActivate", "LanguageGuard", "children", "c", "CartComponent", "Cart", "CheckoutComponent", "Checkout", "CheckoutSuccessComponent", "OrderSuccess", "TermsAndConditionsComponent", "TermsAndConditions", "TermsAndConditionsDetailsComponent", "LoginRouteComponent", "Login", "PwReset", "GiftCardInsightComponent", "GiftCard", "component", "\u0275EmptyOutletComponent", "document", "location", "pathname", "startsWith", "ObjectChoiceRefBernComponent", "ObjectChoiceComponent", "ObjectChoice", "redirectTo", "inject", "LocaleService", "currentLang"] }