@kalisio/kdk 2.5.3 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/main.yaml +35 -6
- package/.vscode/settings.json +5 -0
- package/client.globe.js +8 -0
- package/client.js +8 -0
- package/client.map.js +8 -0
- package/core/api/hooks/hooks.push.js +3 -2
- package/core/api/hooks/hooks.tags.js +56 -0
- package/core/api/models/tags.model.mongodb.js +8 -0
- package/core/api/services/index.js +33 -2
- package/core/api/services/tags/tags.hooks.js +47 -0
- package/core/client/api.js +5 -5
- package/core/client/components/KActivity.vue +3 -2
- package/core/client/components/KChip.vue +2 -2
- package/core/client/components/KEditor.vue +3 -1
- package/core/client/components/KFollower.vue +4 -4
- package/core/client/components/KStore.vue +1 -1
- package/core/client/components/KTab.vue +20 -7
- package/core/client/components/account/KProfile.vue +9 -25
- package/core/client/components/action/KAction.vue +10 -10
- package/core/client/components/action/KToggleFullscreenAction.vue +2 -11
- package/core/client/components/app/KHome.vue +3 -2
- package/core/client/components/collection/KFilter.vue +5 -4
- package/core/client/components/collection/KGrid.vue +5 -1
- package/core/client/components/collection/KItemsFilter.vue +47 -0
- package/core/client/components/collection/KItemsSorter.vue +42 -0
- package/core/client/components/collection/KScrollDown.vue +2 -2
- package/core/client/components/collection/KSearchFilterControl.vue +3 -2
- package/core/client/components/collection/KSorter.vue +33 -37
- package/core/client/components/collection/KTagsFilterControl.vue +14 -40
- package/core/client/components/collection/KTagsFilterView.vue +10 -45
- package/core/client/components/collection/KTimeFilterControl.vue +6 -7
- package/core/client/components/collection/KTimeFilterView.vue +13 -22
- package/core/client/components/collection/KTimeLine.vue +18 -9
- package/core/client/components/form/KColorField.vue +13 -6
- package/core/client/components/form/KColorScaleField.vue +7 -12
- package/core/client/components/form/KFileField.vue +118 -89
- package/core/client/components/form/KForm.vue +30 -18
- package/core/client/components/form/KIconField.vue +4 -1
- package/core/client/components/form/KNumberField.vue +9 -2
- package/core/client/components/form/KSelectField.vue +1 -4
- package/core/client/components/form/KTagField.vue +229 -0
- package/core/client/components/form/KTextField.vue +4 -0
- package/core/client/components/form/KTextareaField.vue +3 -1
- package/core/client/components/input/KShapePicker.vue +3 -3
- package/core/client/components/layout/KFab.vue +32 -20
- package/core/client/components/layout/KPage.vue +11 -6
- package/core/client/components/layout/KWindow.vue +6 -1
- package/core/client/components/media/index.js +2 -6
- package/core/client/components/menu/KMenu.vue +12 -10
- package/core/client/components/menu/KSubMenu.vue +12 -12
- package/core/client/components/messages/KMessageCard.vue +13 -12
- package/core/client/components/messages/KMessageComposer.vue +13 -9
- package/core/client/components/messages/KMessagesTimeLine.vue +16 -8
- package/core/client/components/tags/KTagFilter.vue +99 -0
- package/core/client/components/tags/KTagItem.vue +65 -0
- package/core/client/components/tags/KTagManager.vue +198 -0
- package/core/client/components/tags/KTagSelection.vue +82 -0
- package/core/client/components/time/KDate.vue +3 -17
- package/core/client/components/time/KDateTime.vue +1 -1
- package/core/client/components/time/KTime.vue +0 -4
- package/core/client/composables/collection-filter.js +41 -2
- package/core/client/composables/collection.js +3 -3
- package/core/client/composables/index.js +1 -0
- package/core/client/composables/pwa.js +13 -0
- package/core/client/composables/session.js +7 -8
- package/core/client/composables/user.js +36 -0
- package/core/client/directives/index.js +1 -0
- package/core/client/directives/v-drop-file.js +174 -0
- package/core/client/document.js +2 -1
- package/core/client/exporter.js +17 -3
- package/core/client/i18n/core_en.json +34 -7
- package/core/client/i18n/core_fr.json +36 -9
- package/core/client/i18n.js +26 -11
- package/core/client/layout.js +5 -5
- package/core/client/mixins/mixin.base-activity.js +8 -5
- package/core/client/mixins/mixin.base-editor.js +2 -1
- package/core/client/mixins/mixin.base-field.js +3 -2
- package/core/client/mixins/mixin.base-item.js +12 -10
- package/core/client/mixins/mixin.service.js +3 -1
- package/core/client/platform.js +0 -3
- package/core/client/readers/reader.json.js +2 -2
- package/core/client/utils/index.js +2 -0
- package/core/client/utils/utils.collection.js +6 -6
- package/core/client/utils/utils.colors.js +473 -173
- package/core/client/utils/utils.files.js +19 -0
- package/core/client/utils/utils.locale.js +13 -17
- package/core/client/utils/utils.services.js +27 -0
- package/core/client/utils/utils.shapes.js +2 -2
- package/core/client/utils/utils.tags.js +17 -0
- package/core/client/utils/utils.tours.js +31 -0
- package/core/common/permissions.js +3 -0
- package/core/common/schemas/tags.update.json +35 -0
- package/core/common/schemas/users.update-profile.json +1 -1
- package/core/common/utils.js +5 -5
- package/coverage/core/api/application.js.html +464 -464
- package/coverage/core/api/authentication.js.html +219 -351
- package/coverage/core/api/db.js.html +194 -209
- package/coverage/core/api/hooks/hooks.authentication.js.html +208 -34
- package/coverage/core/api/hooks/hooks.authorisations.js.html +717 -432
- package/coverage/core/api/hooks/hooks.groups.js.html +52 -52
- package/coverage/core/api/hooks/hooks.logger.js.html +43 -43
- package/coverage/core/api/hooks/hooks.model.js.html +300 -312
- package/coverage/core/api/hooks/hooks.organisations.js.html +264 -264
- package/coverage/core/api/hooks/hooks.push.js.html +107 -119
- package/coverage/core/api/hooks/hooks.query.js.html +279 -279
- package/coverage/core/api/hooks/hooks.schemas.js.html +135 -135
- package/coverage/core/api/hooks/hooks.service.js.html +28 -28
- package/coverage/core/api/hooks/hooks.storage.js.html +7 -7
- package/coverage/core/api/hooks/hooks.users.js.html +478 -205
- package/coverage/core/api/hooks/index.html +132 -102
- package/coverage/core/api/hooks/index.js.html +19 -13
- package/coverage/core/api/index.html +69 -54
- package/coverage/core/api/index.js.html +25 -25
- package/coverage/core/api/marshall.js.html +127 -127
- package/coverage/core/api/models/groups.model.mongodb.js.html +26 -26
- package/coverage/core/api/models/index.html +66 -21
- package/coverage/core/api/models/messages.model.mongodb.js.html +27 -39
- package/coverage/core/api/models/organisations.model.mongodb.js.html +16 -16
- package/coverage/core/api/models/tags.model.mongodb.js.html +30 -30
- package/coverage/core/api/models/users.model.mongodb.js.html +11 -11
- package/coverage/core/api/services/account/account.hooks.js.html +46 -46
- package/coverage/core/api/services/account/account.service.js.html +139 -139
- package/coverage/core/api/services/account/index.html +22 -22
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +230 -221
- package/coverage/core/api/services/authorisations/index.html +20 -20
- package/coverage/core/api/services/databases/databases.hooks.js.html +1 -1
- package/coverage/core/api/services/databases/databases.service.js.html +1 -1
- package/coverage/core/api/services/databases/index.html +1 -1
- package/coverage/core/api/services/groups/groups.hooks.js.html +72 -72
- package/coverage/core/api/services/groups/index.html +21 -21
- package/coverage/core/api/services/import-export/import-export.hooks.js.html +76 -76
- package/coverage/core/api/services/import-export/import-export.service.js.html +32 -32
- package/coverage/core/api/services/import-export/index.html +32 -32
- package/coverage/core/api/services/index.html +21 -21
- package/coverage/core/api/services/index.js.html +195 -171
- package/coverage/core/api/services/mailer/index.html +32 -32
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +80 -80
- package/coverage/core/api/services/mailer/mailer.service.js.html +32 -32
- package/coverage/core/api/services/messages/index.html +21 -21
- package/coverage/core/api/services/messages/messages.hooks.js.html +76 -94
- package/coverage/core/api/services/organisations/index.html +32 -32
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +72 -72
- package/coverage/core/api/services/organisations/organisations.service.js.html +163 -163
- package/coverage/core/api/services/push/index.html +32 -32
- package/coverage/core/api/services/push/push.hooks.js.html +80 -80
- package/coverage/core/api/services/push/push.service.js.html +34 -34
- package/coverage/core/api/services/storage/index.html +29 -29
- package/coverage/core/api/services/storage/storage.hooks.js.html +80 -80
- package/coverage/core/api/services/storage/storage.service.js.html +37 -37
- package/coverage/core/api/services/tags/index.html +21 -21
- package/coverage/core/api/services/tags/tags.hooks.js.html +72 -72
- package/coverage/core/api/services/users/index.html +12 -27
- package/coverage/core/api/services/users/users.hooks.js.html +84 -87
- package/coverage/core/api/utils.js.html +1 -1
- package/coverage/core/common/errors.js.html +2 -2
- package/coverage/core/common/index.html +32 -47
- package/coverage/core/common/index.js.html +11 -11
- package/coverage/core/common/permissions.js.html +579 -264
- package/coverage/core/common/schema.js.html +26 -26
- package/coverage/core/common/utils.js.html +59 -65
- package/coverage/index.html +286 -256
- package/coverage/lcov-report/core/api/application.js.html +464 -464
- package/coverage/lcov-report/core/api/authentication.js.html +219 -351
- package/coverage/lcov-report/core/api/db.js.html +194 -209
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +208 -34
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +717 -432
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +52 -52
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +43 -43
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +300 -312
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +264 -264
- package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +107 -119
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +279 -279
- package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +135 -135
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +28 -28
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +7 -7
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +478 -205
- package/coverage/lcov-report/core/api/hooks/index.html +132 -102
- package/coverage/lcov-report/core/api/hooks/index.js.html +19 -13
- package/coverage/lcov-report/core/api/index.html +69 -54
- package/coverage/lcov-report/core/api/index.js.html +25 -25
- package/coverage/lcov-report/core/api/marshall.js.html +127 -127
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +26 -26
- package/coverage/lcov-report/core/api/models/index.html +66 -21
- package/coverage/lcov-report/core/api/models/messages.model.mongodb.js.html +27 -39
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +16 -16
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +30 -30
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +11 -11
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +46 -46
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +139 -139
- package/coverage/lcov-report/core/api/services/account/index.html +22 -22
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +34 -34
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +230 -221
- package/coverage/lcov-report/core/api/services/authorisations/index.html +20 -20
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +1 -1
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +1 -1
- package/coverage/lcov-report/core/api/services/databases/index.html +1 -1
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +72 -72
- package/coverage/lcov-report/core/api/services/groups/index.html +21 -21
- package/coverage/lcov-report/core/api/services/import-export/import-export.hooks.js.html +76 -76
- package/coverage/lcov-report/core/api/services/import-export/import-export.service.js.html +32 -32
- package/coverage/lcov-report/core/api/services/import-export/index.html +32 -32
- package/coverage/lcov-report/core/api/services/index.html +21 -21
- package/coverage/lcov-report/core/api/services/index.js.html +195 -171
- package/coverage/lcov-report/core/api/services/mailer/index.html +32 -32
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +80 -80
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +32 -32
- package/coverage/lcov-report/core/api/services/messages/index.html +21 -21
- package/coverage/lcov-report/core/api/services/messages/messages.hooks.js.html +76 -94
- package/coverage/lcov-report/core/api/services/organisations/index.html +32 -32
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +72 -72
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +163 -163
- package/coverage/lcov-report/core/api/services/push/index.html +32 -32
- package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +80 -80
- package/coverage/lcov-report/core/api/services/push/push.service.js.html +34 -34
- package/coverage/lcov-report/core/api/services/storage/index.html +29 -29
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +80 -80
- package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +37 -37
- package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +72 -72
- package/coverage/lcov-report/core/api/services/users/index.html +12 -27
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +84 -87
- package/coverage/lcov-report/core/api/utils.js.html +1 -1
- package/coverage/lcov-report/core/common/errors.js.html +2 -2
- package/coverage/lcov-report/core/common/index.html +32 -47
- package/coverage/lcov-report/core/common/index.js.html +11 -11
- package/coverage/lcov-report/core/common/permissions.js.html +579 -264
- package/coverage/lcov-report/core/common/schema.js.html +26 -26
- package/coverage/lcov-report/core/common/utils.js.html +59 -65
- package/coverage/lcov-report/index.html +286 -256
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +257 -353
- package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +218 -218
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +810 -795
- package/coverage/lcov-report/map/api/hooks/index.html +54 -54
- package/coverage/lcov-report/map/api/hooks/index.js.html +16 -16
- package/coverage/lcov-report/map/api/index.html +32 -32
- package/coverage/lcov-report/map/api/index.js.html +46 -46
- package/coverage/lcov-report/map/api/marshall.js.html +72 -72
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +24 -24
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +27 -69
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +80 -80
- package/coverage/lcov-report/map/api/models/index.html +54 -69
- package/coverage/lcov-report/map/api/models/projects.model.mongodb.js.html +26 -26
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +136 -136
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +343 -343
- package/coverage/lcov-report/map/api/services/alerts/index.html +32 -32
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +160 -178
- package/coverage/lcov-report/map/api/services/catalog/index.html +21 -21
- package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/daptiles/index.html +1 -1
- package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +114 -183
- package/coverage/lcov-report/map/api/services/features/features.service.js.html +56 -359
- package/coverage/lcov-report/map/api/services/features/index.html +31 -31
- package/coverage/lcov-report/map/api/services/index.html +21 -21
- package/coverage/lcov-report/map/api/services/index.js.html +258 -495
- package/coverage/lcov-report/map/api/services/projects/index.html +21 -21
- package/coverage/lcov-report/map/api/services/projects/projects.hooks.js.html +237 -237
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +68 -68
- package/coverage/lcov-report/map/common/errors.js.html +16 -16
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +267 -270
- package/coverage/lcov-report/map/common/grid.js.html +554 -554
- package/coverage/lcov-report/map/common/index.html +158 -158
- package/coverage/lcov-report/map/common/index.js.html +68 -68
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +73 -73
- package/coverage/lcov-report/map/common/moment-utils.js.html +18 -18
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +484 -484
- package/coverage/lcov-report/map/common/opendap-utils.js.html +353 -353
- package/coverage/lcov-report/map/common/permissions.js.html +36 -42
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +59 -59
- package/coverage/lcov-report/map/common/tms-utils.js.html +6 -6
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +190 -190
- package/coverage/lcov-report/map/common/wcs-utils.js.html +339 -339
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +345 -345
- package/coverage/lcov-report/map/common/wfs-utils.js.html +11 -11
- package/coverage/lcov-report/map/common/wms-utils.js.html +8 -8
- package/coverage/lcov-report/map/common/wmts-utils.js.html +7 -7
- package/coverage/lcov.info +7793 -8564
- package/coverage/map/api/hooks/hooks.catalog.js.html +257 -353
- package/coverage/map/api/hooks/hooks.features.js.html +218 -218
- package/coverage/map/api/hooks/hooks.query.js.html +810 -795
- package/coverage/map/api/hooks/index.html +54 -54
- package/coverage/map/api/hooks/index.js.html +16 -16
- package/coverage/map/api/index.html +32 -32
- package/coverage/map/api/index.js.html +46 -46
- package/coverage/map/api/marshall.js.html +72 -72
- package/coverage/map/api/models/alerts.model.mongodb.js.html +24 -24
- package/coverage/map/api/models/catalog.model.mongodb.js.html +27 -69
- package/coverage/map/api/models/features.model.mongodb.js.html +80 -80
- package/coverage/map/api/models/index.html +54 -69
- package/coverage/map/api/models/projects.model.mongodb.js.html +26 -26
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +136 -136
- package/coverage/map/api/services/alerts/alerts.service.js.html +343 -343
- package/coverage/map/api/services/alerts/index.html +32 -32
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +160 -178
- package/coverage/map/api/services/catalog/index.html +21 -21
- package/coverage/map/api/services/daptiles/daptiles.service.js.html +1 -1
- package/coverage/map/api/services/daptiles/index.html +1 -1
- package/coverage/map/api/services/features/features.hooks.js.html +114 -183
- package/coverage/map/api/services/features/features.service.js.html +56 -359
- package/coverage/map/api/services/features/index.html +31 -31
- package/coverage/map/api/services/index.html +21 -21
- package/coverage/map/api/services/index.js.html +258 -495
- package/coverage/map/api/services/projects/index.html +21 -21
- package/coverage/map/api/services/projects/projects.hooks.js.html +237 -237
- package/coverage/map/common/dynamic-grid-source.js.html +68 -68
- package/coverage/map/common/errors.js.html +16 -16
- package/coverage/map/common/geotiff-grid-source.js.html +267 -270
- package/coverage/map/common/grid.js.html +554 -554
- package/coverage/map/common/index.html +158 -158
- package/coverage/map/common/index.js.html +68 -68
- package/coverage/map/common/meteo-model-grid-source.js.html +73 -73
- package/coverage/map/common/moment-utils.js.html +18 -18
- package/coverage/map/common/opendap-grid-source.js.html +484 -484
- package/coverage/map/common/opendap-utils.js.html +353 -353
- package/coverage/map/common/permissions.js.html +36 -42
- package/coverage/map/common/time-based-grid-source.js.html +59 -59
- package/coverage/map/common/tms-utils.js.html +6 -6
- package/coverage/map/common/wcs-grid-source.js.html +190 -190
- package/coverage/map/common/wcs-utils.js.html +339 -339
- package/coverage/map/common/weacast-grid-source.js.html +345 -345
- package/coverage/map/common/wfs-utils.js.html +11 -11
- package/coverage/map/common/wms-utils.js.html +8 -8
- package/coverage/map/common/wmts-utils.js.html +7 -7
- package/coverage/tmp/coverage-151166-1723543324307-0.json +1 -0
- package/coverage/tmp/coverage-151178-1723543324283-0.json +1 -0
- package/coverage/tmp/coverage-151189-1723543324271-0.json +1 -0
- package/coverage/tmp/coverage-151201-1723543324248-0.json +1 -0
- package/coverage/tmp/coverage-151208-1723543324227-0.json +1 -0
- package/extras/configs/panes.top.js +33 -11
- package/extras/configs/stickies.js +26 -16
- package/extras/configs/widgets.left.js +13 -1
- package/extras/libs/jsts.min.js +8 -0
- package/{test/client/core/account.js → extras/tests/core/account.mjs} +4 -4
- package/extras/tests/core/api.mjs +114 -0
- package/{test/client/core/collection.js → extras/tests/core/collection.mjs} +8 -8
- package/{test/client/core/dialogs.js → extras/tests/core/dialogs.mjs} +1 -1
- package/extras/tests/core/index.mjs +9 -0
- package/{test/client/core/layout.js → extras/tests/core/layout.mjs} +7 -3
- package/{test/client/core/runner.js → extras/tests/core/runner.mjs} +3 -3
- package/{test/client/core/screens.js → extras/tests/core/screens.mjs} +1 -1
- package/{test/client/core/utils.js → extras/tests/core/utils.mjs} +79 -26
- package/extras/tests/index.mjs +4 -0
- package/{test/client/map/api.js → extras/tests/map/api.mjs} +1 -1
- package/{test/client/map/catalog.js → extras/tests/map/catalog.mjs} +18 -18
- package/{test/client/map/controls.js → extras/tests/map/controls.mjs} +3 -3
- package/extras/tests/map/index.mjs +5 -0
- package/{test/client/map/time.js → extras/tests/map/time.mjs} +3 -3
- package/{test/client/map/utils.js → extras/tests/map/utils.mjs} +6 -5
- package/extras/tours/fab.js +36 -0
- package/extras/tours/layout.js +49 -0
- package/extras/tours/pane.left.js +78 -0
- package/extras/tours/pane.right.js +145 -0
- package/extras/tours/pane.top.js +239 -0
- package/map/api/config/layers.cjs +28 -13
- package/map/api/hooks/hooks.query.js +12 -7
- package/map/api/models/catalog.model.mongodb.js +17 -6
- package/map/api/services/catalog/catalog.hooks.js +1 -1
- package/map/api/services/index.js +18 -1
- package/map/client/cesium/utils/utils.cesium.js +25 -65
- package/map/client/cesium/utils/utils.features.js +1 -0
- package/map/client/cesium/utils/utils.geojson.js +1 -0
- package/map/client/cesium/utils/utils.style.js +7 -6
- package/map/client/components/KFeatureEditor.vue +3 -3
- package/map/client/components/KFeaturesChart.vue +4 -4
- package/map/client/components/KFeaturesFilterEditor.vue +19 -13
- package/map/client/components/KFeaturesFilterManager.vue +7 -4
- package/map/client/components/KFeaturesTable.vue +2 -2
- package/map/client/components/KLayerEditor.vue +6 -6
- package/map/client/components/KMeasureTool.vue +2 -1
- package/map/client/components/catalog/KBaseLayersSelector.vue +1 -1
- package/map/client/components/catalog/KCategoryItem.vue +15 -1
- package/map/client/components/catalog/KConnectLayer.vue +2 -2
- package/map/client/components/catalog/KCreateView.vue +3 -2
- package/map/client/components/catalog/KFilteredLayerItem.vue +26 -6
- package/map/client/components/catalog/KImportLayer.vue +6 -3
- package/map/client/components/catalog/KLayerCategories.vue +6 -6
- package/map/client/components/catalog/KLayerItem.vue +12 -2
- package/map/client/components/catalog/KLayersList.vue +180 -0
- package/map/client/components/catalog/KLayersPanel.vue +146 -36
- package/map/client/components/catalog/KLayersSelector.vue +96 -48
- package/map/client/components/catalog/KProjectEditor.vue +0 -9
- package/map/client/components/catalog/KProjectSelector.vue +3 -2
- package/map/client/components/catalog/KProjectsPanel.vue +23 -8
- package/map/client/components/catalog/KViewsPanel.vue +18 -8
- package/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
- package/map/client/components/form/KDirectionField.vue +3 -6
- package/map/client/components/form/KLayerCategoryField.vue +2 -2
- package/map/client/components/form/KOwsServiceField.vue +25 -24
- package/map/client/components/form/KSelectLayersField.vue +4 -4
- package/map/client/components/form/KSelectViewsField.vue +4 -4
- package/map/client/components/legend/KLayerLegend.vue +11 -2
- package/map/client/components/legend/KLegend.vue +44 -51
- package/map/client/components/location/KLocationCardSection.vue +6 -7
- package/map/client/components/location/KLocationMap.vue +23 -13
- package/map/client/components/stickies/KPosition.vue +5 -0
- package/map/client/components/stickies/KZoomControl.vue +70 -0
- package/map/client/components/styles/KLayerStyleAction.vue +59 -12
- package/map/client/components/styles/KStyleEditor.vue +71 -8
- package/map/client/components/styles/KStyleEditorSection.vue +82 -33
- package/map/client/components/styles/KStyleManager.vue +119 -59
- package/map/client/components/styles/KStylePreview.vue +9 -25
- package/map/client/components/styles/KStylePreviewItem.vue +22 -1
- package/map/client/components/tools/KSearchTool.vue +1 -1
- package/map/client/components/widget/KElevationProfile.vue +20 -17
- package/map/client/components/widget/KInformationBox.vue +5 -5
- package/map/client/components/widget/KMapillaryViewer.vue +2 -1
- package/map/client/components/widget/KTimeSeries.vue +11 -9
- package/map/client/globe.js +2 -0
- package/map/client/i18n/map_en.json +30 -7
- package/map/client/i18n/map_fr.json +30 -7
- package/map/client/leaflet/GradientPath.js +61 -24
- package/map/client/leaflet/ShapeMarker.js +12 -5
- package/map/client/leaflet/TiledMeshLayer.js +3 -3
- package/map/client/leaflet/utils/utils.geojson.js +66 -8
- package/map/client/leaflet/utils/utils.style.js +14 -15
- package/map/client/mixins/globe/mixin.base-globe.js +190 -34
- package/map/client/mixins/globe/mixin.file-layers.js +3 -0
- package/map/client/mixins/globe/mixin.geojson-layers.js +179 -31
- package/map/client/mixins/globe/mixin.opendap-layers.js +2 -1
- package/map/client/mixins/globe/mixin.style.js +23 -1
- package/map/client/mixins/globe/mixin.tooltip.js +14 -2
- package/map/client/mixins/map/mixin.base-map.js +156 -58
- package/map/client/mixins/map/mixin.edit-layers.js +18 -15
- package/map/client/mixins/map/mixin.geojson-layers.js +181 -106
- package/map/client/mixins/map/mixin.heatmap-layers.js +3 -2
- package/map/client/mixins/map/mixin.map-activity.js +6 -1
- package/map/client/mixins/map/mixin.mapillary-layers.js +2 -1
- package/map/client/mixins/map/mixin.pmtiles-layers.js +3 -3
- package/map/client/mixins/map/mixin.tiled-mesh-layers.js +3 -2
- package/map/client/mixins/map/mixin.tiled-wind-layers.js +3 -2
- package/map/client/mixins/mixin.activity.js +199 -55
- package/map/client/mixins/mixin.context.js +11 -11
- package/map/client/mixins/mixin.feature-service.js +11 -9
- package/map/client/mixins/mixin.weacast.js +5 -3
- package/map/client/readers/reader.geojson.js +3 -1
- package/map/client/utils/utils.capture.js +3 -3
- package/map/client/utils/utils.catalog.js +9 -5
- package/map/client/utils/utils.features.js +120 -54
- package/map/client/utils/utils.js +25 -10
- package/map/client/utils/utils.layers.js +148 -24
- package/map/client/utils/utils.location.js +26 -9
- package/map/client/utils/utils.schema.js +2 -1
- package/map/client/utils/utils.style.js +53 -9
- package/map/common/geotiff-grid-source.js +1 -3
- package/map/common/opendap-utils.js +0 -1
- package/map/common/tms-utils.js +0 -1
- package/map/common/wcs-utils.js +0 -1
- package/map/common/wfs-utils.js +0 -1
- package/map/common/wms-utils.js +7 -1
- package/map/common/wmts-utils.js +0 -1
- package/package.json +12 -12
- package/scripts/init_runner.sh +3 -3
- package/scripts/kash/CHANGELOG.md +27 -0
- package/scripts/kash/kash.sh +556 -237
- package/scripts/kash/scripts/run_tests.sh +44 -5
- package/scripts/setup_workspace.sh +23 -13
- package/test/api/core/config/default.cjs +2 -1
- package/test/api/core/tags.test.js +62 -0
- package/test/api/core/test-log-2024-04-22.log +84 -0
- package/test/api/core/{test-log-2025-02-05.log → test-log-2024-04-23.log} +3 -3
- package/test/api/core/test-log-2024-08-13.log +3 -0
- package/test/api/map/config/default.cjs +2 -1
- package/test/api/map/config/layers.json +9 -0
- package/test/api/map/data/openradiation.json +13811 -0
- package/test/api/map/grid-sources.test.js +1 -3
- package/test/api/map/index.test.js +60 -1
- package/test/api/map/style.test.js +30 -1
- package/test/api/map/test-log-2025-03-08.log +0 -0
- package/test.api.js +1 -1
- package/vite/App.vue +18 -0
- package/vite/AppWithGlobe.vue +84 -0
- package/vite/GlobeActivity.vue +58 -0
- package/vite/MapActivity.vue +63 -0
- package/vite/MapActivityWithGlobe.vue +63 -0
- package/vite/README.md +169 -0
- package/vite/config.js +221 -0
- package/vite/index_with_globe.html +50 -0
- package/vite/index_with_map.html +50 -0
- package/vite/package.json +173 -0
- package/vite/quasar.variables.scss +17 -0
- package/vite/vite.config.js +166 -0
- package/vite/yarn.lock +11641 -0
- package/core/client/components/media/KImageViewer.vue +0 -68
- package/core/client/components/media/KMarkdownViewer.vue +0 -55
- package/core/client/components/media/KMediaBrowser.vue +0 -301
- package/coverage/core/api/services/users/users.service.js.html +0 -100
- package/coverage/core/common/utils.offline.js.html +0 -199
- package/coverage/lcov-report/core/api/services/users/users.service.js.html +0 -100
- package/coverage/lcov-report/core/common/utils.offline.js.html +0 -199
- package/coverage/lcov-report/map/api/models/styles.model.mongodb.js.html +0 -112
- package/coverage/lcov-report/map/api/services/styles/index.html +0 -116
- package/coverage/lcov-report/map/api/services/styles/styles.hooks.js.html +0 -196
- package/coverage/map/api/models/styles.model.mongodb.js.html +0 -112
- package/coverage/map/api/services/styles/index.html +0 -116
- package/coverage/map/api/services/styles/styles.hooks.js.html +0 -196
- package/coverage/tmp/coverage-151198-1753351220086-0.json +0 -1
- package/coverage/tmp/coverage-151210-1753351220070-0.json +0 -1
- package/coverage/tmp/coverage-151221-1753351129816-0.json +0 -1
- package/coverage/tmp/coverage-151233-1753351129803-0.json +0 -1
- package/coverage/tmp/coverage-151240-1753351129770-0.json +0 -1
- package/coverage/tmp/coverage-151307-1753351220058-0.json +0 -1
- package/coverage/tmp/coverage-151319-1753351220044-0.json +0 -1
- package/coverage/tmp/coverage-151326-1753351220010-0.json +0 -1
- package/extras/tours/core/account-profile.js +0 -32
- package/extras/tours/core/account.js +0 -143
- package/extras/tours/core/add-member.js +0 -75
- package/extras/tours/core/add-tag.js +0 -13
- package/extras/tours/core/create-group.js +0 -19
- package/extras/tours/core/create-organisation.js +0 -19
- package/extras/tours/core/create-tag.js +0 -26
- package/extras/tours/core/edit-member-role.js +0 -13
- package/extras/tours/core/groups.js +0 -65
- package/extras/tours/core/join-group.js +0 -13
- package/extras/tours/core/login.js +0 -41
- package/extras/tours/core/members.js +0 -108
- package/extras/tours/core/register.js +0 -61
- package/extras/tours/core/send-reset-password.js +0 -14
- package/extras/tours/core/tags.js +0 -65
- package/extras/tours/map/catalog-panel.js +0 -112
- package/extras/tours/map/fab.js +0 -26
- package/extras/tours/map/navigation-bar.js +0 -187
- package/extras/tours/map/side-nav.js +0 -36
- package/test/api/core/test-log-2025-05-21.log +0 -15
- package/test/api/core/test-log-2025-06-25.log +0 -9
- package/test/api/core/test-log-2025-07-24.log +0 -44
- package/test/api/map/test-log-2025-05-27.log +0 -13
- package/test/api/map/test-log-2025-06-23.log +0 -7
- package/test/api/map/test-log-2025-07-24.log +0 -11
- package/test/client/core/api.js +0 -361
- package/test/client/core/index.js +0 -9
- package/test/client/index.js +0 -4
- package/test/client/map/index.js +0 -5
- package/test.client.js +0 -1
- /package/{test/client/core/time.js → extras/tests/core/time.mjs} +0 -0
- /package/extras/tours/{map/add-layer.js → add-layer.js} +0 -0
- /package/extras/tours/{map/catalog-categories.js → catalog-categories.js} +0 -0
- /package/extras/tours/{map/connect-layer.js → connect-layer.js} +0 -0
- /package/extras/tours/{map/create-layer.js → create-layer.js} +0 -0
- /package/extras/tours/{map/create-view.js → create-view.js} +0 -0
- /package/extras/tours/{map/import-layer.js → import-layer.js} +0 -0
- /package/extras/tours/{map/timeline.js → pane.bottom.js} +0 -0
|
@@ -23,30 +23,30 @@
|
|
|
23
23
|
<div class='clearfix'>
|
|
24
24
|
|
|
25
25
|
<div class='fl pad1y space-right2'>
|
|
26
|
-
<span class="strong">
|
|
26
|
+
<span class="strong">45.2% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>99/219</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">30% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>3/10</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">20% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>2/10</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">45.2% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>99/219</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
</div>
|
|
62
62
|
</template>
|
|
63
63
|
</div>
|
|
64
|
-
<div class='status-line
|
|
64
|
+
<div class='status-line low'></div>
|
|
65
65
|
<pre><table class="coverage">
|
|
66
66
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
67
67
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -282,86 +282,28 @@
|
|
|
282
282
|
<a name='L217'></a><a href='#L217'>217</a>
|
|
283
283
|
<a name='L218'></a><a href='#L218'>218</a>
|
|
284
284
|
<a name='L219'></a><a href='#L219'>219</a>
|
|
285
|
-
<a name='L220'></a><a href='#L220'>220</a>
|
|
286
|
-
<
|
|
287
|
-
<
|
|
288
|
-
<
|
|
289
|
-
<
|
|
290
|
-
<
|
|
291
|
-
<
|
|
292
|
-
<
|
|
293
|
-
<
|
|
294
|
-
<
|
|
295
|
-
<
|
|
296
|
-
<
|
|
297
|
-
<
|
|
298
|
-
<
|
|
299
|
-
<
|
|
300
|
-
<
|
|
301
|
-
<
|
|
302
|
-
<
|
|
303
|
-
<
|
|
304
|
-
<
|
|
305
|
-
<
|
|
306
|
-
<a name='L241'></a><a href='#L241'>241</a>
|
|
307
|
-
<a name='L242'></a><a href='#L242'>242</a>
|
|
308
|
-
<a name='L243'></a><a href='#L243'>243</a>
|
|
309
|
-
<a name='L244'></a><a href='#L244'>244</a>
|
|
310
|
-
<a name='L245'></a><a href='#L245'>245</a>
|
|
311
|
-
<a name='L246'></a><a href='#L246'>246</a>
|
|
312
|
-
<a name='L247'></a><a href='#L247'>247</a>
|
|
313
|
-
<a name='L248'></a><a href='#L248'>248</a>
|
|
314
|
-
<a name='L249'></a><a href='#L249'>249</a>
|
|
315
|
-
<a name='L250'></a><a href='#L250'>250</a>
|
|
316
|
-
<a name='L251'></a><a href='#L251'>251</a>
|
|
317
|
-
<a name='L252'></a><a href='#L252'>252</a>
|
|
318
|
-
<a name='L253'></a><a href='#L253'>253</a>
|
|
319
|
-
<a name='L254'></a><a href='#L254'>254</a>
|
|
320
|
-
<a name='L255'></a><a href='#L255'>255</a>
|
|
321
|
-
<a name='L256'></a><a href='#L256'>256</a>
|
|
322
|
-
<a name='L257'></a><a href='#L257'>257</a>
|
|
323
|
-
<a name='L258'></a><a href='#L258'>258</a>
|
|
324
|
-
<a name='L259'></a><a href='#L259'>259</a>
|
|
325
|
-
<a name='L260'></a><a href='#L260'>260</a>
|
|
326
|
-
<a name='L261'></a><a href='#L261'>261</a>
|
|
327
|
-
<a name='L262'></a><a href='#L262'>262</a>
|
|
328
|
-
<a name='L263'></a><a href='#L263'>263</a>
|
|
329
|
-
<a name='L264'></a><a href='#L264'>264</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">2x</span>
|
|
330
|
-
<span class="cline-any cline-yes">2x</span>
|
|
331
|
-
<span class="cline-any cline-yes">2x</span>
|
|
332
|
-
<span class="cline-any cline-yes">2x</span>
|
|
333
|
-
<span class="cline-any cline-yes">2x</span>
|
|
334
|
-
<span class="cline-any cline-yes">2x</span>
|
|
335
|
-
<span class="cline-any cline-yes">2x</span>
|
|
336
|
-
<span class="cline-any cline-yes">2x</span>
|
|
337
|
-
<span class="cline-any cline-yes">2x</span>
|
|
338
|
-
<span class="cline-any cline-yes">2x</span>
|
|
339
|
-
<span class="cline-any cline-yes">2x</span>
|
|
340
|
-
<span class="cline-any cline-yes">2x</span>
|
|
341
|
-
<span class="cline-any cline-yes">2x</span>
|
|
342
|
-
<span class="cline-any cline-yes">2x</span>
|
|
343
|
-
<span class="cline-any cline-yes">2x</span>
|
|
344
|
-
<span class="cline-any cline-yes">2x</span>
|
|
345
|
-
<span class="cline-any cline-yes">2x</span>
|
|
346
|
-
<span class="cline-any cline-yes">2x</span>
|
|
347
|
-
<span class="cline-any cline-yes">2x</span>
|
|
348
|
-
<span class="cline-any cline-yes">2x</span>
|
|
349
|
-
<span class="cline-any cline-yes">2x</span>
|
|
350
|
-
<span class="cline-any cline-yes">2x</span>
|
|
351
|
-
<span class="cline-any cline-yes">9x</span>
|
|
352
|
-
<span class="cline-any cline-yes">9x</span>
|
|
285
|
+
<a name='L220'></a><a href='#L220'>220</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
|
|
286
|
+
<span class="cline-any cline-yes">1x</span>
|
|
287
|
+
<span class="cline-any cline-yes">1x</span>
|
|
288
|
+
<span class="cline-any cline-yes">1x</span>
|
|
289
|
+
<span class="cline-any cline-yes">1x</span>
|
|
290
|
+
<span class="cline-any cline-yes">1x</span>
|
|
291
|
+
<span class="cline-any cline-yes">1x</span>
|
|
292
|
+
<span class="cline-any cline-yes">1x</span>
|
|
293
|
+
<span class="cline-any cline-yes">1x</span>
|
|
294
|
+
<span class="cline-any cline-yes">1x</span>
|
|
295
|
+
<span class="cline-any cline-yes">1x</span>
|
|
296
|
+
<span class="cline-any cline-yes">1x</span>
|
|
297
|
+
<span class="cline-any cline-yes">1x</span>
|
|
298
|
+
<span class="cline-any cline-yes">1x</span>
|
|
299
|
+
<span class="cline-any cline-yes">1x</span>
|
|
300
|
+
<span class="cline-any cline-yes">1x</span>
|
|
301
|
+
<span class="cline-any cline-yes">1x</span>
|
|
302
|
+
<span class="cline-any cline-yes">1x</span>
|
|
303
|
+
<span class="cline-any cline-yes">1x</span>
|
|
304
|
+
<span class="cline-any cline-yes">1x</span>
|
|
305
|
+
<span class="cline-any cline-yes">1x</span>
|
|
353
306
|
<span class="cline-any cline-no"> </span>
|
|
354
|
-
<span class="cline-any cline-yes">9x</span>
|
|
355
|
-
<span class="cline-any cline-yes">4x</span>
|
|
356
|
-
<span class="cline-any cline-yes">4x</span>
|
|
357
|
-
<span class="cline-any cline-yes">9x</span>
|
|
358
|
-
<span class="cline-any cline-yes">5x</span>
|
|
359
|
-
<span class="cline-any cline-yes">5x</span>
|
|
360
|
-
<span class="cline-any cline-yes">9x</span>
|
|
361
|
-
<span class="cline-any cline-yes">2x</span>
|
|
362
|
-
<span class="cline-any cline-yes">2x</span>
|
|
363
|
-
<span class="cline-any cline-yes">2x</span>
|
|
364
|
-
<span class="cline-any cline-yes">2x</span>
|
|
365
307
|
<span class="cline-any cline-no"> </span>
|
|
366
308
|
<span class="cline-any cline-no"> </span>
|
|
367
309
|
<span class="cline-any cline-no"> </span>
|
|
@@ -371,14 +313,16 @@
|
|
|
371
313
|
<span class="cline-any cline-no"> </span>
|
|
372
314
|
<span class="cline-any cline-no"> </span>
|
|
373
315
|
<span class="cline-any cline-no"> </span>
|
|
316
|
+
<span class="cline-any cline-yes">1x</span>
|
|
317
|
+
<span class="cline-any cline-yes">1x</span>
|
|
318
|
+
<span class="cline-any cline-yes">1x</span>
|
|
319
|
+
<span class="cline-any cline-yes">1x</span>
|
|
374
320
|
<span class="cline-any cline-no"> </span>
|
|
375
321
|
<span class="cline-any cline-no"> </span>
|
|
376
322
|
<span class="cline-any cline-no"> </span>
|
|
377
323
|
<span class="cline-any cline-no"> </span>
|
|
378
324
|
<span class="cline-any cline-no"> </span>
|
|
379
325
|
<span class="cline-any cline-no"> </span>
|
|
380
|
-
<span class="cline-any cline-yes">2x</span>
|
|
381
|
-
<span class="cline-any cline-yes">2x</span>
|
|
382
326
|
<span class="cline-any cline-no"> </span>
|
|
383
327
|
<span class="cline-any cline-no"> </span>
|
|
384
328
|
<span class="cline-any cline-no"> </span>
|
|
@@ -388,20 +332,33 @@
|
|
|
388
332
|
<span class="cline-any cline-no"> </span>
|
|
389
333
|
<span class="cline-any cline-no"> </span>
|
|
390
334
|
<span class="cline-any cline-no"> </span>
|
|
335
|
+
<span class="cline-any cline-yes">1x</span>
|
|
336
|
+
<span class="cline-any cline-yes">1x</span>
|
|
391
337
|
<span class="cline-any cline-no"> </span>
|
|
392
338
|
<span class="cline-any cline-no"> </span>
|
|
393
339
|
<span class="cline-any cline-no"> </span>
|
|
394
340
|
<span class="cline-any cline-no"> </span>
|
|
395
341
|
<span class="cline-any cline-no"> </span>
|
|
396
342
|
<span class="cline-any cline-no"> </span>
|
|
397
|
-
<span class="cline-any cline-yes">2x</span>
|
|
398
|
-
<span class="cline-any cline-yes">2x</span>
|
|
399
343
|
<span class="cline-any cline-no"> </span>
|
|
400
344
|
<span class="cline-any cline-no"> </span>
|
|
401
345
|
<span class="cline-any cline-no"> </span>
|
|
402
346
|
<span class="cline-any cline-no"> </span>
|
|
403
347
|
<span class="cline-any cline-no"> </span>
|
|
404
348
|
<span class="cline-any cline-no"> </span>
|
|
349
|
+
<span class="cline-any cline-yes">1x</span>
|
|
350
|
+
<span class="cline-any cline-yes">1x</span>
|
|
351
|
+
<span class="cline-any cline-yes">1x</span>
|
|
352
|
+
<span class="cline-any cline-yes">1x</span>
|
|
353
|
+
<span class="cline-any cline-yes">1x</span>
|
|
354
|
+
<span class="cline-any cline-yes">1x</span>
|
|
355
|
+
<span class="cline-any cline-yes">1x</span>
|
|
356
|
+
<span class="cline-any cline-yes">1x</span>
|
|
357
|
+
<span class="cline-any cline-yes">1x</span>
|
|
358
|
+
<span class="cline-any cline-yes">1x</span>
|
|
359
|
+
<span class="cline-any cline-yes">1x</span>
|
|
360
|
+
<span class="cline-any cline-yes">1x</span>
|
|
361
|
+
<span class="cline-any cline-yes">1x</span>
|
|
405
362
|
<span class="cline-any cline-no"> </span>
|
|
406
363
|
<span class="cline-any cline-no"> </span>
|
|
407
364
|
<span class="cline-any cline-no"> </span>
|
|
@@ -415,93 +372,8 @@
|
|
|
415
372
|
<span class="cline-any cline-no"> </span>
|
|
416
373
|
<span class="cline-any cline-no"> </span>
|
|
417
374
|
<span class="cline-any cline-no"> </span>
|
|
418
|
-
<span class="cline-any cline-yes">2x</span>
|
|
419
|
-
<span class="cline-any cline-yes">2x</span>
|
|
420
|
-
<span class="cline-any cline-yes">2x</span>
|
|
421
|
-
<span class="cline-any cline-yes">2x</span>
|
|
422
|
-
<span class="cline-any cline-yes">2x</span>
|
|
423
|
-
<span class="cline-any cline-yes">2x</span>
|
|
424
|
-
<span class="cline-any cline-yes">2x</span>
|
|
425
|
-
<span class="cline-any cline-yes">2x</span>
|
|
426
|
-
<span class="cline-any cline-yes">2x</span>
|
|
427
|
-
<span class="cline-any cline-yes">2x</span>
|
|
428
|
-
<span class="cline-any cline-yes">2x</span>
|
|
429
|
-
<span class="cline-any cline-yes">2x</span>
|
|
430
|
-
<span class="cline-any cline-yes">2x</span>
|
|
431
|
-
<span class="cline-any cline-yes">18x</span>
|
|
432
|
-
<span class="cline-any cline-yes">18x</span>
|
|
433
|
-
<span class="cline-any cline-yes">18x</span>
|
|
434
|
-
<span class="cline-any cline-yes">18x</span>
|
|
435
|
-
<span class="cline-any cline-yes">18x</span>
|
|
436
|
-
<span class="cline-any cline-yes">18x</span>
|
|
437
|
-
<span class="cline-any cline-yes">18x</span>
|
|
438
375
|
<span class="cline-any cline-no"> </span>
|
|
439
376
|
<span class="cline-any cline-no"> </span>
|
|
440
|
-
<span class="cline-any cline-yes">18x</span>
|
|
441
|
-
<span class="cline-any cline-yes">18x</span>
|
|
442
|
-
<span class="cline-any cline-yes">18x</span>
|
|
443
|
-
<span class="cline-any cline-yes">18x</span>
|
|
444
|
-
<span class="cline-any cline-yes">18x</span>
|
|
445
|
-
<span class="cline-any cline-yes">18x</span>
|
|
446
|
-
<span class="cline-any cline-yes">18x</span>
|
|
447
|
-
<span class="cline-any cline-yes">18x</span>
|
|
448
|
-
<span class="cline-any cline-yes">18x</span>
|
|
449
|
-
<span class="cline-any cline-yes">18x</span>
|
|
450
|
-
<span class="cline-any cline-yes">18x</span>
|
|
451
|
-
<span class="cline-any cline-yes">18x</span>
|
|
452
|
-
<span class="cline-any cline-yes">18x</span>
|
|
453
|
-
<span class="cline-any cline-yes">18x</span>
|
|
454
|
-
<span class="cline-any cline-yes">18x</span>
|
|
455
|
-
<span class="cline-any cline-yes">18x</span>
|
|
456
|
-
<span class="cline-any cline-yes">18x</span>
|
|
457
|
-
<span class="cline-any cline-yes">18x</span>
|
|
458
|
-
<span class="cline-any cline-yes">18x</span>
|
|
459
|
-
<span class="cline-any cline-yes">18x</span>
|
|
460
|
-
<span class="cline-any cline-yes">9x</span>
|
|
461
|
-
<span class="cline-any cline-yes">9x</span>
|
|
462
|
-
<span class="cline-any cline-yes">9x</span>
|
|
463
|
-
<span class="cline-any cline-yes">9x</span>
|
|
464
|
-
<span class="cline-any cline-yes">9x</span>
|
|
465
|
-
<span class="cline-any cline-yes">9x</span>
|
|
466
|
-
<span class="cline-any cline-yes">9x</span>
|
|
467
|
-
<span class="cline-any cline-yes">9x</span>
|
|
468
|
-
<span class="cline-any cline-yes">9x</span>
|
|
469
|
-
<span class="cline-any cline-yes">9x</span>
|
|
470
|
-
<span class="cline-any cline-yes">9x</span>
|
|
471
|
-
<span class="cline-any cline-yes">9x</span>
|
|
472
|
-
<span class="cline-any cline-yes">9x</span>
|
|
473
|
-
<span class="cline-any cline-yes">9x</span>
|
|
474
|
-
<span class="cline-any cline-yes">9x</span>
|
|
475
|
-
<span class="cline-any cline-yes">9x</span>
|
|
476
|
-
<span class="cline-any cline-yes">9x</span>
|
|
477
|
-
<span class="cline-any cline-yes">6x</span>
|
|
478
|
-
<span class="cline-any cline-yes">6x</span>
|
|
479
|
-
<span class="cline-any cline-yes">6x</span>
|
|
480
|
-
<span class="cline-any cline-yes">6x</span>
|
|
481
|
-
<span class="cline-any cline-yes">6x</span>
|
|
482
|
-
<span class="cline-any cline-yes">9x</span>
|
|
483
|
-
<span class="cline-any cline-yes">18x</span>
|
|
484
|
-
<span class="cline-any cline-yes">3x</span>
|
|
485
|
-
<span class="cline-any cline-yes">3x</span>
|
|
486
|
-
<span class="cline-any cline-yes">18x</span>
|
|
487
|
-
<span class="cline-any cline-yes">2x</span>
|
|
488
|
-
<span class="cline-any cline-yes">2x</span>
|
|
489
|
-
<span class="cline-any cline-yes">25x</span>
|
|
490
|
-
<span class="cline-any cline-yes">25x</span>
|
|
491
|
-
<span class="cline-any cline-yes">6x</span>
|
|
492
|
-
<span class="cline-any cline-yes">6x</span>
|
|
493
|
-
<span class="cline-any cline-yes">6x</span>
|
|
494
|
-
<span class="cline-any cline-yes">6x</span>
|
|
495
|
-
<span class="cline-any cline-yes">6x</span>
|
|
496
|
-
<span class="cline-any cline-yes">6x</span>
|
|
497
|
-
<span class="cline-any cline-yes">25x</span>
|
|
498
|
-
<span class="cline-any cline-yes">19x</span>
|
|
499
|
-
<span class="cline-any cline-yes">19x</span>
|
|
500
|
-
<span class="cline-any cline-yes">19x</span>
|
|
501
|
-
<span class="cline-any cline-yes">25x</span>
|
|
502
|
-
<span class="cline-any cline-yes">2x</span>
|
|
503
|
-
<span class="cline-any cline-yes">2x</span>
|
|
504
|
-
<span class="cline-any cline-yes">2x</span>
|
|
505
377
|
<span class="cline-any cline-no"> </span>
|
|
506
378
|
<span class="cline-any cline-no"> </span>
|
|
507
379
|
<span class="cline-any cline-no"> </span>
|
|
@@ -517,81 +389,120 @@
|
|
|
517
389
|
<span class="cline-any cline-no"> </span>
|
|
518
390
|
<span class="cline-any cline-no"> </span>
|
|
519
391
|
<span class="cline-any cline-no"> </span>
|
|
520
|
-
<span class="cline-any cline-yes">2x</span>
|
|
521
|
-
<span class="cline-any cline-yes">2x</span>
|
|
522
|
-
<span class="cline-any cline-yes">2x</span>
|
|
523
|
-
<span class="cline-any cline-yes">2x</span>
|
|
524
|
-
<span class="cline-any cline-yes">2x</span>
|
|
525
392
|
<span class="cline-any cline-no"> </span>
|
|
526
393
|
<span class="cline-any cline-no"> </span>
|
|
527
394
|
<span class="cline-any cline-no"> </span>
|
|
528
395
|
<span class="cline-any cline-no"> </span>
|
|
529
396
|
<span class="cline-any cline-no"> </span>
|
|
530
|
-
<span class="cline-any cline-
|
|
531
|
-
<span class="cline-any cline-
|
|
532
|
-
<span class="cline-any cline-yes">
|
|
533
|
-
<span class="cline-any cline-yes">
|
|
534
|
-
<span class="cline-any cline-
|
|
535
|
-
<span class="cline-any cline-
|
|
536
|
-
<span class="cline-any cline-
|
|
537
|
-
<span class="cline-any cline-
|
|
538
|
-
<span class="cline-any cline-
|
|
539
|
-
<span class="cline-any cline-
|
|
540
|
-
<span class="cline-any cline-
|
|
541
|
-
<span class="cline-any cline-
|
|
542
|
-
<span class="cline-any cline-
|
|
543
|
-
<span class="cline-any cline-
|
|
544
|
-
<span class="cline-any cline-
|
|
545
|
-
<span class="cline-any cline-
|
|
546
|
-
<span class="cline-any cline-
|
|
547
|
-
<span class="cline-any cline-yes">
|
|
548
|
-
<span class="cline-any cline-yes">
|
|
397
|
+
<span class="cline-any cline-no"> </span>
|
|
398
|
+
<span class="cline-any cline-no"> </span>
|
|
399
|
+
<span class="cline-any cline-yes">1x</span>
|
|
400
|
+
<span class="cline-any cline-yes">1x</span>
|
|
401
|
+
<span class="cline-any cline-no"> </span>
|
|
402
|
+
<span class="cline-any cline-no"> </span>
|
|
403
|
+
<span class="cline-any cline-no"> </span>
|
|
404
|
+
<span class="cline-any cline-no"> </span>
|
|
405
|
+
<span class="cline-any cline-no"> </span>
|
|
406
|
+
<span class="cline-any cline-no"> </span>
|
|
407
|
+
<span class="cline-any cline-no"> </span>
|
|
408
|
+
<span class="cline-any cline-no"> </span>
|
|
409
|
+
<span class="cline-any cline-no"> </span>
|
|
410
|
+
<span class="cline-any cline-no"> </span>
|
|
411
|
+
<span class="cline-any cline-no"> </span>
|
|
412
|
+
<span class="cline-any cline-no"> </span>
|
|
413
|
+
<span class="cline-any cline-no"> </span>
|
|
414
|
+
<span class="cline-any cline-yes">1x</span>
|
|
415
|
+
<span class="cline-any cline-yes">1x</span>
|
|
416
|
+
<span class="cline-any cline-yes">1x</span>
|
|
417
|
+
<span class="cline-any cline-no"> </span>
|
|
418
|
+
<span class="cline-any cline-no"> </span>
|
|
419
|
+
<span class="cline-any cline-no"> </span>
|
|
420
|
+
<span class="cline-any cline-no"> </span>
|
|
421
|
+
<span class="cline-any cline-no"> </span>
|
|
422
|
+
<span class="cline-any cline-no"> </span>
|
|
423
|
+
<span class="cline-any cline-no"> </span>
|
|
424
|
+
<span class="cline-any cline-no"> </span>
|
|
425
|
+
<span class="cline-any cline-no"> </span>
|
|
426
|
+
<span class="cline-any cline-no"> </span>
|
|
427
|
+
<span class="cline-any cline-no"> </span>
|
|
428
|
+
<span class="cline-any cline-no"> </span>
|
|
429
|
+
<span class="cline-any cline-no"> </span>
|
|
430
|
+
<span class="cline-any cline-no"> </span>
|
|
431
|
+
<span class="cline-any cline-no"> </span>
|
|
432
|
+
<span class="cline-any cline-yes">1x</span>
|
|
433
|
+
<span class="cline-any cline-yes">1x</span>
|
|
434
|
+
<span class="cline-any cline-yes">1x</span>
|
|
435
|
+
<span class="cline-any cline-no"> </span>
|
|
436
|
+
<span class="cline-any cline-no"> </span>
|
|
437
|
+
<span class="cline-any cline-no"> </span>
|
|
438
|
+
<span class="cline-any cline-no"> </span>
|
|
439
|
+
<span class="cline-any cline-no"> </span>
|
|
440
|
+
<span class="cline-any cline-no"> </span>
|
|
441
|
+
<span class="cline-any cline-no"> </span>
|
|
442
|
+
<span class="cline-any cline-no"> </span>
|
|
443
|
+
<span class="cline-any cline-no"> </span>
|
|
444
|
+
<span class="cline-any cline-no"> </span>
|
|
445
|
+
<span class="cline-any cline-yes">1x</span>
|
|
446
|
+
<span class="cline-any cline-yes">1x</span>
|
|
447
|
+
<span class="cline-any cline-yes">9x</span>
|
|
448
|
+
<span class="cline-any cline-yes">9x</span>
|
|
449
|
+
<span class="cline-any cline-yes">9x</span>
|
|
450
|
+
<span class="cline-any cline-yes">9x</span>
|
|
451
|
+
<span class="cline-any cline-yes">9x</span>
|
|
452
|
+
<span class="cline-any cline-yes">9x</span>
|
|
453
|
+
<span class="cline-any cline-yes">9x</span>
|
|
454
|
+
<span class="cline-any cline-yes">9x</span>
|
|
455
|
+
<span class="cline-any cline-yes">9x</span>
|
|
456
|
+
<span class="cline-any cline-yes">9x</span>
|
|
457
|
+
<span class="cline-any cline-yes">9x</span>
|
|
458
|
+
<span class="cline-any cline-yes">9x</span>
|
|
459
|
+
<span class="cline-any cline-yes">9x</span>
|
|
460
|
+
<span class="cline-any cline-yes">9x</span>
|
|
549
461
|
<span class="cline-any cline-yes">9x</span>
|
|
550
462
|
<span class="cline-any cline-yes">9x</span>
|
|
551
463
|
<span class="cline-any cline-no"> </span>
|
|
552
464
|
<span class="cline-any cline-no"> </span>
|
|
553
465
|
<span class="cline-any cline-yes">9x</span>
|
|
554
|
-
<span class="cline-any cline-yes">
|
|
555
|
-
<span class="cline-any cline-yes">
|
|
556
|
-
<span class="cline-any cline-yes">
|
|
557
|
-
<span class="cline-any cline-yes">
|
|
558
|
-
<span class="cline-any cline-yes">
|
|
466
|
+
<span class="cline-any cline-yes">9x</span>
|
|
467
|
+
<span class="cline-any cline-yes">9x</span>
|
|
468
|
+
<span class="cline-any cline-yes">9x</span>
|
|
469
|
+
<span class="cline-any cline-yes">9x</span>
|
|
470
|
+
<span class="cline-any cline-yes">9x</span>
|
|
559
471
|
<span class="cline-any cline-no"> </span>
|
|
560
472
|
<span class="cline-any cline-no"> </span>
|
|
561
|
-
<span class="cline-any cline-yes">13x</span>
|
|
562
|
-
<span class="cline-any cline-yes">13x</span>
|
|
563
|
-
<span class="cline-any cline-yes">13x</span>
|
|
564
473
|
<span class="cline-any cline-yes">9x</span>
|
|
565
474
|
<span class="cline-any cline-yes">9x</span>
|
|
566
|
-
<span class="cline-any cline-yes">15x</span>
|
|
567
|
-
<span class="cline-any cline-yes">15x</span>
|
|
568
|
-
<span class="cline-any cline-yes">4x</span>
|
|
569
|
-
<span class="cline-any cline-yes">4x</span>
|
|
570
|
-
<span class="cline-any cline-yes">4x</span>
|
|
571
|
-
<span class="cline-any cline-yes">4x</span>
|
|
572
|
-
<span class="cline-any cline-yes">4x</span>
|
|
573
|
-
<span class="cline-any cline-yes">4x</span>
|
|
574
|
-
<span class="cline-any cline-yes">4x</span>
|
|
575
|
-
<span class="cline-any cline-yes">4x</span>
|
|
576
|
-
<span class="cline-any cline-yes">4x</span>
|
|
577
|
-
<span class="cline-any cline-yes">15x</span>
|
|
578
|
-
<span class="cline-any cline-yes">4x</span>
|
|
579
|
-
<span class="cline-any cline-yes">4x</span>
|
|
580
|
-
<span class="cline-any cline-yes">4x</span>
|
|
581
|
-
<span class="cline-any cline-yes">1x</span>
|
|
582
|
-
<span class="cline-any cline-yes">1x</span>
|
|
583
|
-
<span class="cline-any cline-yes">1x</span>
|
|
584
|
-
<span class="cline-any cline-yes">1x</span>
|
|
585
|
-
<span class="cline-any cline-yes">4x</span>
|
|
586
|
-
<span class="cline-any cline-yes">4x</span>
|
|
587
|
-
<span class="cline-any cline-yes">4x</span>
|
|
588
|
-
<span class="cline-any cline-yes">4x</span>
|
|
589
|
-
<span class="cline-any cline-yes">15x</span>
|
|
590
475
|
<span class="cline-any cline-yes">9x</span>
|
|
591
|
-
<span class="cline-any cline-yes">
|
|
476
|
+
<span class="cline-any cline-yes">9x</span>
|
|
477
|
+
<span class="cline-any cline-yes">9x</span>
|
|
478
|
+
<span class="cline-any cline-yes">1x</span>
|
|
479
|
+
<span class="cline-any cline-yes">1x</span>
|
|
480
|
+
<span class="cline-any cline-yes">1x</span>
|
|
481
|
+
<span class="cline-any cline-yes">1x</span>
|
|
482
|
+
<span class="cline-any cline-yes">1x</span>
|
|
483
|
+
<span class="cline-any cline-yes">1x</span>
|
|
484
|
+
<span class="cline-any cline-yes">1x</span>
|
|
485
|
+
<span class="cline-any cline-yes">1x</span>
|
|
486
|
+
<span class="cline-any cline-yes">1x</span>
|
|
487
|
+
<span class="cline-any cline-yes">1x</span>
|
|
488
|
+
<span class="cline-any cline-yes">1x</span>
|
|
489
|
+
<span class="cline-any cline-yes">1x</span>
|
|
490
|
+
<span class="cline-any cline-yes">1x</span>
|
|
491
|
+
<span class="cline-any cline-yes">1x</span>
|
|
492
|
+
<span class="cline-any cline-yes">1x</span>
|
|
493
|
+
<span class="cline-any cline-no"> </span>
|
|
494
|
+
<span class="cline-any cline-no"> </span>
|
|
495
|
+
<span class="cline-any cline-no"> </span>
|
|
496
|
+
<span class="cline-any cline-no"> </span>
|
|
497
|
+
<span class="cline-any cline-yes">1x</span>
|
|
498
|
+
<span class="cline-any cline-yes">1x</span>
|
|
499
|
+
<span class="cline-any cline-yes">1x</span>
|
|
500
|
+
<span class="cline-any cline-yes">1x</span>
|
|
501
|
+
<span class="cline-any cline-yes">1x</span>
|
|
502
|
+
<span class="cline-any cline-yes">9x</span>
|
|
503
|
+
<span class="cline-any cline-yes">9x</span>
|
|
592
504
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import makeDebug from 'debug'
|
|
593
505
|
import _ from 'lodash'
|
|
594
|
-
import qs from 'qs'
|
|
595
506
|
import 'winston-daily-rotate-file'
|
|
596
507
|
// import { RateLimiter } from 'limiter'
|
|
597
508
|
import HttpLimiter from 'express-rate-limit'
|
|
@@ -610,37 +521,20 @@ const { NotAuthenticated } = errors
|
|
|
610
521
|
export class Authentication extends AuthenticationService {
|
|
611
522
|
// Feathers does not seem to take input payload into account when renewing the token,
|
|
612
523
|
// see https://github.com/feathersjs/feathers/issues/3419
|
|
613
|
-
async getPayload (authResult, params) {
|
|
614
|
-
// Params can override defaults
|
|
615
|
-
|
|
524
|
+
<span class="fstat-no" title="function not covered" > async getPayload (authResult, params) {</span>
|
|
525
|
+
<span class="cstat-no" title="statement not covered" > // Params can override defaults</span>
|
|
526
|
+
<span class="cstat-no" title="statement not covered" > if (params.payload) {</span>
|
|
616
527
|
<span class="cstat-no" title="statement not covered" > return params.payload</span>
|
|
617
|
-
} else if (authResult.authentication && authResult.authentication.payload) {
|
|
618
|
-
// Avoid conflicting with default token options added when generating a new token
|
|
619
|
-
return _.omit(authResult.authentication.payload, ['aud', 'iss', 'exp', 'sub', 'iat', 'jti', 'nbf'])
|
|
620
|
-
} else {
|
|
621
|
-
return {}
|
|
622
|
-
}
|
|
623
|
-
}
|
|
624
|
-
}
|
|
625
|
-
|
|
626
|
-
export class AuthenticationProviderStrategy extends OAuthStrategy {
|
|
627
|
-
<span class="fstat-no" title="function not covered" > setAuthentication (auth) {</span>
|
|
628
|
-
<span class="cstat-no" title="statement not covered" > super.setAuthentication(auth)</span>
|
|
629
|
-
<span class="cstat-no" title="statement not covered" > const authConfig = this.authentication.configuration</span>
|
|
630
|
-
<span class="cstat-no" title="statement not covered" > const { oauth } = authConfig</span>
|
|
631
|
-
<span class="cstat-no" title="statement not covered" > // Single logout supported ?</span>
|
|
632
|
-
<span class="cstat-no" title="statement not covered" > const { logout_url: logoutUrl, post_logout_url: postLogoutUrl, key } = this.configuration</span>
|
|
633
|
-
<span class="cstat-no" title="statement not covered" > if (logoutUrl && key) {</span>
|
|
634
|
-
<span class="cstat-no" title="statement not covered" > // Cannot use oauth/:provider/logout route as oauth/:provider is already intercepted by feathers and this causes an error</span>
|
|
635
|
-
<span class="cstat-no" title="statement not covered" > this.app.get(`/oauth-logout/${this.name}`, (req, res) => {</span>
|
|
636
|
-
<span class="cstat-no" title="statement not covered" > return res.redirect(logoutUrl + '?' + qs.stringify({</span>
|
|
637
|
-
<span class="cstat-no" title="statement not covered" > post_logout_redirect_uri: postLogoutUrl || oauth.redirect,</span>
|
|
638
|
-
<span class="cstat-no" title="statement not covered" > client_id: key</span>
|
|
639
|
-
<span class="cstat-no" title="statement not covered" > }))</span>
|
|
640
|
-
<span class="cstat-no" title="statement not covered" > })</span>
|
|
528
|
+
<span class="cstat-no" title="statement not covered" > } else if (authResult.authentication && authResult.authentication.payload) {</span>
|
|
529
|
+
<span class="cstat-no" title="statement not covered" > // Avoid conflicting with default token options added when generating a new token</span>
|
|
530
|
+
<span class="cstat-no" title="statement not covered" > return _.omit(authResult.authentication.payload, ['aud', 'iss', 'exp', 'sub', 'iat', 'jti', 'nbf'])</span>
|
|
531
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
532
|
+
<span class="cstat-no" title="statement not covered" > return {}</span>
|
|
641
533
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
642
534
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
535
|
+
}
|
|
643
536
|
|
|
537
|
+
export class AuthenticationProviderStrategy extends OAuthStrategy {
|
|
644
538
|
<span class="fstat-no" title="function not covered" > async getEntityData (profile, entity) {</span>
|
|
645
539
|
<span class="cstat-no" title="statement not covered" > const createEntity = _.isNil(entity)</span>
|
|
646
540
|
<span class="cstat-no" title="statement not covered" > // Add provider Id</span>
|
|
@@ -659,13 +553,6 @@ export class AuthenticationProviderStrategy extends OAuthStrategy {
|
|
|
659
553
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
660
554
|
|
|
661
555
|
<span class="fstat-no" title="function not covered" > async getEntityQuery (profile) {</span>
|
|
662
|
-
<span class="cstat-no" title="statement not covered" > // Ensure the profile is right before requesting based on it</span>
|
|
663
|
-
<span class="cstat-no" title="statement not covered" > // as when an error is raised the profile will not contain any ID or email</span>
|
|
664
|
-
<span class="cstat-no" title="statement not covered" > // and we might build a request retrieving any user</span>
|
|
665
|
-
<span class="cstat-no" title="statement not covered" > if (!_.has(profile, 'id') && !_.has(profile, 'sub') && !_.has(profile, this.emailFieldInProfile || 'email')) {</span>
|
|
666
|
-
<span class="cstat-no" title="statement not covered" > // This ensure no user will be retrieved</span>
|
|
667
|
-
<span class="cstat-no" title="statement not covered" > return { $limit: 0 }</span>
|
|
668
|
-
<span class="cstat-no" title="statement not covered" > }</span>
|
|
669
556
|
<span class="cstat-no" title="statement not covered" > const query = {</span>
|
|
670
557
|
<span class="cstat-no" title="statement not covered" > $or: [</span>
|
|
671
558
|
<span class="cstat-no" title="statement not covered" > { [`${this.name}Id`]: profile.id || profile.sub },</span>
|
|
@@ -690,78 +577,59 @@ export class AuthenticationProviderStrategy extends OAuthStrategy {
|
|
|
690
577
|
// - a socket or a rest transport
|
|
691
578
|
// It also supports token given as query parameter
|
|
692
579
|
export class JWTAuthenticationStrategy extends JWTStrategy {
|
|
693
|
-
async authenticate (authentication, params) {
|
|
694
|
-
const { accessToken } = authentication
|
|
695
|
-
const
|
|
696
|
-
const
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
if (!accessToken) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
|
|
580
|
+
<span class="fstat-no" title="function not covered" > async authenticate (authentication, params) {</span>
|
|
581
|
+
<span class="cstat-no" title="statement not covered" > const { accessToken } = authentication</span>
|
|
582
|
+
<span class="cstat-no" title="statement not covered" > const { entity } = this.configuration</span>
|
|
583
|
+
<span class="cstat-no" title="statement not covered" > const renewJwt = _.get(this.configuration, 'renewJwt', true)</span>
|
|
584
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
585
|
+
<span class="cstat-no" title="statement not covered" > if (!accessToken) {</span>
|
|
701
586
|
<span class="cstat-no" title="statement not covered" > throw new NotAuthenticated('No access token')</span>
|
|
702
587
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
588
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
589
|
+
<span class="cstat-no" title="statement not covered" > const payload = await this.authentication.verifyAccessToken(accessToken, params.jwt)</span>
|
|
590
|
+
<span class="cstat-no" title="statement not covered" > const result = {</span>
|
|
591
|
+
<span class="cstat-no" title="statement not covered" > // First key trick - by deleting the token here</span>
|
|
592
|
+
<span class="cstat-no" title="statement not covered" > // we will get Feathers generate a new one</span>
|
|
593
|
+
<span class="cstat-no" title="statement not covered" > // accessToken,</span>
|
|
594
|
+
<span class="cstat-no" title="statement not covered" > authentication: {</span>
|
|
595
|
+
<span class="cstat-no" title="statement not covered" > strategy: 'jwt',</span>
|
|
596
|
+
<span class="cstat-no" title="statement not covered" > accessToken,</span>
|
|
597
|
+
<span class="cstat-no" title="statement not covered" > payload</span>
|
|
598
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
599
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
600
|
+
<span class="cstat-no" title="statement not covered" > if (!renewJwt) result.accessToken = accessToken</span>
|
|
601
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
602
|
+
<span class="cstat-no" title="statement not covered" > // Second key trick</span>
|
|
603
|
+
<span class="cstat-no" title="statement not covered" > // Return user attached to the token if any</span>
|
|
604
|
+
<span class="cstat-no" title="statement not covered" > // Return basic information for a stateless token otherwise</span>
|
|
605
|
+
<span class="cstat-no" title="statement not covered" > // As we only target MongoDB now, check for a valid ID otherwise assume a stateless token as well</span>
|
|
606
|
+
<span class="cstat-no" title="statement not covered" > if (payload.sub && ObjectID.isValid(payload.sub)) {</span>
|
|
607
|
+
<span class="cstat-no" title="statement not covered" > const entityId = await this.getEntityId(result, params)</span>
|
|
608
|
+
<span class="cstat-no" title="statement not covered" > const value = await this.getEntity(entityId, params)</span>
|
|
609
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
610
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
611
|
+
<span class="cstat-no" title="statement not covered" > ...result,</span>
|
|
612
|
+
<span class="cstat-no" title="statement not covered" > [entity]: value</span>
|
|
613
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
614
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
615
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
616
|
+
<span class="cstat-no" title="statement not covered" > return result</span>
|
|
617
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
703
618
|
|
|
704
|
-
|
|
705
|
-
const
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
strategy: 'jwt'
|
|
711
|
-
accessToken
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
// Return user attached to the token if any
|
|
719
|
-
// Return basic information for a stateless token otherwise
|
|
720
|
-
if (payload.sub) {
|
|
721
|
-
// Check for a valid MongoDB ID
|
|
722
|
-
if (ObjectID.isValid(payload.sub)) {
|
|
723
|
-
const entityId = await this.getEntityId(result, params)
|
|
724
|
-
const value = await this.getEntity(entityId, params)
|
|
725
|
-
|
|
726
|
-
return {
|
|
727
|
-
...result,
|
|
728
|
-
[entity]: value
|
|
729
|
-
}
|
|
730
|
-
} else if (identityFields) {
|
|
731
|
-
// Otherwise use others fields to identify the user if defined
|
|
732
|
-
const query = {
|
|
733
|
-
$or: _.reduce(identityFields, (or, field) => or.concat([{ [field]: payload.sub }]), []),
|
|
734
|
-
$limit: 1
|
|
735
|
-
}
|
|
736
|
-
const response = await this.entityService.find({ ...params, query })
|
|
737
|
-
const [value = null] = response.data ? response.data <span class="branch-0 cbranch-no" title="branch not covered" >: response</span>
|
|
738
|
-
// Otherwise assume a stateless token
|
|
739
|
-
if (value) {
|
|
740
|
-
return {
|
|
741
|
-
...result,
|
|
742
|
-
[entity]: value
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
|
|
748
|
-
return result
|
|
749
|
-
}
|
|
750
|
-
|
|
751
|
-
async parse (req) {
|
|
752
|
-
const { jwt } = req.query
|
|
753
|
-
if (jwt) {
|
|
754
|
-
debug('Found parsed query value')
|
|
755
|
-
delete req.query.jwt
|
|
756
|
-
return {
|
|
757
|
-
strategy: 'jwt',
|
|
758
|
-
accessToken: jwt
|
|
759
|
-
}
|
|
760
|
-
} else {
|
|
761
|
-
const result = await super.parse(req)
|
|
762
|
-
return result
|
|
763
|
-
}
|
|
764
|
-
}
|
|
619
|
+
<span class="fstat-no" title="function not covered" > async parse (req) {</span>
|
|
620
|
+
<span class="cstat-no" title="statement not covered" > const { jwt } = req.query</span>
|
|
621
|
+
<span class="cstat-no" title="statement not covered" > if (jwt) {</span>
|
|
622
|
+
<span class="cstat-no" title="statement not covered" > debug('Found parsed query value')</span>
|
|
623
|
+
<span class="cstat-no" title="statement not covered" > delete req.query.jwt</span>
|
|
624
|
+
<span class="cstat-no" title="statement not covered" > return {</span>
|
|
625
|
+
<span class="cstat-no" title="statement not covered" > strategy: 'jwt',</span>
|
|
626
|
+
<span class="cstat-no" title="statement not covered" > accessToken: jwt</span>
|
|
627
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
628
|
+
<span class="cstat-no" title="statement not covered" > } else {</span>
|
|
629
|
+
<span class="cstat-no" title="statement not covered" > const result = await super.parse(req)</span>
|
|
630
|
+
<span class="cstat-no" title="statement not covered" > return result</span>
|
|
631
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
632
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
765
633
|
}
|
|
766
634
|
|
|
767
635
|
export <span class="fstat-no" title="function not covered" >async function createDefaultUsers () {</span>
|
|
@@ -782,17 +650,17 @@ export <span class="fstat-no" title="function not covered" >async function creat
|
|
|
782
650
|
<span class="cstat-no" title="statement not covered" >}</span>
|
|
783
651
|
|
|
784
652
|
// Middleware to be used to support jwt as a query param
|
|
785
|
-
export function extractJwtFromQuery (req, res, next) {
|
|
786
|
-
const { jwt } = req.query
|
|
787
|
-
|
|
653
|
+
export <span class="fstat-no" title="function not covered" >function extractJwtFromQuery (req, res, next) {</span>
|
|
654
|
+
<span class="cstat-no" title="statement not covered" > const { jwt } = req.query</span>
|
|
655
|
+
<span class="cstat-no" title="statement not covered" > if (jwt) {</span>
|
|
788
656
|
<span class="cstat-no" title="statement not covered" > _.set(req, 'feathers.authentication', {</span>
|
|
789
657
|
<span class="cstat-no" title="statement not covered" > strategy: 'jwt',</span>
|
|
790
658
|
<span class="cstat-no" title="statement not covered" > accessToken: jwt</span>
|
|
791
659
|
<span class="cstat-no" title="statement not covered" > })</span>
|
|
792
660
|
<span class="cstat-no" title="statement not covered" > }</span>
|
|
793
|
-
|
|
794
|
-
next()
|
|
795
|
-
}
|
|
661
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
662
|
+
<span class="cstat-no" title="statement not covered" > next()</span>
|
|
663
|
+
<span class="cstat-no" title="statement not covered" >}</span>
|
|
796
664
|
|
|
797
665
|
export default function auth (app) {
|
|
798
666
|
const config = app.get('authentication')
|
|
@@ -827,7 +695,7 @@ export default function auth (app) {
|
|
|
827
695
|
let validator
|
|
828
696
|
app.getPasswordPolicy = function () {
|
|
829
697
|
// Create on first access, should not be done outside a function because the app has not yet been correctly initialized
|
|
830
|
-
if (validator) return validator
|
|
698
|
+
if (validator) <span class="branch-0 cbranch-no" title="branch not covered" >return validator</span>
|
|
831
699
|
const { minLength, maxLength, uppercase, lowercase, digits, symbols, noSpaces, prohibited } = config.passwordPolicy
|
|
832
700
|
|
|
833
701
|
validator = new PasswordValidator()
|
|
@@ -840,11 +708,11 @@ export default function auth (app) {
|
|
|
840
708
|
if (noSpaces) <span class="branch-0 cbranch-no" title="branch not covered" >validator.not().spaces()</span>
|
|
841
709
|
if (prohibited) validator.is().not().oneOf(prohibited)
|
|
842
710
|
|
|
843
|
-
validator.comparePassword = function (entity, password) {
|
|
844
|
-
const [localStrategy] = app.service(config.path).getStrategies('local')
|
|
845
|
-
|
|
846
|
-
return localStrategy.comparePassword(entity, password)
|
|
847
|
-
}
|
|
711
|
+
validator.comparePassword = <span class="fstat-no" title="function not covered" >function (entity, password) {</span>
|
|
712
|
+
<span class="cstat-no" title="statement not covered" > const [localStrategy] = app.service(config.path).getStrategies('local')</span>
|
|
713
|
+
<span class="cstat-no" title="statement not covered" ></span>
|
|
714
|
+
<span class="cstat-no" title="statement not covered" > return localStrategy.comparePassword(entity, password)</span>
|
|
715
|
+
<span class="cstat-no" title="statement not covered" > }</span>
|
|
848
716
|
|
|
849
717
|
validator.options = config.passwordPolicy
|
|
850
718
|
|
|
@@ -859,7 +727,7 @@ export default function auth (app) {
|
|
|
859
727
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
860
728
|
Code coverage generated by
|
|
861
729
|
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
|
|
862
|
-
at
|
|
730
|
+
at 2024-08-13T10:02:04.872Z
|
|
863
731
|
</div>
|
|
864
732
|
<script src="../../prettify.js"></script>
|
|
865
733
|
<script>
|