@kalisio/kdk 2.0.1 → 2.1.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.
Files changed (467) hide show
  1. package/.codeclimate.yml +0 -1
  2. package/.travis.test.sh +3 -0
  3. package/core/api/application.js +13 -9
  4. package/core/api/db.js +34 -30
  5. package/core/api/hooks/hooks.authentication.js +11 -0
  6. package/core/api/hooks/hooks.authorisations.js +7 -3
  7. package/core/api/hooks/hooks.model.js +32 -43
  8. package/core/api/hooks/hooks.organisations.js +26 -116
  9. package/core/api/hooks/{hooks.devices.js → hooks.push.js} +22 -10
  10. package/core/api/hooks/hooks.query.js +0 -5
  11. package/core/api/hooks/hooks.schemas.js +23 -3
  12. package/core/api/hooks/hooks.users.js +15 -22
  13. package/core/api/hooks/index.js +1 -4
  14. package/core/api/services/account/account.hooks.js +3 -3
  15. package/core/api/services/account/account.service.js +5 -6
  16. package/core/api/services/groups/groups.hooks.js +2 -4
  17. package/core/api/services/index.js +11 -16
  18. package/core/api/services/{devices/devices.hooks.js → push/push.hooks.js} +5 -5
  19. package/core/api/services/push/push.service.js +12 -0
  20. package/core/api/services/tags/tags.hooks.js +6 -20
  21. package/core/api/services/users/users.hooks.js +12 -13
  22. package/core/api/utils.js +11 -0
  23. package/core/client/api.js +6 -0
  24. package/core/client/capabilities.js +8 -12
  25. package/core/client/components/KAction.vue +10 -3
  26. package/core/client/components/KAvatar.vue +31 -35
  27. package/core/client/components/KChipsPane.vue +23 -0
  28. package/core/client/components/account/KAccount.vue +68 -0
  29. package/core/client/components/account/KDeleteAccountManager.vue +62 -0
  30. package/core/client/components/account/KEmailManager.vue +128 -0
  31. package/core/client/components/account/KPasswordManager.vue +90 -0
  32. package/core/client/components/account/KProfile.vue +109 -0
  33. package/core/client/components/account/KResetPassword.vue +100 -111
  34. package/core/client/components/account/KSendResetPassword.vue +71 -87
  35. package/core/client/components/account/KSubscription.vue +71 -0
  36. package/core/client/components/account/KSubscriptionsManager.vue +46 -0
  37. package/core/client/components/account/KVerifyEmailManager.vue +105 -0
  38. package/core/client/components/account/index.js +4 -2
  39. package/core/client/components/app/KAbout.vue +27 -14
  40. package/core/client/components/app/KPlatform.vue +2 -2
  41. package/core/client/components/app/KWelcome.vue +71 -45
  42. package/core/client/components/collection/KBoard.vue +50 -40
  43. package/core/client/components/collection/KCard.vue +16 -7
  44. package/core/client/components/collection/KColumn.vue +146 -111
  45. package/core/client/components/collection/KGrid.vue +77 -58
  46. package/core/client/components/collection/KHistory.vue +19 -3
  47. package/core/client/components/collection/KItem.vue +5 -1
  48. package/core/client/components/collection/KList.vue +80 -56
  49. package/core/client/components/collection/KTable.vue +181 -142
  50. package/core/client/components/editor/KEditor.vue +10 -3
  51. package/core/client/components/form/KFileField.vue +22 -8
  52. package/core/client/components/form/KForm.vue +27 -14
  53. package/core/client/components/form/KItemField.vue +2 -2
  54. package/core/client/components/form/KOptionsField.vue +11 -2
  55. package/core/client/components/form/KSelectField.vue +12 -3
  56. package/core/client/components/form/KTextField.vue +6 -0
  57. package/core/client/components/form/KTokenField.vue +80 -0
  58. package/core/client/components/layout/KOpener.vue +8 -8
  59. package/core/client/components/layout/KPage.vue +8 -4
  60. package/core/client/components/layout/KWindow.vue +172 -141
  61. package/core/client/components/media/KMediaBrowser.vue +28 -12
  62. package/core/client/components/media/KShape.vue +58 -56
  63. package/core/client/components/menu/KMenu.vue +22 -13
  64. package/core/client/components/menu/KRadialFab.vue +83 -56
  65. package/core/client/components/menu/KRadialFabItem.vue +39 -19
  66. package/core/client/components/screen/KLoginScreen.vue +0 -17
  67. package/core/client/components/screen/KScreen.vue +3 -3
  68. package/core/client/components/screen/KScreenFooter.vue +0 -3
  69. package/core/client/components/team/KAddMember.vue +1 -1
  70. package/core/client/components/team/KAddTag.vue +121 -0
  71. package/core/client/components/team/KMemberCard.vue +42 -13
  72. package/core/client/components/team/KMembersActivity.vue +9 -3
  73. package/core/client/components/team/KTagCard.vue +16 -1
  74. package/core/client/composables/collection.js +181 -0
  75. package/core/client/composables/index.js +2 -0
  76. package/core/client/composables/pwa.js +71 -0
  77. package/core/client/composables/session.js +6 -9
  78. package/core/client/composables/version.js +1 -22
  79. package/core/client/i18n/core_en.json +124 -153
  80. package/core/client/i18n/core_fr.json +124 -155
  81. package/core/client/index.js +37 -110
  82. package/core/client/layout.js +37 -14
  83. package/core/client/local-storage.js +4 -3
  84. package/core/client/mixins/mixin.account.js +9 -5
  85. package/core/client/mixins/mixin.base-editor.js +19 -3
  86. package/core/client/mixins/mixin.base-item.js +3 -3
  87. package/core/client/mixins/mixin.base-viewer.js +14 -0
  88. package/core/client/mixins/mixin.object-proxy.js +2 -21
  89. package/core/client/services/index.js +0 -1
  90. package/core/client/storage.js +19 -16
  91. package/core/client/theme.js +11 -5
  92. package/core/client/utils/index.js +5 -13
  93. package/core/client/utils/utils.account.js +47 -0
  94. package/core/client/utils/utils.colors.js +6 -2
  95. package/core/client/utils/utils.content.js +7 -5
  96. package/core/client/utils/utils.platform.js +1 -20
  97. package/core/client/utils/utils.push.js +53 -0
  98. package/core/client/utils/utils.pwa.js +63 -0
  99. package/core/client/utils/utils.session.js +27 -12
  100. package/core/common/permissions.js +12 -4
  101. package/core/common/schemas/tags.create.json +35 -0
  102. package/core/common/schemas/users.update-profile.json +1 -1
  103. package/coverage/base.css +224 -0
  104. package/coverage/block-navigation.js +87 -0
  105. package/coverage/core/api/application.js.html +1849 -0
  106. package/coverage/core/api/authentication.js.html +694 -0
  107. package/coverage/core/api/db.js.html +763 -0
  108. package/coverage/core/api/hooks/hooks.account.js.html +169 -0
  109. package/coverage/core/api/hooks/hooks.authentication.js.html +274 -0
  110. package/coverage/core/api/hooks/hooks.authorisations.js.html +1213 -0
  111. package/coverage/core/api/hooks/hooks.groups.js.html +229 -0
  112. package/coverage/core/api/hooks/hooks.logger.js.html +163 -0
  113. package/coverage/core/api/hooks/hooks.model.js.html +994 -0
  114. package/coverage/core/api/hooks/hooks.organisations.js.html +553 -0
  115. package/coverage/core/api/hooks/hooks.push.js.html +232 -0
  116. package/coverage/core/api/hooks/hooks.query.js.html +838 -0
  117. package/coverage/core/api/hooks/hooks.schemas.js.html +304 -0
  118. package/coverage/core/api/hooks/hooks.service.js.html +319 -0
  119. package/coverage/core/api/hooks/hooks.storage.js.html +193 -0
  120. package/coverage/core/api/hooks/hooks.tags.js.html +850 -0
  121. package/coverage/core/api/hooks/hooks.users.js.html +826 -0
  122. package/coverage/core/api/hooks/index.html +296 -0
  123. package/coverage/core/api/hooks/index.js.html +121 -0
  124. package/coverage/core/api/index.html +191 -0
  125. package/coverage/core/api/index.js.html +148 -0
  126. package/coverage/core/api/marshall.js.html +355 -0
  127. package/coverage/core/api/models/groups.model.mongodb.js.html +109 -0
  128. package/coverage/core/api/models/index.html +161 -0
  129. package/coverage/core/api/models/organisations.model.mongodb.js.html +94 -0
  130. package/coverage/core/api/models/tags.model.mongodb.js.html +115 -0
  131. package/coverage/core/api/models/users.model.mongodb.js.html +115 -0
  132. package/coverage/core/api/services/account/account.hooks.js.html +196 -0
  133. package/coverage/core/api/services/account/account.service.js.html +445 -0
  134. package/coverage/core/api/services/account/index.html +131 -0
  135. package/coverage/core/api/services/authorisations/authorisations.hooks.js.html +184 -0
  136. package/coverage/core/api/services/authorisations/authorisations.service.js.html +502 -0
  137. package/coverage/core/api/services/authorisations/index.html +131 -0
  138. package/coverage/core/api/services/databases/databases.hooks.js.html +193 -0
  139. package/coverage/core/api/services/databases/databases.service.js.html +100 -0
  140. package/coverage/core/api/services/databases/index.html +131 -0
  141. package/coverage/core/api/services/groups/groups.hooks.js.html +178 -0
  142. package/coverage/core/api/services/groups/index.html +116 -0
  143. package/coverage/core/api/services/index.html +116 -0
  144. package/coverage/core/api/services/index.js.html +475 -0
  145. package/coverage/core/api/services/mailer/index.html +131 -0
  146. package/coverage/core/api/services/mailer/mailer.hooks.js.html +190 -0
  147. package/coverage/core/api/services/mailer/mailer.service.js.html +118 -0
  148. package/coverage/core/api/services/organisations/index.html +131 -0
  149. package/coverage/core/api/services/organisations/organisations.hooks.js.html +178 -0
  150. package/coverage/core/api/services/organisations/organisations.service.js.html +343 -0
  151. package/coverage/core/api/services/push/index.html +131 -0
  152. package/coverage/core/api/services/push/push.hooks.js.html +193 -0
  153. package/coverage/core/api/services/push/push.service.js.html +121 -0
  154. package/coverage/core/api/services/storage/index.html +131 -0
  155. package/coverage/core/api/services/storage/storage.hooks.js.html +190 -0
  156. package/coverage/core/api/services/storage/storage.service.js.html +172 -0
  157. package/coverage/core/api/services/tags/index.html +116 -0
  158. package/coverage/core/api/services/tags/tags.hooks.js.html +178 -0
  159. package/coverage/core/api/services/users/index.html +116 -0
  160. package/coverage/core/api/services/users/users.hooks.js.html +313 -0
  161. package/coverage/core/api/utils.js.html +118 -0
  162. package/coverage/core/common/errors.js.html +88 -0
  163. package/coverage/core/common/index.html +176 -0
  164. package/coverage/core/common/index.js.html +115 -0
  165. package/coverage/core/common/permissions.js.html +1039 -0
  166. package/coverage/core/common/schema.js.html +190 -0
  167. package/coverage/core/common/utils.js.html +220 -0
  168. package/coverage/favicon.png +0 -0
  169. package/coverage/index.html +476 -0
  170. package/coverage/lcov-report/base.css +224 -0
  171. package/coverage/lcov-report/block-navigation.js +87 -0
  172. package/coverage/lcov-report/core/api/application.js.html +1849 -0
  173. package/coverage/lcov-report/core/api/authentication.js.html +694 -0
  174. package/coverage/lcov-report/core/api/db.js.html +763 -0
  175. package/coverage/lcov-report/core/api/hooks/hooks.account.js.html +169 -0
  176. package/coverage/lcov-report/core/api/hooks/hooks.authentication.js.html +274 -0
  177. package/coverage/lcov-report/core/api/hooks/hooks.authorisations.js.html +1213 -0
  178. package/coverage/lcov-report/core/api/hooks/hooks.groups.js.html +229 -0
  179. package/coverage/lcov-report/core/api/hooks/hooks.logger.js.html +163 -0
  180. package/coverage/lcov-report/core/api/hooks/hooks.model.js.html +994 -0
  181. package/coverage/lcov-report/core/api/hooks/hooks.organisations.js.html +553 -0
  182. package/coverage/lcov-report/core/api/hooks/hooks.push.js.html +232 -0
  183. package/coverage/lcov-report/core/api/hooks/hooks.query.js.html +838 -0
  184. package/coverage/lcov-report/core/api/hooks/hooks.schemas.js.html +304 -0
  185. package/coverage/lcov-report/core/api/hooks/hooks.service.js.html +319 -0
  186. package/coverage/lcov-report/core/api/hooks/hooks.storage.js.html +193 -0
  187. package/coverage/lcov-report/core/api/hooks/hooks.tags.js.html +850 -0
  188. package/coverage/lcov-report/core/api/hooks/hooks.users.js.html +826 -0
  189. package/coverage/lcov-report/core/api/hooks/index.html +296 -0
  190. package/coverage/lcov-report/core/api/hooks/index.js.html +121 -0
  191. package/coverage/lcov-report/core/api/index.html +191 -0
  192. package/coverage/lcov-report/core/api/index.js.html +148 -0
  193. package/coverage/lcov-report/core/api/marshall.js.html +355 -0
  194. package/coverage/lcov-report/core/api/models/groups.model.mongodb.js.html +109 -0
  195. package/coverage/lcov-report/core/api/models/index.html +161 -0
  196. package/coverage/lcov-report/core/api/models/organisations.model.mongodb.js.html +94 -0
  197. package/coverage/lcov-report/core/api/models/tags.model.mongodb.js.html +115 -0
  198. package/coverage/lcov-report/core/api/models/users.model.mongodb.js.html +115 -0
  199. package/coverage/lcov-report/core/api/services/account/account.hooks.js.html +196 -0
  200. package/coverage/lcov-report/core/api/services/account/account.service.js.html +445 -0
  201. package/coverage/lcov-report/core/api/services/account/index.html +131 -0
  202. package/coverage/lcov-report/core/api/services/authorisations/authorisations.hooks.js.html +184 -0
  203. package/coverage/lcov-report/core/api/services/authorisations/authorisations.service.js.html +502 -0
  204. package/coverage/lcov-report/core/api/services/authorisations/index.html +131 -0
  205. package/coverage/lcov-report/core/api/services/databases/databases.hooks.js.html +193 -0
  206. package/coverage/lcov-report/core/api/services/databases/databases.service.js.html +100 -0
  207. package/coverage/lcov-report/core/api/services/databases/index.html +131 -0
  208. package/coverage/lcov-report/core/api/services/groups/groups.hooks.js.html +178 -0
  209. package/coverage/lcov-report/core/api/services/groups/index.html +116 -0
  210. package/coverage/lcov-report/core/api/services/index.html +116 -0
  211. package/coverage/lcov-report/core/api/services/index.js.html +475 -0
  212. package/coverage/lcov-report/core/api/services/mailer/index.html +131 -0
  213. package/coverage/lcov-report/core/api/services/mailer/mailer.hooks.js.html +190 -0
  214. package/coverage/lcov-report/core/api/services/mailer/mailer.service.js.html +118 -0
  215. package/coverage/lcov-report/core/api/services/organisations/index.html +131 -0
  216. package/coverage/lcov-report/core/api/services/organisations/organisations.hooks.js.html +178 -0
  217. package/coverage/lcov-report/core/api/services/organisations/organisations.service.js.html +343 -0
  218. package/coverage/lcov-report/core/api/services/push/index.html +131 -0
  219. package/coverage/lcov-report/core/api/services/push/push.hooks.js.html +193 -0
  220. package/coverage/lcov-report/core/api/services/push/push.service.js.html +121 -0
  221. package/coverage/lcov-report/core/api/services/storage/index.html +131 -0
  222. package/coverage/lcov-report/core/api/services/storage/storage.hooks.js.html +190 -0
  223. package/coverage/lcov-report/core/api/services/storage/storage.service.js.html +172 -0
  224. package/coverage/lcov-report/core/api/services/tags/index.html +116 -0
  225. package/coverage/lcov-report/core/api/services/tags/tags.hooks.js.html +178 -0
  226. package/coverage/lcov-report/core/api/services/users/index.html +116 -0
  227. package/coverage/lcov-report/core/api/services/users/users.hooks.js.html +313 -0
  228. package/coverage/lcov-report/core/api/utils.js.html +118 -0
  229. package/coverage/lcov-report/core/common/errors.js.html +88 -0
  230. package/coverage/lcov-report/core/common/index.html +176 -0
  231. package/coverage/lcov-report/core/common/index.js.html +115 -0
  232. package/coverage/lcov-report/core/common/permissions.js.html +1039 -0
  233. package/coverage/lcov-report/core/common/schema.js.html +190 -0
  234. package/coverage/lcov-report/core/common/utils.js.html +220 -0
  235. package/coverage/lcov-report/favicon.png +0 -0
  236. package/coverage/lcov-report/index.html +476 -0
  237. package/coverage/lcov-report/map/api/hooks/hooks.catalog.js.html +340 -0
  238. package/coverage/lcov-report/map/api/hooks/hooks.features.js.html +337 -0
  239. package/coverage/lcov-report/map/api/hooks/hooks.query.js.html +1168 -0
  240. package/coverage/lcov-report/map/api/hooks/index.html +161 -0
  241. package/coverage/lcov-report/map/api/hooks/index.js.html +94 -0
  242. package/coverage/lcov-report/map/api/index.html +131 -0
  243. package/coverage/lcov-report/map/api/index.js.html +139 -0
  244. package/coverage/lcov-report/map/api/marshall.js.html +178 -0
  245. package/coverage/lcov-report/map/api/models/alerts.model.mongodb.js.html +106 -0
  246. package/coverage/lcov-report/map/api/models/catalog.model.mongodb.js.html +127 -0
  247. package/coverage/lcov-report/map/api/models/features.model.mongodb.js.html +196 -0
  248. package/coverage/lcov-report/map/api/models/index.html +146 -0
  249. package/coverage/lcov-report/map/api/services/alerts/alerts.hooks.js.html +274 -0
  250. package/coverage/lcov-report/map/api/services/alerts/alerts.service.js.html +610 -0
  251. package/coverage/lcov-report/map/api/services/alerts/index.html +131 -0
  252. package/coverage/lcov-report/map/api/services/catalog/catalog.hooks.js.html +313 -0
  253. package/coverage/lcov-report/map/api/services/catalog/index.html +116 -0
  254. package/coverage/lcov-report/map/api/services/daptiles/daptiles.service.js.html +1510 -0
  255. package/coverage/lcov-report/map/api/services/daptiles/index.html +116 -0
  256. package/coverage/lcov-report/map/api/services/features/features.hooks.js.html +205 -0
  257. package/coverage/lcov-report/map/api/services/features/features.service.js.html +241 -0
  258. package/coverage/lcov-report/map/api/services/features/index.html +131 -0
  259. package/coverage/lcov-report/map/api/services/geocoder/geocoder.hooks.js.html +178 -0
  260. package/coverage/lcov-report/map/api/services/geocoder/geocoder.service.js.html +322 -0
  261. package/coverage/lcov-report/map/api/services/geocoder/index.html +131 -0
  262. package/coverage/lcov-report/map/api/services/index.html +116 -0
  263. package/coverage/lcov-report/map/api/services/index.js.html +769 -0
  264. package/coverage/lcov-report/map/common/dynamic-grid-source.js.html +466 -0
  265. package/coverage/lcov-report/map/common/errors.js.html +94 -0
  266. package/coverage/lcov-report/map/common/geotiff-grid-source.js.html +535 -0
  267. package/coverage/lcov-report/map/common/grid.js.html +1612 -0
  268. package/coverage/lcov-report/map/common/index.html +371 -0
  269. package/coverage/lcov-report/map/common/index.js.html +172 -0
  270. package/coverage/lcov-report/map/common/meteo-model-grid-source.js.html +556 -0
  271. package/coverage/lcov-report/map/common/moment-utils.js.html +157 -0
  272. package/coverage/lcov-report/map/common/opendap-grid-source.js.html +868 -0
  273. package/coverage/lcov-report/map/common/opendap-utils.js.html +826 -0
  274. package/coverage/lcov-report/map/common/permissions.js.html +118 -0
  275. package/coverage/lcov-report/map/common/time-based-grid-source.js.html +418 -0
  276. package/coverage/lcov-report/map/common/tms-utils.js.html +274 -0
  277. package/coverage/lcov-report/map/common/wcs-grid-source.js.html +364 -0
  278. package/coverage/lcov-report/map/common/wcs-utils.js.html +586 -0
  279. package/coverage/lcov-report/map/common/weacast-grid-source.js.html +1033 -0
  280. package/coverage/lcov-report/map/common/wfs-utils.js.html +574 -0
  281. package/coverage/lcov-report/map/common/wms-utils.js.html +436 -0
  282. package/coverage/lcov-report/map/common/wmts-utils.js.html +547 -0
  283. package/coverage/lcov-report/prettify.css +1 -0
  284. package/coverage/lcov-report/prettify.js +2 -0
  285. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  286. package/coverage/lcov-report/sorter.js +196 -0
  287. package/coverage/lcov.info +10742 -0
  288. package/coverage/map/api/hooks/hooks.catalog.js.html +340 -0
  289. package/coverage/map/api/hooks/hooks.features.js.html +337 -0
  290. package/coverage/map/api/hooks/hooks.query.js.html +1168 -0
  291. package/coverage/map/api/hooks/index.html +161 -0
  292. package/coverage/map/api/hooks/index.js.html +94 -0
  293. package/coverage/map/api/index.html +131 -0
  294. package/coverage/map/api/index.js.html +139 -0
  295. package/coverage/map/api/marshall.js.html +178 -0
  296. package/coverage/map/api/models/alerts.model.mongodb.js.html +106 -0
  297. package/coverage/map/api/models/catalog.model.mongodb.js.html +127 -0
  298. package/coverage/map/api/models/features.model.mongodb.js.html +196 -0
  299. package/coverage/map/api/models/index.html +146 -0
  300. package/coverage/map/api/services/alerts/alerts.hooks.js.html +274 -0
  301. package/coverage/map/api/services/alerts/alerts.service.js.html +610 -0
  302. package/coverage/map/api/services/alerts/index.html +131 -0
  303. package/coverage/map/api/services/catalog/catalog.hooks.js.html +313 -0
  304. package/coverage/map/api/services/catalog/index.html +116 -0
  305. package/coverage/map/api/services/daptiles/daptiles.service.js.html +1510 -0
  306. package/coverage/map/api/services/daptiles/index.html +116 -0
  307. package/coverage/map/api/services/features/features.hooks.js.html +205 -0
  308. package/coverage/map/api/services/features/features.service.js.html +241 -0
  309. package/coverage/map/api/services/features/index.html +131 -0
  310. package/coverage/map/api/services/geocoder/geocoder.hooks.js.html +178 -0
  311. package/coverage/map/api/services/geocoder/geocoder.service.js.html +322 -0
  312. package/coverage/map/api/services/geocoder/index.html +131 -0
  313. package/coverage/map/api/services/index.html +116 -0
  314. package/coverage/map/api/services/index.js.html +769 -0
  315. package/coverage/map/common/dynamic-grid-source.js.html +466 -0
  316. package/coverage/map/common/errors.js.html +94 -0
  317. package/coverage/map/common/geotiff-grid-source.js.html +535 -0
  318. package/coverage/map/common/grid.js.html +1612 -0
  319. package/coverage/map/common/index.html +371 -0
  320. package/coverage/map/common/index.js.html +172 -0
  321. package/coverage/map/common/meteo-model-grid-source.js.html +556 -0
  322. package/coverage/map/common/moment-utils.js.html +157 -0
  323. package/coverage/map/common/opendap-grid-source.js.html +868 -0
  324. package/coverage/map/common/opendap-utils.js.html +826 -0
  325. package/coverage/map/common/permissions.js.html +118 -0
  326. package/coverage/map/common/time-based-grid-source.js.html +418 -0
  327. package/coverage/map/common/tms-utils.js.html +274 -0
  328. package/coverage/map/common/wcs-grid-source.js.html +364 -0
  329. package/coverage/map/common/wcs-utils.js.html +586 -0
  330. package/coverage/map/common/weacast-grid-source.js.html +1033 -0
  331. package/coverage/map/common/wfs-utils.js.html +574 -0
  332. package/coverage/map/common/wms-utils.js.html +436 -0
  333. package/coverage/map/common/wmts-utils.js.html +547 -0
  334. package/coverage/prettify.css +1 -0
  335. package/coverage/prettify.js +2 -0
  336. package/coverage/sort-arrow-sprite.png +0 -0
  337. package/coverage/sorter.js +196 -0
  338. package/coverage/tmp/coverage-59096-1692631696256-0.json +1 -0
  339. package/coverage/tmp/coverage-59108-1692631696233-0.json +1 -0
  340. package/coverage/tmp/coverage-59119-1692631696222-0.json +1 -0
  341. package/coverage/tmp/coverage-59131-1692631696200-0.json +1 -0
  342. package/coverage/tmp/coverage-59138-1692631696175-0.json +1 -0
  343. package/extras/css/core.variables.scss +5 -1
  344. package/extras/tours/core/account-profile.js +14 -31
  345. package/extras/tours/core/account.js +143 -0
  346. package/extras/tours/core/add-member.js +7 -6
  347. package/extras/tours/core/add-tag.js +13 -0
  348. package/extras/tours/core/create-tag.js +26 -0
  349. package/extras/tours/core/edit-member-role.js +13 -0
  350. package/extras/tours/core/join-group.js +0 -12
  351. package/extras/tours/core/login.js +0 -7
  352. package/extras/tours/core/members.js +13 -26
  353. package/extras/tours/core/send-reset-password.js +1 -1
  354. package/extras/tours/core/tags.js +17 -4
  355. package/extras/tours/map/navigation-bar.js +1 -1
  356. package/extras/tours/map/side-nav.js +3 -2
  357. package/map/api/hooks/hooks.query.js +5 -3
  358. package/map/client/cesium/utils.js +68 -0
  359. package/map/client/components/KFeatureActionButton.vue +27 -27
  360. package/map/client/components/KFeaturesChart.vue +1 -1
  361. package/map/client/components/KFeaturesTable.vue +2 -2
  362. package/map/client/components/KLayerEditionToolbar.vue +1 -0
  363. package/map/client/components/KPositionIndicator.vue +1 -1
  364. package/map/client/components/catalog/KViewSelector.vue +1 -2
  365. package/map/client/components/catalog/KViewsPanel.vue +17 -15
  366. package/map/client/components/form/KDirectionField.vue +0 -1
  367. package/map/client/components/form/KLocationField.vue +16 -29
  368. package/map/client/components/legend/KSymbolsLegend.vue +2 -1
  369. package/map/client/components/location/KLocationCardSection.vue +61 -0
  370. package/map/client/components/location/KLocationMap.vue +24 -13
  371. package/map/client/components/location/KLocationSearch.vue +144 -0
  372. package/map/client/components/location/KLocationTip.vue +29 -0
  373. package/map/client/components/tools/KGeolocateTool.vue +46 -0
  374. package/map/client/components/tools/KSearchTool.vue +93 -0
  375. package/map/client/components/widget/KElevationProfile.vue +2 -2
  376. package/map/client/components/widget/KInformationBox.vue +3 -3
  377. package/map/client/composables/location.js +35 -43
  378. package/map/client/geolocation.js +65 -8
  379. package/map/client/i18n/map_en.json +15 -13
  380. package/map/client/i18n/map_fr.json +15 -13
  381. package/map/client/init.js +10 -18
  382. package/map/client/leaflet/GradientPath.js +2 -1
  383. package/map/client/leaflet/utils.js +61 -0
  384. package/map/client/mixins/globe/mixin.base-globe.js +6 -5
  385. package/map/client/mixins/globe/mixin.popup.js +3 -0
  386. package/map/client/mixins/globe/mixin.style.js +9 -64
  387. package/map/client/mixins/globe/mixin.tooltip.js +3 -0
  388. package/map/client/mixins/index.js +0 -1
  389. package/map/client/mixins/map/mixin.base-map.js +13 -9
  390. package/map/client/mixins/map/mixin.edit-layers.js +82 -15
  391. package/map/client/mixins/map/mixin.geojson-layers.js +8 -1
  392. package/map/client/mixins/map/mixin.style.js +8 -56
  393. package/map/client/mixins/mixin.activity.js +20 -12
  394. package/map/client/mixins/mixin.feature-service.js +34 -1
  395. package/map/client/readers/reader.geojson.js +1 -1
  396. package/map/client/utils/utils.location.js +45 -0
  397. package/package.json +13 -14
  398. package/test/api/core/account.test.js +112 -126
  399. package/test/api/core/config/default.cjs +7 -11
  400. package/test/api/core/config/email-templates/confirmInvitation/html.ejs +1 -1
  401. package/test/api/core/config/email-templates/identityChange/html.ejs +6 -4
  402. package/test/api/core/config/email-templates/newDevice/html.ejs +1 -1
  403. package/test/api/core/config/email-templates/newSubscription/html.ejs +7 -0
  404. package/test/api/core/config/email-templates/passwordChange/html.ejs +1 -1
  405. package/test/api/core/config/email-templates/resendVerifySignup/html.ejs +6 -4
  406. package/test/api/core/config/email-templates/resetPwd/html.ejs +1 -1
  407. package/test/api/core/config/email-templates/sendResetPwd/html.ejs +8 -4
  408. package/test/api/core/hooks.test.js +166 -18
  409. package/test/api/core/index.test.js +32 -70
  410. package/test/api/core/push.test.js +191 -0
  411. package/test/api/core/team.test.js +38 -32
  412. package/test/api/core/test-log-2023-07-04.log +0 -0
  413. package/test/api/core/test-log-2023-07-10.log +2 -0
  414. package/test/api/core/test-log-2023-07-12.log +0 -0
  415. package/test/api/core/test-log-2023-07-18.log +78 -0
  416. package/test/api/core/test-log-2023-07-19.log +44 -0
  417. package/test/api/core/test-log-2023-08-01.log +162 -0
  418. package/test/api/core/test-log-2023-08-21.log +66 -0
  419. package/test/api/core/test-log-2023-08-22.log +96 -0
  420. package/test/api/core/test-log-2023-08-23.log +22 -0
  421. package/test/api/core/test-log-2023-09-20.log +22 -0
  422. package/test/api/map/alerts.test.js +1 -1
  423. package/test/api/map/test-log-2023-07-18.log +62 -0
  424. package/test/api/map/test-log-2023-07-19.log +13 -0
  425. package/test/api/map/test-log-2023-08-21.log +65 -0
  426. package/test/api/map/test-log-2023-09-20.log +60 -0
  427. package/test/client/core/account.js +15 -32
  428. package/test/client/core/api.js +99 -44
  429. package/test/client/core/layout.js +4 -0
  430. package/test/client/core/runner.js +66 -14
  431. package/test/client/core/time.js +1 -1
  432. package/test/client/map/controls.js +17 -3
  433. package/core/api/hooks/hooks.account.js +0 -28
  434. package/core/api/hooks/hooks.pusher.js +0 -215
  435. package/core/api/hooks/hooks.tags.js +0 -255
  436. package/core/api/services/devices/devices.service.js +0 -99
  437. package/core/api/services/pusher/pusher.channels.js +0 -3
  438. package/core/api/services/pusher/pusher.hooks.js +0 -36
  439. package/core/api/services/pusher/pusher.service.js +0 -449
  440. package/core/client/components/KInstallApp.vue +0 -43
  441. package/core/client/components/account/KAccountActivity.vue +0 -58
  442. package/core/client/components/account/KAccountDZ.vue +0 -66
  443. package/core/client/components/account/KAccountDevices.vue +0 -56
  444. package/core/client/components/account/KAccountSecurity.vue +0 -87
  445. package/core/client/components/account/KChangeIdentity.vue +0 -102
  446. package/core/client/components/account/KChangePassword.vue +0 -132
  447. package/core/client/components/account/KDeviceCard.vue +0 -75
  448. package/core/client/components/account/KIdentityPanel.vue +0 -34
  449. package/core/client/components/account/KResendVerifySignup.vue +0 -108
  450. package/core/client/components/account/KSendChangeIdentity.vue +0 -115
  451. package/core/client/components/account/KSignupAlert.vue +0 -63
  452. package/core/client/components/account/KVerifySignup.vue +0 -102
  453. package/core/client/components/form/KTagField.vue +0 -148
  454. package/core/common/schemas/members.update.json +0 -18
  455. package/extras/tours/core/account-dz.js +0 -37
  456. package/extras/tours/core/account-security.js +0 -52
  457. package/extras/tours/core/change-password.js +0 -34
  458. package/extras/tours/core/edit-member-tags.js +0 -18
  459. package/extras/tours/core/send-change-identity.js +0 -28
  460. package/map/client/components/KLocateUser.vue +0 -36
  461. package/map/client/components/KLocationInput.vue +0 -217
  462. package/map/client/components/KLocationMap.vue +0 -301
  463. package/map/client/components/KSearchLocation.vue +0 -88
  464. package/map/client/components/input/KPlaceChooser.vue +0 -78
  465. package/map/client/components/location/KLocation.vue +0 -24
  466. package/map/client/mixins/mixin.navigator.js +0 -36
  467. package/test/api/core/notifications.test.js +0 -502
@@ -0,0 +1,196 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for core/api/services/account/account.hooks.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">core/api/services/account</a> account.hooks.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>37/37</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>3/3</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>37/37</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
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
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
104
+ <span class="cline-any cline-yes">1x</span>
105
+ <span class="cline-any cline-yes">1x</span>
106
+ <span class="cline-any cline-yes">1x</span>
107
+ <span class="cline-any cline-yes">1x</span>
108
+ <span class="cline-any cline-yes">1x</span>
109
+ <span class="cline-any cline-yes">1x</span>
110
+ <span class="cline-any cline-yes">1x</span>
111
+ <span class="cline-any cline-yes">1x</span>
112
+ <span class="cline-any cline-yes">1x</span>
113
+ <span class="cline-any cline-yes">1x</span>
114
+ <span class="cline-any cline-yes">1x</span>
115
+ <span class="cline-any cline-yes">1x</span>
116
+ <span class="cline-any cline-yes">1x</span>
117
+ <span class="cline-any cline-yes">1x</span>
118
+ <span class="cline-any cline-yes">1x</span>
119
+ <span class="cline-any cline-yes">1x</span>
120
+ <span class="cline-any cline-yes">1x</span>
121
+ <span class="cline-any cline-yes">1x</span>
122
+ <span class="cline-any cline-yes">1x</span>
123
+ <span class="cline-any cline-yes">1x</span>
124
+ <span class="cline-any cline-yes">1x</span>
125
+ <span class="cline-any cline-yes">1x</span>
126
+ <span class="cline-any cline-yes">1x</span>
127
+ <span class="cline-any cline-yes">1x</span>
128
+ <span class="cline-any cline-yes">1x</span>
129
+ <span class="cline-any cline-yes">1x</span>
130
+ <span class="cline-any cline-yes">1x</span>
131
+ <span class="cline-any cline-yes">1x</span>
132
+ <span class="cline-any cline-yes">1x</span>
133
+ <span class="cline-any cline-yes">1x</span>
134
+ <span class="cline-any cline-yes">1x</span>
135
+ <span class="cline-any cline-yes">1x</span>
136
+ <span class="cline-any cline-yes">1x</span>
137
+ <span class="cline-any cline-yes">1x</span>
138
+ <span class="cline-any cline-yes">1x</span>
139
+ <span class="cline-any cline-yes">1x</span>
140
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import common from 'feathers-hooks-common'
141
+ import { enforcePasswordPolicy } from '../../hooks/index.js'
142
+ &nbsp;
143
+ const { when } = common
144
+ &nbsp;
145
+ export default {
146
+ before: {
147
+ all: [],
148
+ find: [],
149
+ get: [],
150
+ create: [when(hook =&gt; hook.data.action === 'resetPwdShort' || hook.data.action === 'passwordChange',
151
+ enforcePasswordPolicy({ userAsItem: false, passwordField: 'value.password' }))],
152
+ update: [],
153
+ patch: [],
154
+ remove: []
155
+ },
156
+ &nbsp;
157
+ after: {
158
+ all: [],
159
+ find: [],
160
+ get: [],
161
+ create: [],
162
+ update: [],
163
+ patch: [],
164
+ remove: []
165
+ },
166
+ &nbsp;
167
+ error: {
168
+ all: [],
169
+ find: [],
170
+ get: [],
171
+ create: [],
172
+ update: [],
173
+ patch: [],
174
+ remove: []
175
+ }
176
+ }
177
+ &nbsp;</pre></td></tr></table></pre>
178
+
179
+ <div class='push'></div><!-- for sticky footer -->
180
+ </div><!-- /wrapper -->
181
+ <div class='footer quiet pad2 space-top1 center small'>
182
+ Code coverage generated by
183
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
184
+ at 2023-08-21T15:28:16.555Z
185
+ </div>
186
+ <script src="../../../../prettify.js"></script>
187
+ <script>
188
+ window.onload = function () {
189
+ prettyPrint();
190
+ };
191
+ </script>
192
+ <script src="../../../../sorter.js"></script>
193
+ <script src="../../../../block-navigation.js"></script>
194
+ </body>
195
+ </html>
196
+
@@ -0,0 +1,445 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for core/api/services/account/account.service.js</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">core/api/services/account</a> account.service.js</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">81.66% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>98/120</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">70.58% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>12/17</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>2/2</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">81.66% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>98/120</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
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
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
187
+ <span class="cline-any cline-yes">1x</span>
188
+ <span class="cline-any cline-yes">1x</span>
189
+ <span class="cline-any cline-yes">1x</span>
190
+ <span class="cline-any cline-yes">1x</span>
191
+ <span class="cline-any cline-yes">1x</span>
192
+ <span class="cline-any cline-yes">1x</span>
193
+ <span class="cline-any cline-yes">1x</span>
194
+ <span class="cline-any cline-yes">1x</span>
195
+ <span class="cline-any cline-yes">1x</span>
196
+ <span class="cline-any cline-yes">1x</span>
197
+ <span class="cline-any cline-yes">6x</span>
198
+ <span class="cline-any cline-yes">6x</span>
199
+ <span class="cline-any cline-yes">8x</span>
200
+ <span class="cline-any cline-yes">8x</span>
201
+ <span class="cline-any cline-yes">8x</span>
202
+ <span class="cline-any cline-yes">8x</span>
203
+ <span class="cline-any cline-no">&nbsp;</span>
204
+ <span class="cline-any cline-no">&nbsp;</span>
205
+ <span class="cline-any cline-yes">8x</span>
206
+ <span class="cline-any cline-yes">8x</span>
207
+ <span class="cline-any cline-no">&nbsp;</span>
208
+ <span class="cline-any cline-no">&nbsp;</span>
209
+ <span class="cline-any cline-no">&nbsp;</span>
210
+ <span class="cline-any cline-no">&nbsp;</span>
211
+ <span class="cline-any cline-no">&nbsp;</span>
212
+ <span class="cline-any cline-no">&nbsp;</span>
213
+ <span class="cline-any cline-no">&nbsp;</span>
214
+ <span class="cline-any cline-no">&nbsp;</span>
215
+ <span class="cline-any cline-no">&nbsp;</span>
216
+ <span class="cline-any cline-no">&nbsp;</span>
217
+ <span class="cline-any cline-yes">8x</span>
218
+ <span class="cline-any cline-yes">8x</span>
219
+ <span class="cline-any cline-yes">8x</span>
220
+ <span class="cline-any cline-yes">8x</span>
221
+ <span class="cline-any cline-yes">8x</span>
222
+ <span class="cline-any cline-yes">8x</span>
223
+ <span class="cline-any cline-yes">8x</span>
224
+ <span class="cline-any cline-yes">8x</span>
225
+ <span class="cline-any cline-yes">8x</span>
226
+ <span class="cline-any cline-yes">8x</span>
227
+ <span class="cline-any cline-yes">8x</span>
228
+ <span class="cline-any cline-yes">8x</span>
229
+ <span class="cline-any cline-yes">8x</span>
230
+ <span class="cline-any cline-yes">1x</span>
231
+ <span class="cline-any cline-yes">1x</span>
232
+ <span class="cline-any cline-yes">8x</span>
233
+ <span class="cline-any cline-yes">2x</span>
234
+ <span class="cline-any cline-yes">2x</span>
235
+ <span class="cline-any cline-yes">8x</span>
236
+ <span class="cline-any cline-yes">1x</span>
237
+ <span class="cline-any cline-yes">1x</span>
238
+ <span class="cline-any cline-yes">1x</span>
239
+ <span class="cline-any cline-yes">8x</span>
240
+ <span class="cline-any cline-yes">1x</span>
241
+ <span class="cline-any cline-yes">1x</span>
242
+ <span class="cline-any cline-yes">8x</span>
243
+ <span class="cline-any cline-yes">1x</span>
244
+ <span class="cline-any cline-yes">1x</span>
245
+ <span class="cline-any cline-yes">8x</span>
246
+ <span class="cline-any cline-yes">1x</span>
247
+ <span class="cline-any cline-yes">1x</span>
248
+ <span class="cline-any cline-yes">8x</span>
249
+ <span class="cline-any cline-yes">1x</span>
250
+ <span class="cline-any cline-yes">1x</span>
251
+ <span class="cline-any cline-yes">1x</span>
252
+ <span class="cline-any cline-no">&nbsp;</span>
253
+ <span class="cline-any cline-no">&nbsp;</span>
254
+ <span class="cline-any cline-no">&nbsp;</span>
255
+ <span class="cline-any cline-no">&nbsp;</span>
256
+ <span class="cline-any cline-no">&nbsp;</span>
257
+ <span class="cline-any cline-no">&nbsp;</span>
258
+ <span class="cline-any cline-no">&nbsp;</span>
259
+ <span class="cline-any cline-yes">1x</span>
260
+ <span class="cline-any cline-yes">1x</span>
261
+ <span class="cline-any cline-yes">1x</span>
262
+ <span class="cline-any cline-yes">1x</span>
263
+ <span class="cline-any cline-yes">8x</span>
264
+ <span class="cline-any cline-yes">8x</span>
265
+ <span class="cline-any cline-yes">8x</span>
266
+ <span class="cline-any cline-yes">8x</span>
267
+ <span class="cline-any cline-yes">8x</span>
268
+ <span class="cline-any cline-yes">8x</span>
269
+ <span class="cline-any cline-yes">8x</span>
270
+ <span class="cline-any cline-yes">8x</span>
271
+ <span class="cline-any cline-yes">8x</span>
272
+ <span class="cline-any cline-yes">8x</span>
273
+ <span class="cline-any cline-yes">8x</span>
274
+ <span class="cline-any cline-yes">8x</span>
275
+ <span class="cline-any cline-no">&nbsp;</span>
276
+ <span class="cline-any cline-no">&nbsp;</span>
277
+ <span class="cline-any cline-no">&nbsp;</span>
278
+ <span class="cline-any cline-yes">8x</span>
279
+ <span class="cline-any cline-yes">6x</span>
280
+ <span class="cline-any cline-yes">6x</span>
281
+ <span class="cline-any cline-yes">6x</span>
282
+ <span class="cline-any cline-yes">6x</span>
283
+ <span class="cline-any cline-yes">6x</span>
284
+ <span class="cline-any cline-yes">6x</span>
285
+ <span class="cline-any cline-yes">6x</span>
286
+ <span class="cline-any cline-yes">6x</span>
287
+ <span class="cline-any cline-yes">6x</span>
288
+ <span class="cline-any cline-yes">6x</span>
289
+ <span class="cline-any cline-yes">6x</span>
290
+ <span class="cline-any cline-yes">6x</span>
291
+ <span class="cline-any cline-yes">6x</span>
292
+ <span class="cline-any cline-yes">6x</span>
293
+ <span class="cline-any cline-yes">6x</span>
294
+ <span class="cline-any cline-yes">6x</span>
295
+ <span class="cline-any cline-yes">6x</span>
296
+ <span class="cline-any cline-yes">6x</span>
297
+ <span class="cline-any cline-yes">6x</span>
298
+ <span class="cline-any cline-yes">6x</span>
299
+ <span class="cline-any cline-yes">6x</span>
300
+ <span class="cline-any cline-yes">6x</span>
301
+ <span class="cline-any cline-yes">6x</span>
302
+ <span class="cline-any cline-yes">6x</span>
303
+ <span class="cline-any cline-yes">6x</span>
304
+ <span class="cline-any cline-yes">6x</span>
305
+ <span class="cline-any cline-yes">6x</span>
306
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import { AuthenticationManagementService } from 'feathers-authentication-management'
307
+ import errors from '@feathersjs/errors'
308
+ import emails from 'email-templates'
309
+ import path from 'path'
310
+ import makeDebug from 'debug'
311
+ import _ from 'lodash'
312
+ &nbsp;
313
+ const { BadRequest } = errors
314
+ const debug = makeDebug('kdk:core:account:service')
315
+ &nbsp;
316
+ export default function (name, app, options) {
317
+ // Keep track of notifier in service options
318
+ options.notifier = async function (type, user, notifierOptions) {
319
+ const userService = app.getService('users')
320
+ // Using OAuth2 providers disallow some operations
321
+ let identityProvider
322
+ for (const provider of app.authenticationProviders) <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
323
+ <span class="cstat-no" title="statement not covered" > if (user[provider + 'Id']) identityProvider = _.startCase(provider)</span>
324
+ <span class="cstat-no" title="statement not covered" > }</span>
325
+ // Password/Identity change is already filtered by the fact the user does not have an old password to be provided
326
+ if (identityProvider <span class="branch-0 cbranch-no" title="branch not covered" >&amp;&amp; (type === 'resendVerifySignup'))</span> <span class="branch-0 cbranch-no" title="branch not covered" >{</span>
327
+ <span class="cstat-no" title="statement not covered" > const userWithPassword = await userService.get(user._id.toString())</span>
328
+ <span class="cstat-no" title="statement not covered" > if (!userWithPassword.password) {</span>
329
+ <span class="cstat-no" title="statement not covered" > return Promise.reject(new BadRequest(`You cannot update your account because it is managed by ${identityProvider}`, {</span>
330
+ <span class="cstat-no" title="statement not covered" > translation: {</span>
331
+ <span class="cstat-no" title="statement not covered" > key: 'OAUTH2_PROVIDER',</span>
332
+ <span class="cstat-no" title="statement not covered" > params: { provider: identityProvider }</span>
333
+ <span class="cstat-no" title="statement not covered" > }</span>
334
+ <span class="cstat-no" title="statement not covered" > }))</span>
335
+ <span class="cstat-no" title="statement not covered" > }</span>
336
+ <span class="cstat-no" title="statement not covered" > }</span>
337
+ &nbsp;
338
+ const mailerService = app.getService('mailer')
339
+ const domainPath = app.get('domain') + '/#/'
340
+ const email = {
341
+ from: mailerService.options.auth.user,
342
+ // When changing email send to the new one so that it can be verified
343
+ to: (type === 'identityChange' ? user.verifyChanges.email : user.email),
344
+ domainPath
345
+ }
346
+ // Build the subject &amp; link to the app to perform the different actions
347
+ let emailTemplateDir = type
348
+ switch (type) {
349
+ case 'resendVerifySignup': // send another email with token for verifying user's email addr
350
+ email.subject = 'Confirm your signup'
351
+ break
352
+ case 'verifySignup': // inform that user's email is now confirmed
353
+ email.subject = 'Thank you, your email has been verified'
354
+ break
355
+ case 'sendResetPwd': // send email with token to reset password
356
+ email.subject = 'Reset your password'
357
+ email.link = domainPath + 'reset-password/' + user.email
358
+ break
359
+ case 'resetPwd': // inform that user's password is now reset
360
+ email.subject = 'Your password was reset'
361
+ break
362
+ case 'passwordChange': // inform that user's password is now changed
363
+ email.subject = 'Your password was changed'
364
+ break
365
+ case 'identityChange': // inform that user's email has now changed
366
+ email.subject = 'Your account information was changed'
367
+ break
368
+ case 'sendInvitation':
369
+ if (_.has(user, 'sponsor.name')) {
370
+ email.sponsor = _.get(user, 'sponsor.name')
371
+ }<span class="branch-0 cbranch-no" title="branch not covered" > else if (_.has(user, 'sponsor.id')) {</span>
372
+ <span class="cstat-no" title="statement not covered" > try {</span>
373
+ <span class="cstat-no" title="statement not covered" > const sponsor = await userService.get(user.sponsor.id)</span>
374
+ <span class="cstat-no" title="statement not covered" > email.sponsor = sponsor.name</span>
375
+ <span class="cstat-no" title="statement not covered" > } catch (error) {</span>
376
+ <span class="cstat-no" title="statement not covered" > // We will not send the sponsor name in this case</span>
377
+ <span class="cstat-no" title="statement not covered" > }</span>
378
+ <span class="cstat-no" title="statement not covered" > }</span>
379
+ email.subject = 'Welcome'
380
+ email.link = domainPath + 'login'
381
+ emailTemplateDir = 'confirmInvitation'
382
+ break
383
+ }
384
+ const templateDir = path.join(mailerService.options.templateDir, emailTemplateDir)
385
+ const template = new emails.EmailTemplate(templateDir)
386
+ // Errors does not seem to be correctly catched by the caller
387
+ // so we catch them here to avoid any problem
388
+ try {
389
+ const emailContent = await template.render({ email, user }, user.locale || 'en-us')
390
+ // Update compiled content
391
+ email.html = emailContent.html
392
+ debug('Sending email ', email)
393
+ return mailerService.create(email)
394
+ } <span class="branch-0 cbranch-no" title="branch not covered" >catch (error) {</span>
395
+ <span class="cstat-no" title="statement not covered" > debug('Sending email failed', error)</span>
396
+ <span class="cstat-no" title="statement not covered" > app.logger.error(error)</span>
397
+ <span class="cstat-no" title="statement not covered" > }</span>
398
+ }
399
+ &nbsp;
400
+ const servicePath = app.get('apiPath') + '/account'
401
+ const userService = app.getService('users')
402
+ /*
403
+ app.configure(accountManager({
404
+ // By default it is impossible to reset password if email is not verified
405
+ // The problem is that if you loose your password before validating your email you are blocked,
406
+ // as a consequence we release this constraint
407
+ skipIsVerifiedCheck: true,
408
+ service: userService.getPath(true),
409
+ path: servicePath,
410
+ notifier: options.notifier
411
+ }))
412
+ &nbsp;
413
+ return app.service(servicePath)
414
+ */
415
+ return new AuthenticationManagementService(app, {
416
+ // By default it is impossible to reset password if email is not verified
417
+ // The problem is that if you loose your password before validating your email you are blocked,
418
+ // as a consequence we release this constraint
419
+ skipIsVerifiedCheck: true,
420
+ service: userService.getPath(true),
421
+ path: servicePath,
422
+ notifier: options.notifier,
423
+ reuseResetToken: true
424
+ })
425
+ }
426
+ &nbsp;</pre></td></tr></table></pre>
427
+
428
+ <div class='push'></div><!-- for sticky footer -->
429
+ </div><!-- /wrapper -->
430
+ <div class='footer quiet pad2 space-top1 center small'>
431
+ Code coverage generated by
432
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
433
+ at 2023-08-21T15:28:16.555Z
434
+ </div>
435
+ <script src="../../../../prettify.js"></script>
436
+ <script>
437
+ window.onload = function () {
438
+ prettyPrint();
439
+ };
440
+ </script>
441
+ <script src="../../../../sorter.js"></script>
442
+ <script src="../../../../block-navigation.js"></script>
443
+ </body>
444
+ </html>
445
+