@resolveio/client-lib-core 0.0.1
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/lib/account-manager.service.mjs +213 -0
- package/esm2020/lib/auth/auth-guard.service.mjs +137 -0
- package/esm2020/lib/auth/auth-permissions.service.mjs +24 -0
- package/esm2020/lib/auth/auth.service.mjs +241 -0
- package/esm2020/lib/auth/auth365.component.mjs +44 -0
- package/esm2020/lib/auth/can-deactivate-guard.service.mjs +13 -0
- package/esm2020/lib/auth/enroll.component.mjs +81 -0
- package/esm2020/lib/auth/forgot-password.component.mjs +82 -0
- package/esm2020/lib/core.component.mjs +488 -0
- package/esm2020/lib/core.module.mjs +179 -0
- package/esm2020/lib/core.service.mjs +96 -0
- package/esm2020/lib/directive/focus.mjs +22 -0
- package/esm2020/lib/directive/scroll.mjs +55 -0
- package/esm2020/lib/home/about-us.component.mjs +34 -0
- package/esm2020/lib/home/contact-us.component.mjs +57 -0
- package/esm2020/lib/home/demo.component.mjs +59 -0
- package/esm2020/lib/home/home.component.mjs +105 -0
- package/esm2020/lib/home/home.module.mjs +50 -0
- package/esm2020/lib/logger/logger.component.mjs +221 -0
- package/esm2020/lib/models/app-status.model.mjs +2 -0
- package/esm2020/lib/models/collection-document.model.mjs +2 -0
- package/esm2020/lib/models/cron-job.model.mjs +2 -0
- package/esm2020/lib/models/dialog.model.mjs +2 -0
- package/esm2020/lib/models/file.model.mjs +2 -0
- package/esm2020/lib/models/log-method-latency.model.mjs +2 -0
- package/esm2020/lib/models/navbar-main-tab.model.mjs +2 -0
- package/esm2020/lib/models/pagination.model.mjs +2 -0
- package/esm2020/lib/models/permission.model.mjs +2 -0
- package/esm2020/lib/models/select-data-label.model.mjs +2 -0
- package/esm2020/lib/models/subscription.model.mjs +2 -0
- package/esm2020/lib/models/support-ticket.model.mjs +2 -0
- package/esm2020/lib/models/user-group.model.mjs +2 -0
- package/esm2020/lib/models/user.model.mjs +2 -0
- package/esm2020/lib/offline-db.mjs +519 -0
- package/esm2020/lib/offline-manager.service.mjs +107 -0
- package/esm2020/lib/pipes/domsanitizor.pipe.mjs +28 -0
- package/esm2020/lib/pipes/filter.pipe.mjs +36 -0
- package/esm2020/lib/pipes/json-parse.pipe.mjs +29 -0
- package/esm2020/lib/pipes/minus-currency.pipe.mjs +16 -0
- package/esm2020/lib/pipes/phone.pipe.mjs +47 -0
- package/esm2020/lib/pipes/pipe.module.mjs +54 -0
- package/esm2020/lib/pipes/reverse-list.pipe.mjs +17 -0
- package/esm2020/lib/pipes/titlecase.pipe.mjs +22 -0
- package/esm2020/lib/resolveio-class.mjs +41 -0
- package/esm2020/lib/shared/shared.module.mjs +91 -0
- package/esm2020/lib/socket-manager.service.mjs +360 -0
- package/esm2020/lib/socket.service.mjs +129 -0
- package/esm2020/lib/standard-pages/contactus/contactus.component.mjs +45 -0
- package/esm2020/lib/standard-pages/faq/faq.component.mjs +45 -0
- package/esm2020/lib/standard-pages/features/features.component.mjs +23 -0
- package/esm2020/lib/standard-pages/home/home.component.mjs +38 -0
- package/esm2020/lib/standard-pages/howitwork/howitwork.component.mjs +23 -0
- package/esm2020/lib/standard-pages/loginsignup/loginsignup.component.mjs +23 -0
- package/esm2020/lib/standard-pages/pricing/pricing.component.mjs +37 -0
- package/esm2020/lib/standard-pages/standard-pages.module.mjs +69 -0
- package/esm2020/lib/support-ticket/detail/support-ticket-detail.component.mjs +204 -0
- package/esm2020/lib/support-ticket/edit/support-ticket-edit.component.mjs +122 -0
- package/esm2020/lib/support-ticket/list/support-ticket-list.component.mjs +137 -0
- package/esm2020/lib/support-ticket/new/support-ticket-new.component.mjs +115 -0
- package/esm2020/lib/support-ticket/support-ticket.component.mjs +63 -0
- package/esm2020/lib/support-ticket/support-ticket.module.mjs +57 -0
- package/esm2020/lib/support-ticket/support-ticket.routing.mjs +20 -0
- package/esm2020/lib/support-ticket/support-ticket.service.mjs +17 -0
- package/esm2020/lib/token-manager.service.mjs +24 -0
- package/esm2020/lib/user-settings/settings/users-settings.component.mjs +312 -0
- package/esm2020/lib/user-settings/user-settings.component.mjs +57 -0
- package/esm2020/lib/user-settings/user-settings.module.mjs +58 -0
- package/esm2020/lib/user-settings/user-settings.permission.mjs +10 -0
- package/esm2020/lib/user-settings/user-settings.routing.mjs +14 -0
- package/esm2020/lib/user-settings/user-settings.service.mjs +17 -0
- package/esm2020/lib/util/action-name.helper.mjs +9 -0
- package/esm2020/lib/util/aws.service.mjs +79 -0
- package/esm2020/lib/util/common.helper.mjs +140 -0
- package/esm2020/lib/util/validation.service.mjs +177 -0
- package/esm2020/lib/util/window-resize.service.mjs +24 -0
- package/esm2020/lib/util/window.service.mjs +16 -0
- package/esm2020/lib/widgets/alert/alert.model.mjs +2 -0
- package/esm2020/lib/widgets/alert/alert.service.mjs +76 -0
- package/esm2020/lib/widgets/chartjs/chart.component.mjs +86 -0
- package/esm2020/lib/widgets/chartjs/chart.module.mjs +17 -0
- package/esm2020/lib/widgets/collapse-table/collapse-table.component.mjs +79 -0
- package/esm2020/lib/widgets/collapse-table/collapse-table.module.mjs +36 -0
- package/esm2020/lib/widgets/data-table/data-table.component.mjs +77 -0
- package/esm2020/lib/widgets/data-table/data-table.model.mjs +2 -0
- package/esm2020/lib/widgets/data-table/data-table.module.mjs +43 -0
- package/esm2020/lib/widgets/date-shortcut/date-shortcut.component.mjs +195 -0
- package/esm2020/lib/widgets/date-shortcut/date-shortcut.module.mjs +34 -0
- package/esm2020/lib/widgets/dialog/dialog.confirm.content.mjs +63 -0
- package/esm2020/lib/widgets/dialog/dialog.error.content.mjs +57 -0
- package/esm2020/lib/widgets/dialog/dialog.input.content.mjs +197 -0
- package/esm2020/lib/widgets/dialog/dialog.login.content.mjs +348 -0
- package/esm2020/lib/widgets/dialog/dialog.notify.content.mjs +57 -0
- package/esm2020/lib/widgets/dialog/dialog.register.content.mjs +330 -0
- package/esm2020/lib/widgets/dialog/dialog.select-data-labels.content.mjs +191 -0
- package/esm2020/lib/widgets/dialog/dialog.select-datetime.content.mjs +140 -0
- package/esm2020/lib/widgets/dialog/dialog.service.mjs +71 -0
- package/esm2020/lib/widgets/file/file-upload.component.mjs +440 -0
- package/esm2020/lib/widgets/file/file-upload.module.mjs +50 -0
- package/esm2020/lib/widgets/form-button/form-button.component.mjs +91 -0
- package/esm2020/lib/widgets/form-button/form-button.module.mjs +30 -0
- package/esm2020/lib/widgets/navbar-main/navbar-main.component.mjs +209 -0
- package/esm2020/lib/widgets/navbar-module/navbar-module.component.mjs +138 -0
- package/esm2020/lib/widgets/navbar-module/navbar-module.model.mjs +2 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.mjs +14 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.mjs +34 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.mjs +2 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.mjs +76 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.mjs +70 -0
- package/esm2020/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.mjs +10 -0
- package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.component.mjs +38 -0
- package/esm2020/lib/widgets/responsive-button-group/responsive-button-group.module.mjs +26 -0
- package/esm2020/lib/widgets/scheduler/scheduler.component.mjs +185 -0
- package/esm2020/lib/widgets/scheduler/scheduler.module.mjs +39 -0
- package/esm2020/lib/widgets/sort-table/sort-table-header.component.mjs +67 -0
- package/esm2020/lib/widgets/sort-table/sort-table-ngfor.component.mjs +48 -0
- package/esm2020/lib/widgets/sort-table/sort-table.directive.mjs +174 -0
- package/esm2020/lib/widgets/sort-table/sort-table.module.mjs +40 -0
- package/esm2020/lib/widgets/user-role/user-role.component.mjs +27 -0
- package/esm2020/lib/widgets/user-role/user-role.module.mjs +26 -0
- package/esm2020/public_api.mjs +109 -0
- package/esm2020/resolveio-client-lib-core.mjs +5 -0
- package/fesm2015/resolveio-client-lib-core.mjs +8856 -0
- package/fesm2015/resolveio-client-lib-core.mjs.map +1 -0
- package/fesm2020/resolveio-client-lib-core.mjs +8849 -0
- package/fesm2020/resolveio-client-lib-core.mjs.map +1 -0
- package/lib/account-manager.service.d.ts +42 -0
- package/lib/auth/auth-guard.service.d.ts +25 -0
- package/lib/auth/auth-permissions.service.d.ts +10 -0
- package/lib/auth/auth.service.d.ts +29 -0
- package/lib/auth/auth365.component.d.ts +20 -0
- package/lib/auth/can-deactivate-guard.service.d.ts +11 -0
- package/lib/auth/enroll.component.d.ts +28 -0
- package/lib/auth/forgot-password.component.d.ts +28 -0
- package/lib/core.component.d.ts +69 -0
- package/lib/core.module.d.ts +32 -0
- package/lib/core.service.d.ts +53 -0
- package/lib/directive/focus.d.ts +10 -0
- package/lib/directive/scroll.d.ts +20 -0
- package/lib/home/about-us.component.d.ts +15 -0
- package/lib/home/contact-us.component.d.ts +20 -0
- package/lib/home/demo.component.d.ts +25 -0
- package/lib/home/home.component.d.ts +33 -0
- package/lib/home/home.module.d.ts +13 -0
- package/lib/logger/logger.component.d.ts +37 -0
- package/lib/models/app-status.model.d.ts +4 -0
- package/lib/models/collection-document.model.d.ts +6 -0
- package/lib/models/cron-job.model.d.ts +13 -0
- package/lib/models/dialog.model.d.ts +18 -0
- package/lib/models/file.model.d.ts +9 -0
- package/lib/models/log-method-latency.model.d.ts +7 -0
- package/lib/models/navbar-main-tab.model.d.ts +14 -0
- package/lib/models/pagination.model.d.ts +17 -0
- package/lib/models/permission.model.d.ts +13 -0
- package/lib/models/select-data-label.model.d.ts +9 -0
- package/lib/models/subscription.model.d.ts +19 -0
- package/lib/models/support-ticket.model.d.ts +71 -0
- package/lib/models/user-group.model.d.ts +19 -0
- package/lib/models/user.model.d.ts +70 -0
- package/lib/offline-db.d.ts +28 -0
- package/lib/offline-manager.service.d.ts +23 -0
- package/lib/pipes/domsanitizor.pipe.d.ts +10 -0
- package/lib/pipes/filter.pipe.d.ts +12 -0
- package/lib/pipes/json-parse.pipe.d.ts +7 -0
- package/lib/pipes/minus-currency.pipe.d.ts +7 -0
- package/lib/pipes/phone.pipe.d.ts +7 -0
- package/lib/pipes/pipe.module.d.ts +13 -0
- package/lib/pipes/reverse-list.pipe.d.ts +6 -0
- package/lib/pipes/titlecase.pipe.d.ts +7 -0
- package/lib/resolveio-class.d.ts +26 -0
- package/lib/shared/shared.module.d.ts +16 -0
- package/lib/socket-manager.service.d.ts +33 -0
- package/lib/socket.service.d.ts +33 -0
- package/lib/standard-pages/contactus/contactus.component.d.ts +17 -0
- package/lib/standard-pages/faq/faq.component.d.ts +17 -0
- package/lib/standard-pages/features/features.component.d.ts +12 -0
- package/lib/standard-pages/home/home.component.d.ts +14 -0
- package/lib/standard-pages/howitwork/howitwork.component.d.ts +12 -0
- package/lib/standard-pages/loginsignup/loginsignup.component.d.ts +12 -0
- package/lib/standard-pages/pricing/pricing.component.d.ts +14 -0
- package/lib/standard-pages/standard-pages.module.d.ts +17 -0
- package/lib/support-ticket/detail/support-ticket-detail.component.d.ts +32 -0
- package/lib/support-ticket/edit/support-ticket-edit.component.d.ts +30 -0
- package/lib/support-ticket/list/support-ticket-list.component.d.ts +26 -0
- package/lib/support-ticket/new/support-ticket-new.component.d.ts +26 -0
- package/lib/support-ticket/support-ticket.component.d.ts +20 -0
- package/lib/support-ticket/support-ticket.module.d.ts +16 -0
- package/lib/support-ticket/support-ticket.routing.d.ts +3 -0
- package/lib/support-ticket/support-ticket.service.d.ts +9 -0
- package/lib/token-manager.service.d.ts +11 -0
- package/lib/user-settings/settings/users-settings.component.d.ts +57 -0
- package/lib/user-settings/user-settings.component.d.ts +20 -0
- package/lib/user-settings/user-settings.module.d.ts +15 -0
- package/lib/user-settings/user-settings.permission.d.ts +2 -0
- package/lib/user-settings/user-settings.routing.d.ts +3 -0
- package/lib/user-settings/user-settings.service.d.ts +9 -0
- package/lib/util/action-name.helper.d.ts +1 -0
- package/lib/util/aws.service.d.ts +16 -0
- package/lib/util/common.helper.d.ts +12 -0
- package/lib/util/validation.service.d.ts +85 -0
- package/lib/util/window-resize.service.d.ts +12 -0
- package/lib/util/window.service.d.ts +6 -0
- package/lib/widgets/alert/alert.model.d.ts +1 -0
- package/lib/widgets/alert/alert.service.d.ts +11 -0
- package/lib/widgets/chartjs/chart.component.d.ts +22 -0
- package/lib/widgets/chartjs/chart.module.d.ts +8 -0
- package/lib/widgets/collapse-table/collapse-table.component.d.ts +23 -0
- package/lib/widgets/collapse-table/collapse-table.module.d.ts +9 -0
- package/lib/widgets/data-table/data-table.component.d.ts +23 -0
- package/lib/widgets/data-table/data-table.model.d.ts +13 -0
- package/lib/widgets/data-table/data-table.module.d.ts +12 -0
- package/lib/widgets/date-shortcut/date-shortcut.component.d.ts +20 -0
- package/lib/widgets/date-shortcut/date-shortcut.module.d.ts +10 -0
- package/lib/widgets/dialog/dialog.confirm.content.d.ts +12 -0
- package/lib/widgets/dialog/dialog.error.content.d.ts +11 -0
- package/lib/widgets/dialog/dialog.input.content.d.ts +18 -0
- package/lib/widgets/dialog/dialog.login.content.d.ts +16 -0
- package/lib/widgets/dialog/dialog.notify.content.d.ts +11 -0
- package/lib/widgets/dialog/dialog.register.content.d.ts +13 -0
- package/lib/widgets/dialog/dialog.select-data-labels.content.d.ts +22 -0
- package/lib/widgets/dialog/dialog.select-datetime.content.d.ts +16 -0
- package/lib/widgets/dialog/dialog.service.d.ts +18 -0
- package/lib/widgets/file/file-upload.component.d.ts +49 -0
- package/lib/widgets/file/file-upload.module.d.ts +14 -0
- package/lib/widgets/form-button/form-button.component.d.ts +14 -0
- package/lib/widgets/form-button/form-button.module.d.ts +9 -0
- package/lib/widgets/navbar-main/navbar-main.component.d.ts +52 -0
- package/lib/widgets/navbar-module/navbar-module.component.d.ts +24 -0
- package/lib/widgets/navbar-module/navbar-module.model.d.ts +13 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap-tour.service.d.ts +7 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/ng-bootstrap.module.d.ts +17 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/step-option.interface.d.ts +5 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-anchor.directive.d.ts +26 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.component.d.ts +20 -0
- package/lib/widgets/ngx-tour-ng-bootstrap/tour-step-template.service.d.ts +9 -0
- package/lib/widgets/responsive-button-group/responsive-button-group.component.d.ts +17 -0
- package/lib/widgets/responsive-button-group/responsive-button-group.module.d.ts +8 -0
- package/lib/widgets/scheduler/scheduler.component.d.ts +50 -0
- package/lib/widgets/scheduler/scheduler.module.d.ts +11 -0
- package/lib/widgets/sort-table/sort-table-header.component.d.ts +23 -0
- package/lib/widgets/sort-table/sort-table-ngfor.component.d.ts +17 -0
- package/lib/widgets/sort-table/sort-table.directive.d.ts +48 -0
- package/lib/widgets/sort-table/sort-table.module.d.ts +11 -0
- package/lib/widgets/user-role/user-role.component.d.ts +10 -0
- package/lib/widgets/user-role/user-role.module.d.ts +8 -0
- package/package.json +72 -0
- package/public_api.d.ts +105 -0
- package/resolveio-client-lib-core.d.ts +5 -0
- package/src/assets/css/font-awesome.css +2338 -0
- package/src/assets/css/home-page-layout.css +7221 -0
- package/src/assets/css/home-page-theme.css +1157 -0
- package/src/assets/css/leaflet.css +629 -0
- package/src/assets/css/owl.carousel.min.css +1 -0
- package/src/assets/css/owl.theme.min.css +1 -0
- package/src/assets/css/style.css +1283 -0
- package/src/assets/css/tablet.css +18 -0
- package/src/assets/css/toastr.css +192 -0
- package/src/assets/images/ResolveIO.png +0 -0
- package/src/assets/images/ResolveIO_white.png +0 -0
- package/src/assets/images/contactus/Contact_bnr.jpg +0 -0
- package/src/assets/images/contactus/cont-comp.png +0 -0
- package/src/assets/images/contactus/cont-mail.png +0 -0
- package/src/assets/images/contactus/cont-phone.png +0 -0
- package/src/assets/images/contactus/form-img.png +0 -0
- package/src/assets/images/contactus/user.png +0 -0
- package/src/assets/images/faq/Faq-form.png +0 -0
- package/src/assets/images/faq/clientlogo1.jpg +0 -0
- package/src/assets/images/faq/clientlogo2.jpg +0 -0
- package/src/assets/images/faq/clientlogo3.jpg +0 -0
- package/src/assets/images/faq/clientlogo4.jpg +0 -0
- package/src/assets/images/faq/clientlogo5.jpg +0 -0
- package/src/assets/images/faq/faq_banner copy.jpg +0 -0
- package/src/assets/images/faq/faq_banner.jpg +0 -0
- package/src/assets/images/faq/faqwomen.jpg +0 -0
- package/src/assets/images/faq/mail-input.png +0 -0
- package/src/assets/images/faq/user-input.png +0 -0
- package/src/assets/images/favicon-32x32.png +0 -0
- package/src/assets/images/features/future-bnr.jpg +0 -0
- package/src/assets/images/features/polygon.png +0 -0
- package/src/assets/images/home/banner-1.jpg +0 -0
- package/src/assets/images/home/booking.png +0 -0
- package/src/assets/images/home/client.jpg +0 -0
- package/src/assets/images/home/client2.jpg +0 -0
- package/src/assets/images/home/clientlogo1.jpg +0 -0
- package/src/assets/images/home/clientlogo2.jpg +0 -0
- package/src/assets/images/home/clientlogo3.jpg +0 -0
- package/src/assets/images/home/clientlogo4.jpg +0 -0
- package/src/assets/images/home/clientlogo5.jpg +0 -0
- package/src/assets/images/home/easy_invoicing.png +0 -0
- package/src/assets/images/home/inventory.png +0 -0
- package/src/assets/images/home/manage.png +0 -0
- package/src/assets/images/home/more.png +0 -0
- package/src/assets/images/home/order_management.png +0 -0
- package/src/assets/images/home/plan.png +0 -0
- package/src/assets/images/home-page/AjaxLoader.gif +0 -0
- package/src/assets/images/home-page/ResolveIO_white.png +0 -0
- package/src/assets/images/home-page/abt_thumb.png +0 -0
- package/src/assets/images/home-page/aero_icon_right_white.png +0 -0
- package/src/assets/images/home-page/arrow_btn.png +0 -0
- package/src/assets/images/home-page/banner_thumb.png +0 -0
- package/src/assets/images/home-page/blank.gif +0 -0
- package/src/assets/images/home-page/close_icon.png +0 -0
- package/src/assets/images/home-page/contact_bg.jpg +0 -0
- package/src/assets/images/home-page/email_icon.png +0 -0
- package/src/assets/images/home-page/fancybox_loading.gif +0 -0
- package/src/assets/images/home-page/fancybox_loading@2x.gif +0 -0
- package/src/assets/images/home-page/fancybox_overlay.png +0 -0
- package/src/assets/images/home-page/fancybox_sprite.png +0 -0
- package/src/assets/images/home-page/fancybox_sprite@2x.png +0 -0
- package/src/assets/images/home-page/header_center_after.png +0 -0
- package/src/assets/images/home-page/header_left_after.png +0 -0
- package/src/assets/images/home-page/home_banner_1.jpg +0 -0
- package/src/assets/images/home-page/logo.png +0 -0
- package/src/assets/images/home-page/logo_thumb_ace.png +0 -0
- package/src/assets/images/home-page/logo_thumb_acquire.png +0 -0
- package/src/assets/images/home-page/logo_thumb_chemtech.jpeg +0 -0
- package/src/assets/images/home-page/logo_thumb_cherokee.png +0 -0
- package/src/assets/images/home-page/logo_thumb_coilchem.png +0 -0
- package/src/assets/images/home-page/logo_thumb_dcs.png +0 -0
- package/src/assets/images/home-page/logo_thumb_integrity.png +0 -0
- package/src/assets/images/home-page/logo_thumb_intrepid.png +0 -0
- package/src/assets/images/home-page/logo_thumb_omt.png +0 -0
- package/src/assets/images/home-page/logo_thumb_quantum.png +0 -0
- package/src/assets/images/home-page/logo_thumb_smartchemical.png +0 -0
- package/src/assets/images/home-page/logo_thumb_terra.png +0 -0
- package/src/assets/images/home-page/logo_thumb_truechem.png +0 -0
- package/src/assets/images/home-page/password_icon.png +0 -0
- package/src/assets/images/home-page/phone_icon.png +0 -0
- package/src/assets/images/home-page/software_icon_1.png +0 -0
- package/src/assets/images/home-page/software_icon_2.png +0 -0
- package/src/assets/images/home-page/software_sec_bg.jpg +0 -0
- package/src/assets/images/home-page/software_thumb.png +0 -0
- package/src/assets/images/home-page/white_arrow_btn.png +0 -0
- package/src/assets/images/howitwork/add-booking.png +0 -0
- package/src/assets/images/howitwork/add-order.png +0 -0
- package/src/assets/images/howitwork/add-stuff.png +0 -0
- package/src/assets/images/howitwork/how_banner.jpg +0 -0
- package/src/assets/images/howitwork/howimg1.png +0 -0
- package/src/assets/images/howitwork/howimg2.png +0 -0
- package/src/assets/images/howitwork/step-check.png +0 -0
- package/src/assets/images/loginsignup/formimg.jpg +0 -0
- package/src/assets/images/loginsignup/login-logo.png +0 -0
- package/src/assets/images/owl.video.play.png +0 -0
- package/src/assets/images/pricing/Pricing_banner.jpg +0 -0
- package/src/assets/images/pricing/clientlogo1.jpg +0 -0
- package/src/assets/images/pricing/clientlogo2.jpg +0 -0
- package/src/assets/images/pricing/clientlogo3.jpg +0 -0
- package/src/assets/images/pricing/clientlogo4.jpg +0 -0
- package/src/assets/images/pricing/clientlogo5.jpg +0 -0
- package/src/assets/images/pricing/info-ico.png +0 -0
- package/src/assets/scss/toastr.scss +201 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { BehaviorSubject } from 'rxjs';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { SocketManagerService } from './socket-manager.service';
|
|
4
|
+
import { TokenManagerService } from './token-manager.service';
|
|
5
|
+
import { AlertService } from './widgets/alert/alert.service';
|
|
6
|
+
import { OfflineManagerService } from './offline-manager.service';
|
|
7
|
+
import { dateReviver } from './util/common.helper';
|
|
8
|
+
import { Router } from '@angular/router';
|
|
9
|
+
import { HttpClient } from '@angular/common/http';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
import * as i1 from "@angular/router";
|
|
12
|
+
import * as i2 from "./socket-manager.service";
|
|
13
|
+
import * as i3 from "./token-manager.service";
|
|
14
|
+
import * as i4 from "@angular/common/http";
|
|
15
|
+
import * as i5 from "./widgets/alert/alert.service";
|
|
16
|
+
import * as i6 from "./offline-manager.service";
|
|
17
|
+
export class AccountManagerService {
|
|
18
|
+
constructor(_router, _socket, _token, _http, _alert, _offline) {
|
|
19
|
+
this._router = _router;
|
|
20
|
+
this._socket = _socket;
|
|
21
|
+
this._token = _token;
|
|
22
|
+
this._http = _http;
|
|
23
|
+
this._alert = _alert;
|
|
24
|
+
this._offline = _offline;
|
|
25
|
+
this.user = new BehaviorSubject(null);
|
|
26
|
+
this.initCompleted = new BehaviorSubject(false);
|
|
27
|
+
this.loginCompleted = new BehaviorSubject(false);
|
|
28
|
+
this.appVersion = 0;
|
|
29
|
+
this.environment = null;
|
|
30
|
+
}
|
|
31
|
+
initLoginManager(environment, appVersion) {
|
|
32
|
+
this.environment = environment;
|
|
33
|
+
this.appVersion = appVersion;
|
|
34
|
+
this._socket.initSocketManager();
|
|
35
|
+
let token = this._token.getToken('refreshToken');
|
|
36
|
+
if (token) {
|
|
37
|
+
this.initLogin(token);
|
|
38
|
+
setInterval(() => {
|
|
39
|
+
this.initLogin(token);
|
|
40
|
+
}, 3000);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
this.initCompleted.next(true);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
initLogin(token) {
|
|
47
|
+
if (navigator.onLine) {
|
|
48
|
+
if (this._offline.offlineMode.getValue()) {
|
|
49
|
+
this._offline.setOffline(false);
|
|
50
|
+
this.getAccessToken(token);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
if (!this._offline.offlineMode.getValue() || !this.initCompleted.getValue()) {
|
|
55
|
+
this.closeSocket();
|
|
56
|
+
this._offline.setOffline(true);
|
|
57
|
+
let user = JSON.parse(this._offline.getUser(), dateReviver);
|
|
58
|
+
if (user) {
|
|
59
|
+
this.user.next(user);
|
|
60
|
+
}
|
|
61
|
+
if (!this.initCompleted.getValue()) {
|
|
62
|
+
this.initCompleted.next(true);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
getAccessToken(refreshToken) {
|
|
68
|
+
if (refreshToken) {
|
|
69
|
+
this._http.post(this.environment.SERVER_URL + '/accessToken', { refreshToken: refreshToken, appVersion: this.appVersion }).toPromise().then((res) => {
|
|
70
|
+
if (res.error) {
|
|
71
|
+
this.initCompleted.next(true);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this._token.setToken('accessToken', res.result.token);
|
|
75
|
+
this.user.next(res.result.user);
|
|
76
|
+
this.openSocket(res.result.token, this.appVersion);
|
|
77
|
+
if (this.user$) {
|
|
78
|
+
this.user$.unsubscribe();
|
|
79
|
+
}
|
|
80
|
+
this.user$ = this._socket.subscribeBypassRoute('userWithId', res.result.user._id).subscribe(resUser => {
|
|
81
|
+
if (resUser) {
|
|
82
|
+
this.user.next(resUser);
|
|
83
|
+
this.loginCompleted.next(true);
|
|
84
|
+
this.initCompleted.next(true);
|
|
85
|
+
this._offline.saveUser(resUser);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}, err => {
|
|
90
|
+
this.initCompleted.next(true);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
logIn(username, password) {
|
|
95
|
+
return new Promise((resolve, reject) => {
|
|
96
|
+
this._http.post(this.environment.SERVER_URL + '/login', { username: username, password: password }).toPromise().then((res) => {
|
|
97
|
+
if (res.error) {
|
|
98
|
+
this._alert.setAlert('error', res.result);
|
|
99
|
+
reject(res.result);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this._token.setToken('refreshToken', res.result.token);
|
|
103
|
+
this.getAccessToken(res.result.token);
|
|
104
|
+
resolve(res.result.token); //should be resolving user
|
|
105
|
+
}
|
|
106
|
+
}, err => { });
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
logIn365(azure_token) {
|
|
110
|
+
return new Promise((resolve, reject) => {
|
|
111
|
+
this._http.post(this.environment.SERVER_URL + '/login365', { id_token: azure_token }).toPromise().then((res) => {
|
|
112
|
+
if (res.error) {
|
|
113
|
+
this._alert.setAlert('error', res.result);
|
|
114
|
+
reject(res.result);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
this._token.setToken('refreshToken', res.result.token);
|
|
118
|
+
this.getAccessToken(res.result.token);
|
|
119
|
+
resolve(res.result.token); //should be resolving user
|
|
120
|
+
}
|
|
121
|
+
}, err => { });
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
resetUserPassword(username) {
|
|
125
|
+
return new Promise((resolve, reject) => {
|
|
126
|
+
this._http.post(this.environment.SERVER_URL + '/resetPassword', { username: username }).toPromise().then((res) => {
|
|
127
|
+
resolve(true);
|
|
128
|
+
}, err => { });
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
logOut() {
|
|
132
|
+
this._router.navigateByUrl('/home');
|
|
133
|
+
setTimeout(() => {
|
|
134
|
+
this.user.next(null);
|
|
135
|
+
this._token.removeToken('refreshToken');
|
|
136
|
+
this._token.removeToken('accessToken');
|
|
137
|
+
this._offline.removeUser();
|
|
138
|
+
this.closeSocket();
|
|
139
|
+
}, 500);
|
|
140
|
+
}
|
|
141
|
+
openSocket(token, appVersion) {
|
|
142
|
+
this._socket.openSocket(this.environment, [token, appVersion]);
|
|
143
|
+
}
|
|
144
|
+
closeSocket() {
|
|
145
|
+
this._socket.closeSocket();
|
|
146
|
+
}
|
|
147
|
+
setUser(user) {
|
|
148
|
+
this.user.next(user);
|
|
149
|
+
}
|
|
150
|
+
getUser() {
|
|
151
|
+
return this.user.getValue();
|
|
152
|
+
}
|
|
153
|
+
getSocketStatus() {
|
|
154
|
+
return this._socket.getStatus();
|
|
155
|
+
}
|
|
156
|
+
isUserInView(view) {
|
|
157
|
+
let res = false;
|
|
158
|
+
if (this.isUserSuperAdmin()) {
|
|
159
|
+
return true;
|
|
160
|
+
}
|
|
161
|
+
this.user.getValue().roles.groups.forEach(group => {
|
|
162
|
+
if (group.views.filter(a => a.startsWith(view)).length) {
|
|
163
|
+
res = true;
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
if (this.user.getValue().roles.miscs.filter(a => a.startsWith(view)).length) {
|
|
167
|
+
res = true;
|
|
168
|
+
}
|
|
169
|
+
if (this.user.getValue().roles.groups.filter(a => a.name === view).length) {
|
|
170
|
+
res = true;
|
|
171
|
+
}
|
|
172
|
+
return res;
|
|
173
|
+
}
|
|
174
|
+
isUserSuperAdmin() {
|
|
175
|
+
return this.user.getValue() && this.user.getValue().roles.super_admin; //Remove any later
|
|
176
|
+
}
|
|
177
|
+
isInitCompleted() {
|
|
178
|
+
return new Promise((resolve, reject) => {
|
|
179
|
+
if (this.initCompleted.value) {
|
|
180
|
+
resolve(true);
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
let initSub$ = this.initCompleted.subscribe((data) => {
|
|
184
|
+
if (data) {
|
|
185
|
+
initSub$.unsubscribe();
|
|
186
|
+
resolve(true);
|
|
187
|
+
}
|
|
188
|
+
}, () => { });
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
isLoginCompleted() {
|
|
193
|
+
return new Promise((resolve, reject) => {
|
|
194
|
+
if (this.loginCompleted.value) {
|
|
195
|
+
resolve(true);
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
let initSub$ = this.loginCompleted.subscribe((data) => {
|
|
199
|
+
if (data) {
|
|
200
|
+
initSub$.unsubscribe();
|
|
201
|
+
resolve(true);
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
AccountManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AccountManagerService, deps: [{ token: i1.Router }, { token: i2.SocketManagerService }, { token: i3.TokenManagerService }, { token: i4.HttpClient }, { token: i5.AlertService }, { token: i6.OfflineManagerService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
209
|
+
AccountManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AccountManagerService });
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AccountManagerService, decorators: [{
|
|
211
|
+
type: Injectable
|
|
212
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.SocketManagerService }, { type: i3.TokenManagerService }, { type: i4.HttpClient }, { type: i5.AlertService }, { type: i6.OfflineManagerService }]; } });
|
|
213
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1tYW5hZ2VyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvYWNjb3VudC1tYW5hZ2VyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDN0QsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7O0FBR2xELE1BQU0sT0FBTyxxQkFBcUI7SUFVakMsWUFBb0IsT0FBZSxFQUFVLE9BQTZCLEVBQVUsTUFBMkIsRUFBVSxLQUFpQixFQUFVLE1BQW9CLEVBQVUsUUFBK0I7UUFBN0wsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQXNCO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFZO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUFVLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBUmpOLFNBQUksR0FBRyxJQUFJLGVBQWUsQ0FBWSxJQUFJLENBQUMsQ0FBQztRQUM1QyxrQkFBYSxHQUFHLElBQUksZUFBZSxDQUFVLEtBQUssQ0FBQyxDQUFD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SyxFQUFFO2dCQUM5QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDZDtpQkFDSTtnQkFDSixJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO29CQUNyRCxJQUFJLElBQUksRUFBRTt3QkFDVCxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7d0JBQ3ZCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztxQkFDZDtnQkFDRixDQUFDLENBQUMsQ0FBQzthQUNIO1FBQ0YsQ0FBQyxDQUFDLENBQUM7SUFDSixDQUFDOztrSEE5TlcscUJBQXFCO3NIQUFyQixxQkFBcUI7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBVc2VyTW9kZWwgfSBmcm9tICcuL21vZGVscy91c2VyLm1vZGVsJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNvY2tldE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zb2NrZXQtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRva2VuTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL3Rva2VuLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuL3dpZGdldHMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBPZmZsaW5lTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuL29mZmxpbmUtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IGRhdGVSZXZpdmVyIH0gZnJvbSAnLi91dGlsL2NvbW1vbi5oZWxwZXInO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBBY2NvdW50TWFuYWdlclNlcnZpY2Uge1xuXG5cdHVzZXIgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXJNb2RlbD4obnVsbCk7XG5cdGluaXRDb21wbGV0ZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblx0bG9naW5Db21wbGV0ZWQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblx0dXNlciQ6IFN1YnNjcmlwdGlvbjtcblx0YXBwVmVyc2lvbiA9IDA7XG5cblx0ZW52aXJvbm1lbnQgPSBudWxsO1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBwcml2YXRlIF9zb2NrZXQ6IFNvY2tldE1hbmFnZXJTZXJ2aWNlLCBwcml2YXRlIF90b2tlbjogVG9rZW5NYW5hZ2VyU2VydmljZSwgcHJpdmF0ZSBfaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBfYWxlcnQ6IEFsZXJ0U2VydmljZSwgcHJpdmF0ZSBfb2ZmbGluZTogT2ZmbGluZU1hbmFnZXJTZXJ2aWNlKSB7XG5cdFx0XG5cdH1cblxuXHRwdWJsaWMgaW5pdExvZ2luTWFuYWdlcihlbnZpcm9ubWVudCwgYXBwVmVyc2lvbik6IHZvaWQge1xuXHRcdHRoaXMuZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcblxuXHRcdHRoaXMuYXBwVmVyc2lvbiA9IGFwcFZlcnNpb247XG5cdFx0XG5cdFx0dGhpcy5fc29ja2V0LmluaXRTb2NrZXRNYW5hZ2VyKCk7XG5cblx0XHRsZXQgdG9rZW4gPSB0aGlzLl90b2tlbi5nZXRUb2tlbigncmVmcmVzaFRva2VuJyk7XG5cblx0XHRpZiAodG9rZW4pIHtcblx0XHRcdHRoaXMuaW5pdExvZ2luKHRva2VuKTtcblxuXHRcdFx0c2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0XHR0aGlzLmluaXRMb2dpbih0b2tlbik7XG5cdFx0XHR9LCAzMDAwKTtcblx0XHR9XG5cdFx0ZWxzZSB7XG5cdFx0XHR0aGlzLmluaXRDb21wbGV0ZWQubmV4dCh0cnVlKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGluaXRMb2dpbih0b2tlbjogc3RyaW5nKSB7XG5cdFx0aWYgKG5hdmlnYXRvci5vbkxpbmUpIHtcblx0XHRcdGlmICh0aGlzLl9vZmZsaW5lLm9mZmxpbmVNb2RlLmdldFZhbHVlKCkpIHtcblx0XHRcdFx0dGhpcy5fb2ZmbGluZS5zZXRPZmZsaW5lKGZhbHNlKTtcblx0XHRcdFx0dGhpcy5nZXRBY2Nlc3NUb2tlbih0b2tlbik7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGVsc2Uge1xuXHRcdFx0aWYgKCF0aGlzLl9vZmZsaW5lLm9mZmxpbmVNb2RlLmdldFZhbHVlKCkgfHwgIXRoaXMuaW5pdENvbXBsZXRlZC5nZXRWYWx1ZSgpKSB7XG5cblx0XHRcdFx0dGhpcy5jbG9zZVNvY2tldCgpO1xuXHRcdFx0XHR0aGlzLl9vZmZsaW5lLnNldE9mZmxpbmUodHJ1ZSk7XG5cblx0XHRcdFx0bGV0IHVzZXIgPSBKU09OLnBhcnNlKHRoaXMuX29mZmxpbmUuZ2V0VXNlcigpLCBkYXRlUmV2aXZlcik7XG5cblx0XHRcdFx0aWYgKHVzZXIpIHtcblx0XHRcdFx0XHR0aGlzLnVzZXIubmV4dCh1c2VyKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghdGhpcy5pbml0Q29tcGxldGVkLmdldFZhbHVlKCkpIHtcblx0XHRcdFx0XHR0aGlzLmluaXRDb21wbGV0ZWQubmV4dCh0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBnZXRBY2Nlc3NUb2tlbihyZWZyZXNoVG9rZW4pIHtcblx0XHRpZiAocmVmcmVzaFRva2VuKSB7XG5cdFx0XHR0aGlzLl9odHRwLnBvc3QodGhpcy5lbnZpcm9ubWVudC5TRVJWRVJfVVJMICsgJy9hY2Nlc3NUb2tlbicsIHtyZWZyZXNoVG9rZW46IHJlZnJlc2hUb2tlbiwgYXBwVmVyc2lvbjogdGhpcy5hcHBWZXJzaW9ufSkudG9Qcm9taXNlKCkudGhlbigocmVzOiBhbnkpID0+IHtcblx0XHRcdFx0aWYgKHJlcy5lcnJvcikge1xuXHRcdFx0XHRcdHRoaXMuaW5pdENvbXBsZXRlZC5uZXh0KHRydWUpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuX3Rva2VuLnNldFRva2VuKCdhY2Nlc3NUb2tlbicsIHJlcy5yZXN1bHQudG9rZW4pO1xuXHRcdFx0XHRcdHRoaXMudXNlci5uZXh0KHJlcy5yZXN1bHQudXNlcik7XG5cblx0XHRcdFx0XHR0aGlzLm9wZW5Tb2NrZXQocmVzLnJlc3VsdC50b2tlbiwgdGhpcy5hcHBWZXJzaW9uKTtcblxuXHRcdFx0XHRcdGlmICh0aGlzLnVzZXIkKSB7XG5cdFx0XHRcdFx0XHR0aGlzLnVzZXIkLnVuc3Vic2NyaWJlKCk7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy51c2VyJCA9IHRoaXMuX3NvY2tldC5zdWJzY3JpYmVCeXBhc3NSb3V0ZSgndXNlcldpdGhJZCcsIHJlcy5yZXN1bHQudXNlci5faWQpLnN1YnNjcmliZShyZXNVc2VyID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXNVc2VyKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMudXNlci5uZXh0KHJlc1VzZXIpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmxvZ2luQ29tcGxldGVkLm5leHQodHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuaW5pdENvbXBsZXRlZC5uZXh0KHRydWUpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLl9vZmZsaW5lLnNhdmVVc2VyKHJlc1VzZXIpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LCBlcnIgPT4ge1xuXHRcdFx0XHR0aGlzLmluaXRDb21wbGV0ZWQubmV4dCh0cnVlKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0fVxuXG5cdHB1YmxpYyBsb2dJbih1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHRoaXMuX2h0dHAucG9zdCh0aGlzLmVudmlyb25tZW50LlNFUlZFUl9VUkwgKyAnL2xvZ2luJywge3VzZXJuYW1lOiB1c2VybmFtZSwgcGFzc3dvcmQ6IHBhc3N3b3JkfSkudG9Qcm9taXNlKCkudGhlbigocmVzOiBhbnkpID0+IHtcdFxuXHRcdFx0XHRpZiAocmVzLmVycm9yKSB7XG5cdFx0XHRcdFx0dGhpcy5fYWxlcnQuc2V0QWxlcnQoJ2Vycm9yJywgcmVzLnJlc3VsdCk7XG5cdFx0XHRcdFx0cmVqZWN0KHJlcy5yZXN1bHQpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuX3Rva2VuLnNldFRva2VuKCdyZWZyZXNoVG9rZW4nLCByZXMucmVzdWx0LnRva2VuKTtcblx0XHRcdFx0XHR0aGlzLmdldEFjY2Vzc1Rva2VuKHJlcy5yZXN1bHQudG9rZW4pO1xuXHRcdFx0XHRcdHJlc29sdmUocmVzLnJlc3VsdC50b2tlbik7IC8vc2hvdWxkIGJlIHJlc29sdmluZyB1c2VyXG5cdFx0XHRcdH1cblx0XHRcdH0sIGVyciA9PiB7fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRwdWJsaWMgbG9nSW4zNjUoYXp1cmVfdG9rZW46IHN0cmluZykge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG5cdFx0XHR0aGlzLl9odHRwLnBvc3QodGhpcy5lbnZpcm9ubWVudC5TRVJWRVJfVVJMICsgJy9sb2dpbjM2NScsIHtpZF90b2tlbjogYXp1cmVfdG9rZW59KS50b1Byb21pc2UoKS50aGVuKChyZXM6IGFueSkgPT4ge1x0XG5cdFx0XHRcdGlmIChyZXMuZXJyb3IpIHtcblx0XHRcdFx0XHR0aGlzLl9hbGVydC5zZXRBbGVydCgnZXJyb3InLCByZXMucmVzdWx0KTtcblx0XHRcdFx0XHRyZWplY3QocmVzLnJlc3VsdCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5fdG9rZW4uc2V0VG9rZW4oJ3JlZnJlc2hUb2tlbicsIHJlcy5yZXN1bHQudG9rZW4pO1xuXHRcdFx0XHRcdHRoaXMuZ2V0QWNjZXNzVG9rZW4ocmVzLnJlc3VsdC50b2tlbik7XG5cdFx0XHRcdFx0cmVzb2x2ZShyZXMucmVzdWx0LnRva2VuKTsgLy9zaG91bGQgYmUgcmVzb2x2aW5nIHVzZXJcblx0XHRcdFx0fVxuXHRcdFx0fSwgZXJyID0+IHt9KTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyByZXNldFVzZXJQYXNzd29yZCh1c2VybmFtZTogc3RyaW5nKSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdHRoaXMuX2h0dHAucG9zdCh0aGlzLmVudmlyb25tZW50LlNFUlZFUl9VUkwgKyAnL3Jlc2V0UGFzc3dvcmQnLCB7dXNlcm5hbWU6IHVzZXJuYW1lfSkudG9Qcm9taXNlKCkudGhlbigocmVzOiBhbnkpID0+IHtcdFxuXHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0fSwgZXJyID0+IHt9KTtcblx0XHR9KTtcblx0fVxuXG5cdHB1YmxpYyBsb2dPdXQoKSB7XG5cdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJyk7XG5cblx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdHRoaXMudXNlci5uZXh0KG51bGwpO1xuXHRcdFx0dGhpcy5fdG9rZW4ucmVtb3ZlVG9rZW4oJ3JlZnJlc2hUb2tlbicpO1xuXHRcdFx0dGhpcy5fdG9rZW4ucmVtb3ZlVG9rZW4oJ2FjY2Vzc1Rva2VuJyk7XG5cdFx0XHR0aGlzLl9vZmZsaW5lLnJlbW92ZVVzZXIoKTtcblx0XHRcdHRoaXMuY2xvc2VTb2NrZXQoKTtcblx0XHR9LCA1MDApO1xuXHR9XG5cblx0cHVibGljIG9wZW5Tb2NrZXQodG9rZW4sIGFwcFZlcnNpb24pIHtcblx0XHR0aGlzLl9zb2NrZXQub3BlblNvY2tldCh0aGlzLmVudmlyb25tZW50LCBbdG9rZW4sIGFwcFZlcnNpb25dKTtcblx0fVxuXG5cdHB1YmxpYyBjbG9zZVNvY2tldCgpIHtcblx0XHR0aGlzLl9zb2NrZXQuY2xvc2VTb2NrZXQoKTtcblx0fVxuXG5cdHB1YmxpYyBzZXRVc2VyKHVzZXI6IFVzZXJNb2RlbCkge1xuXHRcdHRoaXMudXNlci5uZXh0KHVzZXIpO1xuXHR9XG5cblx0cHVibGljIGdldFVzZXIoKTogVXNlck1vZGVsIHtcblx0XHRyZXR1cm4gdGhpcy51c2VyLmdldFZhbHVlKCk7XG5cdH1cblxuXHRwdWJsaWMgZ2V0U29ja2V0U3RhdHVzKCkge1xuXHRcdHJldHVybiB0aGlzLl9zb2NrZXQuZ2V0U3RhdHVzKCk7XG5cdH1cblxuXHRwdWJsaWMgaXNVc2VySW5WaWV3KHZpZXc6IHN0cmluZykge1xuXHRcdGxldCByZXMgPSBmYWxzZTtcblxuXHRcdGlmICh0aGlzLmlzVXNlclN1cGVyQWRtaW4oKSkge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXG5cdFx0KDxhbnk+dGhpcy51c2VyLmdldFZhbHVlKCkucm9sZXMpLmdyb3Vwcy5mb3JFYWNoKGdyb3VwID0+IHtcblx0XHRcdGlmIChncm91cC52aWV3cy5maWx0ZXIoYSA9PiBhLnN0YXJ0c1dpdGgodmlldykpLmxlbmd0aCkge1xuXHRcdFx0XHRyZXMgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdH0pO1xuXG5cdFx0aWYgKCg8YW55PnRoaXMudXNlci5nZXRWYWx1ZSgpLnJvbGVzKS5taXNjcy5maWx0ZXIoYSA9PiBhLnN0YXJ0c1dpdGgodmlldykpLmxlbmd0aCkge1xuXHRcdFx0cmVzID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRpZiAoKDxhbnk+dGhpcy51c2VyLmdldFZhbHVlKCkucm9sZXMpLmdyb3Vwcy5maWx0ZXIoYSA9PiBhLm5hbWUgPT09IHZpZXcpLmxlbmd0aCkge1xuXHRcdFx0cmVzID0gdHJ1ZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVzO1xuXHR9XG5cblx0cHVibGljIGlzVXNlclN1cGVyQWRtaW4oKSB7XG5cdFx0cmV0dXJuIHRoaXMudXNlci5nZXRWYWx1ZSgpICYmIHRoaXMudXNlci5nZXRWYWx1ZSgpLnJvbGVzLnN1cGVyX2FkbWluOyAvL1JlbW92ZSBhbnkgbGF0ZXJcblx0fVxuXG5cdHB1YmxpYyBpc0luaXRDb21wbGV0ZWQoKSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdGlmICh0aGlzLmluaXRDb21wbGV0ZWQudmFsdWUpIHtcblx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdH1cblx0XHRcdGVsc2Uge1xuXHRcdFx0XHRsZXQgaW5pdFN1YiQgPSB0aGlzLmluaXRDb21wbGV0ZWQuc3Vic2NyaWJlKChkYXRhKSA9PiB7XG5cdFx0XHRcdFx0aWYgKGRhdGEpIHtcblx0XHRcdFx0XHRcdGluaXRTdWIkLnVuc3Vic2NyaWJlKCk7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKHRydWUpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSwgKCkgPT4ge30pO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cblx0cHVibGljIGlzTG9naW5Db21wbGV0ZWQoKSB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcblx0XHRcdGlmICh0aGlzLmxvZ2luQ29tcGxldGVkLnZhbHVlKSB7XG5cdFx0XHRcdHJlc29sdmUodHJ1ZSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0bGV0IGluaXRTdWIkID0gdGhpcy5sb2dpbkNvbXBsZXRlZC5zdWJzY3JpYmUoKGRhdGEpID0+IHtcblx0XHRcdFx0XHRpZiAoZGF0YSkge1xuXHRcdFx0XHRcdFx0aW5pdFN1YiQudW5zdWJzY3JpYmUoKTtcblx0XHRcdFx0XHRcdHJlc29sdmUodHJ1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxufVxuIl19
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { AccountManagerService } from '../account-manager.service';
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import { Router } from '@angular/router';
|
|
4
|
+
import { AuthService } from './auth.service';
|
|
5
|
+
import { DialogService } from '../widgets/dialog/dialog.service';
|
|
6
|
+
import { OfflineManagerService } from '../offline-manager.service';
|
|
7
|
+
import { dateReviver } from '../util/common.helper';
|
|
8
|
+
import { CoreService } from '../core.service';
|
|
9
|
+
import { AuthPermissionService } from './auth-permissions.service';
|
|
10
|
+
import { AlertService } from '../widgets/alert/alert.service';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/router";
|
|
13
|
+
import * as i2 from "./auth.service";
|
|
14
|
+
import * as i3 from "../widgets/dialog/dialog.service";
|
|
15
|
+
import * as i4 from "../account-manager.service";
|
|
16
|
+
import * as i5 from "../core.service";
|
|
17
|
+
import * as i6 from "../offline-manager.service";
|
|
18
|
+
import * as i7 from "./auth-permissions.service";
|
|
19
|
+
import * as i8 from "../widgets/alert/alert.service";
|
|
20
|
+
export class AuthGuard {
|
|
21
|
+
constructor(_router, _auth, _ds, _account, _app, _offline, _aps, _alert) {
|
|
22
|
+
this._router = _router;
|
|
23
|
+
this._auth = _auth;
|
|
24
|
+
this._ds = _ds;
|
|
25
|
+
this._account = _account;
|
|
26
|
+
this._app = _app;
|
|
27
|
+
this._offline = _offline;
|
|
28
|
+
this._aps = _aps;
|
|
29
|
+
this._alert = _alert;
|
|
30
|
+
}
|
|
31
|
+
canActivate(route, state) {
|
|
32
|
+
if (this._app.isInvalidVersion.getValue()) {
|
|
33
|
+
this._alert.setAlert('error', 'Can not use the program with an invalid version');
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return new Promise((resolve) => {
|
|
37
|
+
this._account.isInitCompleted().then(() => {
|
|
38
|
+
let user = this._account.getUser();
|
|
39
|
+
if (!user) {
|
|
40
|
+
user = JSON.parse(this._offline.getUser(), dateReviver);
|
|
41
|
+
if (user) {
|
|
42
|
+
this._account.setUser(user);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (!user) {
|
|
46
|
+
if (navigator.onLine) {
|
|
47
|
+
this._auth.loginUser().then(newUser => {
|
|
48
|
+
this._account.isLoginCompleted().then(() => {
|
|
49
|
+
user = this._account.getUser();
|
|
50
|
+
if (!user.active) {
|
|
51
|
+
this._router.navigateByUrl('/home');
|
|
52
|
+
resolve(false);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
let view = state.url.replace(/^(\/[-a-z]+\/[^\/]+)\/.*$/, '$1').replace(/\?.+/, '');
|
|
56
|
+
let moduleView = view.replace(/^(\/.*\/).*/, '$1');
|
|
57
|
+
if (user.roles.super_admin) {
|
|
58
|
+
resolve(true);
|
|
59
|
+
}
|
|
60
|
+
else if (!user.roles.groups.filter(a => a.views.filter(b => b.startsWith(view)).length).length) {
|
|
61
|
+
if (user.roles.groups.filter(a => a.views.filter(b => b.startsWith(moduleView) && !this.doesLinkHaveParameter(b)).length).length) {
|
|
62
|
+
let link = user.roles.groups.filter(a => a.views.filter(b => b.startsWith(moduleView) && !this.doesLinkHaveParameter(b)).length)[0].views.filter(a => a.startsWith(moduleView) && !this.doesLinkHaveParameter(a))[0];
|
|
63
|
+
this._router.navigateByUrl(link);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
this._router.navigateByUrl('/home');
|
|
67
|
+
}
|
|
68
|
+
resolve(false);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
resolve(true);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
}, () => {
|
|
76
|
+
this._router.navigateByUrl('/home');
|
|
77
|
+
resolve(false);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
resolve(true);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
if (!user.active) {
|
|
86
|
+
this._router.navigateByUrl('/home');
|
|
87
|
+
resolve(false);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
let view = state.url.replace(/^(\/[-a-z]+\/[^\/]+)\/.*$/, '$1').replace(/\?.+/, '');
|
|
91
|
+
let moduleView = view.replace(/^(\/.*\/).*/, '$1');
|
|
92
|
+
if (user.roles.super_admin) {
|
|
93
|
+
resolve(true);
|
|
94
|
+
}
|
|
95
|
+
else if (!user.roles.groups.filter(a => a.views.filter(b => b.startsWith(view)).length).length) {
|
|
96
|
+
if (user.roles.groups.filter(a => a.views.filter(b => b.startsWith(moduleView) && !this.doesLinkHaveParameter(b)).length).length) {
|
|
97
|
+
let link = user.roles.groups.filter(a => a.views.filter(b => b.startsWith(moduleView) && !this.doesLinkHaveParameter(b)).length)[0].views.filter(a => a.startsWith(moduleView) && !this.doesLinkHaveParameter(a))[0];
|
|
98
|
+
this._router.navigateByUrl(link);
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
this._router.navigateByUrl('/home');
|
|
102
|
+
}
|
|
103
|
+
resolve(false);
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
resolve(true);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}, () => { });
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
doesLinkHaveParameter(link) {
|
|
114
|
+
let permissions = this._aps.getAllModulePermissions();
|
|
115
|
+
for (let i = 0; i < permissions.length; i++) {
|
|
116
|
+
let permission = permissions[i];
|
|
117
|
+
for (let j = 0; j < permission.views.length; j++) {
|
|
118
|
+
let view = permission.views[j];
|
|
119
|
+
if (view.link === link) {
|
|
120
|
+
if (view.has_parameter) {
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
AuthGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AuthGuard, deps: [{ token: i1.Router }, { token: i2.AuthService }, { token: i3.DialogService }, { token: i4.AccountManagerService }, { token: i5.CoreService }, { token: i6.OfflineManagerService }, { token: i7.AuthPermissionService }, { token: i8.AlertService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
133
|
+
AuthGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AuthGuard });
|
|
134
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AuthGuard, decorators: [{
|
|
135
|
+
type: Injectable
|
|
136
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.AuthService }, { type: i3.DialogService }, { type: i4.AccountManagerService }, { type: i5.CoreService }, { type: i6.OfflineManagerService }, { type: i7.AuthPermissionService }, { type: i8.AlertService }]; } });
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1ndWFyZC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2F1dGgvYXV0aC1ndWFyZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFlLE1BQU0sRUFBK0MsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdDQUFnQyxDQUFDOzs7Ozs7Ozs7O0FBRzlELE1BQU0sT0FBTyxTQUFTO0lBSXJCLFlBQW9CLE9BQWUsRUFDeEIsS0FBa0IsRUFDbEIsR0FBa0IsRUFDbEIsUUFBK0IsRUFDL0IsSUFBaUIsRUFDakIsUUFBK0IsRUFDL0IsSUFBMkIsRUFDM0IsTUFBb0I7UUFQWCxZQUFPLEdBQVAsT0FBTyxDQUFRO1FBQ3hCLFVBQUssR0FBTCxLQUFLLENBQWE7UUFDbEIsUUFBRyxHQUFILEdBQUcsQ0FBZTtRQUNsQixhQUFRLEdBQVIsUUFBUSxDQUF1QjtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFhO1FBQ2pCLGFBQVEsR0FBUixRQUFRLENBQXVCO1FBQy9CLFNBQUksR0FBSixJ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LFVBQVUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQzt3QkFFbkQsSUFBVSxJQUFJLENBQUMsS0FBTSxDQUFDLFdBQVcsRUFBRTs0QkFDbEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO3lCQUNkOzZCQUNJLElBQUksQ0FBTyxJQUFJLENBQUMsS0FBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQUU7NEJBQ3RHLElBQVUsSUFBSSxDQUFDLEtBQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFO2dDQUN4SSxJQUFJLElBQUksR0FBUyxJQUFJLENBQUMsS0FBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUM1TixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs2QkFDakM7aUNBQ0k7Z0NBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7NkJBQ3BDOzRCQUVELE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDZjs2QkFDSTs0QkFDSixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ2Q7cUJBQ0Q7aUJBQ0Q7WUFDRixDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFZO1FBQ2pDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUV0RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLFVBQVUsR0FBRyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLElBQUksR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUUvQixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO29CQUN2QixJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7d0JBQ3ZCLE9BQU8sSUFBSSxDQUFDO3FCQUNaO3lCQUNJO3dCQUNKLE9BQU8sS0FBSyxDQUFDO3FCQUNiO2lCQUNEO2FBQ0Q7U0FDRDtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2QsQ0FBQzs7c0dBOUhXLFNBQVM7MEdBQVQsU0FBUzsyRkFBVCxTQUFTO2tCQURyQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWNjb3VudE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vYWNjb3VudC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGUsIFJvdXRlciwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgUm91dGVyU3RhdGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICcuLi93aWRnZXRzL2RpYWxvZy9kaWFsb2cuc2VydmljZSc7XG5pbXBvcnQgeyBPZmZsaW5lTWFuYWdlclNlcnZpY2UgfSBmcm9tICcuLi9vZmZsaW5lLW1hbmFnZXIuc2VydmljZSc7XG5pbXBvcnQgeyBkYXRlUmV2aXZlciB9IGZyb20gJy4uL3V0aWwvY29tbW9uLmhlbHBlcic7XG5pbXBvcnQgeyBDb3JlU2VydmljZSB9IGZyb20gJy4uL2NvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBBdXRoUGVybWlzc2lvblNlcnZpY2UgfSBmcm9tICcuL2F1dGgtcGVybWlzc2lvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi93aWRnZXRzL2FsZXJ0L2FsZXJ0LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aEd1YXJkIGltcGxlbWVudHMgQ2FuQWN0aXZhdGUge1xuXG5cdHJlZGlyZWN0VXJsOiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBfcm91dGVyOiBSb3V0ZXIsIFxuXHRcdFx0XHRwcml2YXRlIF9hdXRoOiBBdXRoU2VydmljZSwgXG5cdFx0XHRcdHByaXZhdGUgX2RzOiBEaWFsb2dTZXJ2aWNlLFxuXHRcdFx0XHRwcml2YXRlIF9hY2NvdW50OiBBY2NvdW50TWFuYWdlclNlcnZpY2UsXG5cdFx0XHRcdHByaXZhdGUgX2FwcDogQ29yZVNlcnZpY2UsXG5cdFx0XHRcdHByaXZhdGUgX29mZmxpbmU6IE9mZmxpbmVNYW5hZ2VyU2VydmljZSxcblx0XHRcdFx0cHJpdmF0ZSBfYXBzOiBBdXRoUGVybWlzc2lvblNlcnZpY2UsXG5cdFx0XHRcdHByaXZhdGUgX2FsZXJ0OiBBbGVydFNlcnZpY2UpIFxuXHR7fVxuXHRcblx0Y2FuQWN0aXZhdGUocm91dGU6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIHN0YXRlOiBSb3V0ZXJTdGF0ZVNuYXBzaG90KTogUHJvbWlzZTxib29sZWFuPnxib29sZWFuIHtcblxuXHRcdGlmICh0aGlzLl9hcHAuaXNJbnZhbGlkVmVyc2lvbi5nZXRWYWx1ZSgpKSB7XG5cdFx0XHR0aGlzLl9hbGVydC5zZXRBbGVydCgnZXJyb3InLCAnQ2FuIG5vdCB1c2UgdGhlIHByb2dyYW0gd2l0aCBhbiBpbnZhbGlkIHZlcnNpb24nKTtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdHRoaXMuX2FjY291bnQuaXNJbml0Q29tcGxldGVkKCkudGhlbigoKSA9PiB7XG5cdFx0XHRcdGxldCB1c2VyID0gdGhpcy5fYWNjb3VudC5nZXRVc2VyKCk7XG5cblx0XHRcdFx0aWYgKCF1c2VyKSB7XG5cdFx0XHRcdFx0dXNlciA9IEpTT04ucGFyc2UodGhpcy5fb2ZmbGluZS5nZXRVc2VyKCksIGRhdGVSZXZpdmVyKTtcblx0XHRcdFx0XHRpZiAodXNlcikge1xuXHRcdFx0XHRcdFx0dGhpcy5fYWNjb3VudC5zZXRVc2VyKHVzZXIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICghdXNlcikge1xuXHRcdFx0XHRcdGlmIChuYXZpZ2F0b3Iub25MaW5lKSB7XG5cdFx0XHRcdFx0XHR0aGlzLl9hdXRoLmxvZ2luVXNlcigpLnRoZW4obmV3VXNlciA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuX2FjY291bnQuaXNMb2dpbkNvbXBsZXRlZCgpLnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRcdHVzZXIgPSB0aGlzLl9hY2NvdW50LmdldFVzZXIoKTtcblxuXHRcdFx0XHRcdFx0XHRcdGlmICghdXNlci5hY3RpdmUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuX3JvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvaG9tZScpO1xuXHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZShmYWxzZSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0bGV0IHZpZXcgPSBzdGF0ZS51cmwucmVwbGFjZSgvXihcXC9bLWEtel0rXFwvW15cXC9dKylcXC8uKiQvLCAnJDEnKS5yZXBsYWNlKC9cXD8uKy8sICcnKTtcblx0XHRcdFx0XHRcdFx0XHRcdGxldCBtb2R1bGVWaWV3ID0gdmlldy5yZXBsYWNlKC9eKFxcLy4qXFwvKS4qLywgJyQxJyk7XG5cdFx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoKDxhbnk+dXNlci5yb2xlcykuc3VwZXJfYWRtaW4pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKCEoPGFueT51c2VyLnJvbGVzKS5ncm91cHMuZmlsdGVyKGEgPT4gYS52aWV3cy5maWx0ZXIoYiA9PiBiLnN0YXJ0c1dpdGgodmlldykpLmxlbmd0aCkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgoPGFueT51c2VyLnJvbGVzKS5ncm91cHMuZmlsdGVyKGEgPT4gYS52aWV3cy5maWx0ZXIoYiA9PiBiLnN0YXJ0c1dpdGgobW9kdWxlVmlldykgJiYgIXRoaXMuZG9lc0xpbmtIYXZlUGFyYW1ldGVyKGIpKS5sZW5ndGgpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxldCBsaW5rID0gKDxhbnk+dXNlci5yb2xlcykuZ3JvdXBzLmZpbHRlcihhID0+IGEudmlld3MuZmlsdGVyKGIgPT4gYi5zdGFydHNXaXRoKG1vZHVsZVZpZXcpICYmICF0aGlzLmRvZXNMaW5rSGF2ZVBhcmFtZXRlcihiKSkubGVuZ3RoKVswXS52aWV3cy5maWx0ZXIoYSA9PiBhLnN0YXJ0c1dpdGgobW9kdWxlVmlldykgJiYgIXRoaXMuZG9lc0xpbmtIYXZlUGFyYW1ldGVyKGEpKVswXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybChsaW5rKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLl9yb3V0ZXIubmF2aWdhdGVCeVVybCgnL2hvbWUnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUoZmFsc2UpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlc29sdmUodHJ1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0sICgpID0+IHtcblx0XHRcdFx0XHRcdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJyk7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoZmFsc2UpO1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0cmVzb2x2ZSh0cnVlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0aWYgKCF1c2VyLmFjdGl2ZSkge1xuXHRcdFx0XHRcdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJyk7XG5cdFx0XHRcdFx0XHRyZXNvbHZlKGZhbHNlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRsZXQgdmlldyA9IHN0YXRlLnVybC5yZXBsYWNlKC9eKFxcL1stYS16XStcXC9bXlxcL10rKVxcLy4qJC8sICckMScpLnJlcGxhY2UoL1xcPy4rLywgJycpO1xuXHRcdFx0XHRcdFx0bGV0IG1vZHVsZVZpZXcgPSB2aWV3LnJlcGxhY2UoL14oXFwvLipcXC8pLiovLCAnJDEnKTtcblx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0aWYgKCg8YW55PnVzZXIucm9sZXMpLnN1cGVyX2FkbWluKSB7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUodHJ1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIGlmICghKDxhbnk+dXNlci5yb2xlcykuZ3JvdXBzLmZpbHRlcihhID0+IGEudmlld3MuZmlsdGVyKGIgPT4gYi5zdGFydHNXaXRoKHZpZXcpKS5sZW5ndGgpLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRpZiAoKDxhbnk+dXNlci5yb2xlcykuZ3JvdXBzLmZpbHRlcihhID0+IGEudmlld3MuZmlsdGVyKGIgPT4gYi5zdGFydHNXaXRoKG1vZHVsZVZpZXcpICYmICF0aGlzLmRvZXNMaW5rSGF2ZVBhcmFtZXRlcihiKSkubGVuZ3RoKS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRsZXQgbGluayA9ICg8YW55PnVzZXIucm9sZXMpLmdyb3Vwcy5maWx0ZXIoYSA9PiBhLnZpZXdzLmZpbHRlcihiID0+IGIuc3RhcnRzV2l0aChtb2R1bGVWaWV3KSAmJiAhdGhpcy5kb2VzTGlua0hhdmVQYXJhbWV0ZXIoYikpLmxlbmd0aClbMF0udmlld3MuZmlsdGVyKGEgPT4gYS5zdGFydHNXaXRoKG1vZHVsZVZpZXcpICYmICF0aGlzLmRvZXNMaW5rSGF2ZVBhcmFtZXRlcihhKSlbMF07XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwobGluayk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5fcm91dGVyLm5hdmlnYXRlQnlVcmwoJy9ob21lJyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUoZmFsc2UpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHJlc29sdmUodHJ1ZSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9LCAoKSA9PiB7fSk7XG5cdFx0fSk7XG5cdH1cblxuXHRkb2VzTGlua0hhdmVQYXJhbWV0ZXIobGluazogc3RyaW5nKSB7XG5cdFx0bGV0IHBlcm1pc3Npb25zID0gdGhpcy5fYXBzLmdldEFsbE1vZHVsZVBlcm1pc3Npb25zKCk7XG5cblx0XHRmb3IgKGxldCBpID0gMDsgaSA8IHBlcm1pc3Npb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRsZXQgcGVybWlzc2lvbiA9IHBlcm1pc3Npb25zW2ldO1xuXHRcdFx0Zm9yIChsZXQgaiA9IDA7IGogPCBwZXJtaXNzaW9uLnZpZXdzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdGxldCB2aWV3ID0gcGVybWlzc2lvbi52aWV3c1tqXTtcblxuXHRcdFx0XHRpZiAodmlldy5saW5rID09PSBsaW5rKSB7XG5cdFx0XHRcdFx0aWYgKHZpZXcuaGFzX3BhcmFtZXRlcikge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBmYWxzZTtcblx0fVxufSJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class AuthPermissionService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.modules = [];
|
|
6
|
+
}
|
|
7
|
+
registerModule(modulePermission) {
|
|
8
|
+
this.modules.push(modulePermission);
|
|
9
|
+
this.modules.sort((a, b) => {
|
|
10
|
+
let x = a.name;
|
|
11
|
+
let y = b.name;
|
|
12
|
+
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
getAllModulePermissions() {
|
|
16
|
+
return this.modules;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
AuthPermissionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AuthPermissionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
20
|
+
AuthPermissionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AuthPermissionService });
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.1.1", ngImport: i0, type: AuthPermissionService, decorators: [{
|
|
22
|
+
type: Injectable
|
|
23
|
+
}], ctorParameters: function () { return []; } });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1wZXJtaXNzaW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL2F1dGgvYXV0aC1wZXJtaXNzaW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSTNDLE1BQU0sT0FBTyxxQkFBcUI7SUFJakM7UUFGQSxZQUFPLEdBQTRCLEVBQUUsQ0FBQztJQUV2QixDQUFDO0lBRWhCLGNBQWMsQ0FBQyxnQkFBdUM7UUFDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMxQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNmLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1QyxDQUFDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFFRCx1QkFBdUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3JCLENBQUM7O2tIQWpCVyxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kdWxlUGVybWlzc2lvbk1vZGVsIH0gZnJvbSAnLi4vbW9kZWxzL3Blcm1pc3Npb24ubW9kZWwnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQXV0aFBlcm1pc3Npb25TZXJ2aWNlIHtcblxuXHRtb2R1bGVzOiBNb2R1bGVQZXJtaXNzaW9uTW9kZWxbXSA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKCkge31cblx0XG5cdHJlZ2lzdGVyTW9kdWxlKG1vZHVsZVBlcm1pc3Npb246IE1vZHVsZVBlcm1pc3Npb25Nb2RlbCkge1xuXHRcdHRoaXMubW9kdWxlcy5wdXNoKG1vZHVsZVBlcm1pc3Npb24pO1xuXHRcdHRoaXMubW9kdWxlcy5zb3J0KChhLCBiKSA9PiB7XG5cdFx0XHRsZXQgeCA9IGEubmFtZTtcblx0XHRcdGxldCB5ID0gYi5uYW1lO1xuXHRcdFx0cmV0dXJuICgoeCA8IHkpID8gLTEgOiAoKHggPiB5ICkgPyAxIDogMCkpO1xuXHRcdH0pO1xuXHR9XG5cblx0Z2V0QWxsTW9kdWxlUGVybWlzc2lvbnMoKSB7XG5cdFx0cmV0dXJuIHRoaXMubW9kdWxlcztcblx0fVxufVxuIl19
|