@reusa/ngx-reusa-app-lib 0.0.732 → 0.1.731
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.
- package/{esm2020 → esm2022}/lib/annimations/app-animations.mjs +36 -36
- package/esm2022/lib/components/add-employer/add-employer.component.mjs +3027 -0
- package/esm2022/lib/components/add-participant/add-participant.component.mjs +394 -0
- package/esm2022/lib/components/add-payment/add-payment.component.mjs +187 -0
- package/esm2022/lib/components/address/address.component.mjs +487 -0
- package/esm2022/lib/components/bank-details/bank-details.component.mjs +276 -0
- package/esm2022/lib/components/captcha/captcha.component.mjs +181 -0
- package/esm2022/lib/components/card/card.component.mjs +55 -0
- package/esm2022/lib/components/contact-us/contact-us.component.mjs +970 -0
- package/esm2022/lib/components/content/content.component.mjs +61 -0
- package/esm2022/lib/components/correspondence-download/correspondence-download.component.mjs +83 -0
- package/esm2022/lib/components/dashboard-card/dashboard-card.component.mjs +223 -0
- package/esm2022/lib/components/dependent-grid/dependent-grid.component.mjs +292 -0
- package/esm2022/lib/components/disclosure/disclosure.component.mjs +60 -0
- package/esm2022/lib/components/dropdown/dropdown.component.mjs +1974 -0
- package/esm2022/lib/components/dropdown/dropdown.interface.mjs +2 -0
- package/esm2022/lib/components/email-update/email-update.component.mjs +283 -0
- package/esm2022/lib/components/employer-grid/employer-grid.component.mjs +794 -0
- package/esm2022/lib/components/error/error.component.mjs +86 -0
- package/esm2022/lib/components/fav-menu/fav-menu.component.mjs +163 -0
- package/{esm2020 → esm2022}/lib/components/file-download/file-download.component.mjs +104 -104
- package/esm2022/lib/components/file-uploader/file-uploader.component.mjs +315 -0
- package/esm2022/lib/components/footer/footer.component.mjs +332 -0
- package/esm2022/lib/components/header/header.component.mjs +558 -0
- package/esm2022/lib/components/help/help.component.mjs +49 -0
- package/esm2022/lib/components/idle-detector/idle-detector.component.mjs +65 -0
- package/{esm2020 → esm2022}/lib/components/info/info.component.mjs +187 -188
- package/esm2022/lib/components/job-search-result-page/job-search-result-page.component.mjs +206 -0
- package/esm2022/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +193 -0
- package/esm2022/lib/components/maintenance-detector/maintenance-detector.component.mjs +43 -0
- package/esm2022/lib/components/mask/mask.component.mjs +48 -0
- package/esm2022/lib/components/menu/menu.component.mjs +423 -0
- package/esm2022/lib/components/mfa/mfa.component.mjs +444 -0
- package/esm2022/lib/components/mfa-popup/mfa-popup.component.mjs +50 -0
- package/esm2022/lib/components/money-expect/money-expect.component.mjs +90 -0
- package/esm2022/lib/components/msg/msg.component.mjs +48 -0
- package/esm2022/lib/components/news/news.component.mjs +90 -0
- package/esm2022/lib/components/overlay-info/overlay-info.component.mjs +213 -0
- package/esm2022/lib/components/page/page.component.mjs +136 -0
- package/esm2022/lib/components/profile/profile.component.mjs +177 -0
- package/esm2022/lib/components/profile-redirect/profile-redirect.component.mjs +63 -0
- package/esm2022/lib/components/questionnaire/AppValidators.mjs +487 -0
- package/{esm2020 → esm2022}/lib/components/questionnaire/FbConstants.mjs +7 -7
- package/{esm2020 → esm2022}/lib/components/questionnaire/SelectItem.mjs +1 -1
- package/esm2022/lib/components/questionnaire/account-success/account-success.page.mjs +256 -0
- package/esm2022/lib/components/questionnaire/common-success/common-success.page.mjs +475 -0
- package/esm2022/lib/components/questionnaire/dynamic-form-panel.component.mjs +1094 -0
- package/esm2022/lib/components/questionnaire/dynamic-form-question.component.mjs +1882 -0
- package/esm2022/lib/components/questionnaire/dynamic-form.component.mjs +1263 -0
- package/esm2022/lib/components/questionnaire/form-builder/form-builder.page.mjs +244 -0
- package/{esm2020 → esm2022}/lib/components/questionnaire/input-focus.directive.mjs +44 -44
- package/esm2022/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +256 -0
- package/{esm2020 → esm2022}/lib/components/questionnaire/question-base.mjs +2 -2
- package/{esm2020 → esm2022}/lib/components/questionnaire/question-control.service.mjs +420 -419
- package/{esm2020 → esm2022}/lib/components/questionnaire/question.service.mjs +33 -33
- package/esm2022/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +262 -0
- package/{esm2020 → esm2022}/lib/components/read-more/read-more.component.mjs +67 -67
- package/esm2022/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +690 -0
- package/esm2022/lib/components/search-employer/search-employer.component.mjs +142 -0
- package/esm2022/lib/components/select/select.component.mjs +154 -0
- package/esm2022/lib/components/ssn/ssn.component.mjs +44 -0
- package/esm2022/lib/components/ssn-reverify/ssn-reverify.component.mjs +151 -0
- package/esm2022/lib/components/test/test.component.mjs +19 -0
- package/esm2022/lib/components/user-login/user-login.component.mjs +398 -0
- package/esm2022/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +442 -0
- package/esm2022/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +307 -0
- package/{esm2020 → esm2022}/lib/directives/auto-focus/auto-focus.directive.mjs +31 -31
- package/{esm2020 → esm2022}/lib/directives/caps-lock.directive.mjs +38 -38
- package/{esm2020 → esm2022}/lib/directives/required-roles/required-roles.directive.mjs +30 -30
- package/{esm2020 → esm2022}/lib/enums/EmailStatusEnum.mjs +8 -8
- package/{esm2020 → esm2022}/lib/guards/auth.guard.mjs +138 -138
- package/esm2022/lib/guards/no-login/no-login.guard.mjs +21 -0
- package/{esm2020 → esm2022}/lib/interceptors/error-interceptor/http-error-interceptor.mjs +107 -107
- package/{esm2020 → esm2022}/lib/interceptors/header-interceptor/http-header.interceptor.mjs +99 -99
- package/{esm2020 → esm2022}/lib/models/AddressComponentModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/BankDetailsComponentModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/BankDetailsModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/models/CinRequalificationCriteriaModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/models/EmployerDetailSearchResult.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/ErrorModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/FileModel.mjs +1 -1
- package/{esm2020 → esm2022}/lib/models/LibConstants.mjs +119 -119
- package/{esm2020 → esm2022}/lib/models/NewsAndAnnouncementModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/NotificationModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/OtpAuthModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/PaymentComponentModel.mjs +2 -2
- package/esm2022/lib/models/RequalifyLiftPageModel.mjs +11 -0
- package/{esm2020 → esm2022}/lib/models/SsaVerificationModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/models/TrendModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/UserDetailsModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/UserModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/case/CaseAttachmentModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/models/claimant/ClaimantModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/claimant/JobResultsData.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/claimant/MatchingJobs.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/claimant/ResetPasswordModel.mjs +2 -2
- package/esm2022/lib/models/cmp/CaseCoreModel.mjs +3 -0
- package/{esm2020 → esm2022}/lib/models/cmp/ComplaintCategoryModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/models/cmp/ComplaintCategoryOutputModel.mjs +5 -5
- package/esm2022/lib/models/cmp/ContactUsModel.mjs +3 -0
- package/{esm2020 → esm2022}/lib/models/cmp/EmailTemplateModel.mjs +3 -3
- package/esm2022/lib/models/cmp/contactUsInqueryModel.mjs +7 -0
- package/{esm2020 → esm2022}/lib/models/cmp/messageRourceModel.mjs +3 -3
- package/esm2022/lib/models/dashboard-model.mjs +3 -0
- package/esm2022/lib/models/dependent.model.mjs +8 -0
- package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimAppEmpRequestModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimAppEmpResponseModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimAppEmployerDetailsModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/questionnaire/ClaimOnlyEmployerDataModel.mjs +2 -2
- package/esm2022/lib/models/questionnaire/ComboModel.mjs +337 -0
- package/{esm2020 → esm2022}/lib/models/questionnaire/ElementsModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/models/questionnaire/EmployerDetailSearchResult.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/questionnaire/EmployerWagesModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/models/questionnaire/FBConfigModel.mjs +5 -5
- package/{esm2020 → esm2022}/lib/models/questionnaire/KeyValueModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/questionnaire/LegalDiscaimarModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/questionnaire/LoaderModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/questionnaire/PollingStatusModel.mjs +3 -3
- package/{esm2020 → esm2022}/lib/models/questionnaire/QtrYearEmployerWageModel.mjs +2 -2
- package/{esm2020 → esm2022}/lib/models/questionnaire/QuestionnaireQueryModel.mjs +7 -7
- package/{esm2020 → esm2022}/lib/models/questionnaire/QuestionnaireReturnModel.mjs +10 -10
- package/{esm2020 → esm2022}/lib/models/questionnaire/QuestionnaireSaveModel.mjs +2 -2
- package/esm2022/lib/models/questionnaire/RequalifyLiftIssuesModel.mjs +3 -0
- package/{esm2020 → esm2022}/lib/models/questionnaire/ServiceActionResponseModel.mjs +3 -3
- package/esm2022/lib/models/questionnaire/StatusModel.mjs +6 -0
- package/{esm2020 → esm2022}/lib/models/questionnaire/SuccessPageElement.mjs +2 -2
- package/esm2022/lib/models/questionnaire/UI512AResponseModel.mjs +3 -0
- package/{esm2020 → esm2022}/lib/models/questionnaire/ValidationModel.mjs +2 -2
- package/esm2022/lib/ngx-reusa-app-lib.component.mjs +23 -0
- package/esm2022/lib/ngx-reusa-app-lib.module.mjs +402 -0
- package/{esm2020 → esm2022}/lib/ngx-reusa-app-lib.service.mjs +14 -14
- package/{esm2020 → esm2022}/lib/pages/BasePage.mjs +76 -76
- package/esm2022/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +81 -0
- package/esm2022/lib/pages/common/change-password/change-password.page.mjs +463 -0
- package/esm2022/lib/pages/common/landing/landing.component.mjs +208 -0
- package/esm2022/lib/pages/common/landing2/landing2.component.mjs +244 -0
- package/esm2022/lib/pages/common/login/login.component.mjs +526 -0
- package/esm2022/lib/pages/common/not-found/not-found.page.mjs +24 -0
- package/esm2022/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +306 -0
- package/esm2022/lib/pages/common/security-policy/security-policy.page.mjs +61 -0
- package/esm2022/lib/pages/common/unauthorized/unauthorized.page.mjs +24 -0
- package/esm2022/lib/pages/popovers/language/language.page.mjs +61 -0
- package/esm2022/lib/pages/popovers/my-notifications/my-notifications.page.mjs +204 -0
- package/esm2022/lib/pages/popovers/my-profile/my-profile.page.mjs +129 -0
- package/esm2022/lib/pages/popovers/user-search/user-search.component.mjs +251 -0
- package/{esm2020 → esm2022}/lib/pipes/filter.pipe.mjs +30 -30
- package/{esm2020 → esm2022}/lib/pipes/mask/mask.email.pipe.mjs +23 -23
- package/{esm2020 → esm2022}/lib/pipes/proper-case/proper-case.pipe.mjs +27 -27
- package/{esm2020 → esm2022}/lib/pipes/translate/dynamic-translate.pipe.mjs +44 -44
- package/{esm2020 → esm2022}/lib/pipes/trust-html/trust-html.pipe.mjs +20 -20
- package/{esm2020 → esm2022}/lib/services/base-service.mjs +49 -49
- package/{esm2020 → esm2022}/lib/services/captcha/captcha.service.mjs +46 -46
- package/{esm2020 → esm2022}/lib/services/case-service/case.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/services/chatbot/chatbot.service.mjs +257 -257
- package/esm2022/lib/services/chatbot/script.const.mjs +42 -0
- package/{esm2020 → esm2022}/lib/services/claimant/claimant.service.mjs +31 -31
- package/esm2022/lib/services/claimant-context/claimant-context.service.mjs +48 -0
- package/{esm2020 → esm2022}/lib/services/claimant-service/claimant.service.mjs +47 -47
- package/{esm2020 → esm2022}/lib/services/claims/claims.service.mjs +99 -99
- package/{esm2020 → esm2022}/lib/services/cmp-service/cmp.service.mjs +84 -84
- package/{esm2020 → esm2022}/lib/services/dms-service/dms.service.mjs +60 -60
- package/{esm2020 → esm2022}/lib/services/fpjs/fingerprint.service.mjs +70 -70
- package/{esm2020 → esm2022}/lib/services/google-analytics/google-analytics.service.mjs +29 -29
- package/{esm2020 → esm2022}/lib/services/help/help.service.mjs +63 -63
- package/{esm2020 → esm2022}/lib/services/idle/idle.service.mjs +159 -159
- package/{esm2020 → esm2022}/lib/services/logger/logger.service.mjs +67 -67
- package/esm2022/lib/services/login/login.service.mjs +330 -0
- package/{esm2020 → esm2022}/lib/services/maintenance/maintenance.service.mjs +21 -21
- package/{esm2020 → esm2022}/lib/services/notification/notification.service.mjs +113 -113
- package/{esm2020 → esm2022}/lib/services/questionnaire/questionnaire.service.mjs +69 -69
- package/{esm2020 → esm2022}/lib/services/questionnaire/validation.service.mjs +59 -59
- package/{esm2020 → esm2022}/lib/services/security-service/security.service.mjs +35 -35
- package/{esm2020 → esm2022}/lib/services/tour/tour.service.mjs +60 -60
- package/{esm2020 → esm2022}/lib/services/util/util.service.mjs +424 -424
- package/esm2022/lib/validations/AppRegex.mjs +45 -0
- package/{esm2020 → esm2022}/lib/validations/AppValidators.mjs +165 -165
- package/{esm2020 → esm2022}/public-api.mjs +131 -131
- package/{esm2020 → esm2022}/reusa-ngx-reusa-app-lib.mjs +4 -4
- package/{fesm2020 → fesm2022}/reusa-ngx-reusa-app-lib.mjs +27966 -27877
- package/fesm2022/reusa-ngx-reusa-app-lib.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/annimations/app-animations.d.ts +3 -3
- package/lib/components/add-employer/add-employer.component.d.ts +276 -276
- package/lib/components/add-participant/add-participant.component.d.ts +45 -45
- package/lib/components/add-payment/add-payment.component.d.ts +33 -33
- package/lib/components/address/address.component.d.ts +68 -68
- package/lib/components/address/address.component.d.ts.map +1 -1
- package/lib/components/bank-details/bank-details.component.d.ts +39 -39
- package/lib/components/captcha/captcha.component.d.ts +44 -44
- package/lib/components/card/card.component.d.ts +11 -11
- package/lib/components/contact-us/contact-us.component.d.ts +105 -107
- package/lib/components/contact-us/contact-us.component.d.ts.map +1 -1
- package/lib/components/content/content.component.d.ts +13 -13
- package/lib/components/correspondence-download/correspondence-download.component.d.ts +21 -21
- package/lib/components/dashboard-card/dashboard-card.component.d.ts +25 -25
- package/lib/components/dashboard-card/dashboard-card.component.d.ts.map +1 -1
- package/lib/components/dependent-grid/dependent-grid.component.d.ts +35 -35
- package/lib/components/disclosure/disclosure.component.d.ts +12 -12
- package/lib/components/dropdown/dropdown.component.d.ts +581 -207
- package/lib/components/dropdown/dropdown.component.d.ts.map +1 -1
- package/lib/components/dropdown/dropdown.interface.d.ts +155 -0
- package/lib/components/dropdown/dropdown.interface.d.ts.map +1 -0
- package/lib/components/email-update/email-update.component.d.ts +31 -31
- package/lib/components/employer-grid/employer-grid.component.d.ts +95 -94
- package/lib/components/employer-grid/employer-grid.component.d.ts.map +1 -1
- package/lib/components/error/error.component.d.ts +17 -17
- package/lib/components/fav-menu/fav-menu.component.d.ts +21 -21
- package/lib/components/file-download/file-download.component.d.ts +22 -22
- package/lib/components/file-uploader/file-uploader.component.d.ts +47 -47
- package/lib/components/footer/footer.component.d.ts +36 -36
- package/lib/components/header/header.component.d.ts +59 -58
- package/lib/components/header/header.component.d.ts.map +1 -1
- package/lib/components/help/help.component.d.ts +10 -10
- package/lib/components/idle-detector/idle-detector.component.d.ts +15 -15
- package/lib/components/info/info.component.d.ts +22 -22
- package/lib/components/job-search-result-page/job-search-result-page.component.d.ts +21 -21
- package/lib/components/legal-disclaimar/legal-disclaimar.component.d.ts +33 -33
- package/lib/components/maintenance-detector/maintenance-detector.component.d.ts +15 -15
- package/lib/components/mask/mask.component.d.ts +11 -11
- package/lib/components/menu/menu.component.d.ts +43 -43
- package/lib/components/mfa/mfa.component.d.ts +59 -59
- package/lib/components/mfa-popup/mfa-popup.component.d.ts +16 -16
- package/lib/components/money-expect/money-expect.component.d.ts +18 -18
- package/lib/components/msg/msg.component.d.ts +10 -10
- package/lib/components/news/news.component.d.ts +14 -14
- package/lib/components/overlay-info/overlay-info.component.d.ts +34 -34
- package/lib/components/page/page.component.d.ts +23 -23
- package/lib/components/profile/profile.component.d.ts +28 -28
- package/lib/components/profile-redirect/profile-redirect.component.d.ts +13 -13
- package/lib/components/questionnaire/AppValidators.d.ts +14 -14
- package/lib/components/questionnaire/AppValidators.d.ts.map +1 -1
- package/lib/components/questionnaire/FbConstants.d.ts +7 -7
- package/lib/components/questionnaire/SelectItem.d.ts +4 -4
- package/lib/components/questionnaire/account-success/account-success.page.d.ts +53 -53
- package/lib/components/questionnaire/common-success/common-success.page.d.ts +75 -75
- package/lib/components/questionnaire/common-success/common-success.page.d.ts.map +1 -1
- package/lib/components/questionnaire/dynamic-form-panel.component.d.ts +46 -46
- package/lib/components/questionnaire/dynamic-form-question.component.d.ts +82 -82
- package/lib/components/questionnaire/dynamic-form-question.component.d.ts.map +1 -1
- package/lib/components/questionnaire/dynamic-form.component.d.ts +130 -130
- package/lib/components/questionnaire/dynamic-form.component.d.ts.map +1 -1
- package/lib/components/questionnaire/form-builder/form-builder.page.d.ts +66 -64
- package/lib/components/questionnaire/form-builder/form-builder.page.d.ts.map +1 -1
- package/lib/components/questionnaire/input-focus.directive.d.ts +11 -11
- package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts +38 -38
- package/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.d.ts.map +1 -1
- package/lib/components/questionnaire/question-base.d.ts +16 -16
- package/lib/components/questionnaire/question-control.service.d.ts +19 -19
- package/lib/components/questionnaire/question-control.service.d.ts.map +1 -1
- package/lib/components/questionnaire/question.service.d.ts +18 -18
- package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts +75 -74
- package/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.d.ts.map +1 -1
- package/lib/components/read-more/read-more.component.d.ts +14 -14
- package/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.d.ts +67 -67
- package/lib/components/search-employer/search-employer.component.d.ts +37 -36
- package/lib/components/search-employer/search-employer.component.d.ts.map +1 -1
- package/lib/components/select/select.component.d.ts +55 -55
- package/lib/components/ssn/ssn.component.d.ts +11 -11
- package/lib/components/ssn-reverify/ssn-reverify.component.d.ts +22 -22
- package/lib/components/test/test.component.d.ts +8 -8
- package/lib/components/user-login/user-login.component.d.ts +48 -48
- package/lib/components/weekly-cert-employer/weekly-cert-employer.component.d.ts +59 -59
- package/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.d.ts +45 -45
- package/lib/directives/auto-focus/auto-focus.directive.d.ts +12 -12
- package/lib/directives/caps-lock.directive.d.ts +11 -11
- package/lib/directives/required-roles/required-roles.directive.d.ts +14 -14
- package/lib/enums/EmailStatusEnum.d.ts +7 -7
- package/lib/guards/auth.guard.d.ts +28 -28
- package/lib/guards/auth.guard.d.ts.map +1 -1
- package/lib/guards/no-login/no-login.guard.d.ts +11 -11
- package/lib/guards/no-login/no-login.guard.d.ts.map +1 -1
- package/lib/interceptors/error-interceptor/http-error-interceptor.d.ts +22 -22
- package/lib/interceptors/header-interceptor/http-header.interceptor.d.ts +21 -21
- package/lib/interceptors/header-interceptor/http-header.interceptor.d.ts.map +1 -1
- package/lib/models/AddressComponentModel.d.ts +12 -12
- package/lib/models/BankDetailsComponentModel.d.ts +11 -11
- package/lib/models/BankDetailsModel.d.ts +4 -4
- package/lib/models/CinRequalificationCriteriaModel.d.ts +10 -10
- package/lib/models/EmployerDetailSearchResult.d.ts +47 -47
- package/lib/models/ErrorModel.d.ts +6 -6
- package/lib/models/FileModel.d.ts +4 -4
- package/lib/models/LibConstants.d.ts +112 -112
- package/lib/models/NewsAndAnnouncementModel.d.ts +5 -5
- package/lib/models/NotificationModel.d.ts +10 -10
- package/lib/models/OtpAuthModel.d.ts +6 -6
- package/lib/models/PaymentComponentModel.d.ts +7 -7
- package/lib/models/RequalifyLiftPageModel.d.ts +11 -11
- package/lib/models/SsaVerificationModel.d.ts +8 -8
- package/lib/models/TrendModel.d.ts +13 -13
- package/lib/models/UserDetailsModel.d.ts +9 -9
- package/lib/models/UserModel.d.ts +46 -46
- package/lib/models/case/CaseAttachmentModel.d.ts +5 -5
- package/lib/models/claimant/ClaimantModel.d.ts +22 -22
- package/lib/models/claimant/JobResultsData.d.ts +7 -7
- package/lib/models/claimant/MatchingJobs.d.ts +12 -12
- package/lib/models/claimant/ResetPasswordModel.d.ts +8 -8
- package/lib/models/cmp/CaseCoreModel.d.ts +20 -20
- package/lib/models/cmp/ComplaintCategoryModel.d.ts +8 -8
- package/lib/models/cmp/ComplaintCategoryOutputModel.d.ts +5 -5
- package/lib/models/cmp/ContactUsModel.d.ts +22 -22
- package/lib/models/cmp/EmailTemplateModel.d.ts +6 -6
- package/lib/models/cmp/contactUsInqueryModel.d.ts +46 -46
- package/lib/models/cmp/messageRourceModel.d.ts +5 -5
- package/lib/models/dashboard-model.d.ts +43 -43
- package/lib/models/dependent.model.d.ts +11 -18
- package/lib/models/dependent.model.d.ts.map +1 -1
- package/lib/models/questionnaire/ClaimAppEmpRequestModel.d.ts +8 -8
- package/lib/models/questionnaire/ClaimAppEmpResponseModel.d.ts +16 -16
- package/lib/models/questionnaire/ClaimAppEmployerDetailsModel.d.ts +151 -151
- package/lib/models/questionnaire/ClaimOnlyEmployerDataModel.d.ts +16 -16
- package/lib/models/questionnaire/ComboModel.d.ts +85 -85
- package/lib/models/questionnaire/ElementsModel.d.ts +68 -68
- package/lib/models/questionnaire/EmployerDetailSearchResult.d.ts +17 -17
- package/lib/models/questionnaire/EmployerWagesModel.d.ts +4 -4
- package/lib/models/questionnaire/FBConfigModel.d.ts +11 -11
- package/lib/models/questionnaire/KeyValueModel.d.ts +10 -10
- package/lib/models/questionnaire/LegalDiscaimarModel.d.ts +10 -10
- package/lib/models/questionnaire/LoaderModel.d.ts +4 -4
- package/lib/models/questionnaire/PollingStatusModel.d.ts +6 -6
- package/lib/models/questionnaire/QtrYearEmployerWageModel.d.ts +8 -8
- package/lib/models/questionnaire/QuestionnaireQueryModel.d.ts +23 -23
- package/lib/models/questionnaire/QuestionnaireReturnModel.d.ts +20 -20
- package/lib/models/questionnaire/QuestionnaireSaveModel.d.ts +24 -24
- package/lib/models/questionnaire/RequalifyLiftIssuesModel.d.ts +13 -13
- package/lib/models/questionnaire/ServiceActionResponseModel.d.ts +6 -6
- package/lib/models/questionnaire/StatusModel.d.ts +15 -15
- package/lib/models/questionnaire/SuccessPageElement.d.ts +8 -8
- package/lib/models/questionnaire/UI512AResponseModel.d.ts +12 -12
- package/lib/models/questionnaire/ValidationModel.d.ts +17 -17
- package/lib/ngx-reusa-app-lib.component.d.ts +8 -8
- package/lib/ngx-reusa-app-lib.module.d.ts +148 -145
- package/lib/ngx-reusa-app-lib.module.d.ts.map +1 -1
- package/lib/ngx-reusa-app-lib.service.d.ts +6 -6
- package/lib/pages/BasePage.d.ts +26 -26
- package/lib/pages/common/accessibility-policy/accessibility-policy.page.d.ts +11 -11
- package/lib/pages/common/change-password/change-password.page.d.ts +40 -40
- package/lib/pages/common/landing/landing.component.d.ts +24 -24
- package/lib/pages/common/landing2/landing2.component.d.ts +30 -30
- package/lib/pages/common/login/login.component.d.ts +64 -64
- package/lib/pages/common/not-found/not-found.page.d.ts +8 -8
- package/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.d.ts +11 -11
- package/lib/pages/common/security-policy/security-policy.page.d.ts +11 -11
- package/lib/pages/common/unauthorized/unauthorized.page.d.ts +8 -8
- package/lib/pages/popovers/language/language.page.d.ts +16 -16
- package/lib/pages/popovers/my-notifications/my-notifications.page.d.ts +21 -21
- package/lib/pages/popovers/my-profile/my-profile.page.d.ts +20 -20
- package/lib/pages/popovers/user-search/user-search.component.d.ts +31 -31
- package/lib/pipes/filter.pipe.d.ts +7 -7
- package/lib/pipes/mask/mask.email.pipe.d.ts +10 -10
- package/lib/pipes/proper-case/proper-case.pipe.d.ts +8 -8
- package/lib/pipes/translate/dynamic-translate.pipe.d.ts +10 -10
- package/lib/pipes/trust-html/trust-html.pipe.d.ts +10 -10
- package/lib/services/base-service.d.ts +92 -92
- package/lib/services/captcha/captcha.service.d.ts +15 -15
- package/lib/services/case-service/case.service.d.ts +19 -19
- package/lib/services/chatbot/chatbot.service.d.ts +60 -60
- package/lib/services/chatbot/script.const.d.ts +15 -15
- package/lib/services/claimant/claimant.service.d.ts +17 -17
- package/lib/services/claimant-context/claimant-context.service.d.ts +18 -18
- package/lib/services/claimant-context/claimant-context.service.d.ts.map +1 -1
- package/lib/services/claimant-service/claimant.service.d.ts +19 -19
- package/lib/services/claims/claims.service.d.ts +39 -39
- package/lib/services/cmp-service/cmp.service.d.ts +33 -33
- package/lib/services/dms-service/dms.service.d.ts +23 -23
- package/lib/services/fpjs/fingerprint.service.d.ts +18 -18
- package/lib/services/google-analytics/google-analytics.service.d.ts +8 -8
- package/lib/services/help/help.service.d.ts +25 -25
- package/lib/services/help/help.service.d.ts.map +1 -1
- package/lib/services/idle/idle.service.d.ts +43 -43
- package/lib/services/logger/logger.service.d.ts +31 -31
- package/lib/services/logger/logger.service.d.ts.map +1 -1
- package/lib/services/login/login.service.d.ts +75 -75
- package/lib/services/login/login.service.d.ts.map +1 -1
- package/lib/services/maintenance/maintenance.service.d.ts +15 -15
- package/lib/services/notification/notification.service.d.ts +38 -38
- package/lib/services/questionnaire/questionnaire.service.d.ts +35 -35
- package/lib/services/questionnaire/validation.service.d.ts +81 -81
- package/lib/services/security-service/security.service.d.ts +14 -14
- package/lib/services/tour/tour.service.d.ts +24 -24
- package/lib/services/util/util.service.d.ts +190 -190
- package/lib/validations/AppRegex.d.ts +43 -43
- package/lib/validations/AppValidators.d.ts +53 -53
- package/package.json +6 -11
- package/public-api.d.ts +121 -121
- package/esm2020/lib/components/add-employer/add-employer.component.mjs +0 -3099
- package/esm2020/lib/components/add-participant/add-participant.component.mjs +0 -396
- package/esm2020/lib/components/add-payment/add-payment.component.mjs +0 -186
- package/esm2020/lib/components/address/address.component.mjs +0 -480
- package/esm2020/lib/components/bank-details/bank-details.component.mjs +0 -275
- package/esm2020/lib/components/captcha/captcha.component.mjs +0 -180
- package/esm2020/lib/components/card/card.component.mjs +0 -54
- package/esm2020/lib/components/contact-us/contact-us.component.mjs +0 -1004
- package/esm2020/lib/components/content/content.component.mjs +0 -60
- package/esm2020/lib/components/correspondence-download/correspondence-download.component.mjs +0 -82
- package/esm2020/lib/components/dashboard-card/dashboard-card.component.mjs +0 -219
- package/esm2020/lib/components/dependent-grid/dependent-grid.component.mjs +0 -297
- package/esm2020/lib/components/disclosure/disclosure.component.mjs +0 -59
- package/esm2020/lib/components/dropdown/dropdown.component.mjs +0 -1552
- package/esm2020/lib/components/email-update/email-update.component.mjs +0 -287
- package/esm2020/lib/components/employer-grid/employer-grid.component.mjs +0 -800
- package/esm2020/lib/components/error/error.component.mjs +0 -85
- package/esm2020/lib/components/fav-menu/fav-menu.component.mjs +0 -163
- package/esm2020/lib/components/file-uploader/file-uploader.component.mjs +0 -317
- package/esm2020/lib/components/footer/footer.component.mjs +0 -337
- package/esm2020/lib/components/header/header.component.mjs +0 -566
- package/esm2020/lib/components/help/help.component.mjs +0 -48
- package/esm2020/lib/components/idle-detector/idle-detector.component.mjs +0 -64
- package/esm2020/lib/components/job-search-result-page/job-search-result-page.component.mjs +0 -209
- package/esm2020/lib/components/legal-disclaimar/legal-disclaimar.component.mjs +0 -192
- package/esm2020/lib/components/maintenance-detector/maintenance-detector.component.mjs +0 -42
- package/esm2020/lib/components/mask/mask.component.mjs +0 -48
- package/esm2020/lib/components/menu/menu.component.mjs +0 -430
- package/esm2020/lib/components/mfa/mfa.component.mjs +0 -451
- package/esm2020/lib/components/mfa-popup/mfa-popup.component.mjs +0 -49
- package/esm2020/lib/components/money-expect/money-expect.component.mjs +0 -89
- package/esm2020/lib/components/msg/msg.component.mjs +0 -48
- package/esm2020/lib/components/news/news.component.mjs +0 -89
- package/esm2020/lib/components/overlay-info/overlay-info.component.mjs +0 -235
- package/esm2020/lib/components/page/page.component.mjs +0 -138
- package/esm2020/lib/components/profile/profile.component.mjs +0 -182
- package/esm2020/lib/components/profile-redirect/profile-redirect.component.mjs +0 -62
- package/esm2020/lib/components/questionnaire/AppValidators.mjs +0 -523
- package/esm2020/lib/components/questionnaire/account-success/account-success.page.mjs +0 -259
- package/esm2020/lib/components/questionnaire/common-success/common-success.page.mjs +0 -483
- package/esm2020/lib/components/questionnaire/dynamic-form-panel.component.mjs +0 -1137
- package/esm2020/lib/components/questionnaire/dynamic-form-question.component.mjs +0 -1948
- package/esm2020/lib/components/questionnaire/dynamic-form.component.mjs +0 -1257
- package/esm2020/lib/components/questionnaire/form-builder/form-builder.page.mjs +0 -240
- package/esm2020/lib/components/questionnaire/multi-questionnaire/multi-questionnaire.component.mjs +0 -259
- package/esm2020/lib/components/questionnaire/render-questionnaire/render-questionnaire.page.mjs +0 -260
- package/esm2020/lib/components/requalify-lift-previous-issues/requalify-lift-previous-issues.component.mjs +0 -703
- package/esm2020/lib/components/search-employer/search-employer.component.mjs +0 -142
- package/esm2020/lib/components/select/select.component.mjs +0 -153
- package/esm2020/lib/components/ssn/ssn.component.mjs +0 -43
- package/esm2020/lib/components/ssn-reverify/ssn-reverify.component.mjs +0 -150
- package/esm2020/lib/components/test/test.component.mjs +0 -18
- package/esm2020/lib/components/user-login/user-login.component.mjs +0 -401
- package/esm2020/lib/components/weekly-cert-employer/weekly-cert-employer.component.mjs +0 -445
- package/esm2020/lib/components/weekly-cert-employer-grid/weekly-cert-employer-grid.component.mjs +0 -308
- package/esm2020/lib/guards/no-login/no-login.guard.mjs +0 -21
- package/esm2020/lib/models/RequalifyLiftPageModel.mjs +0 -11
- package/esm2020/lib/models/cmp/CaseCoreModel.mjs +0 -3
- package/esm2020/lib/models/cmp/ContactUsModel.mjs +0 -3
- package/esm2020/lib/models/cmp/contactUsInqueryModel.mjs +0 -7
- package/esm2020/lib/models/dashboard-model.mjs +0 -3
- package/esm2020/lib/models/dependent.model.mjs +0 -8
- package/esm2020/lib/models/questionnaire/ComboModel.mjs +0 -337
- package/esm2020/lib/models/questionnaire/RequalifyLiftIssuesModel.mjs +0 -3
- package/esm2020/lib/models/questionnaire/StatusModel.mjs +0 -6
- package/esm2020/lib/models/questionnaire/UI512AResponseModel.mjs +0 -3
- package/esm2020/lib/ngx-reusa-app-lib.component.mjs +0 -22
- package/esm2020/lib/ngx-reusa-app-lib.module.mjs +0 -390
- package/esm2020/lib/pages/common/accessibility-policy/accessibility-policy.page.mjs +0 -80
- package/esm2020/lib/pages/common/change-password/change-password.page.mjs +0 -477
- package/esm2020/lib/pages/common/landing/landing.component.mjs +0 -207
- package/esm2020/lib/pages/common/landing2/landing2.component.mjs +0 -244
- package/esm2020/lib/pages/common/login/login.component.mjs +0 -542
- package/esm2020/lib/pages/common/not-found/not-found.page.mjs +0 -23
- package/esm2020/lib/pages/common/privacy-disclaimer/privacy-disclaimer.page.mjs +0 -305
- package/esm2020/lib/pages/common/security-policy/security-policy.page.mjs +0 -60
- package/esm2020/lib/pages/common/unauthorized/unauthorized.page.mjs +0 -23
- package/esm2020/lib/pages/popovers/language/language.page.mjs +0 -60
- package/esm2020/lib/pages/popovers/my-notifications/my-notifications.page.mjs +0 -205
- package/esm2020/lib/pages/popovers/my-profile/my-profile.page.mjs +0 -129
- package/esm2020/lib/pages/popovers/user-search/user-search.component.mjs +0 -253
- package/esm2020/lib/services/chatbot/script.const.mjs +0 -42
- package/esm2020/lib/services/claimant-context/claimant-context.service.mjs +0 -47
- package/esm2020/lib/services/login/login.service.mjs +0 -330
- package/esm2020/lib/validations/AppRegex.mjs +0 -45
- package/fesm2015/reusa-ngx-reusa-app-lib.mjs +0 -30728
- package/fesm2015/reusa-ngx-reusa-app-lib.mjs.map +0 -1
- package/fesm2020/reusa-ngx-reusa-app-lib.mjs.map +0 -1
|
@@ -1,138 +1,138 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "@ionic/storage";
|
|
4
|
-
import * as i2 from "@angular/router";
|
|
5
|
-
import * as i3 from "../services/login/login.service";
|
|
6
|
-
import * as i4 from "@ionic/angular";
|
|
7
|
-
import * as i5 from "../services/util/util.service";
|
|
8
|
-
import * as i6 from "../services/logger/logger.service";
|
|
9
|
-
export class AuthGuard {
|
|
10
|
-
constructor(storage, router, ls, ar, nav, util, logger) {
|
|
11
|
-
this.storage = storage;
|
|
12
|
-
this.router = router;
|
|
13
|
-
this.ls = ls;
|
|
14
|
-
this.ar = ar;
|
|
15
|
-
this.nav = nav;
|
|
16
|
-
this.util = util;
|
|
17
|
-
this.logger = logger;
|
|
18
|
-
}
|
|
19
|
-
async canActivate(route, state) {
|
|
20
|
-
this.util.showLoader();
|
|
21
|
-
let routeData = route.data;
|
|
22
|
-
if (this.ls.getUser()) {
|
|
23
|
-
let isAccessGranted = this.checkPageAccess(routeData, state);
|
|
24
|
-
if (isAccessGranted) {
|
|
25
|
-
return isAccessGranted;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.logger.error('[AuthGuard] Aunauthorized Access', routeData);
|
|
29
|
-
this.nav.navigateRoot(['/unauthorized']);
|
|
30
|
-
return isAccessGranted;
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
if (state.url.startsWith('/login/sso')) {
|
|
35
|
-
let refreshToken = this.getCookie('rt');
|
|
36
|
-
let isNavAllowed = await this.ls
|
|
37
|
-
.refreshToken(refreshToken)
|
|
38
|
-
.then(async (res) => {
|
|
39
|
-
await this.ls.setUser(res).then(res => res);
|
|
40
|
-
this.nav.navigateRoot(['/welcome']);
|
|
41
|
-
return true;
|
|
42
|
-
})
|
|
43
|
-
.catch(err => {
|
|
44
|
-
this.logger.error('[AuthGuard] error while refreshing token', err);
|
|
45
|
-
this.nav.navigateRoot(['/login']);
|
|
46
|
-
return true;
|
|
47
|
-
});
|
|
48
|
-
return isNavAllowed;
|
|
49
|
-
}
|
|
50
|
-
let authToken = await this.storage.get('access_token');
|
|
51
|
-
let refreshToken = await this.storage.get('refresh_token');
|
|
52
|
-
if (authToken) {
|
|
53
|
-
let isAllowed = await this.ls.loadUserInfo()
|
|
54
|
-
.then(async (res) => {
|
|
55
|
-
if (!res) {
|
|
56
|
-
this.nav.navigateRoot(['/login']);
|
|
57
|
-
return false;
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
let user = res;
|
|
61
|
-
user['access_token'] = authToken;
|
|
62
|
-
user['refresh_token'] = refreshToken;
|
|
63
|
-
await this.ls.setUser(user).then(res => res);
|
|
64
|
-
if (state.url.includes('login')) {
|
|
65
|
-
this.nav.navigateRoot(['/welcome']);
|
|
66
|
-
}
|
|
67
|
-
let isAccessGranted = this.checkPageAccess(routeData, state);
|
|
68
|
-
if (isAccessGranted) {
|
|
69
|
-
return isAccessGranted;
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
this.nav.navigateRoot(['/unauthorized']);
|
|
73
|
-
return isAccessGranted;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}).catch(async (err) => {
|
|
77
|
-
this.ls.reset();
|
|
78
|
-
if (state.url.includes('/not-found')) {
|
|
79
|
-
return true;
|
|
80
|
-
}
|
|
81
|
-
this.nav.navigateRoot(['/login']);
|
|
82
|
-
return false;
|
|
83
|
-
});
|
|
84
|
-
return isAllowed;
|
|
85
|
-
}
|
|
86
|
-
else {
|
|
87
|
-
if (state.url.includes('login')) {
|
|
88
|
-
this.ls.reset();
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
else if (state.url.includes('/not-found')) {
|
|
92
|
-
return true;
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
this.nav.navigateRoot(['/login']);
|
|
96
|
-
this.ls.reset();
|
|
97
|
-
return false;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
checkPageAccess(routeData, state) {
|
|
103
|
-
let functions = routeData.functions;
|
|
104
|
-
if (functions && functions.length > 0) {
|
|
105
|
-
if (functions.includes("*")) {
|
|
106
|
-
return true;
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
return this.ls.checkFunctions(functions);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
throw "Please specify function in app-routing.module.ts file for page :: " + state.url;
|
|
113
|
-
}
|
|
114
|
-
getCookie(cname) {
|
|
115
|
-
var name = cname + "=";
|
|
116
|
-
var decodedCookie = document.cookie;
|
|
117
|
-
var ca = decodedCookie.split(';');
|
|
118
|
-
for (var i = 0; i < ca.length; i++) {
|
|
119
|
-
var c = ca[i];
|
|
120
|
-
while (c.charAt(0) == ' ') {
|
|
121
|
-
c = c.substring(1);
|
|
122
|
-
}
|
|
123
|
-
if (c.indexOf(name) == 0) {
|
|
124
|
-
return c.substring(name.length, c.length);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return "";
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
(
|
|
133
|
-
type: Injectable,
|
|
134
|
-
args: [{
|
|
135
|
-
providedIn: 'root'
|
|
136
|
-
}]
|
|
137
|
-
}],
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvZ3VhcmRzL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFpQjNDLE1BQU0sT0FBTyxTQUFTO0lBQ2xCLFlBQW9CLE9BQWdCLEVBQVUsTUFBYyxFQUFVLEVBQWdCLEVBQzFFLEVBQWtCLEVBQVUsR0FBa0IsRUFBVSxJQUFrQixFQUFVLE1BQXFCO1FBRGpHLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUMxRSxPQUFFLEdBQUYsRUFBRSxDQUFnQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUFJLENBQUM7SUFFMUgsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3ZFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkIsSUFBSSxTQUFTLEdBQW9CLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25CLElBQUksZUFBZSxHQUFZLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RFLElBQUksZUFBZSxFQUFFO2dCQUNqQixPQUFPLGVBQWUsQ0FBQzthQUMxQjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxl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QUFHLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxhQUFhLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUNwQyxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNkLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ3ZCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RCO1lBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEIsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzdDO1NBQ0o7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7O2tFQTNHUSxTQUFTOytEQUFULFNBQVMsV0FBVCxTQUFTLG1CQUZOLE1BQU07dUZBRVQsU0FBUztjQUhyQixVQUFVO2VBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIENhbkFjdGl2YXRlLCBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTdG9yYWdlIH0gZnJvbSAnQGlvbmljL3N0b3JhZ2UnO1xuaW1wb3J0IHsgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvZ2luL2xvZ2luLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcblxuaW50ZXJmYWNlIFJvdXRlRGF0YSB7XG4gICAgZnVuY3Rpb25zOiBzdHJpbmdbXTtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIHBhZ2VJZDogc3RyaW5nO1xufVxuXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEF1dGhHdWFyZCBpbXBsZW1lbnRzIENhbkFjdGl2YXRlIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgbHM6IExvZ2luU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcjogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgbmF2OiBOYXZDb250cm9sbGVyLCBwcml2YXRlIHV0aWwgOiBVdGlsU2VydmljZSwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UpIHsgfVxuXG4gICAgYXN5bmMgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSB7XG4gICAgICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XG4gICAgICAgIGxldCByb3V0ZURhdGE6IFJvdXRlRGF0YSB8IGFueSA9IHJvdXRlLmRhdGE7XG4gICAgICAgIGlmICh0aGlzLmxzLmdldFVzZXIoKSkge1xuICAgICAgICAgICAgbGV0IGlzQWNjZXNzR3JhbnRlZDogYm9vbGVhbiA9IHRoaXMuY2hlY2tQYWdlQWNjZXNzKHJvdXRlRGF0YSwgc3RhdGUpO1xuICAgICAgICAgICAgaWYgKGlzQWNjZXNzR3JhbnRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0FjY2Vzc0dyYW50ZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdbQXV0aEd1YXJkXSBBdW5hdXRob3JpemVkIEFjY2VzcycsIHJvdXRlRGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KFsnL3VuYXV0aG9yaXplZCddKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNBY2Nlc3NHcmFudGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnVybC5zdGFydHNXaXRoKCcvbG9naW4vc3NvJykpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVmcmVzaFRva2VuID0gdGhpcy5nZXRDb29raWUoJ3J0Jyk7XG4gICAgICAgICAgICAgICAgbGV0IGlzTmF2QWxsb3dlZCA9IGF3YWl0IHRoaXMubHNcbiAgICAgICAgICAgICAgICAgICAgLnJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW4pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxzLnNldFVzZXIocmVzKS50aGVuKHJlcyA9PiByZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KFsnL3dlbGNvbWUnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdbQXV0aEd1YXJkXSBlcnJvciB3aGlsZSByZWZyZXNoaW5nIHRva2VuJywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChbJy9sb2dpbiddKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNOYXZBbGxvd2VkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGF1dGhUb2tlbiA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoJ2FjY2Vzc190b2tlbicpO1xuICAgICAgICAgICAgbGV0IHJlZnJlc2hUb2tlbiA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoJ3JlZnJlc2hfdG9rZW4nKTtcbiAgICAgICAgICAgIGlmIChhdXRoVG9rZW4pIHtcbiAgICAgICAgICAgICAgICBsZXQgaXNBbGxvd2VkID0gYXdhaXQgdGhpcy5scy5sb2FkVXNlckluZm8oKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihhc3luYyByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoWycvbG9naW4nXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlcjogYW55ID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJbJ2FjY2Vzc190b2tlbiddID0gYXV0aFRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJbJ3JlZnJlc2hfdG9rZW4nXSA9IHJlZnJlc2hUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxzLnNldFVzZXIodXNlcikudGhlbihyZXMgPT4gcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUudXJsLmluY2x1ZGVzKCdsb2dpbicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChbJy93ZWxjb21lJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNBY2Nlc3NHcmFudGVkOiBib29sZWFuID0gdGhpcy5jaGVja1BhZ2VBY2Nlc3Mocm91dGVEYXRhLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQWNjZXNzR3JhbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNBY2Nlc3NHcmFudGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChbJy91bmF1dGhvcml6ZWQnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0FjY2Vzc0dyYW50ZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChhc3luYyBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5scy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnVybC5pbmNsdWRlcygnL25vdC1mb3VuZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoWycvbG9naW4nXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0FsbG93ZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS51cmwuaW5jbHVkZXMoJ2xvZ2luJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5scy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnVybC5pbmNsdWRlcygnL25vdC1mb3VuZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChbJy9sb2dpbiddKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5scy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tQYWdlQWNjZXNzKHJvdXRlRGF0YTogUm91dGVEYXRhLCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgZnVuY3Rpb25zOiBzdHJpbmdbXSA9IHJvdXRlRGF0YS5mdW5jdGlvbnM7XG4gICAgICAgIGlmIChmdW5jdGlvbnMgJiYgZnVuY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChmdW5jdGlvbnMuaW5jbHVkZXMoXCIqXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxzLmNoZWNrRnVuY3Rpb25zKGZ1bmN0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgXCJQbGVhc2Ugc3BlY2lmeSBmdW5jdGlvbiBpbiBhcHAtcm91dGluZy5tb2R1bGUudHMgZmlsZSBmb3IgcGFnZSA6OiBcIiArIHN0YXRlLnVybDtcbiAgICB9XG5cbiAgICBnZXRDb29raWUoY25hbWUpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBjbmFtZSArIFwiPVwiO1xuICAgICAgICB2YXIgZGVjb2RlZENvb2tpZSA9IGRvY3VtZW50LmNvb2tpZTtcbiAgICAgICAgdmFyIGNhID0gZGVjb2RlZENvb2tpZS5zcGxpdCgnOycpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgYyA9IGNhW2ldO1xuICAgICAgICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09ICcgJykge1xuICAgICAgICAgICAgICAgIGMgPSBjLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjLmluZGV4T2YobmFtZSkgPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjLnN1YnN0cmluZyhuYW1lLmxlbmd0aCwgYy5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbn1cbiJdfQ==
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "@ionic/storage-angular";
|
|
4
|
+
import * as i2 from "@angular/router";
|
|
5
|
+
import * as i3 from "../services/login/login.service";
|
|
6
|
+
import * as i4 from "@ionic/angular";
|
|
7
|
+
import * as i5 from "../services/util/util.service";
|
|
8
|
+
import * as i6 from "../services/logger/logger.service";
|
|
9
|
+
export class AuthGuard {
|
|
10
|
+
constructor(storage, router, ls, ar, nav, util, logger) {
|
|
11
|
+
this.storage = storage;
|
|
12
|
+
this.router = router;
|
|
13
|
+
this.ls = ls;
|
|
14
|
+
this.ar = ar;
|
|
15
|
+
this.nav = nav;
|
|
16
|
+
this.util = util;
|
|
17
|
+
this.logger = logger;
|
|
18
|
+
}
|
|
19
|
+
async canActivate(route, state) {
|
|
20
|
+
this.util.showLoader();
|
|
21
|
+
let routeData = route.data;
|
|
22
|
+
if (this.ls.getUser()) {
|
|
23
|
+
let isAccessGranted = this.checkPageAccess(routeData, state);
|
|
24
|
+
if (isAccessGranted) {
|
|
25
|
+
return isAccessGranted;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this.logger.error('[AuthGuard] Aunauthorized Access', routeData);
|
|
29
|
+
this.nav.navigateRoot(['/unauthorized']);
|
|
30
|
+
return isAccessGranted;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
if (state.url.startsWith('/login/sso')) {
|
|
35
|
+
let refreshToken = this.getCookie('rt');
|
|
36
|
+
let isNavAllowed = await this.ls
|
|
37
|
+
.refreshToken(refreshToken)
|
|
38
|
+
.then(async (res) => {
|
|
39
|
+
await this.ls.setUser(res).then(res => res);
|
|
40
|
+
this.nav.navigateRoot(['/welcome']);
|
|
41
|
+
return true;
|
|
42
|
+
})
|
|
43
|
+
.catch(err => {
|
|
44
|
+
this.logger.error('[AuthGuard] error while refreshing token', err);
|
|
45
|
+
this.nav.navigateRoot(['/login']);
|
|
46
|
+
return true;
|
|
47
|
+
});
|
|
48
|
+
return isNavAllowed;
|
|
49
|
+
}
|
|
50
|
+
let authToken = await this.storage.get('access_token');
|
|
51
|
+
let refreshToken = await this.storage.get('refresh_token');
|
|
52
|
+
if (authToken) {
|
|
53
|
+
let isAllowed = await this.ls.loadUserInfo()
|
|
54
|
+
.then(async (res) => {
|
|
55
|
+
if (!res) {
|
|
56
|
+
this.nav.navigateRoot(['/login']);
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
let user = res;
|
|
61
|
+
user['access_token'] = authToken;
|
|
62
|
+
user['refresh_token'] = refreshToken;
|
|
63
|
+
await this.ls.setUser(user).then(res => res);
|
|
64
|
+
if (state.url.includes('login')) {
|
|
65
|
+
this.nav.navigateRoot(['/welcome']);
|
|
66
|
+
}
|
|
67
|
+
let isAccessGranted = this.checkPageAccess(routeData, state);
|
|
68
|
+
if (isAccessGranted) {
|
|
69
|
+
return isAccessGranted;
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
this.nav.navigateRoot(['/unauthorized']);
|
|
73
|
+
return isAccessGranted;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}).catch(async (err) => {
|
|
77
|
+
this.ls.reset();
|
|
78
|
+
if (state.url.includes('/not-found')) {
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
this.nav.navigateRoot(['/login']);
|
|
82
|
+
return false;
|
|
83
|
+
});
|
|
84
|
+
return isAllowed;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
if (state.url.includes('login')) {
|
|
88
|
+
this.ls.reset();
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
else if (state.url.includes('/not-found')) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
this.nav.navigateRoot(['/login']);
|
|
96
|
+
this.ls.reset();
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
checkPageAccess(routeData, state) {
|
|
103
|
+
let functions = routeData.functions;
|
|
104
|
+
if (functions && functions.length > 0) {
|
|
105
|
+
if (functions.includes("*")) {
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
return this.ls.checkFunctions(functions);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
throw "Please specify function in app-routing.module.ts file for page :: " + state.url;
|
|
113
|
+
}
|
|
114
|
+
getCookie(cname) {
|
|
115
|
+
var name = cname + "=";
|
|
116
|
+
var decodedCookie = document.cookie;
|
|
117
|
+
var ca = decodedCookie.split(';');
|
|
118
|
+
for (var i = 0; i < ca.length; i++) {
|
|
119
|
+
var c = ca[i];
|
|
120
|
+
while (c.charAt(0) == ' ') {
|
|
121
|
+
c = c.substring(1);
|
|
122
|
+
}
|
|
123
|
+
if (c.indexOf(name) == 0) {
|
|
124
|
+
return c.substring(name.length, c.length);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return "";
|
|
128
|
+
}
|
|
129
|
+
static { this.ɵfac = function AuthGuard_Factory(t) { return new (t || AuthGuard)(i0.ɵɵinject(i1.Storage), i0.ɵɵinject(i2.Router), i0.ɵɵinject(i3.LoginService), i0.ɵɵinject(i2.ActivatedRoute), i0.ɵɵinject(i4.NavController), i0.ɵɵinject(i5.UtilService), i0.ɵɵinject(i6.LoggerService)); }; }
|
|
130
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: AuthGuard, factory: AuthGuard.ɵfac, providedIn: 'root' }); }
|
|
131
|
+
}
|
|
132
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AuthGuard, [{
|
|
133
|
+
type: Injectable,
|
|
134
|
+
args: [{
|
|
135
|
+
providedIn: 'root'
|
|
136
|
+
}]
|
|
137
|
+
}], () => [{ type: i1.Storage }, { type: i2.Router }, { type: i3.LoginService }, { type: i2.ActivatedRoute }, { type: i4.NavController }, { type: i5.UtilService }, { type: i6.LoggerService }], null); })();
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvZ3VhcmRzL2F1dGguZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7QUFpQjNDLE1BQU0sT0FBTyxTQUFTO0lBQ2xCLFlBQW9CLE9BQWdCLEVBQVUsTUFBYyxFQUFVLEVBQWdCLEVBQzFFLEVBQWtCLEVBQVUsR0FBa0IsRUFBVSxJQUFrQixFQUFVLE1BQXFCO1FBRGpHLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVUsT0FBRSxHQUFGLEVBQUUsQ0FBYztRQUMxRSxPQUFFLEdBQUYsRUFBRSxDQUFnQjtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUFJLENBQUM7SUFFMUgsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUE2QixFQUFFLEtBQTBCO1FBQ3ZFLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkIsSUFBSSxTQUFTLEdBQW9CLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDNUMsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO1lBQ25CLElBQUksZUFBZSxHQUFZLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3RFLElBQUksZUFBZSxFQUFFO2dCQUNqQixPQUFPLGVBQWUsQ0FBQzthQUMxQjtpQkFBTTtnQkFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDakUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsQ0FBQyxl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QUFHLEtBQUssR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxhQUFhLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztRQUNwQyxJQUFJLEVBQUUsR0FBRyxhQUFhLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNkLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUU7Z0JBQ3ZCLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3RCO1lBQ0QsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdEIsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQzdDO1NBQ0o7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7MEVBM0dRLFNBQVM7dUVBQVQsU0FBUyxXQUFULFNBQVMsbUJBRk4sTUFBTTs7aUZBRVQsU0FBUztjQUhyQixVQUFVO2VBQUM7Z0JBQ1IsVUFBVSxFQUFFLE1BQU07YUFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN0b3JhZ2UgfSBmcm9tICdAaW9uaWMvc3RvcmFnZS1hbmd1bGFyJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2xvZ2dlci9sb2dnZXIuc2VydmljZSc7XG5cbmludGVyZmFjZSBSb3V0ZURhdGEge1xuICAgIGZ1bmN0aW9uczogc3RyaW5nW107XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBwYWdlSWQ6IHN0cmluZztcbn1cblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBdXRoR3VhcmQgIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2UsIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsIHByaXZhdGUgbHM6IExvZ2luU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcjogQWN0aXZhdGVkUm91dGUsIHByaXZhdGUgbmF2OiBOYXZDb250cm9sbGVyLCBwcml2YXRlIHV0aWwgOiBVdGlsU2VydmljZSwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UpIHsgfVxuXG4gICAgYXN5bmMgY2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KSB7XG4gICAgICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XG4gICAgICAgIGxldCByb3V0ZURhdGE6IFJvdXRlRGF0YSB8IGFueSA9IHJvdXRlLmRhdGE7XG4gICAgICAgIGlmICh0aGlzLmxzLmdldFVzZXIoKSkge1xuICAgICAgICAgICAgbGV0IGlzQWNjZXNzR3JhbnRlZDogYm9vbGVhbiA9IHRoaXMuY2hlY2tQYWdlQWNjZXNzKHJvdXRlRGF0YSwgc3RhdGUpO1xuICAgICAgICAgICAgaWYgKGlzQWNjZXNzR3JhbnRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0FjY2Vzc0dyYW50ZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdbQXV0aEd1YXJkXSBBdW5hdXRob3JpemVkIEFjY2VzcycsIHJvdXRlRGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KFsnL3VuYXV0aG9yaXplZCddKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNBY2Nlc3NHcmFudGVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHN0YXRlLnVybC5zdGFydHNXaXRoKCcvbG9naW4vc3NvJykpIHtcbiAgICAgICAgICAgICAgICBsZXQgcmVmcmVzaFRva2VuID0gdGhpcy5nZXRDb29raWUoJ3J0Jyk7XG4gICAgICAgICAgICAgICAgbGV0IGlzTmF2QWxsb3dlZCA9IGF3YWl0IHRoaXMubHNcbiAgICAgICAgICAgICAgICAgICAgLnJlZnJlc2hUb2tlbihyZWZyZXNoVG9rZW4pXG4gICAgICAgICAgICAgICAgICAgIC50aGVuKGFzeW5jIHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxzLnNldFVzZXIocmVzKS50aGVuKHJlcyA9PiByZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5uYXYubmF2aWdhdGVSb290KFsnL3dlbGNvbWUnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdbQXV0aEd1YXJkXSBlcnJvciB3aGlsZSByZWZyZXNoaW5nIHRva2VuJywgZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChbJy9sb2dpbiddKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gaXNOYXZBbGxvd2VkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGF1dGhUb2tlbiA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoJ2FjY2Vzc190b2tlbicpO1xuICAgICAgICAgICAgbGV0IHJlZnJlc2hUb2tlbiA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXQoJ3JlZnJlc2hfdG9rZW4nKTtcbiAgICAgICAgICAgIGlmIChhdXRoVG9rZW4pIHtcbiAgICAgICAgICAgICAgICBsZXQgaXNBbGxvd2VkID0gYXdhaXQgdGhpcy5scy5sb2FkVXNlckluZm8oKVxuICAgICAgICAgICAgICAgICAgICAudGhlbihhc3luYyByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoWycvbG9naW4nXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlcjogYW55ID0gcmVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJbJ2FjY2Vzc190b2tlbiddID0gYXV0aFRva2VuO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJbJ3JlZnJlc2hfdG9rZW4nXSA9IHJlZnJlc2hUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLmxzLnNldFVzZXIodXNlcikudGhlbihyZXMgPT4gcmVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUudXJsLmluY2x1ZGVzKCdsb2dpbicpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChbJy93ZWxjb21lJ10pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaXNBY2Nlc3NHcmFudGVkOiBib29sZWFuID0gdGhpcy5jaGVja1BhZ2VBY2Nlc3Mocm91dGVEYXRhLCBzdGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQWNjZXNzR3JhbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXNBY2Nlc3NHcmFudGVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChbJy91bmF1dGhvcml6ZWQnXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpc0FjY2Vzc0dyYW50ZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KS5jYXRjaChhc3luYyBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5scy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLnVybC5pbmNsdWRlcygnL25vdC1mb3VuZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoWycvbG9naW4nXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBpc0FsbG93ZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChzdGF0ZS51cmwuaW5jbHVkZXMoJ2xvZ2luJykpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5scy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlLnVybC5pbmNsdWRlcygnL25vdC1mb3VuZCcpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdChbJy9sb2dpbiddKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5scy5yZXNldCgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2hlY2tQYWdlQWNjZXNzKHJvdXRlRGF0YTogUm91dGVEYXRhLCBzdGF0ZTogUm91dGVyU3RhdGVTbmFwc2hvdCk6IGJvb2xlYW4ge1xuICAgICAgICBsZXQgZnVuY3Rpb25zOiBzdHJpbmdbXSA9IHJvdXRlRGF0YS5mdW5jdGlvbnM7XG4gICAgICAgIGlmIChmdW5jdGlvbnMgJiYgZnVuY3Rpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGlmIChmdW5jdGlvbnMuaW5jbHVkZXMoXCIqXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmxzLmNoZWNrRnVuY3Rpb25zKGZ1bmN0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgXCJQbGVhc2Ugc3BlY2lmeSBmdW5jdGlvbiBpbiBhcHAtcm91dGluZy5tb2R1bGUudHMgZmlsZSBmb3IgcGFnZSA6OiBcIiArIHN0YXRlLnVybDtcbiAgICB9XG5cbiAgICBnZXRDb29raWUoY25hbWUpIHtcbiAgICAgICAgdmFyIG5hbWUgPSBjbmFtZSArIFwiPVwiO1xuICAgICAgICB2YXIgZGVjb2RlZENvb2tpZSA9IGRvY3VtZW50LmNvb2tpZTtcbiAgICAgICAgdmFyIGNhID0gZGVjb2RlZENvb2tpZS5zcGxpdCgnOycpO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgYyA9IGNhW2ldO1xuICAgICAgICAgICAgd2hpbGUgKGMuY2hhckF0KDApID09ICcgJykge1xuICAgICAgICAgICAgICAgIGMgPSBjLnN1YnN0cmluZygxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjLmluZGV4T2YobmFtZSkgPT0gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjLnN1YnN0cmluZyhuYW1lLmxlbmd0aCwgYy5sZW5ndGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../services/util/util.service";
|
|
4
|
+
export class NoLoginGuard {
|
|
5
|
+
constructor(util) {
|
|
6
|
+
this.util = util;
|
|
7
|
+
}
|
|
8
|
+
canActivate(next, state) {
|
|
9
|
+
this.util.showLoader();
|
|
10
|
+
return true;
|
|
11
|
+
}
|
|
12
|
+
static { this.ɵfac = function NoLoginGuard_Factory(t) { return new (t || NoLoginGuard)(i0.ɵɵinject(i1.UtilService)); }; }
|
|
13
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: NoLoginGuard, factory: NoLoginGuard.ɵfac, providedIn: 'root' }); }
|
|
14
|
+
}
|
|
15
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NoLoginGuard, [{
|
|
16
|
+
type: Injectable,
|
|
17
|
+
args: [{
|
|
18
|
+
providedIn: 'root'
|
|
19
|
+
}]
|
|
20
|
+
}], () => [{ type: i1.UtilService }], null); })();
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tbG9naW4uZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmV1c2EtYXBwLWxpYi9zcmMvbGliL2d1YXJkcy9uby1sb2dpbi9uby1sb2dpbi5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFRM0MsTUFBTSxPQUFPLFlBQVk7SUFFdkIsWUFBbUIsSUFBaUI7UUFBakIsU0FBSSxHQUFKLElBQUksQ0FBYTtJQUFFLENBQUM7SUFFdkMsV0FBVyxDQUNULElBQTRCLEVBQzVCLEtBQTBCO1FBQ3hCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDekIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOzZFQVRVLFlBQVk7dUVBQVosWUFBWSxXQUFaLFlBQVksbUJBRlgsTUFBTTs7aUZBRVAsWUFBWTtjQUh4QixVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBSb3V0ZXJTdGF0ZVNuYXBzaG90LCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFV0aWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdXRpbC91dGlsLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBOb0xvZ2luR3VhcmQgIHtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXRpbDogVXRpbFNlcnZpY2Upe31cblxuICBjYW5BY3RpdmF0ZShcbiAgICBuZXh0OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LFxuICAgIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT4gfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB8IGJvb2xlYW4gfCBVcmxUcmVlIHtcbiAgICAgIHRoaXMudXRpbC5zaG93TG9hZGVyKCk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgXG59XG4iXX0=
|
|
@@ -1,107 +1,107 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { HttpResponse, HttpErrorResponse } from '@angular/common/http';
|
|
3
|
-
import { throwError } from "rxjs";
|
|
4
|
-
import { catchError, tap } from 'rxjs/operators';
|
|
5
|
-
import { ErrorModel } from '../../models/ErrorModel';
|
|
6
|
-
import { LibConstants } from '../../models/LibConstants';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/router";
|
|
9
|
-
import * as i2 from "../../services/util/util.service";
|
|
10
|
-
import * as i3 from "@ionic/angular";
|
|
11
|
-
import * as i4 from "../../services/login/login.service";
|
|
12
|
-
import * as i5 from "../../services/logger/logger.service";
|
|
13
|
-
import * as i6 from "../../services/maintenance/maintenance.service";
|
|
14
|
-
export class HttpErrorInterceptor {
|
|
15
|
-
constructor(router, util, nav, ls, logger, ms) {
|
|
16
|
-
this.router = router;
|
|
17
|
-
this.util = util;
|
|
18
|
-
this.nav = nav;
|
|
19
|
-
this.ls = ls;
|
|
20
|
-
this.logger = logger;
|
|
21
|
-
this.ms = ms;
|
|
22
|
-
}
|
|
23
|
-
intercept(req, next) {
|
|
24
|
-
return next.handle(req).pipe(tap(evt => {
|
|
25
|
-
if (evt instanceof HttpResponse) {
|
|
26
|
-
this.logger.log('[HttpErrorInterceptor] response ->', evt);
|
|
27
|
-
if (evt.status >= 200 && evt.status < 300) {
|
|
28
|
-
//this.util.hideLoader();
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}), catchError((error) => {
|
|
32
|
-
let errorModel = new ErrorModel();
|
|
33
|
-
errorModel.msg = 'An error occured while processing your request. Please check your network connection or try again.';
|
|
34
|
-
errorModel.timestamp = new Date().toDateString();
|
|
35
|
-
this.logger.error('[HttpErrorInterceptor] Error occured', error);
|
|
36
|
-
if (error instanceof HttpErrorResponse) {
|
|
37
|
-
if ((error.error instanceof ErrorEvent) || (error.error instanceof ProgressEvent)) {
|
|
38
|
-
this.logger.error("[HttpErrorInterceptor] Error Event", error);
|
|
39
|
-
if ((!req.url.includes('localhost') || this.util.isPlayformCapacitor()) && LibConstants.maintenanceModeFeatureEnabled == 'true') {
|
|
40
|
-
this.ms.checkforMaintenance()
|
|
41
|
-
.subscribe(res => {
|
|
42
|
-
if (res.isAppUnderMaintenance) {
|
|
43
|
-
this.nav.navigateRoot('maintenance').then(() => { window.location.reload(); });
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.logger.error(`[HttpErrorInterceptor] error status : ${error.status} ${error.statusText}`);
|
|
50
|
-
switch (error.status) {
|
|
51
|
-
case 401: //login
|
|
52
|
-
errorModel = error.error;
|
|
53
|
-
if ((error.error.error == 'invalid_request' && error.error.roles == 'PRE_AUTH') || this.shouldStayOnPage()) {
|
|
54
|
-
this.logger.error("[HttpErrorInterceptor] invalid request, staying on same page", errorModel);
|
|
55
|
-
break;
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
this.nav.navigateRoot("login").then(() => {
|
|
59
|
-
if (errorModel.msg == 'unauthorized'
|
|
60
|
-
|| errorModel.msg == 'invalid_token'
|
|
61
|
-
|| errorModel.msg == 'token_expired'
|
|
62
|
-
|| errorModel['error'] == 'invalid_token'
|
|
63
|
-
|| errorModel['error'] == 'token_expired') {
|
|
64
|
-
errorModel.msg = 'Session Expired. Please login again.';
|
|
65
|
-
}
|
|
66
|
-
this.ls.logout();
|
|
67
|
-
this.util.errorHandler(errorModel);
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
break;
|
|
71
|
-
case 403: //forbidden
|
|
72
|
-
this.util.errorHandler(errorModel);
|
|
73
|
-
this.nav.navigateRoot("unauthorized");
|
|
74
|
-
break;
|
|
75
|
-
case 404: //Not Found
|
|
76
|
-
case 422: //Unprocessable Entity
|
|
77
|
-
errorModel = error.error;
|
|
78
|
-
break;
|
|
79
|
-
default:
|
|
80
|
-
errorModel = error.error ? error.error : errorModel;
|
|
81
|
-
break;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
this.logger.error("[HttpErrorInterceptor] some thing else happened", error);
|
|
87
|
-
}
|
|
88
|
-
//this.util.hideLoader();
|
|
89
|
-
return throwError(errorModel);
|
|
90
|
-
}));
|
|
91
|
-
}
|
|
92
|
-
shouldStayOnPage() {
|
|
93
|
-
return this.router.url.includes('account-success') ||
|
|
94
|
-
this.router.url.includes('landing') ||
|
|
95
|
-
this.router.url.includes('login') ||
|
|
96
|
-
this.router.url.includes('welcome-splash');
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
(
|
|
102
|
-
type: Injectable,
|
|
103
|
-
args: [{
|
|
104
|
-
providedIn: 'root'
|
|
105
|
-
}]
|
|
106
|
-
}],
|
|
107
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1lcnJvci1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvaW50ZXJjZXB0b3JzL2Vycm9yLWludGVyY2VwdG9yL2h0dHAtZXJyb3ItaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXFELFlBQVksRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3hILE9BQU8sRUFBYSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQUt6RCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQW1CLE1BQWUsRUFBVSxJQUFrQixFQUFVLEdBQW1CLEVBQVUsRUFBaUIsRUFBVSxNQUFxQixFQUFTLEVBQXVCO1FBQWxLLFdBQU0sR0FBTixNQUFNLENBQVM7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFjO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQXFCO0lBQUksQ0FBQztJQUUxTCxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDTixJQUFJLEdBQUcsWUFBWSxZQUFZLEVBQUU7Z0JB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bkIsTUFBTTt1RkFFUCxvQkFBb0I7Y0FIaEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsSHR0cFJlcXVlc3QsSHR0cFJlc3BvbnNlLEh0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge09ic2VydmFibGUsIHRocm93RXJyb3J9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2NhdGNoRXJyb3IsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBFcnJvck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Vycm9yTW9kZWwnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFpbnRlbmFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpbnRlbmFuY2UvbWFpbnRlbmFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSHR0cEVycm9ySW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3J7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlciA6IFJvdXRlciwgcHJpdmF0ZSB1dGlsIDogVXRpbFNlcnZpY2UsIHByaXZhdGUgbmF2IDogTmF2Q29udHJvbGxlciwgcHJpdmF0ZSBscyA6IExvZ2luU2VydmljZSwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHB1YmxpYyBtcyA6IE1haW50ZW5hbmNlU2VydmljZSkgeyB9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcbiAgICAgICAgICAgIHRhcChldnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKCdbSHR0cEVycm9ySW50ZXJjZXB0b3JdIHJlc3BvbnNlIC0+JywgZXZ0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZXZ0LnN0YXR1cyA+PSAyMDAgJiYgZXZ0LnN0YXR1cyA8IDMwMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMudXRpbC5oaWRlTG9hZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgbGV0IGVycm9yTW9kZWwgOiBFcnJvck1vZGVsID0gbmV3IEVycm9yTW9kZWwoKTtcbiAgICAgICAgICAgICAgIGVycm9yTW9kZWwubXNnID0gJ0FuIGVycm9yIG9jY3VyZWQgd2hpbGUgcHJvY2Vzc2luZyB5b3VyIHJlcXVlc3QuIFBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbiBvciB0cnkgYWdhaW4uJztcbiAgICAgICAgICAgICAgIGVycm9yTW9kZWwudGltZXN0YW1wID0gbmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKTtcbiAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdbSHR0cEVycm9ySW50ZXJjZXB0b3JdIEVycm9yIG9jY3VyZWQnLCBlcnJvcik7XG4gICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHx8IChlcnJvci5lcnJvciBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiW0h0dHBFcnJvckludGVyY2VwdG9yXSBFcnJvciBFdmVudFwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIGlmKCghcmVxLnVybC5pbmNsdWRlcygnbG9jYWxob3N0JykgfHwgdGhpcy51dGlsLmlzUGxheWZvcm1DYXBhY2l0b3IoKSkgJiYgTGliQ29uc3RhbnRzLm1haW50ZW5hbmNlTW9kZUZlYXR1cmVFbmFibGVkID09ICd0cnVlJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1zLmNoZWNrZm9yTWFpbnRlbmFuY2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlcy5pc0FwcFVuZGVyTWFpbnRlbmFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdCgnbWFpbnRlbmFuY2UnKS50aGVuKCgpID0+IHt3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYFtIdHRwRXJyb3JJbnRlcmNlcHRvcl0gZXJyb3Igc3RhdHVzIDogJHtlcnJvci5zdGF0dXN9ICR7ZXJyb3Iuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlcnJvci5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDAxOiAgICAgIC8vbG9naW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1vZGVsID0gZXJyb3IuZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoKGVycm9yLmVycm9yLmVycm9yID09ICdpbnZhbGlkX3JlcXVlc3QnICYmIGVycm9yLmVycm9yLnJvbGVzID09ICdQUkVfQVVUSCcpIHx8IHRoaXMuc2hvdWxkU3RheU9uUGFnZSgpKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJbSHR0cEVycm9ySW50ZXJjZXB0b3JdIGludmFsaWQgcmVxdWVzdCwgc3RheWluZyBvbiBzYW1lIHBhZ2VcIiwgZXJyb3JNb2RlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCJsb2dpblwiKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGVycm9yTW9kZWwubXNnID09ICd1bmF1dGhvcml6ZWQnIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBlcnJvck1vZGVsLm1zZyA9PSAnaW52YWxpZF90b2tlbicgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGVycm9yTW9kZWwubXNnID09ICd0b2tlbl9leHBpcmVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBlcnJvck1vZGVsWydlcnJvciddID09ICdpbnZhbGlkX3Rva2VuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBlcnJvck1vZGVsWydlcnJvciddID09ICd0b2tlbl9leHBpcmVkJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTW9kZWwubXNnID0gJ1Nlc3Npb24gRXhwaXJlZC4gUGxlYXNlIGxvZ2luIGFnYWluLic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHMubG9nb3V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnJvck1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwMzogICAgIC8vZm9yYmlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnJvck1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCJ1bmF1dGhvcml6ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwNDogICAgIC8vTm90IEZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQyMjogICAgIC8vVW5wcm9jZXNzYWJsZSBFbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1vZGVsID0gZXJyb3IuZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTW9kZWwgPSBlcnJvci5lcnJvciA/IGVycm9yLmVycm9yIDogZXJyb3JNb2RlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiW0h0dHBFcnJvckludGVyY2VwdG9yXSBzb21lIHRoaW5nIGVsc2UgaGFwcGVuZWRcIiwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy90aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNb2RlbCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzaG91bGRTdGF5T25QYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdhY2NvdW50LXN1Y2Nlc3MnKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnbGFuZGluZycpIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdsb2dpbicpIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCd3ZWxjb21lLXNwbGFzaCcpO1xuICAgIH1cbn1cbiJdfQ==
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { HttpResponse, HttpErrorResponse } from '@angular/common/http';
|
|
3
|
+
import { throwError } from "rxjs";
|
|
4
|
+
import { catchError, tap } from 'rxjs/operators';
|
|
5
|
+
import { ErrorModel } from '../../models/ErrorModel';
|
|
6
|
+
import { LibConstants } from '../../models/LibConstants';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/router";
|
|
9
|
+
import * as i2 from "../../services/util/util.service";
|
|
10
|
+
import * as i3 from "@ionic/angular";
|
|
11
|
+
import * as i4 from "../../services/login/login.service";
|
|
12
|
+
import * as i5 from "../../services/logger/logger.service";
|
|
13
|
+
import * as i6 from "../../services/maintenance/maintenance.service";
|
|
14
|
+
export class HttpErrorInterceptor {
|
|
15
|
+
constructor(router, util, nav, ls, logger, ms) {
|
|
16
|
+
this.router = router;
|
|
17
|
+
this.util = util;
|
|
18
|
+
this.nav = nav;
|
|
19
|
+
this.ls = ls;
|
|
20
|
+
this.logger = logger;
|
|
21
|
+
this.ms = ms;
|
|
22
|
+
}
|
|
23
|
+
intercept(req, next) {
|
|
24
|
+
return next.handle(req).pipe(tap(evt => {
|
|
25
|
+
if (evt instanceof HttpResponse) {
|
|
26
|
+
this.logger.log('[HttpErrorInterceptor] response ->', evt);
|
|
27
|
+
if (evt.status >= 200 && evt.status < 300) {
|
|
28
|
+
//this.util.hideLoader();
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}), catchError((error) => {
|
|
32
|
+
let errorModel = new ErrorModel();
|
|
33
|
+
errorModel.msg = 'An error occured while processing your request. Please check your network connection or try again.';
|
|
34
|
+
errorModel.timestamp = new Date().toDateString();
|
|
35
|
+
this.logger.error('[HttpErrorInterceptor] Error occured', error);
|
|
36
|
+
if (error instanceof HttpErrorResponse) {
|
|
37
|
+
if ((error.error instanceof ErrorEvent) || (error.error instanceof ProgressEvent)) {
|
|
38
|
+
this.logger.error("[HttpErrorInterceptor] Error Event", error);
|
|
39
|
+
if ((!req.url.includes('localhost') || this.util.isPlayformCapacitor()) && LibConstants.maintenanceModeFeatureEnabled == 'true') {
|
|
40
|
+
this.ms.checkforMaintenance()
|
|
41
|
+
.subscribe(res => {
|
|
42
|
+
if (res.isAppUnderMaintenance) {
|
|
43
|
+
this.nav.navigateRoot('maintenance').then(() => { window.location.reload(); });
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
this.logger.error(`[HttpErrorInterceptor] error status : ${error.status} ${error.statusText}`);
|
|
50
|
+
switch (error.status) {
|
|
51
|
+
case 401: //login
|
|
52
|
+
errorModel = error.error;
|
|
53
|
+
if ((error.error.error == 'invalid_request' && error.error.roles == 'PRE_AUTH') || this.shouldStayOnPage()) {
|
|
54
|
+
this.logger.error("[HttpErrorInterceptor] invalid request, staying on same page", errorModel);
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
this.nav.navigateRoot("login").then(() => {
|
|
59
|
+
if (errorModel.msg == 'unauthorized'
|
|
60
|
+
|| errorModel.msg == 'invalid_token'
|
|
61
|
+
|| errorModel.msg == 'token_expired'
|
|
62
|
+
|| errorModel['error'] == 'invalid_token'
|
|
63
|
+
|| errorModel['error'] == 'token_expired') {
|
|
64
|
+
errorModel.msg = 'Session Expired. Please login again.';
|
|
65
|
+
}
|
|
66
|
+
this.ls.logout();
|
|
67
|
+
this.util.errorHandler(errorModel);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
break;
|
|
71
|
+
case 403: //forbidden
|
|
72
|
+
this.util.errorHandler(errorModel);
|
|
73
|
+
this.nav.navigateRoot("unauthorized");
|
|
74
|
+
break;
|
|
75
|
+
case 404: //Not Found
|
|
76
|
+
case 422: //Unprocessable Entity
|
|
77
|
+
errorModel = error.error;
|
|
78
|
+
break;
|
|
79
|
+
default:
|
|
80
|
+
errorModel = error.error ? error.error : errorModel;
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
this.logger.error("[HttpErrorInterceptor] some thing else happened", error);
|
|
87
|
+
}
|
|
88
|
+
//this.util.hideLoader();
|
|
89
|
+
return throwError(errorModel);
|
|
90
|
+
}));
|
|
91
|
+
}
|
|
92
|
+
shouldStayOnPage() {
|
|
93
|
+
return this.router.url.includes('account-success') ||
|
|
94
|
+
this.router.url.includes('landing') ||
|
|
95
|
+
this.router.url.includes('login') ||
|
|
96
|
+
this.router.url.includes('welcome-splash');
|
|
97
|
+
}
|
|
98
|
+
static { this.ɵfac = function HttpErrorInterceptor_Factory(t) { return new (t || HttpErrorInterceptor)(i0.ɵɵinject(i1.Router), i0.ɵɵinject(i2.UtilService), i0.ɵɵinject(i3.NavController), i0.ɵɵinject(i4.LoginService), i0.ɵɵinject(i5.LoggerService), i0.ɵɵinject(i6.MaintenanceService)); }; }
|
|
99
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: HttpErrorInterceptor, factory: HttpErrorInterceptor.ɵfac, providedIn: 'root' }); }
|
|
100
|
+
}
|
|
101
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(HttpErrorInterceptor, [{
|
|
102
|
+
type: Injectable,
|
|
103
|
+
args: [{
|
|
104
|
+
providedIn: 'root'
|
|
105
|
+
}]
|
|
106
|
+
}], () => [{ type: i1.Router }, { type: i2.UtilService }, { type: i3.NavController }, { type: i4.LoginService }, { type: i5.LoggerService }, { type: i6.MaintenanceService }], null); })();
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC1lcnJvci1pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1yZXVzYS1hcHAtbGliL3NyYy9saWIvaW50ZXJjZXB0b3JzL2Vycm9yLWludGVyY2VwdG9yL2h0dHAtZXJyb3ItaW50ZXJjZXB0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQXFELFlBQVksRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ3hILE9BQU8sRUFBYSxVQUFVLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUcvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFLckQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7OztBQUt6RCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQW1CLE1BQWUsRUFBVSxJQUFrQixFQUFVLEdBQW1CLEVBQVUsRUFBaUIsRUFBVSxNQUFxQixFQUFTLEVBQXVCO1FBQWxLLFdBQU0sR0FBTixNQUFNLENBQVM7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFjO1FBQVUsUUFBRyxHQUFILEdBQUcsQ0FBZ0I7UUFBVSxPQUFFLEdBQUYsRUFBRSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFTLE9BQUUsR0FBRixFQUFFLENBQXFCO0lBQUksQ0FBQztJQUUxTCxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtRQUMxQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUMxQixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDTixJQUFJLEdBQUcsWUFBWSxZQUFZLEVBQUU7Z0JB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QixNQUFNOztpRkFFUCxvQkFBb0I7Y0FIaEMsVUFBVTtlQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtIdHRwRXZlbnQsIEh0dHBIYW5kbGVyLCBIdHRwSW50ZXJjZXB0b3IsSHR0cFJlcXVlc3QsSHR0cFJlc3BvbnNlLEh0dHBFcnJvclJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge09ic2VydmFibGUsIHRocm93RXJyb3J9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge2NhdGNoRXJyb3IsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBFcnJvck1vZGVsIH0gZnJvbSAnLi4vLi4vbW9kZWxzL0Vycm9yTW9kZWwnO1xuaW1wb3J0IHsgVXRpbFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy91dGlsL3V0aWwuc2VydmljZSc7XG5pbXBvcnQgeyBMb2dpblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dpbi9sb2dpbi5zZXJ2aWNlJztcbmltcG9ydCB7IExvZ2dlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWFpbnRlbmFuY2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpbnRlbmFuY2UvbWFpbnRlbmFuY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBMaWJDb25zdGFudHMgfSBmcm9tICcuLi8uLi9tb2RlbHMvTGliQ29uc3RhbnRzJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgSHR0cEVycm9ySW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3J7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJvdXRlciA6IFJvdXRlciwgcHJpdmF0ZSB1dGlsIDogVXRpbFNlcnZpY2UsIHByaXZhdGUgbmF2IDogTmF2Q29udHJvbGxlciwgcHJpdmF0ZSBscyA6IExvZ2luU2VydmljZSwgcHJpdmF0ZSBsb2dnZXI6IExvZ2dlclNlcnZpY2UsIHB1YmxpYyBtcyA6IE1haW50ZW5hbmNlU2VydmljZSkgeyB9XG5cbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XG4gICAgICAgICAgcmV0dXJuIG5leHQuaGFuZGxlKHJlcSkucGlwZShcbiAgICAgICAgICAgIHRhcChldnQgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChldnQgaW5zdGFuY2VvZiBIdHRwUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIubG9nKCdbSHR0cEVycm9ySW50ZXJjZXB0b3JdIHJlc3BvbnNlIC0+JywgZXZ0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYoZXZ0LnN0YXR1cyA+PSAyMDAgJiYgZXZ0LnN0YXR1cyA8IDMwMCl7XG4gICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMudXRpbC5oaWRlTG9hZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgbGV0IGVycm9yTW9kZWwgOiBFcnJvck1vZGVsID0gbmV3IEVycm9yTW9kZWwoKTtcbiAgICAgICAgICAgICAgIGVycm9yTW9kZWwubXNnID0gJ0FuIGVycm9yIG9jY3VyZWQgd2hpbGUgcHJvY2Vzc2luZyB5b3VyIHJlcXVlc3QuIFBsZWFzZSBjaGVjayB5b3VyIG5ldHdvcmsgY29ubmVjdGlvbiBvciB0cnkgYWdhaW4uJztcbiAgICAgICAgICAgICAgIGVycm9yTW9kZWwudGltZXN0YW1wID0gbmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKTtcbiAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdbSHR0cEVycm9ySW50ZXJjZXB0b3JdIEVycm9yIG9jY3VyZWQnLCBlcnJvcik7XG4gICAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgaWYgKChlcnJvci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHx8IChlcnJvci5lcnJvciBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiW0h0dHBFcnJvckludGVyY2VwdG9yXSBFcnJvciBFdmVudFwiLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIGlmKCghcmVxLnVybC5pbmNsdWRlcygnbG9jYWxob3N0JykgfHwgdGhpcy51dGlsLmlzUGxheWZvcm1DYXBhY2l0b3IoKSkgJiYgTGliQ29uc3RhbnRzLm1haW50ZW5hbmNlTW9kZUZlYXR1cmVFbmFibGVkID09ICd0cnVlJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1zLmNoZWNrZm9yTWFpbnRlbmFuY2UoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlcy5pc0FwcFVuZGVyTWFpbnRlbmFuY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubmF2Lm5hdmlnYXRlUm9vdCgnbWFpbnRlbmFuY2UnKS50aGVuKCgpID0+IHt3aW5kb3cubG9jYXRpb24ucmVsb2FkKCl9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoYFtIdHRwRXJyb3JJbnRlcmNlcHRvcl0gZXJyb3Igc3RhdHVzIDogJHtlcnJvci5zdGF0dXN9ICR7ZXJyb3Iuc3RhdHVzVGV4dH1gKTtcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlcnJvci5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDAxOiAgICAgIC8vbG9naW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1vZGVsID0gZXJyb3IuZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoKGVycm9yLmVycm9yLmVycm9yID09ICdpbnZhbGlkX3JlcXVlc3QnICYmIGVycm9yLmVycm9yLnJvbGVzID09ICdQUkVfQVVUSCcpIHx8IHRoaXMuc2hvdWxkU3RheU9uUGFnZSgpKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXCJbSHR0cEVycm9ySW50ZXJjZXB0b3JdIGludmFsaWQgcmVxdWVzdCwgc3RheWluZyBvbiBzYW1lIHBhZ2VcIiwgZXJyb3JNb2RlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCJsb2dpblwiKS50aGVuKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGVycm9yTW9kZWwubXNnID09ICd1bmF1dGhvcml6ZWQnIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBlcnJvck1vZGVsLm1zZyA9PSAnaW52YWxpZF90b2tlbicgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGVycm9yTW9kZWwubXNnID09ICd0b2tlbl9leHBpcmVkJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBlcnJvck1vZGVsWydlcnJvciddID09ICdpbnZhbGlkX3Rva2VuJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBlcnJvck1vZGVsWydlcnJvciddID09ICd0b2tlbl9leHBpcmVkJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTW9kZWwubXNnID0gJ1Nlc3Npb24gRXhwaXJlZC4gUGxlYXNlIGxvZ2luIGFnYWluLic7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubHMubG9nb3V0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnJvck1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwMzogICAgIC8vZm9yYmlkZGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy51dGlsLmVycm9ySGFuZGxlcihlcnJvck1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm5hdi5uYXZpZ2F0ZVJvb3QoXCJ1bmF1dGhvcml6ZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQwNDogICAgIC8vTm90IEZvdW5kXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQyMjogICAgIC8vVW5wcm9jZXNzYWJsZSBFbnRpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvck1vZGVsID0gZXJyb3IuZXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTW9kZWwgPSBlcnJvci5lcnJvciA/IGVycm9yLmVycm9yIDogZXJyb3JNb2RlbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFwiW0h0dHBFcnJvckludGVyY2VwdG9yXSBzb21lIHRoaW5nIGVsc2UgaGFwcGVuZWRcIiwgZXJyb3IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy90aGlzLnV0aWwuaGlkZUxvYWRlcigpO1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3JNb2RlbCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBzaG91bGRTdGF5T25QYWdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdhY2NvdW50LXN1Y2Nlc3MnKSB8fFxuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLnVybC5pbmNsdWRlcygnbGFuZGluZycpIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCdsb2dpbicpIHx8XG4gICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIudXJsLmluY2x1ZGVzKCd3ZWxjb21lLXNwbGFzaCcpO1xuICAgIH1cbn1cbiJdfQ==
|