@bravobit/bb-foundation 0.14.3 → 0.15.2
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/README.md +47 -47
- package/auth/bravobit-bb-foundation-auth.d.ts +5 -5
- package/auth/lib/auth.interceptor.d.ts +21 -21
- package/auth/lib/auth.module.d.ts +15 -15
- package/auth/lib/auth.service.d.ts +59 -59
- package/auth/lib/auth.session.d.ts +34 -34
- package/auth/lib/directives/authenticated.directive.d.ts +14 -14
- package/auth/lib/directives/permission.directive.d.ts +24 -24
- package/auth/lib/directives/role.directive.d.ts +16 -16
- package/auth/lib/guards/anonymous.guard.d.ts +11 -11
- package/auth/lib/guards/authenticated.guard.d.ts +11 -11
- package/auth/lib/helpers/jwt.helper.d.ts +8 -8
- package/auth/lib/helpers/mapper.helper.d.ts +23 -23
- package/auth/lib/interfaces/config.interface.d.ts +12 -12
- package/auth/lib/interfaces/mapper.interface.d.ts +19 -19
- package/auth/lib/interfaces/provider.interface.d.ts +16 -16
- package/auth/lib/interfaces/token.interface.d.ts +11 -11
- package/auth/lib/permissions.service.d.ts +14 -14
- package/auth/lib/providers/email.provider.d.ts +15 -15
- package/auth/lib/providers/verify.provider.d.ts +13 -13
- package/auth/lib/tokens/use-authorization.token.d.ts +2 -2
- package/auth/public_api.d.ts +18 -18
- package/bravobit-bb-foundation.d.ts +5 -5
- package/bundles/bravobit-bb-foundation-auth.umd.js +1400 -1402
- package/bundles/bravobit-bb-foundation-auth.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation-collections.umd.js +868 -0
- package/bundles/bravobit-bb-foundation-collections.umd.js.map +1 -0
- package/bundles/bravobit-bb-foundation-dashboard.umd.js +817 -819
- package/bundles/bravobit-bb-foundation-dashboard.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation-dialog.umd.js +649 -651
- package/bundles/bravobit-bb-foundation-dialog.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation-elements.umd.js +2651 -2653
- package/bundles/bravobit-bb-foundation-elements.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation-http.umd.js +488 -490
- package/bundles/bravobit-bb-foundation-http.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation-localize.umd.js +1208 -1210
- package/bundles/bravobit-bb-foundation-localize.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation-notifications.umd.js +743 -745
- package/bundles/bravobit-bb-foundation-notifications.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation-recaptcha.umd.js +640 -642
- package/bundles/bravobit-bb-foundation-recaptcha.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation-rxjs.umd.js +13 -13
- package/bundles/bravobit-bb-foundation-rxjs.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation-storage.umd.js +756 -758
- package/bundles/bravobit-bb-foundation-storage.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation-table.umd.js +993 -995
- package/bundles/bravobit-bb-foundation-table.umd.js.map +1 -1
- package/bundles/bravobit-bb-foundation.umd.js +1332 -1334
- package/bundles/bravobit-bb-foundation.umd.js.map +1 -1
- package/collections/bravobit-bb-foundation-collections.d.ts +5 -0
- package/collections/lib/collection.d.ts +43 -0
- package/collections/lib/collections.module.d.ts +10 -0
- package/collections/lib/components/collections-pager/collections-pager.component.d.ts +34 -0
- package/collections/lib/components/collections-viewer/collections-viewer.component.d.ts +12 -0
- package/collections/lib/components/collections.directive.d.ts +17 -0
- package/collections/lib/interfaces/collection.interface.d.ts +26 -0
- package/collections/lib/providers/api-collection.provider.d.ts +15 -0
- package/collections/lib/providers/collection.provider.d.ts +6 -0
- package/collections/lib/providers/local-collection.provider.d.ts +8 -0
- package/collections/package.json +10 -0
- package/collections/public_api.d.ts +9 -0
- package/dashboard/bravobit-bb-foundation-dashboard.d.ts +5 -5
- package/dashboard/lib/dashboard/dashboard.component.d.ts +19 -19
- package/dashboard/lib/dashboard-header/dashboard-header.component.d.ts +11 -11
- package/dashboard/lib/dashboard-menu/dashboard-menu.component.d.ts +9 -9
- package/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.d.ts +11 -11
- package/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.d.ts +21 -21
- package/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.d.ts +27 -27
- package/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.d.ts +16 -16
- package/dashboard/lib/dashboard.module.d.ts +16 -16
- package/dashboard/public_api.d.ts +8 -8
- package/dialog/bravobit-bb-foundation-dialog.d.ts +5 -5
- package/dialog/lib/dialog-actions/dialog-actions.component.d.ts +5 -5
- package/dialog/lib/dialog-confirm/dialog-confirm.component.d.ts +16 -16
- package/dialog/lib/dialog-container/dialog-container.component.d.ts +24 -24
- package/dialog/lib/dialog-header/dialog-header.component.d.ts +9 -9
- package/dialog/lib/dialog-link/dialog-link.component.d.ts +5 -5
- package/dialog/lib/dialog-modal/dialog-modal.component.d.ts +12 -12
- package/dialog/lib/dialog-overlay/dialog-overlay.component.d.ts +22 -22
- package/dialog/lib/dialog.injector.d.ts +8 -8
- package/dialog/lib/dialog.insertion.d.ts +8 -8
- package/dialog/lib/dialog.interfaces.d.ts +3 -3
- package/dialog/lib/dialog.module.d.ts +19 -19
- package/dialog/lib/dialog.ref.d.ts +8 -8
- package/dialog/lib/dialog.service.d.ts +19 -19
- package/dialog/public_api.d.ts +9 -9
- package/elements/bravobit-bb-foundation-elements.d.ts +5 -5
- package/elements/lib/avatar/avatar.component.d.ts +25 -25
- package/elements/lib/button/button.component.d.ts +23 -23
- package/elements/lib/checkbox/checkbox.component.d.ts +27 -27
- package/elements/lib/date-picker/date-picker.component.d.ts +69 -69
- package/elements/lib/directives/addon.directive.d.ts +9 -9
- package/elements/lib/directives/autosize.directive.d.ts +18 -18
- package/elements/lib/directives/focus-trap.directive.d.ts +17 -17
- package/elements/lib/directives/focus.directive.d.ts +14 -14
- package/elements/lib/directives/form-submit.directive.d.ts +17 -17
- package/elements/lib/directives/input.directive.d.ts +38 -38
- package/elements/lib/directives/template.directive.d.ts +10 -10
- package/elements/lib/dropdown/dropdown.component.d.ts +21 -21
- package/elements/lib/elements.interfaces.d.ts +25 -25
- package/elements/lib/elements.module.d.ts +116 -116
- package/elements/lib/file-picker/file-picker.component.d.ts +49 -49
- package/elements/lib/form-control/form-control.component.d.ts +21 -21
- package/elements/lib/form-error/form-error.component.d.ts +29 -29
- package/elements/lib/form-group/form-group.component.d.ts +10 -10
- package/elements/lib/icon/icon.component.d.ts +22 -22
- package/elements/lib/image-picker/image-picker.component.d.ts +38 -38
- package/elements/lib/pipes/file-image.pipe.d.ts +13 -13
- package/elements/lib/pipes/file-size.pipe.d.ts +8 -8
- package/elements/lib/pipes/relative-time.pipe.d.ts +19 -19
- package/elements/lib/spinner/spinner.component.d.ts +12 -12
- package/elements/lib/tag/tag.component.d.ts +7 -7
- package/elements/public_api.d.ts +25 -25
- package/esm2015/auth/bravobit-bb-foundation-auth.js +4 -4
- package/esm2015/auth/lib/auth.interceptor.js +95 -95
- package/esm2015/auth/lib/auth.module.js +54 -54
- package/esm2015/auth/lib/auth.service.js +299 -299
- package/esm2015/auth/lib/auth.session.js +136 -136
- package/esm2015/auth/lib/directives/authenticated.directive.js +32 -32
- package/esm2015/auth/lib/directives/permission.directive.js +81 -81
- package/esm2015/auth/lib/directives/role.directive.js +38 -38
- package/esm2015/auth/lib/guards/anonymous.guard.js +35 -35
- package/esm2015/auth/lib/guards/authenticated.guard.js +36 -36
- package/esm2015/auth/lib/helpers/jwt.helper.js +69 -69
- package/esm2015/auth/lib/helpers/mapper.helper.js +35 -35
- package/esm2015/auth/lib/interfaces/config.interface.js +3 -3
- package/esm2015/auth/lib/interfaces/mapper.interface.js +2 -2
- package/esm2015/auth/lib/interfaces/provider.interface.js +2 -2
- package/esm2015/auth/lib/interfaces/token.interface.js +2 -2
- package/esm2015/auth/lib/permissions.service.js +58 -58
- package/esm2015/auth/lib/providers/email.provider.js +26 -26
- package/esm2015/auth/lib/providers/verify.provider.js +20 -20
- package/esm2015/auth/lib/tokens/use-authorization.token.js +3 -3
- package/esm2015/auth/public_api.js +19 -19
- package/esm2015/bravobit-bb-foundation.js +4 -4
- package/esm2015/collections/bravobit-bb-foundation-collections.js +5 -0
- package/esm2015/collections/lib/collection.js +104 -0
- package/esm2015/collections/lib/collections.module.js +54 -0
- package/esm2015/collections/lib/components/collections-pager/collections-pager.component.js +136 -0
- package/esm2015/collections/lib/components/collections-viewer/collections-viewer.component.js +39 -0
- package/esm2015/collections/lib/components/collections.directive.js +43 -0
- package/esm2015/collections/lib/interfaces/collection.interface.js +2 -0
- package/esm2015/collections/lib/providers/api-collection.provider.js +69 -0
- package/esm2015/collections/lib/providers/collection.provider.js +14 -0
- package/esm2015/collections/lib/providers/local-collection.provider.js +16 -0
- package/esm2015/collections/public_api.js +10 -0
- package/esm2015/dashboard/bravobit-bb-foundation-dashboard.js +4 -4
- package/esm2015/dashboard/lib/dashboard/dashboard.component.js +64 -64
- package/esm2015/dashboard/lib/dashboard-header/dashboard-header.component.js +41 -41
- package/esm2015/dashboard/lib/dashboard-menu/dashboard-menu.component.js +39 -39
- package/esm2015/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.js +38 -38
- package/esm2015/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.js +83 -83
- package/esm2015/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.js +110 -110
- package/esm2015/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.js +71 -71
- package/esm2015/dashboard/lib/dashboard.module.js +47 -47
- package/esm2015/dashboard/public_api.js +9 -9
- package/esm2015/dialog/bravobit-bb-foundation-dialog.js +4 -4
- package/esm2015/dialog/lib/dialog-actions/dialog-actions.component.js +20 -20
- package/esm2015/dialog/lib/dialog-confirm/dialog-confirm.component.js +45 -45
- package/esm2015/dialog/lib/dialog-container/dialog-container.component.js +162 -162
- package/esm2015/dialog/lib/dialog-header/dialog-header.component.js +33 -33
- package/esm2015/dialog/lib/dialog-link/dialog-link.component.js +19 -19
- package/esm2015/dialog/lib/dialog-modal/dialog-modal.component.js +54 -54
- package/esm2015/dialog/lib/dialog-overlay/dialog-overlay.component.js +143 -143
- package/esm2015/dialog/lib/dialog.injector.js +18 -18
- package/esm2015/dialog/lib/dialog.insertion.js +16 -16
- package/esm2015/dialog/lib/dialog.interfaces.js +3 -3
- package/esm2015/dialog/lib/dialog.module.js +74 -74
- package/esm2015/dialog/lib/dialog.ref.js +22 -22
- package/esm2015/dialog/lib/dialog.service.js +77 -77
- package/esm2015/dialog/public_api.js +10 -10
- package/esm2015/elements/bravobit-bb-foundation-elements.js +4 -4
- package/esm2015/elements/lib/avatar/avatar.component.js +151 -151
- package/esm2015/elements/lib/button/button.component.js +79 -79
- package/esm2015/elements/lib/checkbox/checkbox.component.js +83 -83
- package/esm2015/elements/lib/date-picker/date-picker.component.js +322 -322
- package/esm2015/elements/lib/directives/addon.directive.js +29 -29
- package/esm2015/elements/lib/directives/autosize.directive.js +74 -74
- package/esm2015/elements/lib/directives/focus-trap.directive.js +77 -77
- package/esm2015/elements/lib/directives/focus.directive.js +39 -39
- package/esm2015/elements/lib/directives/form-submit.directive.js +53 -53
- package/esm2015/elements/lib/directives/input.directive.js +139 -139
- package/esm2015/elements/lib/directives/template.directive.js +28 -28
- package/esm2015/elements/lib/dropdown/dropdown.component.js +111 -111
- package/esm2015/elements/lib/elements.interfaces.js +4 -4
- package/esm2015/elements/lib/elements.module.js +177 -177
- package/esm2015/elements/lib/file-picker/file-picker.component.js +247 -247
- package/esm2015/elements/lib/form-control/form-control.component.js +58 -58
- package/esm2015/elements/lib/form-error/form-error.component.js +116 -116
- package/esm2015/elements/lib/form-group/form-group.component.js +27 -27
- package/esm2015/elements/lib/icon/icon.component.js +110 -110
- package/esm2015/elements/lib/image-picker/image-picker.component.js +119 -119
- package/esm2015/elements/lib/pipes/file-image.pipe.js +45 -45
- package/esm2015/elements/lib/pipes/file-size.pipe.js +28 -28
- package/esm2015/elements/lib/pipes/relative-time.pipe.js +96 -96
- package/esm2015/elements/lib/spinner/spinner.component.js +34 -34
- package/esm2015/elements/lib/tag/tag.component.js +26 -26
- package/esm2015/elements/public_api.js +26 -26
- package/esm2015/http/bravobit-bb-foundation-http.js +4 -4
- package/esm2015/http/lib/classes/http.config.js +31 -31
- package/esm2015/http/lib/classes/http.error.js +21 -21
- package/esm2015/http/lib/http.interfaces.js +2 -2
- package/esm2015/http/lib/http.module.js +43 -43
- package/esm2015/http/lib/interceptors/base-url.interceptor.js +52 -52
- package/esm2015/http/lib/interceptors/error.interceptor.js +33 -33
- package/esm2015/http/public_api.js +7 -7
- package/esm2015/lib/core/coercions/boolean-coercion.js +4 -4
- package/esm2015/lib/core/miscellaneous/regex.js +5 -5
- package/esm2015/lib/core/miscellaneous/validator.js +86 -86
- package/esm2015/lib/core/mixins/can-disable.js +16 -16
- package/esm2015/lib/core/mixins/can-hide-errors.js +16 -16
- package/esm2015/lib/core/mixins/can-load.js +16 -16
- package/esm2015/lib/core/mixins/constructor.js +2 -2
- package/esm2015/lib/core/mixins/has-error.js +16 -16
- package/esm2015/lib/core/mixins/is-focused.js +16 -16
- package/esm2015/lib/core/mixins/is-grouped.js +16 -16
- package/esm2015/lib/core/mixins/is-readonly.js +16 -16
- package/esm2015/lib/core/mixins/is-required.js +16 -16
- package/esm2015/lib/core/services/clipboard.service.js +72 -72
- package/esm2015/lib/core/services/exif.service.js +168 -168
- package/esm2015/lib/core/services/file-loader.service.js +90 -90
- package/esm2015/lib/core/services/image-converter.service.js +130 -130
- package/esm2015/lib/core/services/languages.service.js +74 -74
- package/esm2015/lib/core/services/network.service.js +56 -56
- package/esm2015/lib/core/services/patch.service.js +65 -65
- package/esm2015/lib/core/services/platform.service.js +42 -42
- package/esm2015/lib/core/tokens/accept-language.token.js +3 -3
- package/esm2015/lib/core/tokens/base-url.token.js +3 -3
- package/esm2015/lib/core/tokens/cookie.token.js +3 -3
- package/esm2015/lib/core/tokens/location.token.js +6 -6
- package/esm2015/lib/core/tokens/navigator.token.js +6 -6
- package/esm2015/lib/core/tokens/window.token.js +12 -12
- package/esm2015/localize/bravobit-bb-foundation-localize.js +4 -4
- package/esm2015/localize/lib/functions/date.function.js +18 -18
- package/esm2015/localize/lib/functions/lowercase.function.js +13 -13
- package/esm2015/localize/lib/functions/uppercase.function.js +13 -13
- package/esm2015/localize/lib/handlers/missing.handler.js +17 -17
- package/esm2015/localize/lib/interfaces/config.interfaces.js +10 -10
- package/esm2015/localize/lib/interfaces/dictionary.interfaces.js +8 -8
- package/esm2015/localize/lib/interfaces/functions.interfaces.js +8 -8
- package/esm2015/localize/lib/interfaces/handlers.interfaces.js +2 -2
- package/esm2015/localize/lib/interfaces/options.interfaces.js +6 -6
- package/esm2015/localize/lib/localizations/dutch.localization.js +53 -53
- package/esm2015/localize/lib/localizations/english.localization.js +53 -53
- package/esm2015/localize/lib/localize.dictionary.js +137 -137
- package/esm2015/localize/lib/localize.module.js +69 -69
- package/esm2015/localize/lib/localize.pipe.js +49 -49
- package/esm2015/localize/lib/localize.service.js +282 -282
- package/esm2015/localize/lib/views/localize-string/localize-string.component.js +99 -99
- package/esm2015/localize/lib/views/localize-template-or-string.directive.js +28 -28
- package/esm2015/localize/lib/views/localize-template.directive.js +21 -21
- package/esm2015/localize/public_api.js +18 -18
- package/esm2015/notifications/bravobit-bb-foundation-notifications.js +4 -4
- package/esm2015/notifications/lib/notifications-item/notifications-item.component.js +108 -108
- package/esm2015/notifications/lib/notifications-list/notifications-list.component.js +56 -56
- package/esm2015/notifications/lib/notifications.animations.js +28 -28
- package/esm2015/notifications/lib/notifications.injector.js +18 -18
- package/esm2015/notifications/lib/notifications.interfaces.js +20 -20
- package/esm2015/notifications/lib/notifications.module.js +31 -31
- package/esm2015/notifications/lib/notifications.service.js +145 -145
- package/esm2015/notifications/public_api.js +4 -4
- package/esm2015/public_api.js +30 -30
- package/esm2015/recaptcha/bravobit-bb-foundation-recaptcha.js +4 -4
- package/esm2015/recaptcha/lib/recaptcha/recaptcha.component.js +199 -199
- package/esm2015/recaptcha/lib/recaptcha-loader.service.js +93 -93
- package/esm2015/recaptcha/lib/recaptcha.interface.js +3 -3
- package/esm2015/recaptcha/lib/recaptcha.module.js +27 -27
- package/esm2015/recaptcha/public_api.js +5 -5
- package/esm2015/rxjs/bravobit-bb-foundation-rxjs.js +4 -4
- package/esm2015/rxjs/lib/operators/combine-latest-map.operator.js +7 -7
- package/esm2015/rxjs/lib/operators/filter-nil.operator.js +5 -5
- package/esm2015/rxjs/public_api.js +3 -3
- package/esm2015/storage/bravobit-bb-foundation-storage.js +4 -4
- package/esm2015/storage/lib/interfaces/attributes.interface.js +2 -2
- package/esm2015/storage/lib/interfaces/memory.interface.js +2 -2
- package/esm2015/storage/lib/interfaces/strategy.interface.js +2 -2
- package/esm2015/storage/lib/storage.service.js +111 -111
- package/esm2015/storage/lib/strategies/cookie-storage.strategy.js +143 -143
- package/esm2015/storage/lib/strategies/memory-storage.strategy.js +56 -56
- package/esm2015/storage/lib/strategies/polyfill-storage.strategy.js +102 -102
- package/esm2015/storage/public_api.js +8 -8
- package/esm2015/table/bravobit-bb-foundation-table.js +4 -4
- package/esm2015/table/lib/components/table/table.component.js +183 -183
- package/esm2015/table/lib/components/table-cell/table-cell.component.js +19 -19
- package/esm2015/table/lib/components/table-header-cell/table-header-cell.component.js +141 -141
- package/esm2015/table/lib/components/table-pager/table-pager.component.js +146 -146
- package/esm2015/table/lib/data/datasource.data.js +32 -32
- package/esm2015/table/lib/data/generic.data.js +73 -73
- package/esm2015/table/lib/interfaces/datasource.interface.js +2 -2
- package/esm2015/table/lib/interfaces/table.interfaces.js +2 -2
- package/esm2015/table/lib/table.module.js +39 -39
- package/esm2015/table/public_api.js +10 -10
- package/fesm2015/bravobit-bb-foundation-auth.js +915 -915
- package/fesm2015/bravobit-bb-foundation-auth.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation-collections.js +463 -0
- package/fesm2015/bravobit-bb-foundation-collections.js.map +1 -0
- package/fesm2015/bravobit-bb-foundation-dashboard.js +434 -434
- package/fesm2015/bravobit-bb-foundation-dashboard.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation-dialog.js +603 -603
- package/fesm2015/bravobit-bb-foundation-dialog.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation-elements.js +2076 -2076
- package/fesm2015/bravobit-bb-foundation-elements.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation-http.js +154 -154
- package/fesm2015/bravobit-bb-foundation-http.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation-localize.js +796 -796
- package/fesm2015/bravobit-bb-foundation-localize.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation-notifications.js +364 -364
- package/fesm2015/bravobit-bb-foundation-notifications.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation-recaptcha.js +297 -297
- package/fesm2015/bravobit-bb-foundation-recaptcha.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation-rxjs.js +7 -7
- package/fesm2015/bravobit-bb-foundation-rxjs.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation-storage.js +399 -399
- package/fesm2015/bravobit-bb-foundation-storage.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation-table.js +578 -578
- package/fesm2015/bravobit-bb-foundation-table.js.map +1 -1
- package/fesm2015/bravobit-bb-foundation.js +851 -851
- package/fesm2015/bravobit-bb-foundation.js.map +1 -1
- package/http/bravobit-bb-foundation-http.d.ts +5 -5
- package/http/lib/classes/http.config.d.ts +9 -9
- package/http/lib/classes/http.error.d.ts +7 -7
- package/http/lib/http.interfaces.d.ts +12 -12
- package/http/lib/http.module.d.ts +15 -15
- package/http/lib/interceptors/base-url.interceptor.d.ts +15 -15
- package/http/lib/interceptors/error.interceptor.d.ts +11 -11
- package/http/public_api.d.ts +6 -6
- package/lib/core/coercions/boolean-coercion.d.ts +1 -1
- package/lib/core/miscellaneous/regex.d.ts +4 -4
- package/lib/core/miscellaneous/validator.d.ts +13 -13
- package/lib/core/mixins/can-disable.d.ts +6 -6
- package/lib/core/mixins/can-hide-errors.d.ts +6 -6
- package/lib/core/mixins/can-load.d.ts +6 -6
- package/lib/core/mixins/constructor.d.ts +1 -1
- package/lib/core/mixins/has-error.d.ts +6 -6
- package/lib/core/mixins/is-focused.d.ts +6 -6
- package/lib/core/mixins/is-grouped.d.ts +6 -6
- package/lib/core/mixins/is-readonly.d.ts +6 -6
- package/lib/core/mixins/is-required.d.ts +6 -6
- package/lib/core/services/clipboard.service.d.ts +18 -18
- package/lib/core/services/exif.service.d.ts +15 -15
- package/lib/core/services/file-loader.service.d.ts +13 -13
- package/lib/core/services/image-converter.service.d.ts +21 -21
- package/lib/core/services/languages.service.d.ts +16 -16
- package/lib/core/services/network.service.d.ts +14 -14
- package/lib/core/services/patch.service.d.ts +16 -16
- package/lib/core/services/platform.service.d.ts +18 -18
- package/lib/core/tokens/accept-language.token.d.ts +2 -2
- package/lib/core/tokens/base-url.token.d.ts +2 -2
- package/lib/core/tokens/cookie.token.d.ts +2 -2
- package/lib/core/tokens/location.token.d.ts +2 -2
- package/lib/core/tokens/navigator.token.d.ts +2 -2
- package/lib/core/tokens/window.token.d.ts +2 -2
- package/localize/bravobit-bb-foundation-localize.d.ts +5 -5
- package/localize/lib/functions/date.function.d.ts +5 -5
- package/localize/lib/functions/lowercase.function.d.ts +5 -5
- package/localize/lib/functions/uppercase.function.d.ts +5 -5
- package/localize/lib/handlers/missing.handler.d.ts +6 -6
- package/localize/lib/interfaces/config.interfaces.d.ts +8 -8
- package/localize/lib/interfaces/dictionary.interfaces.d.ts +12 -12
- package/localize/lib/interfaces/functions.interfaces.d.ts +9 -9
- package/localize/lib/interfaces/handlers.interfaces.d.ts +6 -6
- package/localize/lib/interfaces/options.interfaces.d.ts +10 -10
- package/localize/lib/localizations/dutch.localization.d.ts +51 -51
- package/localize/lib/localizations/english.localization.d.ts +51 -51
- package/localize/lib/localize.dictionary.d.ts +24 -24
- package/localize/lib/localize.module.d.ts +18 -18
- package/localize/lib/localize.pipe.d.ts +12 -12
- package/localize/lib/localize.service.d.ts +51 -51
- package/localize/lib/views/localize-string/localize-string.component.d.ts +23 -23
- package/localize/lib/views/localize-template-or-string.directive.d.ts +10 -10
- package/localize/lib/views/localize-template.directive.d.ts +9 -9
- package/localize/public_api.d.ts +17 -17
- package/notifications/bravobit-bb-foundation-notifications.d.ts +5 -5
- package/notifications/lib/notifications-item/notifications-item.component.d.ts +34 -34
- package/notifications/lib/notifications-list/notifications-list.component.d.ts +16 -16
- package/notifications/lib/notifications.animations.d.ts +1 -1
- package/notifications/lib/notifications.injector.d.ts +8 -8
- package/notifications/lib/notifications.interfaces.d.ts +49 -49
- package/notifications/lib/notifications.module.d.ts +13 -13
- package/notifications/lib/notifications.service.d.ts +34 -34
- package/notifications/public_api.d.ts +3 -3
- package/package.json +5 -5
- package/public_api.d.ts +26 -26
- package/recaptcha/bravobit-bb-foundation-recaptcha.d.ts +5 -5
- package/recaptcha/lib/recaptcha/recaptcha.component.d.ts +47 -47
- package/recaptcha/lib/recaptcha-loader.service.d.ts +22 -22
- package/recaptcha/lib/recaptcha.interface.d.ts +14 -14
- package/recaptcha/lib/recaptcha.module.d.ts +10 -16
- package/recaptcha/public_api.d.ts +4 -4
- package/rxjs/bravobit-bb-foundation-rxjs.d.ts +5 -5
- package/rxjs/lib/operators/combine-latest-map.operator.d.ts +8 -8
- package/rxjs/lib/operators/filter-nil.operator.d.ts +1 -1
- package/rxjs/public_api.d.ts +2 -2
- package/storage/bravobit-bb-foundation-storage.d.ts +5 -5
- package/storage/lib/interfaces/attributes.interface.d.ts +13 -13
- package/storage/lib/interfaces/memory.interface.d.ts +7 -7
- package/storage/lib/interfaces/strategy.interface.d.ts +17 -17
- package/storage/lib/storage.service.d.ts +26 -26
- package/storage/lib/strategies/cookie-storage.strategy.d.ts +20 -20
- package/storage/lib/strategies/memory-storage.strategy.d.ts +11 -11
- package/storage/lib/strategies/polyfill-storage.strategy.d.ts +15 -15
- package/storage/public_api.d.ts +7 -7
- package/table/bravobit-bb-foundation-table.d.ts +5 -5
- package/table/lib/components/table/table.component.d.ts +48 -48
- package/table/lib/components/table-cell/table-cell.component.d.ts +5 -5
- package/table/lib/components/table-header-cell/table-header-cell.component.d.ts +29 -29
- package/table/lib/components/table-pager/table-pager.component.d.ts +41 -41
- package/table/lib/data/datasource.data.d.ts +14 -14
- package/table/lib/data/generic.data.d.ts +23 -23
- package/table/lib/interfaces/datasource.interface.d.ts +17 -17
- package/table/lib/interfaces/table.interfaces.d.ts +1 -1
- package/table/lib/table.module.d.ts +14 -14
- package/table/public_api.d.ts +9 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bravobit-bb-foundation-auth.umd.js","sources":["../../../projects/bb-foundation/auth/src/lib/interfaces/config.interface.ts","../../../projects/bb-foundation/auth/src/lib/tokens/use-authorization.token.ts","../../../projects/bb-foundation/auth/src/lib/helpers/jwt.helper.ts","../../../projects/bb-foundation/auth/src/lib/helpers/mapper.helper.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/bb-foundation/auth/src/lib/providers/verify.provider.ts","../../../projects/bb-foundation/auth/src/lib/providers/email.provider.ts","../../../projects/bb-foundation/auth/src/lib/auth.session.ts","../../../projects/bb-foundation/auth/src/lib/auth.service.ts","../../../projects/bb-foundation/auth/src/lib/directives/authenticated.directive.ts","../../../projects/bb-foundation/auth/src/lib/directives/role.directive.ts","../../../projects/bb-foundation/auth/src/lib/permissions.service.ts","../../../projects/bb-foundation/auth/src/lib/directives/permission.directive.ts","../../../projects/bb-foundation/auth/src/lib/guards/anonymous.guard.ts","../../../projects/bb-foundation/auth/src/lib/guards/authenticated.guard.ts","../../../projects/bb-foundation/auth/src/lib/auth.interceptor.ts","../../../projects/bb-foundation/auth/src/lib/auth.module.ts","../../../projects/bb-foundation/auth/src/bravobit-bb-foundation-auth.ts"],"sourcesContent":["export class AuthConfig {\r\n scheme?: string;\r\n redirectUrl?: string;\r\n loggedInUrl?: string;\r\n applicationId?: string;\r\n bootstrap?: boolean;\r\n autoRefresh?: boolean;\r\n setRedirectOnFailedAuth?: boolean;\r\n permissions?: {\r\n [permission: string]: string[];\r\n };\r\n}\r\n","import {HttpContextToken} from '@angular/common/http';\r\n\r\nexport const USE_AUTHORIZATION = new HttpContextToken(() => true);","import {AuthToken} from '../interfaces/token.interface';\r\n\r\nexport class JwtHelper {\r\n\r\n decode(token: string) {\r\n try {\r\n if (token === null || token === undefined) {\r\n return null;\r\n }\r\n\r\n const json = JSON.parse(\r\n this.urlDecode(token.split('.')[1])\r\n );\r\n\r\n return this.parse(json);\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n private urlDecode(token: string | null) {\r\n const value = token || '';\r\n let output = value\r\n .replace(/-/g, '+')\r\n .replace(/_/g, '/');\r\n\r\n switch (output.length % 4) {\r\n case 0:\r\n break;\r\n case 2:\r\n output += '==';\r\n break;\r\n case 3:\r\n output += '=';\r\n break;\r\n default:\r\n throw 'Illegal base64url string!';\r\n }\r\n\r\n try {\r\n return this.baseDecodeUnicode(output);\r\n } catch {\r\n return atob(output);\r\n }\r\n }\r\n\r\n private baseDecodeUnicode = (value: string) => {\r\n return decodeURIComponent(atob(value).replace(/(.)/g, (_, p) => {\r\n let code = p.charCodeAt(0).toString(16).toUpperCase();\r\n if (code.length < 2) {\r\n code = '0' + code;\r\n }\r\n return '%' + code;\r\n }));\r\n };\r\n\r\n private parse = (data: object) => {\r\n return {\r\n id: data['iss'] || null,\r\n type: data['typ'] || null,\r\n audience: data['aud'] || null,\r\n issuer: data['iss'] || null,\r\n subject: data['sub'] || null,\r\n role: data['role'] || null,\r\n notValidBefore: this.parseDate(data['nbf']),\r\n expiresAt: this.parseDate(data['exp']),\r\n issuedAt: this.parseDate(data['iat'])\r\n } as AuthToken;\r\n };\r\n\r\n private parseDate = (epochInSeconds: number) => {\r\n if (!epochInSeconds || epochInSeconds <= 0) {\r\n return null;\r\n }\r\n\r\n return new Date(epochInSeconds * 1000);\r\n };\r\n\r\n}\r\n","import {AuthMapperProtocol} from '../interfaces/mapper.interface';\r\nimport {Injectable} from '@angular/core';\r\n\r\n@Injectable()\r\nexport class AuthMapper implements AuthMapperProtocol {\r\n\r\n // Routes.\r\n me: string = 'auth/me';\r\n register: string = 'auth/register';\r\n resendCode: string = 'auth/resend';\r\n logout: string = 'auth/logout';\r\n refresh: string = 'auth/refresh';\r\n requestPassword: string = 'auth/reset';\r\n resetPassword: string = 'auth/reset-password';\r\n\r\n role(data: any) {\r\n return (data && data.role) || null;\r\n }\r\n\r\n toRegister(data: any) {\r\n // Retrieve the params.\r\n const {token, refresh_token, user} = data;\r\n\r\n // Map the data to the correct format.\r\n return {accessToken: token, refreshToken: refresh_token, user: user};\r\n }\r\n\r\n toRefresh(data: any) {\r\n // Retrieve the params.\r\n const {token, refresh_token} = data;\r\n\r\n // Map the data to the correct format.\r\n return {accessToken: token, refreshToken: refresh_token};\r\n }\r\n\r\n}\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || from);\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {AuthProvider} from '../interfaces/provider.interface';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\nexport class AuthVerifyProvider implements AuthProvider {\r\n\r\n constructor(private _code: string,\r\n private _verifyToken: string,\r\n private _endpoint: string) {\r\n }\r\n\r\n async authenticate(httpClient: HttpClient) {\r\n // Execute API call.\r\n const {token, refresh_token, user} = await httpClient.post<any>(this._endpoint, {\r\n token: this._code,\r\n verify_token: this._verifyToken\r\n }).toPromise();\r\n\r\n // Map the data to the correct format.\r\n return {accessToken: token, refreshToken: refresh_token, user: user};\r\n }\r\n\r\n}\r\n","import {AuthProvider} from '../interfaces/provider.interface';\r\nimport {HttpClient} from '@angular/common/http';\r\n\r\nexport class AuthEmailProvider implements AuthProvider {\r\n\r\n constructor(private _email: string,\r\n private _password: string,\r\n private _endpoint: string) {\r\n }\r\n\r\n async authenticate(httpClient: HttpClient) {\r\n // Execute API call.\r\n const {token, refresh_token, user, provider, verify_token} = await httpClient.post<any>(this._endpoint, {\r\n email: this._email,\r\n password: this._password\r\n }).toPromise();\r\n\r\n // Map the data to the correct format.\r\n return {\r\n accessToken: token,\r\n refreshToken: refresh_token,\r\n user: user,\r\n provider: provider,\r\n verifyToken: verify_token\r\n };\r\n }\r\n\r\n}\r\n","import {StorageStrategy} from '@bravobit/bb-foundation/storage';\r\nimport {AuthToken} from './interfaces/token.interface';\r\nimport {JwtHelper} from './helpers/jwt.helper';\r\nimport {shareReplay} from 'rxjs/operators';\r\nimport {BehaviorSubject} from 'rxjs';\r\n\r\nexport class AuthSession {\r\n\r\n // Readonly data.\r\n private readonly _jwt = new JwtHelper();\r\n private readonly _storage: StorageStrategy | null;\r\n private readonly _accessTokenStorageKey: string;\r\n private readonly _refreshTokenStorageKey: string;\r\n private readonly _userStorageKey: string;\r\n\r\n // Token strings.\r\n private _accessTokenString: string | null = null;\r\n private _refreshTokenString: string | null = null;\r\n\r\n // Token payloads.\r\n private _accessTokenPayload: AuthToken | null = null;\r\n private _refreshTokenPayload: AuthToken | null = null;\r\n\r\n // Private user data.\r\n private _user$ = new BehaviorSubject<any | null>(null);\r\n\r\n // Public user data.\r\n user = this._user$.pipe(\r\n shareReplay(1)\r\n );\r\n\r\n constructor(options?: { id?: string, storage?: StorageStrategy }) {\r\n const applicationId = options?.id ?? 'ng';\r\n\r\n // Setting up the readonly storage keys.\r\n this._accessTokenStorageKey = this.generateKey(applicationId, 'au_act');\r\n this._refreshTokenStorageKey = this.generateKey(applicationId, 'au_rft');\r\n this._userStorageKey = this.generateKey(applicationId, 'au_usr');\r\n\r\n // Setting up the storage.\r\n this._storage = options?.storage ?? null;\r\n\r\n // Init methods.\r\n this.restoreFromStorage();\r\n }\r\n\r\n get accessToken() {\r\n return this.isTokenValid(this._accessTokenPayload)\r\n ? this._accessTokenString\r\n : null;\r\n }\r\n\r\n get refreshToken() {\r\n return this.isTokenValid(this.refreshTokenPayload)\r\n ? this._refreshTokenString\r\n : null;\r\n }\r\n\r\n get accessTokenPayload() {\r\n return this._accessTokenPayload ?? null;\r\n }\r\n\r\n get refreshTokenPayload() {\r\n return this._refreshTokenPayload ?? null;\r\n }\r\n\r\n authenticated() {\r\n return this.isTokenValid(this._accessTokenPayload) || this.isTokenValid(this._refreshTokenPayload);\r\n }\r\n\r\n setTokens(accessToken: string | null, refreshToken: string | null) {\r\n this.setAccessToken(accessToken);\r\n this.setRefreshToken(refreshToken);\r\n this.syncTokensInStorage();\r\n }\r\n\r\n setUser(user: unknown) {\r\n this._user$.next(user ?? null);\r\n this.syncUserInStorage();\r\n }\r\n\r\n clear() {\r\n this.setTokens(null, null);\r\n this.setUser(null);\r\n }\r\n\r\n private restoreFromStorage() {\r\n if (!this._storage) {\r\n return;\r\n }\r\n\r\n // Set the access token.\r\n const accessToken = this._storage.get<string>(this._accessTokenStorageKey);\r\n this.setAccessToken(accessToken);\r\n\r\n // Set the refresh token.\r\n const refreshToken = this._storage.get<string>(this._refreshTokenStorageKey);\r\n this.setRefreshToken(refreshToken);\r\n\r\n // Set the user if we have any correct token payloads.\r\n if (this._accessTokenPayload || this._refreshTokenPayload) {\r\n const user = this._storage.get<unknown>(this._userStorageKey);\r\n this._user$.next(user ?? null); // Note: just settings here instead of setUser() because of syncing to the storage.\r\n }\r\n }\r\n\r\n private syncTokensInStorage() {\r\n if (!this._storage) {\r\n return;\r\n }\r\n\r\n // Set the access token if completely valid.\r\n if (!!this.accessToken) {\r\n this._storage.set<string>(this._accessTokenStorageKey, this._accessTokenString, {\r\n expires: this._accessTokenPayload?.expiresAt\r\n });\r\n } else {\r\n this._storage.remove(this._accessTokenStorageKey);\r\n }\r\n\r\n // Set the refresh token if completely valid.\r\n if (!!this.refreshToken) {\r\n this._storage.set<string>(this._refreshTokenStorageKey, this._refreshTokenString, {\r\n expires: this._refreshTokenPayload?.expiresAt\r\n });\r\n } else {\r\n this._storage.remove(this._refreshTokenStorageKey);\r\n }\r\n }\r\n\r\n private syncUserInStorage() {\r\n if (!this._storage) {\r\n return;\r\n }\r\n\r\n const user = this._user$.getValue();\r\n if (!user) {\r\n return this._storage.remove(this._userStorageKey);\r\n }\r\n\r\n const date = new Date();\r\n date.setFullYear(date.getFullYear() + 1);\r\n this._storage.set<unknown>(this._userStorageKey, user, {\r\n expires: new Date(date.getTime())\r\n });\r\n }\r\n\r\n private setAccessToken(value: string | null) {\r\n this._accessTokenString = value ?? null;\r\n this._accessTokenPayload = this._jwt.decode(this._accessTokenString);\r\n }\r\n\r\n private setRefreshToken(value: string | null) {\r\n this._refreshTokenString = value ?? null;\r\n this._refreshTokenPayload = this._jwt.decode(this._refreshTokenString);\r\n }\r\n\r\n private generateKey = (applicationId: string, key: string) => {\r\n return [applicationId, key].join('_');\r\n };\r\n\r\n private isTokenValid = (token: AuthToken) => {\r\n if (!token) {\r\n return false;\r\n }\r\n\r\n return token?.expiresAt?.getTime() > Date.now();\r\n };\r\n\r\n}\r\n","import {HttpClient, HttpContext, HttpHeaders, HttpParams} from '@angular/common/http';\r\nimport {AuthProvider, AuthSignInResponse} from './interfaces/provider.interface';\r\nimport {makeStateKey, StateKey, TransferState} from '@angular/platform-browser';\r\nimport {Storage, StorageOption} from '@bravobit/bb-foundation/storage';\r\nimport {USE_AUTHORIZATION} from './tokens/use-authorization.token';\r\nimport {AuthVerifyProvider} from './providers/verify.provider';\r\nimport {Injectable, Injector, Optional} from '@angular/core';\r\nimport {AuthEmailProvider} from './providers/email.provider';\r\nimport {AuthConfig} from './interfaces/config.interface';\r\nimport {HttpConfig} from '@bravobit/bb-foundation/http';\r\nimport {AuthMapper} from './helpers/mapper.helper';\r\nimport {Platform} from '@bravobit/bb-foundation';\r\nimport {map, take, tap} from 'rxjs/operators';\r\nimport {AuthSession} from './auth.session';\r\nimport {Router} from '@angular/router';\r\nimport {Observable, of} from 'rxjs';\r\n\r\n@Injectable()\r\nexport class Auth {\r\n\r\n // Readonly data.\r\n private readonly _authStateKey: StateKey<any | null> = makeStateKey(`bbAuthStateKey`);\r\n private readonly _httpAlias: string | null = this._httpConfig?.defaultAlias ?? null;\r\n\r\n readonly session: AuthSession;\r\n readonly user: Observable<any | null>;\r\n\r\n private _refreshHandler: number | null = null;\r\n\r\n constructor(private _storage: Storage,\r\n private _mapper: AuthMapper,\r\n private _injector: Injector,\r\n private _platform: Platform,\r\n private _httpClient: HttpClient,\r\n @Optional() private _config?: AuthConfig,\r\n @Optional() private _state?: TransferState,\r\n @Optional() private _httpConfig?: HttpConfig) {\r\n // Starting the new session.\r\n this.session = new AuthSession({\r\n id: this._config?.applicationId,\r\n storage: this._storage.select([StorageOption.Cookie, StorageOption.Local])\r\n });\r\n this.user = this.session.user;\r\n }\r\n\r\n initialize() {\r\n return async () => {\r\n // Check if the app should bootstrap the authentication.\r\n const shouldBootstrap = this._config?.bootstrap ?? true;\r\n if (!shouldBootstrap) {\r\n return this.handleAutoRefreshing();\r\n }\r\n\r\n // Only retrieve from the server when we are actually authenticated.\r\n if (!this.session.authenticated()) {\r\n return;\r\n }\r\n\r\n // Get the key from the server state.\r\n if (this._state && this._state?.hasKey(this._authStateKey)) {\r\n const user = this._state?.get(this._authStateKey, null) ?? null;\r\n return this.session.setUser(user);\r\n }\r\n\r\n // Try to fetch the user from the server.\r\n const user = await this.me().pipe(\r\n take(1)\r\n ).toPromise();\r\n\r\n // Set the state if exists.\r\n if (this._state) {\r\n this._state?.set<any>(this._authStateKey, user ?? null);\r\n }\r\n\r\n // Save the user in the storage and handle auto refreshing.\r\n this.session.setUser(user);\r\n this.handleAutoRefreshing();\r\n };\r\n }\r\n\r\n me<T = any>() {\r\n const url = this.getUrl('auth/me');\r\n return this._httpClient.get<T>(url);\r\n }\r\n\r\n async signIn(provider: AuthProvider, as?: string[]) {\r\n const {accessToken, refreshToken, user, ...result} = await provider.authenticate(this._httpClient);\r\n\r\n // Check if the role matches.\r\n if (as && !as.includes(this._mapper.role(user))) {\r\n throw new Error('Invalid role.');\r\n }\r\n\r\n // Validate if the provider is one of the available\r\n // providers then return the user object and the provider.\r\n const apiProvider = result?.provider ?? null;\r\n const apiVerifyToken = result?.verifyToken ?? null;\r\n const availableProviders = ['email', 'sms', 'totp'];\r\n if (availableProviders.includes(apiProvider)) {\r\n return <AuthSignInResponse>{user, provider: apiProvider, verifyToken: apiVerifyToken};\r\n }\r\n\r\n // Set the tokens in storage.\r\n this.setTokens(accessToken, refreshToken);\r\n\r\n // Set the user in storage.\r\n this.session.setUser(user);\r\n\r\n // Return the user.\r\n return <AuthSignInResponse>{user};\r\n }\r\n\r\n async signInWithEmail(email: string, password: string, as?: string[]) {\r\n const url = this.getUrl('auth/login');\r\n return this.signIn(new AuthEmailProvider(email, password, url), as);\r\n }\r\n\r\n async signInWithVerifyCode(code: string, verifyToken: string) {\r\n const url = this.getUrl('auth/verify');\r\n return this.signIn(new AuthVerifyProvider(code, verifyToken, url));\r\n }\r\n\r\n async resendVerifyCode(verifyToken: string) {\r\n const url = this.getUrl('auth/resend');\r\n return await this._httpClient.post(url, {\r\n verify_token: verifyToken\r\n }).toPromise();\r\n }\r\n\r\n async register<T = any>(data: any, options?: {\r\n headers?: HttpHeaders | {\r\n [header: string]: string | string[];\r\n };\r\n params?: HttpParams | {\r\n [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean>;\r\n };\r\n }) {\r\n // Execute API call.\r\n const url = this.getUrl('auth/register');\r\n const result = await this._httpClient\r\n .post(url, data, options)\r\n .toPromise();\r\n\r\n // Map to the correct response.\r\n const {accessToken, refreshToken, user} = this._mapper.toRegister(result);\r\n\r\n // Set the tokens in storage.\r\n this.setTokens(accessToken, refreshToken);\r\n\r\n // Set the user in storage.\r\n this.session.setUser(user);\r\n\r\n // Return the user.\r\n return <T>user;\r\n }\r\n\r\n logout() {\r\n // If we don't have a refresh token just clear the session.\r\n // Note: We do this because else we try to invalidate\r\n // an \"undefined\" refresh token.\r\n const refreshToken = this.session.refreshToken;\r\n if (!refreshToken) {\r\n return this.session.clear();\r\n }\r\n\r\n // We do have a refresh token, so try to\r\n // invalidate it in the backend.\r\n try {\r\n const url = this.getUrl('auth/logout');\r\n this._httpClient.get(url, {\r\n headers: {Authorization: refreshToken}\r\n }).toPromise().then(_ => _);\r\n } catch {\r\n // Do nothing because the tokens will be deleted anyways from the session.\r\n }\r\n\r\n // Delete the tokens from the session.\r\n return this.session.clear();\r\n }\r\n\r\n refresh() {\r\n // If the refresh token does\r\n // not exist just return an observable of null.\r\n const refreshToken = this.session.refreshToken;\r\n if (!refreshToken) {\r\n return of<string>(null);\r\n }\r\n\r\n // Perform the refresh call.\r\n const scheme = this._config?.scheme ?? 'Bearer';\r\n\r\n const url = this.getUrl('auth/refresh');\r\n const context = new HttpContext()\r\n .set(USE_AUTHORIZATION, false);\r\n\r\n return this._httpClient.get(url, {\r\n headers: {Authorization: `${scheme} ${refreshToken}`},\r\n context: context\r\n }).pipe(\r\n map(data => this._mapper.toRefresh(data)),\r\n tap(({accessToken, refreshToken}) => this.setTokens(accessToken, refreshToken)),\r\n map(({accessToken}) => accessToken)\r\n );\r\n }\r\n\r\n async requestPassword(email: string, extraParams: { [key: string]: any } = {}) {\r\n const url = this.getUrl('auth/reset');\r\n return await this._httpClient\r\n .post(url, {...extraParams, email})\r\n .toPromise();\r\n }\r\n\r\n async resetPassword(token: string, newPassword: string, extraParams: { [key: string]: any } = {}) {\r\n const url = this.getUrl('auth/reset-password');\r\n return await this._httpClient\r\n .post(url, {...extraParams, token, password: newPassword})\r\n .toPromise();\r\n }\r\n\r\n guard(type: string, redirectUrl?: string) {\r\n let newUrl: string = null;\r\n\r\n // Get the correct new url.\r\n switch (type) {\r\n case 'authenticated':\r\n newUrl = this._config?.loggedInUrl ?? null;\r\n break;\r\n case 'unauthenticated':\r\n newUrl = this._config?.redirectUrl ?? null;\r\n break;\r\n }\r\n\r\n // Append a redirect url if the user is deemed\r\n // unauthenticated.\r\n if (type === 'unauthenticated') {\r\n const setRedirectOnFailedAuth = this._config?.setRedirectOnFailedAuth ?? true;\r\n if (setRedirectOnFailedAuth && redirectUrl && newUrl) {\r\n newUrl += `?redirectUrl=${redirectUrl}`;\r\n }\r\n }\r\n\r\n // Parse the url if it exists.\r\n if (this.router && newUrl) {\r\n return this.router.parseUrl(newUrl);\r\n }\r\n\r\n // Return false if the user is not allowed.\r\n return false;\r\n }\r\n\r\n clearAndRedirect() {\r\n // 1. Delete the tokens from the session.\r\n this.session.clear();\r\n\r\n // 2. Compose the route url.\r\n const redirectUrl = this._config?.redirectUrl ?? null;\r\n\r\n // 3. Route back if the user provided a redirect url.\r\n if (this.router && redirectUrl) {\r\n this.router.navigate([redirectUrl]).then(_ => _);\r\n }\r\n }\r\n\r\n private setTokens(accessToken: string, refreshToken: string) {\r\n // Set the tokens in our session.\r\n this.session.setTokens(accessToken, refreshToken);\r\n\r\n // We need to update the auto refresh of the refresh token.\r\n this.handleAutoRefreshing();\r\n }\r\n\r\n private handleAutoRefreshing() {\r\n const shouldAutoRefresh = this._config?.autoRefresh ?? false;\r\n if (!shouldAutoRefresh) {\r\n return;\r\n }\r\n\r\n const expiresAt = this.session.refreshTokenPayload?.expiresAt ?? null;\r\n if (expiresAt === null || !this._platform.isBrowser) {\r\n return;\r\n }\r\n\r\n const differenceInMilliseconds = expiresAt.getTime() - Date.now();\r\n const offsetInMilliseconds = 10_000; // 10 seconds.\r\n\r\n // We want to start the refresh 10 seconds before it expires.\r\n const actualTiming = differenceInMilliseconds - offsetInMilliseconds;\r\n if (actualTiming <= 0) {\r\n return;\r\n }\r\n\r\n // We need to cap the timings because if\r\n // we get large numbers it might cause unwanted results.\r\n const maxTiming = 1000 * 60 * 60 * 24; // 24 hours.\r\n const cappedTiming = Math.max(1, Math.min(actualTiming, maxTiming));\r\n try {\r\n if (this._refreshHandler !== null) {\r\n clearTimeout?.(this._refreshHandler);\r\n this._refreshHandler = null;\r\n }\r\n this._refreshHandler = setTimeout?.(() => this.autoRefresh(), cappedTiming);\r\n } catch {\r\n // Just ignore it.\r\n }\r\n }\r\n\r\n private async autoRefresh() {\r\n try {\r\n // We just need to wait for it to refresh.\r\n await this.refresh().toPromise();\r\n } catch {\r\n // Something went wrong refreshing, we need to clear.\r\n this.clearAndRedirect();\r\n }\r\n }\r\n\r\n private get router() {\r\n return this._injector.get(Router);\r\n }\r\n\r\n private getUrl(endpoint: string) {\r\n return [this._httpAlias, endpoint]\r\n .filter(item => !!item)\r\n .join('/');\r\n }\r\n\r\n}\r\n","import {Directive, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\r\nimport {distinctUntilChanged, map} from 'rxjs/operators';\r\nimport {Auth} from '../auth.service';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[bbAuthenticated]'\r\n})\r\nexport class BbAuthenticated implements OnInit, OnDestroy {\r\n\r\n // Subscriptions.\r\n private _subscription: Subscription;\r\n\r\n constructor(private _auth: Auth,\r\n private _template: TemplateRef<any>,\r\n private _viewContainerRef: ViewContainerRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this._subscription = this._auth.user.pipe(\r\n map(user => !!user),\r\n distinctUntilChanged()\r\n ).subscribe(isAuthenticated => {\r\n if (!isAuthenticated) {\r\n return this._viewContainerRef.clear();\r\n }\r\n\r\n this._viewContainerRef.createEmbeddedView(this._template);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscription?.unsubscribe();\r\n }\r\n\r\n}\r\n","import {Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\r\nimport {distinctUntilChanged, map} from 'rxjs/operators';\r\nimport {Auth} from '../auth.service';\r\nimport {Subscription} from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[bbRole]'\r\n})\r\nexport class BbRole implements OnInit, OnDestroy {\r\n\r\n // Inputs.\r\n @Input() bbRole: string | string[];\r\n\r\n // Subscriptions.\r\n private _subscription: Subscription;\r\n\r\n constructor(private _auth: Auth,\r\n private _template: TemplateRef<any>,\r\n private _viewContainerRef: ViewContainerRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this._subscription = this._auth.user.pipe(\r\n map(user => user?.role ?? null),\r\n distinctUntilChanged()\r\n ).subscribe(role => {\r\n const allowedRoles = this.getAllowedRoles(this.bbRole);\r\n\r\n if (!allowedRoles.includes(role)) {\r\n return this._viewContainerRef.clear();\r\n }\r\n\r\n this._viewContainerRef.createEmbeddedView(this._template);\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscription?.unsubscribe();\r\n }\r\n\r\n private getAllowedRoles = (value: string | string[]) => {\r\n return Array.isArray(value) ? value : [value];\r\n };\r\n\r\n}\r\n","import {distinctUntilChanged, map} from 'rxjs/operators';\r\nimport {AuthConfig} from './interfaces/config.interface';\r\nimport {Injectable, Optional} from '@angular/core';\r\nimport {Auth} from './auth.service';\r\n\r\n@Injectable()\r\nexport class Permissions {\r\n\r\n // Data.\r\n private readonly _permissions: { [permission: string]: string[] } = this._config?.permissions ?? {};\r\n private readonly _role$ = this._auth.user.pipe(\r\n map(user => user?.role as string ?? null),\r\n distinctUntilChanged()\r\n );\r\n\r\n constructor(private _auth: Auth,\r\n @Optional() private _config?: AuthConfig) {\r\n }\r\n\r\n has(value: string | string[]) {\r\n const requiredPermissions = Array.isArray(value)\r\n ? value\r\n : [value];\r\n\r\n return this._role$.pipe(\r\n map(role => {\r\n if (role === null || role === undefined) {\r\n return false;\r\n }\r\n\r\n for (const requiredPermission of requiredPermissions) {\r\n const result = this.validatePermission(requiredPermission, role);\r\n if (!result) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n })\r\n );\r\n }\r\n\r\n private validatePermission(type: string, role: string) {\r\n const permission = this._permissions?.[type] ?? null;\r\n if (!permission) {\r\n console?.warn?.(`Permissions: Invalid permission requested \"${type}\".`);\r\n return false;\r\n }\r\n if (permission?.length <= 0) {\r\n console?.warn?.(`Permissions: No roles were set, please add some roles to this permission.`);\r\n return false;\r\n }\r\n\r\n // If the permission includes a \"*\" we allow everyone.\r\n if (permission.includes('*')) {\r\n return true;\r\n }\r\n\r\n // Validate the role against the permissions.\r\n return permission?.includes(role) ?? false;\r\n }\r\n\r\n}\r\n","import {Directive, EmbeddedViewRef, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\r\nimport {Permissions} from '../permissions.service';\r\nimport {BehaviorSubject, Subscription} from 'rxjs';\r\nimport {switchMap} from 'rxjs/operators';\r\n\r\n@Directive({\r\n selector: '[bbPermission]'\r\n})\r\nexport class BbPermission implements OnInit, OnDestroy {\r\n\r\n // Data.\r\n private _permission$ = new BehaviorSubject<string[]>([]);\r\n private _valid: boolean = false;\r\n\r\n private _elseTemplateRef: TemplateRef<any> | null = null;\r\n\r\n private _thenViewRef: EmbeddedViewRef<any> | null = null;\r\n private _elseViewRef: EmbeddedViewRef<any> | null = null;\r\n\r\n @Input()\r\n set bbPermission(value: string | string[]) {\r\n const permissions = this.getAllowedPermissions(value);\r\n this._permission$.next(permissions);\r\n this.updateView();\r\n }\r\n\r\n @Input()\r\n set bbPermissionElse(templateRef: TemplateRef<any> | null) {\r\n this.assertTemplate('bbPermissionElse', templateRef);\r\n this._elseTemplateRef = templateRef;\r\n this.updateView();\r\n }\r\n\r\n // Subscriptions.\r\n private _subscription: Subscription;\r\n\r\n constructor(private _permissions: Permissions,\r\n private _templateRef: TemplateRef<any>,\r\n private _viewContainerRef: ViewContainerRef) {\r\n }\r\n\r\n ngOnInit() {\r\n const check$ = this._permission$.pipe(\r\n switchMap(permissions => this._permissions.has(permissions))\r\n );\r\n\r\n this._subscription = check$.subscribe(valid => {\r\n this._valid = valid;\r\n this.updateView();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this._subscription?.unsubscribe();\r\n }\r\n\r\n private updateView() {\r\n if (this._valid) {\r\n if (!this._thenViewRef) {\r\n this._viewContainerRef.clear();\r\n this._elseViewRef = null;\r\n if (this._templateRef) {\r\n this._thenViewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);\r\n }\r\n }\r\n } else {\r\n if (!this._elseViewRef) {\r\n this._viewContainerRef.clear();\r\n this._thenViewRef = null;\r\n if (this._elseTemplateRef) {\r\n this._elseViewRef = this._viewContainerRef.createEmbeddedView(this._elseTemplateRef);\r\n }\r\n }\r\n }\r\n }\r\n\r\n private getAllowedPermissions = (value: string | string[]) => {\r\n return Array.isArray(value) ? value : [value];\r\n };\r\n\r\n private assertTemplate = (property: string, templateRef: TemplateRef<any> | null) => {\r\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\r\n if (!isTemplateRefOrNull) {\r\n throw new Error(`${property} must be a TemplateRef.`);\r\n }\r\n };\r\n\r\n}\r\n","import {ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot} from '@angular/router';\r\nimport {first, map} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {Auth} from '../auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BbAnonymousGuard implements CanActivate, CanActivateChild {\r\n\r\n constructor(private _auth: Auth) {\r\n }\r\n\r\n async canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n // Check if the user is authenticated.\r\n const isAuthenticated = await this._auth.user.pipe(\r\n map(user => !!user),\r\n first()\r\n ).toPromise();\r\n\r\n // If the user is not authenticated it can\r\n // access the anonymous page.\r\n if (!isAuthenticated) {\r\n return true;\r\n }\r\n\r\n // Return the user back to the authenticated page.\r\n return this._auth.guard('authenticated', state.url);\r\n }\r\n\r\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n return this.canActivate(childRoute, state);\r\n }\r\n\r\n}\r\n","import {ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot} from '@angular/router';\r\nimport {first, map} from 'rxjs/operators';\r\nimport {Injectable} from '@angular/core';\r\nimport {Auth} from '../auth.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BbAuthenticatedGuard implements CanActivate, CanActivateChild {\r\n\r\n constructor(private _auth: Auth) {\r\n }\r\n\r\n async canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n // Check if the user is authenticated.\r\n const isAuthenticated = await this._auth.user.pipe(\r\n map(user => !!user),\r\n first()\r\n ).toPromise();\r\n\r\n // If the user is authenticated it can\r\n // access the authenticated page.\r\n if (isAuthenticated) {\r\n return true;\r\n }\r\n\r\n // The user is not authorized to see that\r\n // page so un-authorize him.\r\n return this._auth.guard('unauthenticated', state.url);\r\n }\r\n\r\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n return this.canActivate(childRoute, state);\r\n }\r\n\r\n}\r\n","import {HttpErrorResponse, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\r\nimport {catchError, filter, finalize, switchMap, take} from 'rxjs/operators';\r\nimport {USE_AUTHORIZATION} from './tokens/use-authorization.token';\r\nimport {AuthConfig} from './interfaces/config.interface';\r\nimport {HttpError} from '@bravobit/bb-foundation/http';\r\nimport {BehaviorSubject, of, throwError} from 'rxjs';\r\nimport {Injectable, Optional} from '@angular/core';\r\nimport {Auth} from './auth.service';\r\n\r\n@Injectable()\r\nexport class AuthInterceptor implements HttpInterceptor {\r\n\r\n // Readonly data.\r\n private readonly _authHeaderString: string = 'Authorization';\r\n\r\n // Data.\r\n isRefreshing: boolean = false;\r\n refreshingAccessToken$ = new BehaviorSubject<string | null>(null);\r\n\r\n constructor(private _auth: Auth,\r\n @Optional() private _config: AuthConfig) {\r\n }\r\n\r\n intercept(request: HttpRequest<unknown>, next: HttpHandler) {\r\n // 1. Check if the user wants to use the authorization for this request.\r\n if (!request.context.get(USE_AUTHORIZATION)) {\r\n return next.handle(request);\r\n }\r\n\r\n // 2. Compose the new request.\r\n const accessToken = this.getAccessToken(request);\r\n const newRequest = this.addAuthorizationHeader(request, accessToken);\r\n\r\n // 3. Handle all errors.\r\n return next.handle(newRequest).pipe(\r\n catchError(error => {\r\n // Handle the HTTP401 error.\r\n if ((error instanceof HttpErrorResponse || error instanceof HttpError) && error?.status === 401) {\r\n return this.handle401Error(request, next);\r\n }\r\n\r\n // Just re-throw the parsed error.\r\n return throwError(error);\r\n })\r\n );\r\n }\r\n\r\n private handle401Error(request: HttpRequest<unknown>, next: HttpHandler) {\r\n // If already refreshing wait for the refresh token to complete.\r\n if (this.isRefreshing) {\r\n return this.refreshingAccessToken$.pipe(\r\n filter(accessToken => accessToken !== null),\r\n take(1),\r\n switchMap(accessToken => next.handle(this.addAuthorizationHeader(request, accessToken)))\r\n );\r\n }\r\n\r\n // Set the refreshing to true.\r\n this.isRefreshing = true;\r\n this.refreshingAccessToken$.next(null);\r\n\r\n return this._auth.refresh().pipe(\r\n switchMap(newAccessToken => {\r\n if (!newAccessToken) {\r\n const error = new Error('No refresh token was available.');\r\n return throwError(error);\r\n }\r\n\r\n this.refreshingAccessToken$.next(newAccessToken);\r\n return next.handle(this.addAuthorizationHeader(request, newAccessToken));\r\n }),\r\n catchError(() => this.logoutUser()),\r\n finalize(() => this.isRefreshing = false)\r\n );\r\n }\r\n\r\n private logoutUser() {\r\n // Handle the refresh error.\r\n this._auth.clearAndRedirect();\r\n\r\n // Return null as data.\r\n return of(null);\r\n }\r\n\r\n private getAccessToken = (request: HttpRequest<unknown>) => {\r\n // Get the token based on header.\r\n if (request.headers.has('Authorization')) {\r\n return request.headers.get('Authorization');\r\n }\r\n\r\n // Return the default access token.\r\n return this._auth.session.accessToken;\r\n };\r\n\r\n private addAuthorizationHeader = (request: HttpRequest<unknown>, accessToken: string | null = null) => {\r\n // Remove auth header when we do not have\r\n // an access token.\r\n if (!accessToken) {\r\n return request.clone({\r\n headers: request.headers.delete(this._authHeaderString)\r\n });\r\n }\r\n\r\n // Add the auth header to the request.\r\n return request.clone({\r\n setHeaders: {[this._authHeaderString]: this.getFullAuthorizationHeader(accessToken)}\r\n });\r\n };\r\n\r\n private getFullAuthorizationHeader = (token: string) => {\r\n const authScheme = this._config?.scheme ?? 'Bearer';\r\n return [authScheme, token].join(' ');\r\n };\r\n\r\n}\r\n","import {APP_INITIALIZER, ModuleWithProviders, NgModule} from '@angular/core';\r\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\r\nimport {BbAuthenticated} from './directives/authenticated.directive';\r\nimport {BbPermission} from './directives/permission.directive';\r\nimport {AuthConfig} from './interfaces/config.interface';\r\nimport {AuthInterceptor} from './auth.interceptor';\r\nimport {AuthMapper} from './helpers/mapper.helper';\r\nimport {BbRole} from './directives/role.directive';\r\nimport {Permissions} from './permissions.service';\r\nimport {Auth} from './auth.service';\r\n\r\nconst DECLARATIONS_EXPORTS = [\r\n BbAuthenticated,\r\n BbRole,\r\n BbPermission\r\n];\r\n\r\n@NgModule({\r\n imports: [HttpClientModule],\r\n declarations: [...DECLARATIONS_EXPORTS],\r\n exports: [...DECLARATIONS_EXPORTS],\r\n providers: [\r\n {provide: AuthMapper, useClass: AuthMapper}\r\n ]\r\n})\r\nexport class AuthModule {\r\n\r\n static forRoot(config?: AuthConfig): ModuleWithProviders<AuthModule> {\r\n return {\r\n ngModule: AuthModule,\r\n providers: [\r\n Auth,\r\n Permissions,\r\n {provide: AuthConfig, useValue: config},\r\n {provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true},\r\n {useFactory: initializeAuth, provide: APP_INITIALIZER, deps: [Auth], multi: true}\r\n ]\r\n };\r\n }\r\n\r\n}\r\n\r\nexport function initializeAuth(auth: Auth) {\r\n return auth.initialize();\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["HttpContextToken","Injectable","BehaviorSubject","shareReplay","makeStateKey","take","of","HttpContext","map","tap","Router","Optional","distinctUntilChanged","Directive","Input","switchMap","first","catchError","HttpErrorResponse","HttpError","throwError","filter","finalize","HTTP_INTERCEPTORS","APP_INITIALIZER","HttpClientModule","NgModule"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bravobit-bb-foundation-auth.umd.js","sources":["../../../projects/bb-foundation/auth/src/lib/interfaces/config.interface.ts","../../../projects/bb-foundation/auth/src/lib/tokens/use-authorization.token.ts","../../../projects/bb-foundation/auth/src/lib/helpers/jwt.helper.ts","../../../projects/bb-foundation/auth/src/lib/helpers/mapper.helper.ts","../../../node_modules/tslib/tslib.es6.js","../../../projects/bb-foundation/auth/src/lib/providers/verify.provider.ts","../../../projects/bb-foundation/auth/src/lib/providers/email.provider.ts","../../../projects/bb-foundation/auth/src/lib/auth.session.ts","../../../projects/bb-foundation/auth/src/lib/auth.service.ts","../../../projects/bb-foundation/auth/src/lib/directives/authenticated.directive.ts","../../../projects/bb-foundation/auth/src/lib/directives/role.directive.ts","../../../projects/bb-foundation/auth/src/lib/permissions.service.ts","../../../projects/bb-foundation/auth/src/lib/directives/permission.directive.ts","../../../projects/bb-foundation/auth/src/lib/guards/anonymous.guard.ts","../../../projects/bb-foundation/auth/src/lib/guards/authenticated.guard.ts","../../../projects/bb-foundation/auth/src/lib/auth.interceptor.ts","../../../projects/bb-foundation/auth/src/lib/auth.module.ts","../../../projects/bb-foundation/auth/src/bravobit-bb-foundation-auth.ts"],"sourcesContent":["export class AuthConfig {\n scheme?: string;\n redirectUrl?: string;\n loggedInUrl?: string;\n applicationId?: string;\n bootstrap?: boolean;\n autoRefresh?: boolean;\n setRedirectOnFailedAuth?: boolean;\n permissions?: {\n [permission: string]: string[];\n };\n}\n","import {HttpContextToken} from '@angular/common/http';\n\nexport const USE_AUTHORIZATION = new HttpContextToken(() => true);","import {AuthToken} from '../interfaces/token.interface';\n\nexport class JwtHelper {\n\n decode(token: string) {\n try {\n if (token === null || token === undefined) {\n return null;\n }\n\n const json = JSON.parse(\n this.urlDecode(token.split('.')[1])\n );\n\n return this.parse(json);\n } catch {\n return null;\n }\n }\n\n private urlDecode(token: string | null) {\n const value = token || '';\n let output = value\n .replace(/-/g, '+')\n .replace(/_/g, '/');\n\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += '==';\n break;\n case 3:\n output += '=';\n break;\n default:\n throw 'Illegal base64url string!';\n }\n\n try {\n return this.baseDecodeUnicode(output);\n } catch {\n return atob(output);\n }\n }\n\n private baseDecodeUnicode = (value: string) => {\n return decodeURIComponent(atob(value).replace(/(.)/g, (_, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = '0' + code;\n }\n return '%' + code;\n }));\n };\n\n private parse = (data: object) => {\n return {\n id: data['iss'] || null,\n type: data['typ'] || null,\n audience: data['aud'] || null,\n issuer: data['iss'] || null,\n subject: data['sub'] || null,\n role: data['role'] || null,\n notValidBefore: this.parseDate(data['nbf']),\n expiresAt: this.parseDate(data['exp']),\n issuedAt: this.parseDate(data['iat'])\n } as AuthToken;\n };\n\n private parseDate = (epochInSeconds: number) => {\n if (!epochInSeconds || epochInSeconds <= 0) {\n return null;\n }\n\n return new Date(epochInSeconds * 1000);\n };\n\n}\n","import {AuthMapperProtocol} from '../interfaces/mapper.interface';\nimport {Injectable} from '@angular/core';\n\n@Injectable()\nexport class AuthMapper implements AuthMapperProtocol {\n\n // Routes.\n me: string = 'auth/me';\n register: string = 'auth/register';\n resendCode: string = 'auth/resend';\n logout: string = 'auth/logout';\n refresh: string = 'auth/refresh';\n requestPassword: string = 'auth/reset';\n resetPassword: string = 'auth/reset-password';\n\n role(data: any) {\n return (data && data.role) || null;\n }\n\n toRegister(data: any) {\n // Retrieve the params.\n const {token, refresh_token, user} = data;\n\n // Map the data to the correct format.\n return {accessToken: token, refreshToken: refresh_token, user: user};\n }\n\n toRefresh(data: any) {\n // Retrieve the params.\n const {token, refresh_token} = data;\n\n // Map the data to the correct format.\n return {accessToken: token, refreshToken: refresh_token};\n }\n\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import {AuthProvider} from '../interfaces/provider.interface';\nimport {HttpClient} from '@angular/common/http';\n\nexport class AuthVerifyProvider implements AuthProvider {\n\n constructor(private _code: string,\n private _verifyToken: string,\n private _endpoint: string) {\n }\n\n async authenticate(httpClient: HttpClient) {\n // Execute API call.\n const {token, refresh_token, user} = await httpClient.post<any>(this._endpoint, {\n token: this._code,\n verify_token: this._verifyToken\n }).toPromise();\n\n // Map the data to the correct format.\n return {accessToken: token, refreshToken: refresh_token, user: user};\n }\n\n}\n","import {AuthProvider} from '../interfaces/provider.interface';\nimport {HttpClient} from '@angular/common/http';\n\nexport class AuthEmailProvider implements AuthProvider {\n\n constructor(private _email: string,\n private _password: string,\n private _endpoint: string) {\n }\n\n async authenticate(httpClient: HttpClient) {\n // Execute API call.\n const {token, refresh_token, user, provider, verify_token} = await httpClient.post<any>(this._endpoint, {\n email: this._email,\n password: this._password\n }).toPromise();\n\n // Map the data to the correct format.\n return {\n accessToken: token,\n refreshToken: refresh_token,\n user: user,\n provider: provider,\n verifyToken: verify_token\n };\n }\n\n}\n","import {StorageStrategy} from '@bravobit/bb-foundation/storage';\nimport {AuthToken} from './interfaces/token.interface';\nimport {JwtHelper} from './helpers/jwt.helper';\nimport {shareReplay} from 'rxjs/operators';\nimport {BehaviorSubject} from 'rxjs';\n\nexport class AuthSession {\n\n // Readonly data.\n private readonly _jwt = new JwtHelper();\n private readonly _storage: StorageStrategy | null;\n private readonly _accessTokenStorageKey: string;\n private readonly _refreshTokenStorageKey: string;\n private readonly _userStorageKey: string;\n\n // Token strings.\n private _accessTokenString: string | null = null;\n private _refreshTokenString: string | null = null;\n\n // Token payloads.\n private _accessTokenPayload: AuthToken | null = null;\n private _refreshTokenPayload: AuthToken | null = null;\n\n // Private user data.\n private _user$ = new BehaviorSubject<any | null>(null);\n\n // Public user data.\n user = this._user$.pipe(\n shareReplay(1)\n );\n\n constructor(options?: { id?: string, storage?: StorageStrategy }) {\n const applicationId = options?.id ?? 'ng';\n\n // Setting up the readonly storage keys.\n this._accessTokenStorageKey = this.generateKey(applicationId, 'au_act');\n this._refreshTokenStorageKey = this.generateKey(applicationId, 'au_rft');\n this._userStorageKey = this.generateKey(applicationId, 'au_usr');\n\n // Setting up the storage.\n this._storage = options?.storage ?? null;\n\n // Init methods.\n this.restoreFromStorage();\n }\n\n get accessToken() {\n return this.isTokenValid(this._accessTokenPayload)\n ? this._accessTokenString\n : null;\n }\n\n get refreshToken() {\n return this.isTokenValid(this.refreshTokenPayload)\n ? this._refreshTokenString\n : null;\n }\n\n get accessTokenPayload() {\n return this._accessTokenPayload ?? null;\n }\n\n get refreshTokenPayload() {\n return this._refreshTokenPayload ?? null;\n }\n\n authenticated() {\n return this.isTokenValid(this._accessTokenPayload) || this.isTokenValid(this._refreshTokenPayload);\n }\n\n setTokens(accessToken: string | null, refreshToken: string | null) {\n this.setAccessToken(accessToken);\n this.setRefreshToken(refreshToken);\n this.syncTokensInStorage();\n }\n\n setUser(user: unknown) {\n this._user$.next(user ?? null);\n this.syncUserInStorage();\n }\n\n clear() {\n this.setTokens(null, null);\n this.setUser(null);\n }\n\n private restoreFromStorage() {\n if (!this._storage) {\n return;\n }\n\n // Set the access token.\n const accessToken = this._storage.get<string>(this._accessTokenStorageKey);\n this.setAccessToken(accessToken);\n\n // Set the refresh token.\n const refreshToken = this._storage.get<string>(this._refreshTokenStorageKey);\n this.setRefreshToken(refreshToken);\n\n // Set the user if we have any correct token payloads.\n if (this._accessTokenPayload || this._refreshTokenPayload) {\n const user = this._storage.get<unknown>(this._userStorageKey);\n this._user$.next(user ?? null); // Note: just settings here instead of setUser() because of syncing to the storage.\n }\n }\n\n private syncTokensInStorage() {\n if (!this._storage) {\n return;\n }\n\n // Set the access token if completely valid.\n if (!!this.accessToken) {\n this._storage.set<string>(this._accessTokenStorageKey, this._accessTokenString, {\n expires: this._accessTokenPayload?.expiresAt\n });\n } else {\n this._storage.remove(this._accessTokenStorageKey);\n }\n\n // Set the refresh token if completely valid.\n if (!!this.refreshToken) {\n this._storage.set<string>(this._refreshTokenStorageKey, this._refreshTokenString, {\n expires: this._refreshTokenPayload?.expiresAt\n });\n } else {\n this._storage.remove(this._refreshTokenStorageKey);\n }\n }\n\n private syncUserInStorage() {\n if (!this._storage) {\n return;\n }\n\n const user = this._user$.getValue();\n if (!user) {\n return this._storage.remove(this._userStorageKey);\n }\n\n const date = new Date();\n date.setFullYear(date.getFullYear() + 1);\n this._storage.set<unknown>(this._userStorageKey, user, {\n expires: new Date(date.getTime())\n });\n }\n\n private setAccessToken(value: string | null) {\n this._accessTokenString = value ?? null;\n this._accessTokenPayload = this._jwt.decode(this._accessTokenString);\n }\n\n private setRefreshToken(value: string | null) {\n this._refreshTokenString = value ?? null;\n this._refreshTokenPayload = this._jwt.decode(this._refreshTokenString);\n }\n\n private generateKey = (applicationId: string, key: string) => {\n return [applicationId, key].join('_');\n };\n\n private isTokenValid = (token: AuthToken) => {\n if (!token) {\n return false;\n }\n\n return token?.expiresAt?.getTime() > Date.now();\n };\n\n}\n","import {HttpClient, HttpContext, HttpHeaders, HttpParams} from '@angular/common/http';\nimport {AuthProvider, AuthSignInResponse} from './interfaces/provider.interface';\nimport {makeStateKey, StateKey, TransferState} from '@angular/platform-browser';\nimport {Storage, StorageOption} from '@bravobit/bb-foundation/storage';\nimport {USE_AUTHORIZATION} from './tokens/use-authorization.token';\nimport {AuthVerifyProvider} from './providers/verify.provider';\nimport {Injectable, Injector, Optional} from '@angular/core';\nimport {AuthEmailProvider} from './providers/email.provider';\nimport {AuthConfig} from './interfaces/config.interface';\nimport {HttpConfig} from '@bravobit/bb-foundation/http';\nimport {AuthMapper} from './helpers/mapper.helper';\nimport {Platform} from '@bravobit/bb-foundation';\nimport {map, take, tap} from 'rxjs/operators';\nimport {AuthSession} from './auth.session';\nimport {Router} from '@angular/router';\nimport {Observable, of} from 'rxjs';\n\n@Injectable()\nexport class Auth {\n\n // Readonly data.\n private readonly _authStateKey: StateKey<any | null> = makeStateKey(`bbAuthStateKey`);\n private readonly _httpAlias: string | null = this._httpConfig?.defaultAlias ?? null;\n\n readonly session: AuthSession;\n readonly user: Observable<any | null>;\n\n private _refreshHandler: number | null = null;\n\n constructor(private _storage: Storage,\n private _mapper: AuthMapper,\n private _injector: Injector,\n private _platform: Platform,\n private _httpClient: HttpClient,\n @Optional() private _config?: AuthConfig,\n @Optional() private _state?: TransferState,\n @Optional() private _httpConfig?: HttpConfig) {\n // Starting the new session.\n this.session = new AuthSession({\n id: this._config?.applicationId,\n storage: this._storage.select([StorageOption.Cookie, StorageOption.Local])\n });\n this.user = this.session.user;\n }\n\n initialize() {\n return async () => {\n // Check if the app should bootstrap the authentication.\n const shouldBootstrap = this._config?.bootstrap ?? true;\n if (!shouldBootstrap) {\n return this.handleAutoRefreshing();\n }\n\n // Only retrieve from the server when we are actually authenticated.\n if (!this.session.authenticated()) {\n return;\n }\n\n // Get the key from the server state.\n if (this._state && this._state?.hasKey(this._authStateKey)) {\n const user = this._state?.get(this._authStateKey, null) ?? null;\n return this.session.setUser(user);\n }\n\n // Try to fetch the user from the server.\n const user = await this.me().pipe(\n take(1)\n ).toPromise();\n\n // Set the state if exists.\n if (this._state) {\n this._state?.set<any>(this._authStateKey, user ?? null);\n }\n\n // Save the user in the storage and handle auto refreshing.\n this.session.setUser(user);\n this.handleAutoRefreshing();\n };\n }\n\n me<T = any>() {\n const url = this.getUrl('auth/me');\n return this._httpClient.get<T>(url);\n }\n\n async signIn(provider: AuthProvider, as?: string[]) {\n const {accessToken, refreshToken, user, ...result} = await provider.authenticate(this._httpClient);\n\n // Check if the role matches.\n if (as && !as.includes(this._mapper.role(user))) {\n throw new Error('Invalid role.');\n }\n\n // Validate if the provider is one of the available\n // providers then return the user object and the provider.\n const apiProvider = result?.provider ?? null;\n const apiVerifyToken = result?.verifyToken ?? null;\n const availableProviders = ['email', 'sms', 'totp'];\n if (availableProviders.includes(apiProvider)) {\n return <AuthSignInResponse>{user, provider: apiProvider, verifyToken: apiVerifyToken};\n }\n\n // Set the tokens in storage.\n this.setTokens(accessToken, refreshToken);\n\n // Set the user in storage.\n this.session.setUser(user);\n\n // Return the user.\n return <AuthSignInResponse>{user};\n }\n\n async signInWithEmail(email: string, password: string, as?: string[]) {\n const url = this.getUrl('auth/login');\n return this.signIn(new AuthEmailProvider(email, password, url), as);\n }\n\n async signInWithVerifyCode(code: string, verifyToken: string) {\n const url = this.getUrl('auth/verify');\n return this.signIn(new AuthVerifyProvider(code, verifyToken, url));\n }\n\n async resendVerifyCode(verifyToken: string) {\n const url = this.getUrl('auth/resend');\n return await this._httpClient.post(url, {\n verify_token: verifyToken\n }).toPromise();\n }\n\n async register<T = any>(data: any, options?: {\n headers?: HttpHeaders | {\n [header: string]: string | string[];\n };\n params?: HttpParams | {\n [param: string]: string | number | boolean | ReadonlyArray<string | number | boolean>;\n };\n }) {\n // Execute API call.\n const url = this.getUrl('auth/register');\n const result = await this._httpClient\n .post(url, data, options)\n .toPromise();\n\n // Map to the correct response.\n const {accessToken, refreshToken, user} = this._mapper.toRegister(result);\n\n // Set the tokens in storage.\n this.setTokens(accessToken, refreshToken);\n\n // Set the user in storage.\n this.session.setUser(user);\n\n // Return the user.\n return <T>user;\n }\n\n logout() {\n // If we don't have a refresh token just clear the session.\n // Note: We do this because else we try to invalidate\n // an \"undefined\" refresh token.\n const refreshToken = this.session.refreshToken;\n if (!refreshToken) {\n return this.session.clear();\n }\n\n // We do have a refresh token, so try to\n // invalidate it in the backend.\n try {\n const url = this.getUrl('auth/logout');\n this._httpClient.get(url, {\n headers: {Authorization: refreshToken}\n }).toPromise().then(_ => _);\n } catch {\n // Do nothing because the tokens will be deleted anyways from the session.\n }\n\n // Delete the tokens from the session.\n return this.session.clear();\n }\n\n refresh() {\n // If the refresh token does\n // not exist just return an observable of null.\n const refreshToken = this.session.refreshToken;\n if (!refreshToken) {\n return of<string>(null);\n }\n\n // Perform the refresh call.\n const scheme = this._config?.scheme ?? 'Bearer';\n\n const url = this.getUrl('auth/refresh');\n const context = new HttpContext()\n .set(USE_AUTHORIZATION, false);\n\n return this._httpClient.get(url, {\n headers: {Authorization: `${scheme} ${refreshToken}`},\n context: context\n }).pipe(\n map(data => this._mapper.toRefresh(data)),\n tap(({accessToken, refreshToken}) => this.setTokens(accessToken, refreshToken)),\n map(({accessToken}) => accessToken)\n );\n }\n\n async requestPassword(email: string, extraParams: { [key: string]: any } = {}) {\n const url = this.getUrl('auth/reset');\n return await this._httpClient\n .post(url, {...extraParams, email})\n .toPromise();\n }\n\n async resetPassword(token: string, newPassword: string, extraParams: { [key: string]: any } = {}) {\n const url = this.getUrl('auth/reset-password');\n return await this._httpClient\n .post(url, {...extraParams, token, password: newPassword})\n .toPromise();\n }\n\n guard(type: string, redirectUrl?: string) {\n let newUrl: string = null;\n\n // Get the correct new url.\n switch (type) {\n case 'authenticated':\n newUrl = this._config?.loggedInUrl ?? null;\n break;\n case 'unauthenticated':\n newUrl = this._config?.redirectUrl ?? null;\n break;\n }\n\n // Append a redirect url if the user is deemed\n // unauthenticated.\n if (type === 'unauthenticated') {\n const setRedirectOnFailedAuth = this._config?.setRedirectOnFailedAuth ?? true;\n if (setRedirectOnFailedAuth && redirectUrl && newUrl) {\n newUrl += `?redirectUrl=${redirectUrl}`;\n }\n }\n\n // Parse the url if it exists.\n if (this.router && newUrl) {\n return this.router.parseUrl(newUrl);\n }\n\n // Return false if the user is not allowed.\n return false;\n }\n\n clearAndRedirect() {\n // 1. Delete the tokens from the session.\n this.session.clear();\n\n // 2. Compose the route url.\n const redirectUrl = this._config?.redirectUrl ?? null;\n\n // 3. Route back if the user provided a redirect url.\n if (this.router && redirectUrl) {\n this.router.navigate([redirectUrl]).then(_ => _);\n }\n }\n\n private setTokens(accessToken: string, refreshToken: string) {\n // Set the tokens in our session.\n this.session.setTokens(accessToken, refreshToken);\n\n // We need to update the auto refresh of the refresh token.\n this.handleAutoRefreshing();\n }\n\n private handleAutoRefreshing() {\n const shouldAutoRefresh = this._config?.autoRefresh ?? false;\n if (!shouldAutoRefresh) {\n return;\n }\n\n const expiresAt = this.session.refreshTokenPayload?.expiresAt ?? null;\n if (expiresAt === null || !this._platform.isBrowser) {\n return;\n }\n\n const differenceInMilliseconds = expiresAt.getTime() - Date.now();\n const offsetInMilliseconds = 10_000; // 10 seconds.\n\n // We want to start the refresh 10 seconds before it expires.\n const actualTiming = differenceInMilliseconds - offsetInMilliseconds;\n if (actualTiming <= 0) {\n return;\n }\n\n // We need to cap the timings because if\n // we get large numbers it might cause unwanted results.\n const maxTiming = 1000 * 60 * 60 * 24; // 24 hours.\n const cappedTiming = Math.max(1, Math.min(actualTiming, maxTiming));\n try {\n if (this._refreshHandler !== null) {\n clearTimeout?.(this._refreshHandler);\n this._refreshHandler = null;\n }\n this._refreshHandler = setTimeout?.(() => this.autoRefresh(), cappedTiming);\n } catch {\n // Just ignore it.\n }\n }\n\n private async autoRefresh() {\n try {\n // We just need to wait for it to refresh.\n await this.refresh().toPromise();\n } catch {\n // Something went wrong refreshing, we need to clear.\n this.clearAndRedirect();\n }\n }\n\n private get router() {\n return this._injector.get(Router);\n }\n\n private getUrl(endpoint: string) {\n return [this._httpAlias, endpoint]\n .filter(item => !!item)\n .join('/');\n }\n\n}\n","import {Directive, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {Auth} from '../auth.service';\nimport {Subscription} from 'rxjs';\n\n@Directive({\n selector: '[bbAuthenticated]'\n})\nexport class BbAuthenticated implements OnInit, OnDestroy {\n\n // Subscriptions.\n private _subscription: Subscription;\n\n constructor(private _auth: Auth,\n private _template: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef) {\n }\n\n ngOnInit() {\n this._subscription = this._auth.user.pipe(\n map(user => !!user),\n distinctUntilChanged()\n ).subscribe(isAuthenticated => {\n if (!isAuthenticated) {\n return this._viewContainerRef.clear();\n }\n\n this._viewContainerRef.createEmbeddedView(this._template);\n });\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n}\n","import {Directive, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {distinctUntilChanged, map} from 'rxjs/operators';\nimport {Auth} from '../auth.service';\nimport {Subscription} from 'rxjs';\n\n@Directive({\n selector: '[bbRole]'\n})\nexport class BbRole implements OnInit, OnDestroy {\n\n // Inputs.\n @Input() bbRole: string | string[];\n\n // Subscriptions.\n private _subscription: Subscription;\n\n constructor(private _auth: Auth,\n private _template: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef) {\n }\n\n ngOnInit() {\n this._subscription = this._auth.user.pipe(\n map(user => user?.role ?? null),\n distinctUntilChanged()\n ).subscribe(role => {\n const allowedRoles = this.getAllowedRoles(this.bbRole);\n\n if (!allowedRoles.includes(role)) {\n return this._viewContainerRef.clear();\n }\n\n this._viewContainerRef.createEmbeddedView(this._template);\n });\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private getAllowedRoles = (value: string | string[]) => {\n return Array.isArray(value) ? value : [value];\n };\n\n}\n","import {distinctUntilChanged, map} from 'rxjs/operators';\nimport {AuthConfig} from './interfaces/config.interface';\nimport {Injectable, Optional} from '@angular/core';\nimport {Auth} from './auth.service';\n\n@Injectable()\nexport class Permissions {\n\n // Data.\n private readonly _permissions: { [permission: string]: string[] } = this._config?.permissions ?? {};\n private readonly _role$ = this._auth.user.pipe(\n map(user => user?.role as string ?? null),\n distinctUntilChanged()\n );\n\n constructor(private _auth: Auth,\n @Optional() private _config?: AuthConfig) {\n }\n\n has(value: string | string[]) {\n const requiredPermissions = Array.isArray(value)\n ? value\n : [value];\n\n return this._role$.pipe(\n map(role => {\n if (role === null || role === undefined) {\n return false;\n }\n\n for (const requiredPermission of requiredPermissions) {\n const result = this.validatePermission(requiredPermission, role);\n if (!result) {\n return false;\n }\n }\n\n return true;\n })\n );\n }\n\n private validatePermission(type: string, role: string) {\n const permission = this._permissions?.[type] ?? null;\n if (!permission) {\n console?.warn?.(`Permissions: Invalid permission requested \"${type}\".`);\n return false;\n }\n if (permission?.length <= 0) {\n console?.warn?.(`Permissions: No roles were set, please add some roles to this permission.`);\n return false;\n }\n\n // If the permission includes a \"*\" we allow everyone.\n if (permission.includes('*')) {\n return true;\n }\n\n // Validate the role against the permissions.\n return permission?.includes(role) ?? false;\n }\n\n}\n","import {Directive, EmbeddedViewRef, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef} from '@angular/core';\nimport {Permissions} from '../permissions.service';\nimport {BehaviorSubject, Subscription} from 'rxjs';\nimport {switchMap} from 'rxjs/operators';\n\n@Directive({\n selector: '[bbPermission]'\n})\nexport class BbPermission implements OnInit, OnDestroy {\n\n // Data.\n private _permission$ = new BehaviorSubject<string[]>([]);\n private _valid: boolean = false;\n\n private _elseTemplateRef: TemplateRef<any> | null = null;\n\n private _thenViewRef: EmbeddedViewRef<any> | null = null;\n private _elseViewRef: EmbeddedViewRef<any> | null = null;\n\n @Input()\n set bbPermission(value: string | string[]) {\n const permissions = this.getAllowedPermissions(value);\n this._permission$.next(permissions);\n this.updateView();\n }\n\n @Input()\n set bbPermissionElse(templateRef: TemplateRef<any> | null) {\n this.assertTemplate('bbPermissionElse', templateRef);\n this._elseTemplateRef = templateRef;\n this.updateView();\n }\n\n // Subscriptions.\n private _subscription: Subscription;\n\n constructor(private _permissions: Permissions,\n private _templateRef: TemplateRef<any>,\n private _viewContainerRef: ViewContainerRef) {\n }\n\n ngOnInit() {\n const check$ = this._permission$.pipe(\n switchMap(permissions => this._permissions.has(permissions))\n );\n\n this._subscription = check$.subscribe(valid => {\n this._valid = valid;\n this.updateView();\n });\n }\n\n ngOnDestroy() {\n this._subscription?.unsubscribe();\n }\n\n private updateView() {\n if (this._valid) {\n if (!this._thenViewRef) {\n this._viewContainerRef.clear();\n this._elseViewRef = null;\n if (this._templateRef) {\n this._thenViewRef = this._viewContainerRef.createEmbeddedView(this._templateRef);\n }\n }\n } else {\n if (!this._elseViewRef) {\n this._viewContainerRef.clear();\n this._thenViewRef = null;\n if (this._elseTemplateRef) {\n this._elseViewRef = this._viewContainerRef.createEmbeddedView(this._elseTemplateRef);\n }\n }\n }\n }\n\n private getAllowedPermissions = (value: string | string[]) => {\n return Array.isArray(value) ? value : [value];\n };\n\n private assertTemplate = (property: string, templateRef: TemplateRef<any> | null) => {\n const isTemplateRefOrNull = !!(!templateRef || templateRef.createEmbeddedView);\n if (!isTemplateRefOrNull) {\n throw new Error(`${property} must be a TemplateRef.`);\n }\n };\n\n}\n","import {ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot} from '@angular/router';\nimport {first, map} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Auth} from '../auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BbAnonymousGuard implements CanActivate, CanActivateChild {\n\n constructor(private _auth: Auth) {\n }\n\n async canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n // Check if the user is authenticated.\n const isAuthenticated = await this._auth.user.pipe(\n map(user => !!user),\n first()\n ).toPromise();\n\n // If the user is not authenticated it can\n // access the anonymous page.\n if (!isAuthenticated) {\n return true;\n }\n\n // Return the user back to the authenticated page.\n return this._auth.guard('authenticated', state.url);\n }\n\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.canActivate(childRoute, state);\n }\n\n}\n","import {ActivatedRouteSnapshot, CanActivate, CanActivateChild, RouterStateSnapshot} from '@angular/router';\nimport {first, map} from 'rxjs/operators';\nimport {Injectable} from '@angular/core';\nimport {Auth} from '../auth.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class BbAuthenticatedGuard implements CanActivate, CanActivateChild {\n\n constructor(private _auth: Auth) {\n }\n\n async canActivate(_: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n // Check if the user is authenticated.\n const isAuthenticated = await this._auth.user.pipe(\n map(user => !!user),\n first()\n ).toPromise();\n\n // If the user is authenticated it can\n // access the authenticated page.\n if (isAuthenticated) {\n return true;\n }\n\n // The user is not authorized to see that\n // page so un-authorize him.\n return this._auth.guard('unauthenticated', state.url);\n }\n\n canActivateChild(childRoute: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n return this.canActivate(childRoute, state);\n }\n\n}\n","import {HttpErrorResponse, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {catchError, filter, finalize, switchMap, take} from 'rxjs/operators';\nimport {USE_AUTHORIZATION} from './tokens/use-authorization.token';\nimport {AuthConfig} from './interfaces/config.interface';\nimport {HttpError} from '@bravobit/bb-foundation/http';\nimport {BehaviorSubject, of, throwError} from 'rxjs';\nimport {Injectable, Optional} from '@angular/core';\nimport {Auth} from './auth.service';\n\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n\n // Readonly data.\n private readonly _authHeaderString: string = 'Authorization';\n\n // Data.\n isRefreshing: boolean = false;\n refreshingAccessToken$ = new BehaviorSubject<string | null>(null);\n\n constructor(private _auth: Auth,\n @Optional() private _config: AuthConfig) {\n }\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler) {\n // 1. Check if the user wants to use the authorization for this request.\n if (!request.context.get(USE_AUTHORIZATION)) {\n return next.handle(request);\n }\n\n // 2. Compose the new request.\n const accessToken = this.getAccessToken(request);\n const newRequest = this.addAuthorizationHeader(request, accessToken);\n\n // 3. Handle all errors.\n return next.handle(newRequest).pipe(\n catchError(error => {\n // Handle the HTTP401 error.\n if ((error instanceof HttpErrorResponse || error instanceof HttpError) && error?.status === 401) {\n return this.handle401Error(request, next);\n }\n\n // Just re-throw the parsed error.\n return throwError(error);\n })\n );\n }\n\n private handle401Error(request: HttpRequest<unknown>, next: HttpHandler) {\n // If already refreshing wait for the refresh token to complete.\n if (this.isRefreshing) {\n return this.refreshingAccessToken$.pipe(\n filter(accessToken => accessToken !== null),\n take(1),\n switchMap(accessToken => next.handle(this.addAuthorizationHeader(request, accessToken)))\n );\n }\n\n // Set the refreshing to true.\n this.isRefreshing = true;\n this.refreshingAccessToken$.next(null);\n\n return this._auth.refresh().pipe(\n switchMap(newAccessToken => {\n if (!newAccessToken) {\n const error = new Error('No refresh token was available.');\n return throwError(error);\n }\n\n this.refreshingAccessToken$.next(newAccessToken);\n return next.handle(this.addAuthorizationHeader(request, newAccessToken));\n }),\n catchError(() => this.logoutUser()),\n finalize(() => this.isRefreshing = false)\n );\n }\n\n private logoutUser() {\n // Handle the refresh error.\n this._auth.clearAndRedirect();\n\n // Return null as data.\n return of(null);\n }\n\n private getAccessToken = (request: HttpRequest<unknown>) => {\n // Get the token based on header.\n if (request.headers.has('Authorization')) {\n return request.headers.get('Authorization');\n }\n\n // Return the default access token.\n return this._auth.session.accessToken;\n };\n\n private addAuthorizationHeader = (request: HttpRequest<unknown>, accessToken: string | null = null) => {\n // Remove auth header when we do not have\n // an access token.\n if (!accessToken) {\n return request.clone({\n headers: request.headers.delete(this._authHeaderString)\n });\n }\n\n // Add the auth header to the request.\n return request.clone({\n setHeaders: {[this._authHeaderString]: this.getFullAuthorizationHeader(accessToken)}\n });\n };\n\n private getFullAuthorizationHeader = (token: string) => {\n const authScheme = this._config?.scheme ?? 'Bearer';\n return [authScheme, token].join(' ');\n };\n\n}\n","import {APP_INITIALIZER, ModuleWithProviders, NgModule} from '@angular/core';\nimport {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';\nimport {BbAuthenticated} from './directives/authenticated.directive';\nimport {BbPermission} from './directives/permission.directive';\nimport {AuthConfig} from './interfaces/config.interface';\nimport {AuthInterceptor} from './auth.interceptor';\nimport {AuthMapper} from './helpers/mapper.helper';\nimport {BbRole} from './directives/role.directive';\nimport {Permissions} from './permissions.service';\nimport {Auth} from './auth.service';\n\nconst DECLARATIONS_EXPORTS = [\n BbAuthenticated,\n BbRole,\n BbPermission\n];\n\n@NgModule({\n imports: [HttpClientModule],\n declarations: [...DECLARATIONS_EXPORTS],\n exports: [...DECLARATIONS_EXPORTS],\n providers: [\n {provide: AuthMapper, useClass: AuthMapper}\n ]\n})\nexport class AuthModule {\n\n static forRoot(config?: AuthConfig): ModuleWithProviders<AuthModule> {\n return {\n ngModule: AuthModule,\n providers: [\n Auth,\n Permissions,\n {provide: AuthConfig, useValue: config},\n {provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true},\n {useFactory: initializeAuth, provide: APP_INITIALIZER, deps: [Auth], multi: true}\n ]\n };\n }\n\n}\n\nexport function initializeAuth(auth: Auth) {\n return auth.initialize();\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["HttpContextToken","Injectable","BehaviorSubject","shareReplay","makeStateKey","take","of","HttpContext","map","tap","Router","Optional","distinctUntilChanged","Directive","Input","switchMap","first","catchError","HttpErrorResponse","HttpError","throwError","filter","finalize","HTTP_INTERCEPTORS","APP_INITIALIZER","HttpClientModule","NgModule"],"mappings":"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"}
|