@kalisio/kdk 1.3.6 → 1.5.0
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/.nyc_output/{0d403586-0c7c-4336-94d1-a49e9f02a905.json → 058fc679-d60a-4501-ac04-71171e5200b8.json} +0 -0
- package/.nyc_output/2226bcce-9d22-4dad-b9fa-46564b5565c7.json +1 -0
- package/.nyc_output/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
- package/.nyc_output/{21dd57bd-48c5-41c8-8800-252db32a9366.json → 8b1830fa-932e-4a61-9837-4a5b18f83ea9.json} +0 -0
- package/.nyc_output/{3eb3a2ca-53c2-4551-ba6b-adf70f9a53cd.json → afd2d144-3570-4858-b94a-b523dbd023dd.json} +0 -0
- package/.nyc_output/processinfo/058fc679-d60a-4501-ac04-71171e5200b8.json +1 -0
- package/.nyc_output/processinfo/2226bcce-9d22-4dad-b9fa-46564b5565c7.json +1 -0
- package/.nyc_output/processinfo/6dc4b140-1a8a-4d69-b91c-89c557883d6e.json +1 -0
- package/.nyc_output/processinfo/8b1830fa-932e-4a61-9837-4a5b18f83ea9.json +1 -0
- package/.nyc_output/processinfo/afd2d144-3570-4858-b94a-b523dbd023dd.json +1 -0
- package/.nyc_output/processinfo/index.json +1 -1
- package/CHANGELOG.md +167 -79
- package/README.md +1 -1
- package/coverage/core/api/application.js.html +436 -436
- package/coverage/core/api/authentication.js.html +119 -119
- package/coverage/core/api/db.js.html +201 -201
- package/coverage/core/api/hooks/hooks.account.js.html +48 -48
- package/coverage/core/api/hooks/hooks.authentication.js.html +64 -64
- package/coverage/core/api/hooks/hooks.authorisations.js.html +369 -378
- package/coverage/core/api/hooks/hooks.devices.js.html +49 -49
- package/coverage/core/api/hooks/hooks.groups.js.html +37 -37
- package/coverage/core/api/hooks/hooks.logger.js.html +27 -27
- package/coverage/core/api/hooks/hooks.model.js.html +269 -269
- package/coverage/core/api/hooks/hooks.organisations.js.html +183 -231
- package/coverage/core/api/hooks/hooks.pusher.js.html +114 -114
- package/coverage/core/api/hooks/hooks.query.js.html +234 -198
- package/coverage/core/api/hooks/hooks.service.js.html +82 -82
- package/coverage/core/api/hooks/hooks.storage.js.html +121 -121
- package/coverage/core/api/hooks/hooks.tags.js.html +232 -232
- package/coverage/core/api/hooks/hooks.users.js.html +304 -256
- package/coverage/core/api/hooks/index.html +172 -172
- package/coverage/core/api/hooks/index.js.html +24 -24
- package/coverage/core/api/index.html +75 -75
- package/coverage/core/api/index.js.html +26 -26
- package/coverage/core/api/marshall.js.html +57 -57
- package/coverage/core/api/models/groups.model.mongodb.js.html +20 -20
- package/coverage/core/api/models/index.html +50 -50
- package/coverage/core/api/models/organisations.model.mongodb.js.html +12 -12
- package/coverage/core/api/models/tags.model.mongodb.js.html +22 -22
- package/coverage/core/api/models/users.model.mongodb.js.html +20 -20
- package/coverage/core/api/oauth2-handler.js.html +18 -18
- package/coverage/core/api/oauth2-verifier.js.html +38 -38
- package/coverage/core/api/services/account/account.hooks.js.html +16 -16
- package/coverage/core/api/services/account/account.service.js.html +108 -108
- package/coverage/core/api/services/account/index.html +32 -32
- package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
- package/coverage/core/api/services/authorisations/authorisations.service.js.html +132 -129
- package/coverage/core/api/services/authorisations/index.html +28 -28
- package/coverage/core/api/services/databases/databases.hooks.js.html +9 -9
- package/coverage/core/api/services/databases/databases.service.js.html +12 -12
- package/coverage/core/api/services/databases/index.html +24 -24
- package/coverage/core/api/services/devices/devices.hooks.js.html +9 -9
- package/coverage/core/api/services/devices/devices.service.js.html +121 -121
- package/coverage/core/api/services/devices/index.html +28 -28
- package/coverage/core/api/services/groups/groups.hooks.js.html +9 -9
- package/coverage/core/api/services/groups/index.html +13 -13
- package/coverage/core/api/services/index.html +21 -21
- package/coverage/core/api/services/index.js.html +137 -137
- package/coverage/core/api/services/mailer/index.html +24 -24
- package/coverage/core/api/services/mailer/mailer.hooks.js.html +9 -9
- package/coverage/core/api/services/mailer/mailer.service.js.html +19 -19
- package/coverage/core/api/services/organisations/index.html +24 -24
- package/coverage/core/api/services/organisations/organisations.hooks.js.html +8 -8
- package/coverage/core/api/services/organisations/organisations.service.js.html +67 -67
- package/coverage/core/api/services/pusher/index.html +34 -34
- package/coverage/core/api/services/pusher/pusher.channels.js.html +8 -8
- package/coverage/core/api/services/pusher/pusher.hooks.js.html +10 -10
- package/coverage/core/api/services/pusher/pusher.service.js.html +414 -414
- package/coverage/core/api/services/storage/index.html +21 -21
- package/coverage/core/api/services/storage/storage.hooks.js.html +35 -35
- package/coverage/core/api/services/tags/index.html +21 -21
- package/coverage/core/api/services/tags/tags.hooks.js.html +25 -25
- package/coverage/core/api/services/users/index.html +21 -21
- package/coverage/core/api/services/users/users.hooks.js.html +33 -33
- package/coverage/core/common/errors.js.html +1 -1
- package/coverage/core/common/index.html +42 -27
- package/coverage/core/common/index.js.html +16 -16
- package/coverage/core/common/permissions.js.html +325 -265
- package/coverage/index.html +182 -182
- package/coverage/lcov-report/core/api/application.js.html +436 -436
- package/coverage/lcov-report/core/api/authentication.js.html +119 -119
- package/coverage/lcov-report/core/api/db.js.html +201 -201
- package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +48 -48
- package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +64 -64
- package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +369 -378
- package/coverage/lcov-report/core/api/hooks/hooks.devices.js.html +49 -49
- package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +37 -37
- package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +27 -27
- package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +269 -269
- package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +183 -231
- package/coverage/lcov-report/core/api/hooks/hooks.pusher.js.html +114 -114
- package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +234 -198
- package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +82 -82
- package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +121 -121
- package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +232 -232
- package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +304 -256
- package/coverage/lcov-report/core/api/hooks/index.html +172 -172
- package/coverage/lcov-report/core/api/hooks/index.js.html +24 -24
- package/coverage/lcov-report/core/api/index.html +75 -75
- package/coverage/lcov-report/core/api/index.js.html +26 -26
- package/coverage/lcov-report/core/api/marshall.js.html +57 -57
- package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +20 -20
- package/coverage/lcov-report/core/api/models/index.html +50 -50
- package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +12 -12
- package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +22 -22
- package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +20 -20
- package/coverage/lcov-report/core/api/oauth2-handler.js.html +18 -18
- package/coverage/lcov-report/core/api/oauth2-verifier.js.html +38 -38
- package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +16 -16
- package/coverage/lcov-report/core/api/services/account/account.service.js.html +108 -108
- package/coverage/lcov-report/core/api/services/account/index.html +32 -32
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +132 -129
- package/coverage/lcov-report/core/api/services/authorisations/index.html +28 -28
- package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +12 -12
- package/coverage/lcov-report/core/api/services/databases/index.html +24 -24
- package/coverage/lcov-report/core/api/services/devices/devices.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/devices/devices.service.js.html +121 -121
- package/coverage/lcov-report/core/api/services/devices/index.html +28 -28
- package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/groups/index.html +13 -13
- package/coverage/lcov-report/core/api/services/index.html +21 -21
- package/coverage/lcov-report/core/api/services/index.js.html +137 -137
- package/coverage/lcov-report/core/api/services/mailer/index.html +24 -24
- package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +9 -9
- package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +19 -19
- package/coverage/lcov-report/core/api/services/organisations/index.html +24 -24
- package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +8 -8
- package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +67 -67
- package/coverage/lcov-report/core/api/services/pusher/index.html +34 -34
- package/coverage/lcov-report/core/api/services/pusher/pusher.channels.js.html +8 -8
- package/coverage/lcov-report/core/api/services/pusher/pusher.hooks.js.html +10 -10
- package/coverage/lcov-report/core/api/services/pusher/pusher.service.js.html +414 -414
- package/coverage/lcov-report/core/api/services/storage/index.html +21 -21
- package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +35 -35
- package/coverage/lcov-report/core/api/services/tags/index.html +21 -21
- package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +25 -25
- package/coverage/lcov-report/core/api/services/users/index.html +21 -21
- package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +33 -33
- package/coverage/lcov-report/core/common/errors.js.html +1 -1
- package/coverage/lcov-report/core/common/index.html +42 -27
- package/coverage/lcov-report/core/common/index.js.html +16 -16
- package/coverage/lcov-report/core/common/permissions.js.html +325 -265
- package/coverage/lcov-report/index.html +182 -182
- package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +118 -37
- package/coverage/lcov-report/map/api/hooks/index.html +7 -7
- package/coverage/lcov-report/map/api/hooks/index.js.html +1 -1
- package/coverage/lcov-report/map/api/index.html +1 -1
- package/coverage/lcov-report/map/api/index.js.html +1 -1
- package/coverage/lcov-report/map/api/marshall.js.html +1 -1
- package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/lcov-report/map/api/models/index.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/alerts/index.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/catalog/index.html +1 -1
- 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 +2 -2
- package/coverage/lcov-report/map/api/services/features/index.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +1 -1
- package/coverage/lcov-report/map/api/services/geocoder/index.html +1 -1
- package/coverage/lcov-report/map/api/services/index.html +1 -1
- package/coverage/lcov-report/map/api/services/index.js.html +1 -1
- package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/errors.js.html +1 -1
- package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/grid.js.html +1 -1
- package/coverage/lcov-report/map/common/index.html +12 -12
- package/coverage/lcov-report/map/common/index.js.html +1 -1
- package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/moment-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/opendap-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/permissions.js.html +1 -1
- package/coverage/lcov-report/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/tms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wcs-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/lcov-report/map/common/wfs-utils.js.html +8 -5
- package/coverage/lcov-report/map/common/wms-utils.js.html +1 -1
- package/coverage/lcov-report/map/common/wmts-utils.js.html +71 -11
- package/coverage/lcov.info +3742 -3949
- package/coverage/map/api/hooks/hooks.catalog.js.html +1 -1
- package/coverage/map/api/hooks/hooks.query.js.html +118 -37
- package/coverage/map/api/hooks/index.html +7 -7
- package/coverage/map/api/hooks/index.js.html +1 -1
- package/coverage/map/api/index.html +1 -1
- package/coverage/map/api/index.js.html +1 -1
- package/coverage/map/api/marshall.js.html +1 -1
- package/coverage/map/api/models/alerts.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/catalog.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/features.model.mongodb.js.html +1 -1
- package/coverage/map/api/models/index.html +1 -1
- package/coverage/map/api/services/alerts/alerts.hooks.js.html +1 -1
- package/coverage/map/api/services/alerts/alerts.service.js.html +1 -1
- package/coverage/map/api/services/alerts/index.html +1 -1
- package/coverage/map/api/services/catalog/catalog.hooks.js.html +1 -1
- package/coverage/map/api/services/catalog/index.html +1 -1
- 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 +2 -2
- package/coverage/map/api/services/features/index.html +1 -1
- package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +1 -1
- package/coverage/map/api/services/geocoder/geocoder.service.js.html +1 -1
- package/coverage/map/api/services/geocoder/index.html +1 -1
- package/coverage/map/api/services/index.html +1 -1
- package/coverage/map/api/services/index.js.html +1 -1
- package/coverage/map/common/dynamic-grid-source.js.html +1 -1
- package/coverage/map/common/errors.js.html +1 -1
- package/coverage/map/common/geotiff-grid-source.js.html +1 -1
- package/coverage/map/common/grid.js.html +1 -1
- package/coverage/map/common/index.html +12 -12
- package/coverage/map/common/index.js.html +1 -1
- package/coverage/map/common/meteo-model-grid-source.js.html +1 -1
- package/coverage/map/common/moment-utils.js.html +1 -1
- package/coverage/map/common/opendap-grid-source.js.html +1 -1
- package/coverage/map/common/opendap-utils.js.html +1 -1
- package/coverage/map/common/permissions.js.html +1 -1
- package/coverage/map/common/time-based-grid-source.js.html +1 -1
- package/coverage/map/common/tms-utils.js.html +1 -1
- package/coverage/map/common/wcs-grid-source.js.html +1 -1
- package/coverage/map/common/wcs-utils.js.html +1 -1
- package/coverage/map/common/weacast-grid-source.js.html +1 -1
- package/coverage/map/common/wfs-utils.js.html +8 -5
- package/coverage/map/common/wms-utils.js.html +1 -1
- package/coverage/map/common/wmts-utils.js.html +71 -11
- package/extras/icons/kanban.png +0 -0
- package/extras/tours/core/add-member.js +10 -1
- package/extras/tours/core/{tag-member.js → edit-member-tags.js} +4 -3
- package/extras/tours/core/groups.js +8 -2
- package/extras/tours/core/members.js +11 -21
- package/extras/tours/core/tags.js +7 -1
- package/extras/tours/map/catalog-categories.js +4 -4
- package/extras/tours/map/catalog-panel.js +16 -16
- package/extras/tours/map/favorite-views.js +3 -3
- package/lib/core/api/hooks/hooks.authorisations.js +149 -140
- package/lib/core/api/hooks/hooks.authorisations.js.map +1 -1
- package/lib/core/api/hooks/hooks.organisations.js +1 -23
- package/lib/core/api/hooks/hooks.organisations.js.map +1 -1
- package/lib/core/api/hooks/hooks.query.js +22 -0
- package/lib/core/api/hooks/hooks.query.js.map +1 -1
- package/lib/core/api/hooks/hooks.users.js +34 -18
- package/lib/core/api/hooks/hooks.users.js.map +1 -1
- package/lib/core/api/services/authorisations/authorisations.service.js +34 -25
- package/lib/core/api/services/authorisations/authorisations.service.js.map +1 -1
- package/lib/core/client/api.js +1 -0
- package/lib/core/client/api.js.map +1 -1
- package/lib/core/client/components/account/KAccountDZ.vue +3 -4
- package/lib/core/client/components/account/KAccountDevices.vue +5 -6
- package/lib/core/client/components/account/KDeviceCard.vue +2 -1
- package/lib/core/client/components/account/KIdentityPanel.vue +1 -7
- package/lib/core/client/components/collection/KBoard.vue +26 -155
- package/lib/core/client/components/collection/KCard.vue +144 -42
- package/lib/core/client/components/collection/KCardSection.vue +52 -0
- package/lib/core/client/components/collection/KColumn.vue +181 -0
- package/lib/core/client/components/collection/KGrid.vue +13 -18
- package/lib/core/client/components/collection/KHistory.vue +61 -89
- package/lib/core/client/components/collection/KHistoryEntry.vue +90 -66
- package/lib/core/client/components/collection/KItem.vue +21 -2
- package/lib/core/client/components/collection/KList.vue +9 -12
- package/lib/core/client/components/collection/KTable.vue +33 -39
- package/lib/core/client/components/collection/index.js +6 -1
- package/lib/core/client/components/collection/index.js.map +1 -1
- package/lib/core/client/components/editor/KEditor.vue +0 -6
- package/lib/core/client/components/editor/KModalEditor.vue +4 -4
- package/lib/core/client/components/editor/KSettingsEditor.vue +49 -0
- package/lib/core/client/components/form/KAttachmentField.vue +10 -10
- package/lib/core/client/components/form/KChipsField.vue +28 -23
- package/lib/core/client/components/form/KColorField.vue +30 -25
- package/lib/core/client/components/form/KFileField.vue +11 -40
- package/lib/core/client/components/form/KForm.vue +0 -12
- package/lib/core/client/components/form/KIconField.vue +1 -0
- package/lib/core/client/components/form/KItemField.vue +6 -2
- package/lib/core/client/components/form/KRoleField.vue +56 -0
- package/lib/core/client/components/form/KSelectField.vue +16 -1
- package/lib/core/client/components/form/KView.vue +5 -14
- package/lib/core/client/components/frame/KAction.vue +18 -12
- package/lib/core/client/components/frame/KAvatar.vue +3 -3
- package/lib/core/client/components/frame/KChart.vue +60 -0
- package/lib/core/client/components/frame/KChipsPane.vue +80 -0
- package/lib/core/client/components/frame/KContent.vue +1 -1
- package/lib/core/client/components/frame/KModal.vue +30 -44
- package/lib/core/client/components/frame/KPanel.vue +1 -1
- package/lib/core/client/components/frame/{KMenu.vue → KPopupAction.vue} +6 -7
- package/lib/core/client/components/frame/KSpot.vue +31 -0
- package/lib/core/client/components/frame/KStamp.vue +62 -0
- package/lib/core/client/components/frame/index.js +56 -1
- package/lib/core/client/components/frame/index.js.map +1 -1
- package/lib/core/client/components/input/KColorChooser.vue +16 -8
- package/lib/core/client/components/input/KIconChooser.vue +2 -1
- package/lib/core/client/components/input/KOptionsChooser.vue +2 -2
- package/lib/core/client/components/input/KUploader.vue +14 -5
- package/lib/core/client/components/layout/KAbout.vue +9 -3
- package/lib/core/client/components/layout/KFab.vue +1 -1
- package/lib/core/client/components/layout/KPage.vue +44 -19
- package/lib/core/client/components/layout/KTour.vue +2 -2
- package/lib/core/client/components/layout/KWelcome.vue +13 -12
- package/lib/core/client/components/layout/KWindow.vue +1 -1
- package/lib/core/client/components/media/KImageViewer.vue +9 -7
- package/lib/core/client/components/media/KMediaBrowser.vue +12 -8
- package/lib/core/client/components/menu/KMenu.vue +103 -0
- package/lib/core/client/components/team/KAddMember.vue +17 -9
- package/lib/core/client/components/team/KChangeRole.vue +5 -7
- package/lib/core/client/components/team/KGroupCard.vue +34 -51
- package/lib/core/client/components/team/KGroupsActivity.vue +9 -2
- package/lib/core/client/components/team/KJoinGroup.vue +5 -7
- package/lib/core/client/components/team/KMemberCard.vue +104 -63
- package/lib/core/client/components/team/KMembersActivity.vue +9 -2
- package/lib/core/client/components/team/KOrganisationsActivity.vue +8 -1
- package/lib/core/client/components/team/KTagCard.vue +26 -26
- package/lib/core/client/components/team/KTagsActivity.vue +9 -2
- package/lib/core/client/components/time/KTimeRange.vue +144 -0
- package/lib/core/client/components/viewer/KModalViewer.vue +6 -0
- package/lib/core/client/components/viewer/KViewer.vue +0 -6
- package/lib/core/client/i18n/core_en.json +138 -94
- package/lib/core/client/i18n/core_fr.json +61 -17
- package/lib/core/client/index.js +46 -14
- package/lib/core/client/index.js.map +1 -1
- package/lib/core/client/layout.js +8 -1
- package/lib/core/client/layout.js.map +1 -1
- package/lib/core/client/mixins/mixin.authorisation.js +28 -18
- package/lib/core/client/mixins/mixin.authorisation.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-collection.js +57 -9
- package/lib/core/client/mixins/mixin.base-collection.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-context.js +1 -1
- package/lib/core/client/mixins/mixin.base-context.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-editor.js +26 -16
- package/lib/core/client/mixins/mixin.base-editor.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-field.js +0 -4
- package/lib/core/client/mixins/mixin.base-field.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-item.js +29 -14
- package/lib/core/client/mixins/mixin.base-item.js.map +1 -1
- package/lib/core/client/mixins/mixin.base-viewer.js +0 -2
- package/lib/core/client/mixins/mixin.base-viewer.js.map +1 -1
- package/lib/core/client/mixins/mixin.object-proxy.js +17 -3
- package/lib/core/client/mixins/mixin.object-proxy.js.map +1 -1
- package/lib/core/client/mixins/mixin.schema-proxy.js +31 -0
- package/lib/core/client/mixins/mixin.schema-proxy.js.map +1 -1
- package/lib/core/client/mixins/mixin.service.js +5 -33
- package/lib/core/client/mixins/mixin.service.js.map +1 -1
- package/lib/core/client/reader.js +54 -0
- package/lib/core/client/reader.js.map +1 -0
- package/lib/core/client/readers/index.js +30 -0
- package/lib/core/client/readers/index.js.map +1 -0
- package/lib/core/client/readers/reader.csv.js +43 -0
- package/lib/core/client/readers/reader.csv.js.map +1 -0
- package/lib/core/client/readers/reader.json.js +38 -0
- package/lib/core/client/readers/reader.json.js.map +1 -0
- package/lib/core/client/services/index.js +23 -0
- package/lib/core/client/services/index.js.map +1 -1
- package/lib/core/client/services/local-settings.service.js +4 -0
- package/lib/core/client/services/local-settings.service.js.map +1 -1
- package/lib/core/client/time.js +131 -0
- package/lib/core/client/time.js.map +1 -0
- package/lib/core/common/permissions.js +65 -23
- package/lib/core/common/permissions.js.map +1 -1
- package/lib/core/common/schemas/groups.create.json +1 -1
- package/lib/core/common/schemas/groups.update.json +1 -1
- package/lib/core/common/schemas/organisations.create.json +1 -1
- package/lib/core/common/schemas/organisations.update.json +2 -2
- package/lib/core/common/schemas/settings.update.json +139 -0
- package/lib/core/common/schemas/tags.update.json +9 -1
- package/lib/map/api/hooks/hooks.query.js +55 -29
- package/lib/map/api/hooks/hooks.query.js.map +1 -1
- package/lib/map/api/services/features/features.hooks.js +1 -1
- package/lib/map/api/services/features/features.hooks.js.map +1 -1
- package/lib/map/client/components/KCaptureToolbar.vue +156 -0
- package/lib/map/client/components/KColorLegend.vue +25 -23
- package/lib/map/client/components/KFavoriteViews.vue +71 -35
- package/lib/map/client/components/KFeaturesChart.vue +11 -9
- package/lib/map/client/components/KFeaturesFilter.vue +18 -8
- package/lib/map/client/components/KFeaturesTable.vue +27 -2
- package/lib/map/client/components/KLayerEditionToolbar.vue +51 -0
- package/lib/map/client/components/KLayerStyleEditor.vue +12 -5
- package/lib/map/client/components/KLayerStyleForm.vue +44 -33
- package/lib/map/client/components/KLocationInput.vue +126 -65
- package/lib/map/client/components/KLocationMap.vue +199 -84
- package/lib/map/client/components/KMeasureTool.vue +340 -0
- package/lib/map/client/components/KPositionIndicator.vue +1 -0
- package/lib/map/client/components/KTimeline.vue +41 -37
- package/lib/map/client/components/KUrlLegend.vue +21 -19
- package/lib/map/client/components/catalog/KBaseLayersSelector.vue +105 -0
- package/lib/map/client/components/catalog/KCatalog.vue +14 -2
- package/lib/map/client/components/catalog/KConnectLayer.vue +31 -11
- package/lib/map/client/components/catalog/KCreateLayer.vue +37 -14
- package/lib/map/client/components/catalog/KImportLayer.vue +33 -40
- package/lib/map/client/components/catalog/KLayerCategories.vue +86 -62
- package/lib/map/client/components/catalog/KLayersSelector.vue +44 -42
- package/lib/map/client/components/catalog/KWeatherLayersSelector.vue +3 -3
- package/lib/map/client/components/form/KLocationField.vue +1 -1
- package/lib/map/client/components/form/KOwsLayerField.vue +7 -0
- package/lib/map/client/components/form/KOwsServiceField.vue +1 -0
- package/lib/map/client/components/widget/KInformationBox.vue +10 -16
- package/lib/map/client/components/widget/KMapillaryViewer.vue +59 -49
- package/lib/map/client/components/widget/KTimeSeries.vue +119 -31
- package/lib/map/client/i18n/map_en.json +105 -20
- package/lib/map/client/i18n/map_fr.json +107 -23
- package/lib/map/client/init.js +24 -7
- package/lib/map/client/init.js.map +1 -1
- package/lib/map/client/leaflet/GSMaPLayer.js +4 -9
- package/lib/map/client/leaflet/GSMaPLayer.js.map +1 -1
- package/lib/map/client/leaflet/MaskLayer.js +73 -0
- package/lib/map/client/leaflet/MaskLayer.js.map +1 -0
- package/lib/map/client/mixins/globe/mixin.base-globe.js +7 -6
- package/lib/map/client/mixins/globe/mixin.base-globe.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js +7 -9
- package/lib/map/client/mixins/globe/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.popup.js +4 -0
- package/lib/map/client/mixins/globe/mixin.popup.js.map +1 -1
- package/lib/map/client/mixins/globe/mixin.tooltip.js +4 -0
- package/lib/map/client/mixins/globe/mixin.tooltip.js.map +1 -1
- package/lib/map/client/mixins/index.js +8 -13
- package/lib/map/client/mixins/index.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.base-map.js +71 -8
- package/lib/map/client/mixins/map/mixin.base-map.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.canvas-layers.js +276 -51
- package/lib/map/client/mixins/map/mixin.canvas-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.edit-layers.js +218 -121
- package/lib/map/client/mixins/map/mixin.edit-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.file-layers.js +46 -93
- package/lib/map/client/mixins/map/mixin.file-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.geojson-layers.js +22 -11
- package/lib/map/client/mixins/map/mixin.geojson-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.georaster-layers.js +7 -4
- package/lib/map/client/mixins/map/mixin.georaster-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.gsmap-layers.js +3 -3
- package/lib/map/client/mixins/map/mixin.gsmap-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.heatmap-layers.js +8 -10
- package/lib/map/client/mixins/map/mixin.heatmap-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.mapillary-layers.js +25 -40
- package/lib/map/client/mixins/map/mixin.mapillary-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.popup.js +4 -0
- package/lib/map/client/mixins/map/mixin.popup.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js +5 -3
- package/lib/map/client/mixins/map/mixin.tiled-mesh-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js +5 -3
- package/lib/map/client/mixins/map/mixin.tiled-wind-layers.js.map +1 -1
- package/lib/map/client/mixins/map/mixin.tooltip.js +4 -0
- package/lib/map/client/mixins/map/mixin.tooltip.js.map +1 -1
- package/lib/map/client/mixins/mixin.activity.js +62 -68
- package/lib/map/client/mixins/mixin.activity.js.map +1 -1
- package/lib/map/client/mixins/mixin.context.js +26 -3
- package/lib/map/client/mixins/mixin.context.js.map +1 -1
- package/lib/map/client/mixins/mixin.feature-selection.js +8 -10
- package/lib/map/client/mixins/mixin.feature-selection.js.map +1 -1
- package/lib/map/client/mixins/mixin.feature-service.js +9 -7
- package/lib/map/client/mixins/mixin.feature-service.js.map +1 -1
- package/lib/map/client/mixins/mixin.infobox.js +4 -0
- package/lib/map/client/mixins/mixin.infobox.js.map +1 -1
- package/lib/map/client/mixins/mixin.weacast.js +6 -4
- package/lib/map/client/mixins/mixin.weacast.js.map +1 -1
- package/lib/map/client/pixi-utils.js +9 -0
- package/lib/map/client/pixi-utils.js.map +1 -1
- package/lib/map/client/readers/index.js +42 -0
- package/lib/map/client/readers/index.js.map +1 -0
- package/lib/map/client/readers/reader.geojson.js +59 -0
- package/lib/map/client/readers/reader.geojson.js.map +1 -0
- package/lib/map/client/readers/reader.gpx.js +41 -0
- package/lib/map/client/readers/reader.gpx.js.map +1 -0
- package/lib/map/client/readers/reader.kml.js +41 -0
- package/lib/map/client/readers/reader.kml.js.map +1 -0
- package/lib/map/client/utils.js +52 -1
- package/lib/map/client/utils.js.map +1 -1
- package/lib/map/common/wfs-utils.js +1 -1
- package/lib/map/common/wfs-utils.js.map +1 -1
- package/lib/map/common/wmts-utils.js +31 -7
- package/lib/map/common/wmts-utils.js.map +1 -1
- package/lib/test/client/core/account.js +100 -0
- package/lib/test/client/core/account.js.map +1 -0
- package/lib/test/client/core/api.js +400 -0
- package/lib/test/client/core/api.js.map +1 -0
- package/lib/test/client/core/collection.js +109 -0
- package/lib/test/client/core/collection.js.map +1 -0
- package/lib/test/client/core/index.js +90 -0
- package/lib/test/client/core/index.js.map +1 -0
- package/lib/test/client/core/layout.js +221 -0
- package/lib/test/client/core/layout.js.map +1 -0
- package/lib/test/client/core/runner.js +203 -0
- package/lib/test/client/core/runner.js.map +1 -0
- package/lib/test/client/core/screens.js +68 -0
- package/lib/test/client/core/screens.js.map +1 -0
- package/lib/test/client/core/utils.js +304 -0
- package/lib/test/client/core/utils.js.map +1 -0
- package/lib/test/client/index.js +20 -0
- package/lib/test/client/index.js.map +1 -0
- package/lib/test/client/map/catalog.js +192 -0
- package/lib/test/client/map/catalog.js.map +1 -0
- package/lib/test/client/map/controls.js +54 -0
- package/lib/test/client/map/controls.js.map +1 -0
- package/lib/test/client/map/index.js +30 -0
- package/lib/test/client/map/index.js.map +1 -0
- package/package.json +18 -9
- package/test.client.js +1 -0
- package/tests/core/test-log-2021-09-02.log +47 -0
- package/tests/map/test-log-%DATE%.logYYYY-09-DD +6 -0
- package/tests/map/test-log-2021-09-02.log +3 -0
- package/.nyc_output/5baea3f8-cf8e-4c76-8ccf-0e48b6f16fa4.json +0 -1
- package/.nyc_output/dddde6b5-9024-4b0e-8d8b-4502d437b8a4.json +0 -1
- package/.nyc_output/ef5e94ba-9a99-4fb6-ab1d-1a974112bb83.json +0 -1
- package/.nyc_output/fd4681f8-5f41-4f17-b393-9f399b24c128.json +0 -1
- package/.nyc_output/processinfo/0d403586-0c7c-4336-94d1-a49e9f02a905.json +0 -1
- package/.nyc_output/processinfo/21dd57bd-48c5-41c8-8800-252db32a9366.json +0 -1
- package/.nyc_output/processinfo/3eb3a2ca-53c2-4551-ba6b-adf70f9a53cd.json +0 -1
- package/.nyc_output/processinfo/5baea3f8-cf8e-4c76-8ccf-0e48b6f16fa4.json +0 -1
- package/.nyc_output/processinfo/dddde6b5-9024-4b0e-8d8b-4502d437b8a4.json +0 -1
- package/.nyc_output/processinfo/ef5e94ba-9a99-4fb6-ab1d-1a974112bb83.json +0 -1
- package/.nyc_output/processinfo/fd4681f8-5f41-4f17-b393-9f399b24c128.json +0 -1
- package/extras/testcafe/Dockerfile +0 -48
- package/extras/testcafe/docker-entrypoint.sh +0 -27
- package/extras/testcafe/page-models/core/account.js +0 -75
- package/extras/testcafe/page-models/core/base-collection.js +0 -41
- package/extras/testcafe/page-models/core/base-page.js +0 -25
- package/extras/testcafe/page-models/core/groups.js +0 -36
- package/extras/testcafe/page-models/core/index.js +0 -140
- package/extras/testcafe/page-models/core/layout.js +0 -145
- package/extras/testcafe/page-models/core/members.js +0 -98
- package/extras/testcafe/page-models/core/organisations.js +0 -76
- package/extras/testcafe/page-models/core/screens.js +0 -99
- package/extras/testcafe/page-models/core/tags.js +0 -21
- package/extras/testcafe/page-models/map/add-layer.js +0 -51
- package/extras/testcafe/page-models/map/catalog.js +0 -132
- package/extras/testcafe/page-models/map/index.js +0 -36
- package/extras/testcafe/page-models/map/map-activity.js +0 -42
- package/extras/testcafe/page-models/map/timeline.js +0 -67
- package/lib/core/client/components/frame/KLabel.vue +0 -56
- package/lib/core/client/components/team/KTagsPane.vue +0 -35
- package/lib/map/client/leaflet/TiledMapillaryLayer.js +0 -137
- package/lib/map/client/leaflet/TiledMapillaryLayer.js.map +0 -1
- package/lib/map/client/mixins/mixin.time.js +0 -73
- package/lib/map/client/mixins/mixin.time.js.map +0 -1
- package/tests/core/account.test.js +0 -423
- package/tests/core/client.test.js.skip +0 -37
- package/tests/core/config/default.js +0 -96
- package/tests/core/config/email-templates/confirmInvitation/html.ejs +0 -18
- package/tests/core/config/email-templates/identityChange/html.ejs +0 -12
- package/tests/core/config/email-templates/newDevice/html.ejs +0 -7
- package/tests/core/config/email-templates/passwordChange/html.ejs +0 -5
- package/tests/core/config/email-templates/resendVerifySignup/html.ejs +0 -10
- package/tests/core/config/email-templates/resetPwd/html.ejs +0 -5
- package/tests/core/config/email-templates/sendResetPwd/html.ejs +0 -8
- package/tests/core/config/email-templates/verifySignup/html.ejs +0 -3
- package/tests/core/data/10k_most_common_passwords.txt +0 -10000
- package/tests/core/data/logo.png +0 -0
- package/tests/core/hooks.test.js +0 -175
- package/tests/core/index.test.js +0 -432
- package/tests/core/notifications.test.js +0 -465
- package/tests/core/storage.test.js +0 -134
- package/tests/core/team.test.js +0 -610
- package/tests/core/utils.js +0 -62
- package/tests/map/alerts.test.js +0 -554
- package/tests/map/config/default.js +0 -112
- package/tests/map/config/layers.json +0 -37
- package/tests/map/daptiles.test.js +0 -41
- package/tests/map/data/DescribeCoverage.xml +0 -55
- package/tests/map/data/GetCoverage.tif +0 -0
- package/tests/map/data/adsb.observations.json +0 -132
- package/tests/map/data/dataset.grb.das +0 -55
- package/tests/map/data/dataset.grb.dds +0 -17
- package/tests/map/data/dataset.grb.dods +0 -0
- package/tests/map/data/lat_lon_bounds.grb.dods +0 -0
- package/tests/map/data/subdataset.grb.dods +0 -0
- package/tests/map/data/vigicrues.observations.json +0 -47042
- package/tests/map/data/vigicrues.stations.json +0 -15422
- package/tests/map/data/zones.json +0 -1228
- package/tests/map/forecast-data/gfs-world/u-wind/2021-07-15_12-00-00_2021-07-15_12-00-00.grib +0 -0
- package/tests/map/forecast-data/gfs-world/v-wind/2021-07-15_12-00-00_2021-07-15_12-00-00.grib +0 -0
- package/tests/map/grid-sources.test.js +0 -304
- package/tests/map/hooks.test.js +0 -96
- package/tests/map/index.test.js +0 -333
|
@@ -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">0% </span>
|
|
27
27
|
<span class="quiet">Statements</span>
|
|
28
|
-
<span class='fraction'>
|
|
28
|
+
<span class='fraction'>0/130</span>
|
|
29
29
|
</div>
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
|
-
<span class="strong">
|
|
33
|
+
<span class="strong">0% </span>
|
|
34
34
|
<span class="quiet">Branches</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>0/79</span>
|
|
36
36
|
</div>
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
<div class='fl pad1y space-right2'>
|
|
40
|
-
<span class="strong">
|
|
40
|
+
<span class="strong">0% </span>
|
|
41
41
|
<span class="quiet">Functions</span>
|
|
42
|
-
<span class='fraction'>
|
|
42
|
+
<span class='fraction'>0/23</span>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
<div class='fl pad1y space-right2'>
|
|
47
|
-
<span class="strong">
|
|
47
|
+
<span class="strong">0% </span>
|
|
48
48
|
<span class="quiet">Lines</span>
|
|
49
|
-
<span class='fraction'>
|
|
49
|
+
<span class='fraction'>0/123</span>
|
|
50
50
|
</div>
|
|
51
51
|
|
|
52
52
|
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
|
|
56
56
|
</p>
|
|
57
57
|
</div>
|
|
58
|
-
<div class='status-line
|
|
58
|
+
<div class='status-line low'></div>
|
|
59
59
|
<pre><table class="coverage">
|
|
60
60
|
<tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
|
|
61
61
|
<a name='L2'></a><a href='#L2'>2</a>
|
|
@@ -312,125 +312,157 @@
|
|
|
312
312
|
<a name='L253'></a><a href='#L253'>253</a>
|
|
313
313
|
<a name='L254'></a><a href='#L254'>254</a>
|
|
314
314
|
<a name='L255'></a><a href='#L255'>255</a>
|
|
315
|
-
<a name='L256'></a><a href='#L256'>256</a
|
|
316
|
-
<
|
|
317
|
-
<
|
|
318
|
-
<
|
|
319
|
-
<
|
|
320
|
-
<
|
|
315
|
+
<a name='L256'></a><a href='#L256'>256</a>
|
|
316
|
+
<a name='L257'></a><a href='#L257'>257</a>
|
|
317
|
+
<a name='L258'></a><a href='#L258'>258</a>
|
|
318
|
+
<a name='L259'></a><a href='#L259'>259</a>
|
|
319
|
+
<a name='L260'></a><a href='#L260'>260</a>
|
|
320
|
+
<a name='L261'></a><a href='#L261'>261</a>
|
|
321
|
+
<a name='L262'></a><a href='#L262'>262</a>
|
|
322
|
+
<a name='L263'></a><a href='#L263'>263</a>
|
|
323
|
+
<a name='L264'></a><a href='#L264'>264</a>
|
|
324
|
+
<a name='L265'></a><a href='#L265'>265</a>
|
|
325
|
+
<a name='L266'></a><a href='#L266'>266</a>
|
|
326
|
+
<a name='L267'></a><a href='#L267'>267</a>
|
|
327
|
+
<a name='L268'></a><a href='#L268'>268</a>
|
|
328
|
+
<a name='L269'></a><a href='#L269'>269</a>
|
|
329
|
+
<a name='L270'></a><a href='#L270'>270</a>
|
|
330
|
+
<a name='L271'></a><a href='#L271'>271</a>
|
|
331
|
+
<a name='L272'></a><a href='#L272'>272</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
332
|
+
<span class="cline-any cline-neutral"> </span>
|
|
333
|
+
<span class="cline-any cline-neutral"> </span>
|
|
321
334
|
<span class="cline-any cline-neutral"> </span>
|
|
322
|
-
<span class="cline-any cline-yes">1x</span>
|
|
323
335
|
<span class="cline-any cline-neutral"> </span>
|
|
324
|
-
<span class="cline-any cline-yes">1x</span>
|
|
325
336
|
<span class="cline-any cline-neutral"> </span>
|
|
326
337
|
<span class="cline-any cline-neutral"> </span>
|
|
327
|
-
<span class="cline-any cline-yes">21x</span>
|
|
328
|
-
<span class="cline-any cline-yes">15x</span>
|
|
329
338
|
<span class="cline-any cline-no"> </span>
|
|
330
339
|
<span class="cline-any cline-neutral"> </span>
|
|
340
|
+
<span class="cline-any cline-no"> </span>
|
|
331
341
|
<span class="cline-any cline-neutral"> </span>
|
|
332
|
-
<span class="cline-any cline-yes">15x</span>
|
|
333
|
-
<span class="cline-any cline-yes">15x</span>
|
|
334
|
-
<span class="cline-any cline-yes">15x</span>
|
|
335
|
-
<span class="cline-any cline-yes">15x</span>
|
|
336
342
|
<span class="cline-any cline-neutral"> </span>
|
|
337
|
-
<span class="cline-any cline-
|
|
338
|
-
<span class="cline-any cline-
|
|
339
|
-
<span class="cline-any cline-
|
|
340
|
-
<span class="cline-any cline-yes">11x</span>
|
|
341
|
-
<span class="cline-any cline-yes">11x</span>
|
|
343
|
+
<span class="cline-any cline-no"> </span>
|
|
344
|
+
<span class="cline-any cline-no"> </span>
|
|
345
|
+
<span class="cline-any cline-no"> </span>
|
|
342
346
|
<span class="cline-any cline-neutral"> </span>
|
|
343
|
-
<span class="cline-any cline-yes">11x</span>
|
|
344
347
|
<span class="cline-any cline-neutral"> </span>
|
|
345
|
-
<span class="cline-any cline-
|
|
346
|
-
<span class="cline-any cline-
|
|
347
|
-
<span class="cline-any cline-
|
|
348
|
+
<span class="cline-any cline-no"> </span>
|
|
349
|
+
<span class="cline-any cline-no"> </span>
|
|
350
|
+
<span class="cline-any cline-no"> </span>
|
|
351
|
+
<span class="cline-any cline-no"> </span>
|
|
352
|
+
<span class="cline-any cline-neutral"> </span>
|
|
353
|
+
<span class="cline-any cline-no"> </span>
|
|
354
|
+
<span class="cline-any cline-no"> </span>
|
|
355
|
+
<span class="cline-any cline-no"> </span>
|
|
356
|
+
<span class="cline-any cline-no"> </span>
|
|
357
|
+
<span class="cline-any cline-no"> </span>
|
|
358
|
+
<span class="cline-any cline-neutral"> </span>
|
|
359
|
+
<span class="cline-any cline-no"> </span>
|
|
360
|
+
<span class="cline-any cline-neutral"> </span>
|
|
361
|
+
<span class="cline-any cline-no"> </span>
|
|
362
|
+
<span class="cline-any cline-no"> </span>
|
|
363
|
+
<span class="cline-any cline-no"> </span>
|
|
364
|
+
<span class="cline-any cline-neutral"> </span>
|
|
365
|
+
<span class="cline-any cline-no"> </span>
|
|
366
|
+
<span class="cline-any cline-no"> </span>
|
|
348
367
|
<span class="cline-any cline-neutral"> </span>
|
|
349
|
-
<span class="cline-any cline-yes">1x</span>
|
|
350
|
-
<span class="cline-any cline-yes">1x</span>
|
|
351
368
|
<span class="cline-any cline-neutral"> </span>
|
|
352
369
|
<span class="cline-any cline-neutral"> </span>
|
|
353
370
|
<span class="cline-any cline-neutral"> </span>
|
|
354
371
|
<span class="cline-any cline-neutral"> </span>
|
|
372
|
+
<span class="cline-any cline-no"> </span>
|
|
373
|
+
<span class="cline-any cline-no"> </span>
|
|
374
|
+
<span class="cline-any cline-neutral"> </span>
|
|
375
|
+
<span class="cline-any cline-neutral"> </span>
|
|
376
|
+
<span class="cline-any cline-no"> </span>
|
|
377
|
+
<span class="cline-any cline-neutral"> </span>
|
|
355
378
|
<span class="cline-any cline-neutral"> </span>
|
|
356
|
-
<span class="cline-any cline-yes">11x</span>
|
|
357
|
-
<span class="cline-any cline-yes">4x</span>
|
|
358
379
|
<span class="cline-any cline-neutral"> </span>
|
|
359
380
|
<span class="cline-any cline-neutral"> </span>
|
|
360
|
-
<span class="cline-any cline-
|
|
381
|
+
<span class="cline-any cline-neutral"> </span>
|
|
382
|
+
<span class="cline-any cline-no"> </span>
|
|
361
383
|
<span class="cline-any cline-neutral"> </span>
|
|
362
384
|
<span class="cline-any cline-neutral"> </span>
|
|
363
385
|
<span class="cline-any cline-neutral"> </span>
|
|
364
386
|
<span class="cline-any cline-neutral"> </span>
|
|
387
|
+
<span class="cline-any cline-no"> </span>
|
|
388
|
+
<span class="cline-any cline-no"> </span>
|
|
389
|
+
<span class="cline-any cline-no"> </span>
|
|
365
390
|
<span class="cline-any cline-neutral"> </span>
|
|
366
|
-
<span class="cline-any cline-
|
|
391
|
+
<span class="cline-any cline-no"> </span>
|
|
392
|
+
<span class="cline-any cline-no"> </span>
|
|
393
|
+
<span class="cline-any cline-no"> </span>
|
|
394
|
+
<span class="cline-any cline-no"> </span>
|
|
367
395
|
<span class="cline-any cline-neutral"> </span>
|
|
396
|
+
<span class="cline-any cline-no"> </span>
|
|
397
|
+
<span class="cline-any cline-no"> </span>
|
|
398
|
+
<span class="cline-any cline-no"> </span>
|
|
399
|
+
<span class="cline-any cline-no"> </span>
|
|
400
|
+
<span class="cline-any cline-no"> </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>
|
|
368
404
|
<span class="cline-any cline-neutral"> </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>
|
|
369
409
|
<span class="cline-any cline-neutral"> </span>
|
|
370
410
|
<span class="cline-any cline-neutral"> </span>
|
|
371
|
-
<span class="cline-any cline-yes">2x</span>
|
|
372
|
-
<span class="cline-any cline-yes">2x</span>
|
|
373
411
|
<span class="cline-any cline-no"> </span>
|
|
374
412
|
<span class="cline-any cline-neutral"> </span>
|
|
375
|
-
<span class="cline-any cline-yes">2x</span>
|
|
376
|
-
<span class="cline-any cline-yes">2x</span>
|
|
377
|
-
<span class="cline-any cline-yes">2x</span>
|
|
378
|
-
<span class="cline-any cline-yes">2x</span>
|
|
379
413
|
<span class="cline-any cline-neutral"> </span>
|
|
380
|
-
<span class="cline-any cline-yes">2x</span>
|
|
381
|
-
<span class="cline-any cline-yes">2x</span>
|
|
382
|
-
<span class="cline-any cline-yes">2x</span>
|
|
383
|
-
<span class="cline-any cline-yes">2x</span>
|
|
384
|
-
<span class="cline-any cline-yes">2x</span>
|
|
385
|
-
<span class="cline-any cline-yes">2x</span>
|
|
386
|
-
<span class="cline-any cline-yes">2x</span>
|
|
387
|
-
<span class="cline-any cline-yes">2x</span>
|
|
388
414
|
<span class="cline-any cline-neutral"> </span>
|
|
389
|
-
<span class="cline-any cline-yes">2x</span>
|
|
390
|
-
<span class="cline-any cline-yes">2x</span>
|
|
391
|
-
<span class="cline-any cline-yes">2x</span>
|
|
392
|
-
<span class="cline-any cline-yes">2x</span>
|
|
393
415
|
<span class="cline-any cline-neutral"> </span>
|
|
416
|
+
<span class="cline-any cline-no"> </span>
|
|
417
|
+
<span class="cline-any cline-no"> </span>
|
|
418
|
+
<span class="cline-any cline-no"> </span>
|
|
419
|
+
<span class="cline-any cline-neutral"> </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-neutral"> </span>
|
|
425
|
+
<span class="cline-any cline-no"> </span>
|
|
426
|
+
<span class="cline-any cline-no"> </span>
|
|
394
427
|
<span class="cline-any cline-neutral"> </span>
|
|
395
|
-
<span class="cline-any cline-
|
|
428
|
+
<span class="cline-any cline-no"> </span>
|
|
396
429
|
<span class="cline-any cline-neutral"> </span>
|
|
397
430
|
<span class="cline-any cline-neutral"> </span>
|
|
431
|
+
<span class="cline-any cline-no"> </span>
|
|
398
432
|
<span class="cline-any cline-neutral"> </span>
|
|
433
|
+
<span class="cline-any cline-no"> </span>
|
|
434
|
+
<span class="cline-any cline-no"> </span>
|
|
399
435
|
<span class="cline-any cline-neutral"> </span>
|
|
400
|
-
<span class="cline-any cline-
|
|
436
|
+
<span class="cline-any cline-no"> </span>
|
|
437
|
+
<span class="cline-any cline-no"> </span>
|
|
401
438
|
<span class="cline-any cline-no"> </span>
|
|
402
439
|
<span class="cline-any cline-neutral"> </span>
|
|
403
|
-
<span class="cline-any cline-yes">2x</span>
|
|
404
|
-
<span class="cline-any cline-yes">2x</span>
|
|
405
440
|
<span class="cline-any cline-neutral"> </span>
|
|
406
|
-
<span class="cline-any cline-yes">2x</span>
|
|
407
441
|
<span class="cline-any cline-neutral"> </span>
|
|
408
|
-
<span class="cline-any cline-
|
|
409
|
-
<span class="cline-any cline-
|
|
410
|
-
<span class="cline-any cline-
|
|
411
|
-
<span class="cline-any cline-yes">12x</span>
|
|
442
|
+
<span class="cline-any cline-neutral"> </span>
|
|
443
|
+
<span class="cline-any cline-no"> </span>
|
|
444
|
+
<span class="cline-any cline-no"> </span>
|
|
412
445
|
<span class="cline-any cline-neutral"> </span>
|
|
413
446
|
<span class="cline-any cline-neutral"> </span>
|
|
414
447
|
<span class="cline-any cline-no"> </span>
|
|
415
448
|
<span class="cline-any cline-neutral"> </span>
|
|
416
|
-
<span class="cline-any cline-yes">2x</span>
|
|
417
449
|
<span class="cline-any cline-neutral"> </span>
|
|
418
450
|
<span class="cline-any cline-neutral"> </span>
|
|
419
451
|
<span class="cline-any cline-neutral"> </span>
|
|
420
|
-
<span class="cline-any cline-
|
|
452
|
+
<span class="cline-any cline-no"> </span>
|
|
421
453
|
<span class="cline-any cline-no"> </span>
|
|
422
454
|
<span class="cline-any cline-neutral"> </span>
|
|
423
455
|
<span class="cline-any cline-neutral"> </span>
|
|
424
456
|
<span class="cline-any cline-neutral"> </span>
|
|
425
|
-
<span class="cline-any cline-
|
|
426
|
-
<span class="cline-any cline-
|
|
457
|
+
<span class="cline-any cline-no"> </span>
|
|
458
|
+
<span class="cline-any cline-no"> </span>
|
|
427
459
|
<span class="cline-any cline-neutral"> </span>
|
|
428
|
-
<span class="cline-any cline-
|
|
460
|
+
<span class="cline-any cline-no"> </span>
|
|
429
461
|
<span class="cline-any cline-neutral"> </span>
|
|
430
|
-
<span class="cline-any cline-
|
|
431
|
-
<span class="cline-any cline-
|
|
432
|
-
<span class="cline-any cline-
|
|
433
|
-
<span class="cline-any cline-
|
|
462
|
+
<span class="cline-any cline-no"> </span>
|
|
463
|
+
<span class="cline-any cline-no"> </span>
|
|
464
|
+
<span class="cline-any cline-no"> </span>
|
|
465
|
+
<span class="cline-any cline-no"> </span>
|
|
434
466
|
<span class="cline-any cline-neutral"> </span>
|
|
435
467
|
<span class="cline-any cline-neutral"> </span>
|
|
436
468
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -438,17 +470,17 @@
|
|
|
438
470
|
<span class="cline-any cline-neutral"> </span>
|
|
439
471
|
<span class="cline-any cline-neutral"> </span>
|
|
440
472
|
<span class="cline-any cline-neutral"> </span>
|
|
441
|
-
<span class="cline-any cline-
|
|
473
|
+
<span class="cline-any cline-no"> </span>
|
|
442
474
|
<span class="cline-any cline-neutral"> </span>
|
|
443
475
|
<span class="cline-any cline-neutral"> </span>
|
|
444
476
|
<span class="cline-any cline-neutral"> </span>
|
|
445
|
-
<span class="cline-any cline-
|
|
446
|
-
<span class="cline-any cline-
|
|
447
|
-
<span class="cline-any cline-
|
|
448
|
-
<span class="cline-any cline-
|
|
477
|
+
<span class="cline-any cline-no"> </span>
|
|
478
|
+
<span class="cline-any cline-no"> </span>
|
|
479
|
+
<span class="cline-any cline-no"> </span>
|
|
480
|
+
<span class="cline-any cline-no"> </span>
|
|
449
481
|
<span class="cline-any cline-neutral"> </span>
|
|
450
482
|
<span class="cline-any cline-neutral"> </span>
|
|
451
|
-
<span class="cline-any cline-
|
|
483
|
+
<span class="cline-any cline-no"> </span>
|
|
452
484
|
<span class="cline-any cline-neutral"> </span>
|
|
453
485
|
<span class="cline-any cline-neutral"> </span>
|
|
454
486
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -458,28 +490,28 @@
|
|
|
458
490
|
<span class="cline-any cline-neutral"> </span>
|
|
459
491
|
<span class="cline-any cline-neutral"> </span>
|
|
460
492
|
<span class="cline-any cline-neutral"> </span>
|
|
461
|
-
<span class="cline-any cline-
|
|
462
|
-
<span class="cline-any cline-
|
|
493
|
+
<span class="cline-any cline-no"> </span>
|
|
494
|
+
<span class="cline-any cline-no"> </span>
|
|
463
495
|
<span class="cline-any cline-neutral"> </span>
|
|
464
496
|
<span class="cline-any cline-neutral"> </span>
|
|
465
497
|
<span class="cline-any cline-neutral"> </span>
|
|
466
498
|
<span class="cline-any cline-neutral"> </span>
|
|
467
|
-
<span class="cline-any cline-
|
|
468
|
-
<span class="cline-any cline-
|
|
499
|
+
<span class="cline-any cline-no"> </span>
|
|
500
|
+
<span class="cline-any cline-no"> </span>
|
|
469
501
|
<span class="cline-any cline-no"> </span>
|
|
470
502
|
<span class="cline-any cline-neutral"> </span>
|
|
471
503
|
<span class="cline-any cline-neutral"> </span>
|
|
472
|
-
<span class="cline-any cline-
|
|
473
|
-
<span class="cline-any cline-
|
|
474
|
-
<span class="cline-any cline-
|
|
475
|
-
<span class="cline-any cline-
|
|
476
|
-
<span class="cline-any cline-
|
|
477
|
-
<span class="cline-any cline-
|
|
504
|
+
<span class="cline-any cline-no"> </span>
|
|
505
|
+
<span class="cline-any cline-no"> </span>
|
|
506
|
+
<span class="cline-any cline-no"> </span>
|
|
507
|
+
<span class="cline-any cline-no"> </span>
|
|
508
|
+
<span class="cline-any cline-no"> </span>
|
|
509
|
+
<span class="cline-any cline-no"> </span>
|
|
478
510
|
<span class="cline-any cline-neutral"> </span>
|
|
479
|
-
<span class="cline-any cline-
|
|
511
|
+
<span class="cline-any cline-no"> </span>
|
|
480
512
|
<span class="cline-any cline-neutral"> </span>
|
|
481
|
-
<span class="cline-any cline-
|
|
482
|
-
<span class="cline-any cline-
|
|
513
|
+
<span class="cline-any cline-no"> </span>
|
|
514
|
+
<span class="cline-any cline-no"> </span>
|
|
483
515
|
<span class="cline-any cline-neutral"> </span>
|
|
484
516
|
<span class="cline-any cline-neutral"> </span>
|
|
485
517
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -493,69 +525,69 @@
|
|
|
493
525
|
<span class="cline-any cline-neutral"> </span>
|
|
494
526
|
<span class="cline-any cline-neutral"> </span>
|
|
495
527
|
<span class="cline-any cline-neutral"> </span>
|
|
496
|
-
<span class="cline-any cline-
|
|
497
|
-
<span class="cline-any cline-
|
|
528
|
+
<span class="cline-any cline-no"> </span>
|
|
529
|
+
<span class="cline-any cline-no"> </span>
|
|
498
530
|
<span class="cline-any cline-neutral"> </span>
|
|
499
531
|
<span class="cline-any cline-neutral"> </span>
|
|
500
532
|
<span class="cline-any cline-neutral"> </span>
|
|
501
533
|
<span class="cline-any cline-neutral"> </span>
|
|
502
|
-
<span class="cline-any cline-
|
|
534
|
+
<span class="cline-any cline-no"> </span>
|
|
503
535
|
<span class="cline-any cline-no"> </span>
|
|
504
536
|
<span class="cline-any cline-neutral"> </span>
|
|
505
537
|
<span class="cline-any cline-neutral"> </span>
|
|
506
538
|
<span class="cline-any cline-neutral"> </span>
|
|
507
|
-
<span class="cline-any cline-
|
|
539
|
+
<span class="cline-any cline-no"> </span>
|
|
508
540
|
<span class="cline-any cline-no"> </span>
|
|
509
541
|
<span class="cline-any cline-neutral"> </span>
|
|
510
542
|
<span class="cline-any cline-neutral"> </span>
|
|
511
|
-
<span class="cline-any cline-
|
|
512
|
-
<span class="cline-any cline-
|
|
543
|
+
<span class="cline-any cline-no"> </span>
|
|
544
|
+
<span class="cline-any cline-no"> </span>
|
|
513
545
|
<span class="cline-any cline-neutral"> </span>
|
|
514
|
-
<span class="cline-any cline-
|
|
546
|
+
<span class="cline-any cline-no"> </span>
|
|
515
547
|
<span class="cline-any cline-neutral"> </span>
|
|
516
548
|
<span class="cline-any cline-neutral"> </span>
|
|
517
549
|
<span class="cline-any cline-neutral"> </span>
|
|
518
550
|
<span class="cline-any cline-neutral"> </span>
|
|
519
551
|
<span class="cline-any cline-neutral"> </span>
|
|
520
|
-
<span class="cline-any cline-
|
|
552
|
+
<span class="cline-any cline-no"> </span>
|
|
521
553
|
<span class="cline-any cline-no"> </span>
|
|
522
554
|
<span class="cline-any cline-neutral"> </span>
|
|
523
555
|
<span class="cline-any cline-neutral"> </span>
|
|
524
|
-
<span class="cline-any cline-
|
|
525
|
-
<span class="cline-any cline-
|
|
556
|
+
<span class="cline-any cline-no"> </span>
|
|
557
|
+
<span class="cline-any cline-no"> </span>
|
|
526
558
|
<span class="cline-any cline-neutral"> </span>
|
|
527
|
-
<span class="cline-any cline-
|
|
559
|
+
<span class="cline-any cline-no"> </span>
|
|
528
560
|
<span class="cline-any cline-neutral"> </span>
|
|
529
561
|
<span class="cline-any cline-neutral"> </span>
|
|
530
562
|
<span class="cline-any cline-neutral"> </span>
|
|
531
563
|
<span class="cline-any cline-neutral"> </span>
|
|
532
|
-
<span class="cline-any cline-
|
|
564
|
+
<span class="cline-any cline-no"> </span>
|
|
533
565
|
<span class="cline-any cline-neutral"> </span>
|
|
534
|
-
<span class="cline-any cline-
|
|
566
|
+
<span class="cline-any cline-no"> </span>
|
|
535
567
|
<span class="cline-any cline-neutral"> </span>
|
|
536
568
|
<span class="cline-any cline-neutral"> </span>
|
|
537
|
-
<span class="cline-any cline-
|
|
538
|
-
<span class="cline-any cline-
|
|
569
|
+
<span class="cline-any cline-no"> </span>
|
|
570
|
+
<span class="cline-any cline-no"> </span>
|
|
539
571
|
<span class="cline-any cline-no"> </span>
|
|
540
572
|
<span class="cline-any cline-neutral"> </span>
|
|
541
|
-
<span class="cline-any cline-
|
|
542
|
-
<span class="cline-any cline-
|
|
573
|
+
<span class="cline-any cline-no"> </span>
|
|
574
|
+
<span class="cline-any cline-no"> </span>
|
|
543
575
|
<span class="cline-any cline-neutral"> </span>
|
|
544
576
|
<span class="cline-any cline-neutral"> </span>
|
|
545
577
|
<span class="cline-any cline-neutral"> </span>
|
|
546
578
|
<span class="cline-any cline-neutral"> </span>
|
|
547
|
-
<span class="cline-any cline-
|
|
579
|
+
<span class="cline-any cline-no"> </span>
|
|
548
580
|
<span class="cline-any cline-neutral"> </span>
|
|
549
581
|
<span class="cline-any cline-neutral"> </span>
|
|
550
582
|
<span class="cline-any cline-neutral"> </span>
|
|
551
|
-
<span class="cline-any cline-
|
|
552
|
-
<span class="cline-any cline-
|
|
553
|
-
<span class="cline-any cline-
|
|
583
|
+
<span class="cline-any cline-no"> </span>
|
|
584
|
+
<span class="cline-any cline-no"> </span>
|
|
585
|
+
<span class="cline-any cline-no"> </span>
|
|
554
586
|
<span class="cline-any cline-neutral"> </span>
|
|
555
|
-
<span class="cline-any cline-
|
|
556
|
-
<span class="cline-any cline-
|
|
557
|
-
<span class="cline-any cline-
|
|
558
|
-
<span class="cline-any cline-
|
|
587
|
+
<span class="cline-any cline-no"> </span>
|
|
588
|
+
<span class="cline-any cline-no"> </span>
|
|
589
|
+
<span class="cline-any cline-no"> </span>
|
|
590
|
+
<span class="cline-any cline-no"> </span>
|
|
559
591
|
<span class="cline-any cline-neutral"> </span>
|
|
560
592
|
<span class="cline-any cline-neutral"> </span>
|
|
561
593
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -564,8 +596,8 @@
|
|
|
564
596
|
<span class="cline-any cline-neutral"> </span>
|
|
565
597
|
<span class="cline-any cline-neutral"> </span>
|
|
566
598
|
<span class="cline-any cline-neutral"> </span>
|
|
567
|
-
<span class="cline-any cline-
|
|
568
|
-
<span class="cline-any cline-
|
|
599
|
+
<span class="cline-any cline-no"> </span>
|
|
600
|
+
<span class="cline-any cline-no"> </span>
|
|
569
601
|
<span class="cline-any cline-neutral"> </span>
|
|
570
602
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">import _ from 'lodash'
|
|
571
603
|
import makeDebug from 'debug'
|
|
@@ -574,118 +606,134 @@ import { getItems, replaceItems } from 'feathers-hooks-common'
|
|
|
574
606
|
import { Forbidden, BadRequest } from '@feathersjs/errors'
|
|
575
607
|
import { Roles, RoleNames } from '../../common/permissions'
|
|
576
608
|
|
|
577
|
-
const verifyHooks = require('feathers-authentication-management').hooks
|
|
609
|
+
const verifyHooks = <span class="cstat-no" title="statement not covered" >require('feathers-authentication-management').hooks</span>
|
|
578
610
|
|
|
579
|
-
const debug = makeDebug('kdk:core:users:hooks')
|
|
611
|
+
const debug = <span class="cstat-no" title="statement not covered" >makeDebug('kdk:core:users:hooks')</span>
|
|
580
612
|
|
|
581
|
-
export function enforcePasswordPolicy (options = <span class="branch-0 cbranch-no" title="branch not covered" >{})
|
|
582
|
-
return
|
|
583
|
-
|
|
584
|
-
<span class="cstat-no" title="statement not covered" > throw
|
|
613
|
+
export function <span class="fstat-no" title="function not covered" >enforcePasswordPolicy </span>(options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
614
|
+
<span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >as</span>ync function (hook) {</span>
|
|
615
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
|
|
616
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'enforePasswordPolicy\' hook should only be used as a \'before\' hook.')</span>
|
|
585
617
|
}
|
|
586
618
|
// By pass check ?
|
|
587
|
-
|
|
588
|
-
const app = hook.app
|
|
589
|
-
const item = getItems(hook)
|
|
590
|
-
const user = options.userAsItem ? item : hook.params.user
|
|
619
|
+
<span class="cstat-no" title="statement not covered" > if (hook.params.force) <span class="cstat-no" title="statement not covered" >return hook</span></span>
|
|
620
|
+
const app = <span class="cstat-no" title="statement not covered" >hook.app</span>
|
|
621
|
+
const item = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
|
|
622
|
+
const user = <span class="cstat-no" title="statement not covered" >options.userAsItem ? item : hook.params.user</span>
|
|
591
623
|
// Get both password(s) since some rules target one and some the other one(s)
|
|
592
|
-
const clearPassword = _.get(item, options.passwordField || 'clearPassword')
|
|
593
|
-
const hashedPasswords = _.get(user, options.previousPasswordsField || 'previousPasswords', [])
|
|
594
|
-
if (clearPassword && hashedPasswords && app.getPasswordPolicy) {
|
|
595
|
-
debug('Enforcing password policy on user', user)
|
|
596
|
-
const validator = app.getPasswordPolicy()
|
|
624
|
+
const clearPassword = <span class="cstat-no" title="statement not covered" >_.get(item, options.passwordField || 'clearPassword')</span>
|
|
625
|
+
const hashedPasswords = <span class="cstat-no" title="statement not covered" >_.get(user, options.previousPasswordsField || 'previousPasswords', [])</span>
|
|
626
|
+
<span class="cstat-no" title="statement not covered" > if (clearPassword && hashedPasswords && app.getPasswordPolicy) {</span>
|
|
627
|
+
<span class="cstat-no" title="statement not covered" > debug('Enforcing password policy on user', user)</span>
|
|
628
|
+
const validator = <span class="cstat-no" title="statement not covered" >app.getPasswordPolicy()</span>
|
|
597
629
|
// First check the clear password
|
|
598
|
-
const result = validator.validate(clearPassword, { list: true })
|
|
630
|
+
const result = <span class="cstat-no" title="statement not covered" >validator.validate(clearPassword, { list: true })</span>
|
|
599
631
|
// Then check for the last used passwords using password policy verifier
|
|
600
|
-
for (let i = 0
|
|
601
|
-
try {
|
|
602
|
-
await validator.comparePassword({ password: hashedPasswords[i] }, clearPassword)
|
|
632
|
+
<span class="cstat-no" title="statement not covered" > for (let i = <span class="cstat-no" title="statement not covered" >0;</span> i < hashedPasswords.length; i++) {</span>
|
|
633
|
+
<span class="cstat-no" title="statement not covered" > try {</span>
|
|
634
|
+
<span class="cstat-no" title="statement not covered" > await validator.comparePassword({ password: hashedPasswords[i] }, clearPassword)</span>
|
|
603
635
|
// If we have found a similar password stop
|
|
604
|
-
result.push('previous')
|
|
605
|
-
break
|
|
636
|
+
<span class="cstat-no" title="statement not covered" > result.push('previous')</span>
|
|
637
|
+
<span class="cstat-no" title="statement not covered" > break</span>
|
|
606
638
|
} catch (error) {
|
|
607
639
|
// Check next one
|
|
608
640
|
}
|
|
609
641
|
}
|
|
610
642
|
|
|
611
|
-
if (!_.isEmpty(result)) {
|
|
612
|
-
throw new BadRequest('The provided password does not comply to the password policy', {
|
|
643
|
+
<span class="cstat-no" title="statement not covered" > if (!_.isEmpty(result)) {</span>
|
|
644
|
+
<span class="cstat-no" title="statement not covered" > throw new BadRequest('The provided password does not comply to the password policy', {</span>
|
|
613
645
|
translation: {
|
|
614
646
|
key: 'WEAK_PASSWORD',
|
|
615
|
-
keys: result.map(
|
|
647
|
+
keys: result.map(<span class="fstat-no" title="function not covered" >ru</span>le => <span class="cstat-no" title="statement not covered" >'WEAK_PASSWORD_' + rule.toUpperCase())</span>,
|
|
616
648
|
params: Object.assign({ failedRules: result }, _.omit(validator.options, ['prohibited']))
|
|
617
649
|
}
|
|
618
650
|
})
|
|
619
651
|
}
|
|
620
652
|
}
|
|
621
|
-
return hook
|
|
653
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
622
654
|
}
|
|
623
655
|
}
|
|
624
656
|
|
|
625
|
-
export function storePreviousPassword (options = <span class="branch-0 cbranch-no" title="branch not covered" >{})
|
|
626
|
-
return function (hook) {
|
|
627
|
-
|
|
628
|
-
<span class="cstat-no" title="statement not covered" > throw
|
|
657
|
+
export function <span class="fstat-no" title="function not covered" >storePreviousPassword </span>(options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
658
|
+
<span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
|
|
659
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
|
|
660
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'storePreviousPassword\' hook should only be used as a \'before\' hook.')</span>
|
|
629
661
|
}
|
|
630
|
-
const app = hook.app
|
|
631
|
-
const data = getItems(hook)
|
|
632
|
-
|
|
633
|
-
const validator = app.getPasswordPolicy()
|
|
662
|
+
const app = <span class="cstat-no" title="statement not covered" >hook.app</span>
|
|
663
|
+
const data = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
|
|
664
|
+
<span class="cstat-no" title="statement not covered" > if (app.getPasswordPolicy && hook.params.previousItem) {</span>
|
|
665
|
+
const validator = <span class="cstat-no" title="statement not covered" >app.getPasswordPolicy()</span>
|
|
634
666
|
// Based on previous password value
|
|
635
|
-
const user = hook.params.previousItem
|
|
636
|
-
const passwordField = options.passwordField || 'password'
|
|
637
|
-
const password = _.get(user, passwordField)
|
|
638
|
-
|
|
639
|
-
const previousPasswordsField = options.previousPasswordsField || 'previousPasswords'
|
|
640
|
-
const previousPasswords = _.get(user, previousPasswordsField, [])
|
|
641
|
-
debug(`Moving previous password from field ${passwordField} in field ${previousPasswords} on user`, user)
|
|
642
|
-
previousPasswords.push(password)
|
|
667
|
+
const user = <span class="cstat-no" title="statement not covered" >hook.params.previousItem</span>
|
|
668
|
+
const passwordField = <span class="cstat-no" title="statement not covered" >options.passwordField || 'password'</span>
|
|
669
|
+
const password = <span class="cstat-no" title="statement not covered" >_.get(user, passwordField)</span>
|
|
670
|
+
<span class="cstat-no" title="statement not covered" > if (password) {</span>
|
|
671
|
+
const previousPasswordsField = <span class="cstat-no" title="statement not covered" >options.previousPasswordsField || 'previousPasswords'</span>
|
|
672
|
+
const previousPasswords = <span class="cstat-no" title="statement not covered" >_.get(user, previousPasswordsField, [])</span>
|
|
673
|
+
<span class="cstat-no" title="statement not covered" > debug(`Moving previous password from field ${passwordField} in field ${previousPasswords} on user`, user)</span>
|
|
674
|
+
<span class="cstat-no" title="statement not covered" > previousPasswords.push(password)</span>
|
|
643
675
|
// Pop oldest password when required
|
|
644
|
-
const max = _.get(validator, 'options.history', 5)
|
|
645
|
-
|
|
646
|
-
Object.assign(data, { [previousPasswordsField]: previousPasswords })
|
|
647
|
-
replaceItems(hook, data)
|
|
676
|
+
const max = <span class="cstat-no" title="statement not covered" >_.get(validator, 'options.history', 5)</span>
|
|
677
|
+
<span class="cstat-no" title="statement not covered" > if (previousPasswords.length > max) <span class="cstat-no" title="statement not covered" >previousPasswords.shift()</span></span>
|
|
678
|
+
<span class="cstat-no" title="statement not covered" > Object.assign(data, { [previousPasswordsField]: previousPasswords })</span>
|
|
679
|
+
<span class="cstat-no" title="statement not covered" > replaceItems(hook, data)</span>
|
|
648
680
|
}
|
|
649
681
|
}
|
|
650
|
-
return hook
|
|
682
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
651
683
|
}
|
|
652
684
|
}
|
|
653
685
|
|
|
654
|
-
export function generatePassword (
|
|
655
|
-
<span class="
|
|
656
|
-
<span class="cstat-no" title="statement not covered" >
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
686
|
+
export function <span class="fstat-no" title="function not covered" >generatePassword </span>(options = <span class="branch-0 cbranch-no" title="branch not covered" >{})</span> {
|
|
687
|
+
<span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >fu</span>nction (hook) {</span>
|
|
688
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
|
|
689
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'generatePassword\' hook should only be used as a \'before\' hook.')</span>
|
|
690
|
+
}
|
|
691
|
+
const app = <span class="cstat-no" title="statement not covered" >hook.app</span>
|
|
692
|
+
const data = <span class="cstat-no" title="statement not covered" >hook.data</span>
|
|
693
|
+
const passwordField = <span class="cstat-no" title="statement not covered" >options.passwordField || 'password'</span>
|
|
694
|
+
const suggestedPasswordField = <span class="cstat-no" title="statement not covered" >options.suggestedPasswordField || 'password'</span>
|
|
695
|
+
// If a password is already provided and compliant with rules we will use it
|
|
696
|
+
<span class="cstat-no" title="statement not covered" > if (_.get(data, suggestedPasswordField)) {</span>
|
|
697
|
+
<span class="cstat-no" title="statement not covered" > _.set(data, passwordField, _.get(data, suggestedPasswordField))</span>
|
|
698
|
+
// Avoid leaking clear password
|
|
699
|
+
<span class="cstat-no" title="statement not covered" > _.unset(data, suggestedPasswordField)</span>
|
|
700
|
+
}
|
|
701
|
+
// Generated password rule
|
|
702
|
+
const passwordRule = <span class="cstat-no" title="statement not covered" >new RegExp('[\\w\\d\\?\\-]')</span>
|
|
703
|
+
// If we have a password policy ensure we match it
|
|
704
|
+
<span class="cstat-no" title="statement not covered" > if (app.getPasswordPolicy) {</span>
|
|
705
|
+
const validator = <span class="cstat-no" title="statement not covered" >app.getPasswordPolicy()</span>
|
|
706
|
+
// Check if a compliant password has been provided, otherwise generate it
|
|
707
|
+
<span class="cstat-no" title="statement not covered" > if (!_.get(data, passwordField) || !validator.validate(_.get(data, passwordField))) {</span>
|
|
708
|
+
<span class="cstat-no" title="statement not covered" > do {</span>
|
|
709
|
+
<span class="cstat-no" title="statement not covered" > _.set(data, passwordField, generateRandomPassword(validator.options.minLength || 12, false, passwordRule))</span>
|
|
710
|
+
} while (!validator.validate(_.get(data, passwordField)))
|
|
711
|
+
}
|
|
712
|
+
} else {
|
|
713
|
+
// Check if a password has been provided, otherwise generate it
|
|
714
|
+
<span class="cstat-no" title="statement not covered" > if (!_.get(data, passwordField)) {</span>
|
|
715
|
+
<span class="cstat-no" title="statement not covered" > _.set(data, passwordField, generateRandomPassword(12, false, passwordRule))</span>
|
|
716
|
+
}
|
|
717
|
+
}
|
|
718
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
670
719
|
}
|
|
671
|
-
return hook
|
|
672
720
|
}
|
|
673
721
|
|
|
674
|
-
export function preventRemoveUser (hook) {
|
|
675
|
-
|
|
676
|
-
<span class="cstat-no" title="statement not covered" > throw
|
|
722
|
+
export function <span class="fstat-no" title="function not covered" >preventRemoveUser </span>(hook) {
|
|
723
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
|
|
724
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'preventRemoveUser\' hook should only be used as a \'before\' hook.')</span>
|
|
677
725
|
}
|
|
678
726
|
|
|
679
727
|
// By pass check ?
|
|
680
|
-
|
|
681
|
-
const user = hook.params.user
|
|
728
|
+
<span class="cstat-no" title="statement not covered" > if (hook.params.force) <span class="cstat-no" title="statement not covered" >return hook</span></span>
|
|
729
|
+
const user = <span class="cstat-no" title="statement not covered" >hook.params.user</span>
|
|
682
730
|
// Check if the target is the current user
|
|
683
|
-
|
|
731
|
+
<span class="cstat-no" title="statement not covered" > if ((user._id.toString() === hook.id.toString()) && user.organisations) {</span>
|
|
684
732
|
// We must ensure the user is no more a owner of an organisation
|
|
685
|
-
const owningOrganisations = _.filter(user.organisations, { permissions: RoleNames[Roles.owner] })
|
|
686
|
-
if (!_.isEmpty(owningOrganisations)) {
|
|
687
|
-
debug('Cannot remove the user: ', user)
|
|
688
|
-
throw new Forbidden('You are not allowed to delete the user ' + user.name, {
|
|
733
|
+
const owningOrganisations = <span class="cstat-no" title="statement not covered" >_.filter(user.organisations, { permissions: RoleNames[Roles.owner] })</span>
|
|
734
|
+
<span class="cstat-no" title="statement not covered" > if (!_.isEmpty(owningOrganisations)) {</span>
|
|
735
|
+
<span class="cstat-no" title="statement not covered" > debug('Cannot remove the user: ', user)</span>
|
|
736
|
+
<span class="cstat-no" title="statement not covered" > throw new Forbidden('You are not allowed to delete the user ' + user.name, {</span>
|
|
689
737
|
translation: {
|
|
690
738
|
key: 'CANNOT_REMOVE_USER',
|
|
691
739
|
params: { user: user.name }
|
|
@@ -693,17 +741,17 @@ export function preventRemoveUser (hook) {
|
|
|
693
741
|
})
|
|
694
742
|
}
|
|
695
743
|
}
|
|
696
|
-
return hook
|
|
744
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
697
745
|
}
|
|
698
746
|
|
|
699
|
-
export function joinOrganisation (hook) {
|
|
700
|
-
const app = hook.app
|
|
701
|
-
const subject = getItems(hook)
|
|
702
|
-
const authorisationService = app.getService('authorisations')
|
|
703
|
-
const usersService = app.getService('users')
|
|
747
|
+
export function <span class="fstat-no" title="function not covered" >joinOrganisation </span>(hook) {
|
|
748
|
+
const app = <span class="cstat-no" title="statement not covered" >hook.app</span>
|
|
749
|
+
const subject = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
|
|
750
|
+
const authorisationService = <span class="cstat-no" title="statement not covered" >app.getService('authorisations')</span>
|
|
751
|
+
const usersService = <span class="cstat-no" title="statement not covered" >app.getService('users')</span>
|
|
704
752
|
|
|
705
753
|
// Set membership for the created user
|
|
706
|
-
return authorisationService.create({
|
|
754
|
+
<span class="cstat-no" title="statement not covered" > return authorisationService.create({</span>
|
|
707
755
|
scope: 'organisations',
|
|
708
756
|
permissions: subject.sponsor.roleGranted, // Member by default
|
|
709
757
|
resource: subject.sponsor.organisationId,
|
|
@@ -712,29 +760,29 @@ export function joinOrganisation (hook) {
|
|
|
712
760
|
subjectsService: usersService,
|
|
713
761
|
subjects: [subject]
|
|
714
762
|
})
|
|
715
|
-
.then(
|
|
716
|
-
debug('Organisation membership set for user ' + subject._id)
|
|
717
|
-
return hook
|
|
763
|
+
.then(<span class="fstat-no" title="function not covered" >au</span>thorisation => {
|
|
764
|
+
<span class="cstat-no" title="statement not covered" > debug('Organisation membership set for user ' + subject._id)</span>
|
|
765
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
718
766
|
})
|
|
719
767
|
}
|
|
720
768
|
|
|
721
|
-
export function leaveOrganisations (options = { skipPrivate: true }) {
|
|
722
|
-
return
|
|
723
|
-
|
|
724
|
-
<span class="cstat-no" title="statement not covered" > throw
|
|
769
|
+
export function <span class="fstat-no" title="function not covered" >leaveOrganisations </span>(options = <span class="branch-0 cbranch-no" title="branch not covered" >{ skipPrivate: true })</span> {
|
|
770
|
+
<span class="cstat-no" title="statement not covered" > return <span class="fstat-no" title="function not covered" >as</span>ync function (hook) {</span>
|
|
771
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
|
|
772
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'leaveOrganisations\' hook should only be used as a \'after\' hook.')</span>
|
|
725
773
|
}
|
|
726
774
|
|
|
727
|
-
const app = hook.app
|
|
728
|
-
const organisationsService = app.getService('organisations')
|
|
729
|
-
const authorisationService = app.getService('authorisations')
|
|
730
|
-
const usersService = app.getService('users')
|
|
731
|
-
const subject = getItems(hook)
|
|
732
|
-
const organisations = _.get(subject, 'organisations', [])
|
|
775
|
+
const app = <span class="cstat-no" title="statement not covered" >hook.app</span>
|
|
776
|
+
const organisationsService = <span class="cstat-no" title="statement not covered" >app.getService('organisations')</span>
|
|
777
|
+
const authorisationService = <span class="cstat-no" title="statement not covered" >app.getService('authorisations')</span>
|
|
778
|
+
const usersService = <span class="cstat-no" title="statement not covered" >app.getService('users')</span>
|
|
779
|
+
const subject = <span class="cstat-no" title="statement not covered" >getItems(hook)</span>
|
|
780
|
+
const organisations = <span class="cstat-no" title="statement not covered" >_.get(subject, 'organisations', [])</span>
|
|
733
781
|
|
|
734
|
-
await Promise.all(organisations.map(
|
|
782
|
+
<span class="cstat-no" title="statement not covered" > await Promise.all(organisations.map(<span class="fstat-no" title="function not covered" >or</span>ganisation => {</span>
|
|
735
783
|
// Unset membership on org except private org if required
|
|
736
|
-
|
|
737
|
-
return authorisationService.remove(organisation._id.toString(), {
|
|
784
|
+
<span class="cstat-no" title="statement not covered" > if (options.skipPrivate && organisation._id.toString() === subject._id.toString()) <span class="cstat-no" title="statement not covered" >return</span></span>
|
|
785
|
+
<span class="cstat-no" title="statement not covered" > return authorisationService.remove(organisation._id.toString(), {</span>
|
|
738
786
|
query: {
|
|
739
787
|
scope: 'organisations'
|
|
740
788
|
},
|
|
@@ -748,69 +796,69 @@ export function leaveOrganisations (options = { skipPrivate: true }) {
|
|
|
748
796
|
})
|
|
749
797
|
}))
|
|
750
798
|
|
|
751
|
-
debug('Membership unset for all organisations on user ' + subject._id)
|
|
752
|
-
return hook
|
|
799
|
+
<span class="cstat-no" title="statement not covered" > debug('Membership unset for all organisations on user ' + subject._id)</span>
|
|
800
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
753
801
|
}
|
|
754
802
|
}
|
|
755
803
|
|
|
756
|
-
export function sendVerificationEmail (hook) {
|
|
757
|
-
|
|
758
|
-
<span class="cstat-no" title="statement not covered" > throw
|
|
804
|
+
export function <span class="fstat-no" title="function not covered" >sendVerificationEmail </span>(hook) {
|
|
805
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'after') {</span>
|
|
806
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'sendVerificationEmail\' hook should only be used as a \'after\' hook.')</span>
|
|
759
807
|
}
|
|
760
808
|
|
|
761
809
|
// Check for by-passing OAuth2 providers
|
|
762
|
-
for (const provider of hook.app.authenticationProviders) {
|
|
763
|
-
<span class="cstat-no" title="statement not covered" > if (hook.result[provider + 'Id']) <span class="cstat-no" title="statement not covered" >return
|
|
810
|
+
<span class="cstat-no" title="statement not covered" > for (const provider of hook.app.authenticationProviders) {</span>
|
|
811
|
+
<span class="cstat-no" title="statement not covered" > if (hook.result[provider + 'Id']) <span class="cstat-no" title="statement not covered" >return Promise.resolve(hook)</span></span>
|
|
764
812
|
}
|
|
765
813
|
|
|
766
|
-
const accountService = hook.app.getService('account')
|
|
767
|
-
return accountService.options.notifier('resendVerifySignup', hook.result)
|
|
768
|
-
.then(
|
|
769
|
-
return hook
|
|
814
|
+
const accountService = <span class="cstat-no" title="statement not covered" >hook.app.getService('account')</span>
|
|
815
|
+
<span class="cstat-no" title="statement not covered" > return accountService.options.notifier('resendVerifySignup', hook.result)</span>
|
|
816
|
+
.then(<span class="fstat-no" title="function not covered" >re</span>sult => {
|
|
817
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
770
818
|
})
|
|
771
819
|
}
|
|
772
820
|
|
|
773
|
-
export function sendInvitationEmail (hook) {
|
|
821
|
+
export function <span class="fstat-no" title="function not covered" >sendInvitationEmail </span>(hook) {
|
|
774
822
|
// Before because we need to send the clear password by email
|
|
775
|
-
|
|
776
|
-
<span class="cstat-no" title="statement not covered" > throw
|
|
823
|
+
<span class="cstat-no" title="statement not covered" > if (hook.type !== 'before') {</span>
|
|
824
|
+
<span class="cstat-no" title="statement not covered" > throw new Error('The \'sendInvitationEmail\' hook should only be used as a \'before\' hook.')</span>
|
|
777
825
|
}
|
|
778
826
|
|
|
779
|
-
const accountService = hook.app.getService('account')
|
|
780
|
-
return accountService.options.notifier('sendInvitation', hook.data)
|
|
781
|
-
.then(
|
|
782
|
-
return hook
|
|
827
|
+
const accountService = <span class="cstat-no" title="statement not covered" >hook.app.getService('account')</span>
|
|
828
|
+
<span class="cstat-no" title="statement not covered" > return accountService.options.notifier('sendInvitation', hook.data)</span>
|
|
829
|
+
.then(<span class="fstat-no" title="function not covered" >re</span>sult => {
|
|
830
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
783
831
|
})
|
|
784
832
|
}
|
|
785
833
|
|
|
786
|
-
export function addVerification (hook) {
|
|
787
|
-
const accountService = hook.app.getService('account')
|
|
834
|
+
export function <span class="fstat-no" title="function not covered" >addVerification </span>(hook) {
|
|
835
|
+
const accountService = <span class="cstat-no" title="statement not covered" >hook.app.getService('account')</span>
|
|
788
836
|
|
|
789
|
-
return verifyHooks.addVerification(accountService.getPath(true))(hook)
|
|
790
|
-
.then(
|
|
837
|
+
<span class="cstat-no" title="statement not covered" > return verifyHooks.addVerification(accountService.getPath(true))(hook)</span>
|
|
838
|
+
.then(<span class="fstat-no" title="function not covered" >ho</span>ok => {
|
|
791
839
|
// Check for OAuth2 providers
|
|
792
|
-
let isVerified = false
|
|
793
|
-
for (const provider of hook.app.authenticationProviders) {
|
|
794
|
-
<span class="cstat-no" title="statement not covered" > if (hook.data[provider + 'Id']) <span class="cstat-no" title="statement not covered" >isVerified =
|
|
840
|
+
let isVerified = <span class="cstat-no" title="statement not covered" >false</span>
|
|
841
|
+
<span class="cstat-no" title="statement not covered" > for (const provider of hook.app.authenticationProviders) {</span>
|
|
842
|
+
<span class="cstat-no" title="statement not covered" > if (hook.data[provider + 'Id']) <span class="cstat-no" title="statement not covered" >isVerified = true</span></span>
|
|
795
843
|
}
|
|
796
|
-
hook.data.isVerified = isVerified
|
|
797
|
-
return hook
|
|
844
|
+
<span class="cstat-no" title="statement not covered" > hook.data.isVerified = isVerified</span>
|
|
845
|
+
<span class="cstat-no" title="statement not covered" > return hook</span>
|
|
798
846
|
})
|
|
799
847
|
}
|
|
800
848
|
|
|
801
|
-
export function removeVerification (hook) {
|
|
802
|
-
return verifyHooks.removeVerification()(hook)
|
|
849
|
+
export function <span class="fstat-no" title="function not covered" >removeVerification </span>(hook) {
|
|
850
|
+
<span class="cstat-no" title="statement not covered" > return verifyHooks.removeVerification()(hook)</span>
|
|
803
851
|
}
|
|
804
852
|
|
|
805
|
-
export function unregisterDevices (hook) {
|
|
806
|
-
debug('Unregistering devices for user ', hook.params.user)
|
|
807
|
-
const pusherService = hook.app.getService('pusher')
|
|
808
|
-
const user = hook.params.user
|
|
853
|
+
export function <span class="fstat-no" title="function not covered" >unregisterDevices </span>(hook) {
|
|
854
|
+
<span class="cstat-no" title="statement not covered" > debug('Unregistering devices for user ', hook.params.user)</span>
|
|
855
|
+
const pusherService = <span class="cstat-no" title="statement not covered" >hook.app.getService('pusher')</span>
|
|
856
|
+
const user = <span class="cstat-no" title="statement not covered" >hook.params.user</span>
|
|
809
857
|
// Process with each registered device
|
|
810
|
-
const unregisterPromises = []
|
|
811
|
-
if (user.devices) {
|
|
812
|
-
user.devices.forEach(
|
|
813
|
-
unregisterPromises.push(
|
|
858
|
+
const unregisterPromises = <span class="cstat-no" title="statement not covered" >[]</span>
|
|
859
|
+
<span class="cstat-no" title="statement not covered" > if (user.devices) {</span>
|
|
860
|
+
<span class="cstat-no" title="statement not covered" > user.devices.forEach(<span class="fstat-no" title="function not covered" >de</span>vice => {</span>
|
|
861
|
+
<span class="cstat-no" title="statement not covered" > unregisterPromises.push(</span>
|
|
814
862
|
pusherService.remove(device.registrationId,
|
|
815
863
|
{
|
|
816
864
|
query: { action: 'device' },
|
|
@@ -819,8 +867,8 @@ export function unregisterDevices (hook) {
|
|
|
819
867
|
)
|
|
820
868
|
})
|
|
821
869
|
}
|
|
822
|
-
return Promise.all(unregisterPromises)
|
|
823
|
-
.then(
|
|
870
|
+
<span class="cstat-no" title="statement not covered" > return Promise.all(unregisterPromises)</span>
|
|
871
|
+
.then(<span class="fstat-no" title="function not covered" >re</span>sults => <span class="cstat-no" title="statement not covered" >hook)</span>
|
|
824
872
|
}
|
|
825
873
|
</pre></td></tr></table></pre>
|
|
826
874
|
|
|
@@ -829,7 +877,7 @@ export function unregisterDevices (hook) {
|
|
|
829
877
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
830
878
|
Code coverage generated by
|
|
831
879
|
<a href="https://istanbul.js.org/" target="_blank">istanbul</a>
|
|
832
|
-
at
|
|
880
|
+
at Fri Jan 07 2022 19:29:57 GMT+0100 (GMT+01:00)
|
|
833
881
|
</div>
|
|
834
882
|
</div>
|
|
835
883
|
<script src="../../../prettify.js"></script>
|