kuzzle 2.49.1 → 2.50.0-beta.3

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 (592) hide show
  1. package/dist/bin/check-node-version.js +11 -0
  2. package/dist/bin/copy-protobuf.js +17 -0
  3. package/dist/lib/api/controllers/adminController.d.ts +51 -0
  4. package/dist/lib/api/controllers/adminController.js +191 -0
  5. package/{lib → dist/lib}/api/controllers/authController.d.ts +20 -40
  6. package/{lib → dist/lib}/api/controllers/authController.js +23 -24
  7. package/dist/lib/api/controllers/bulkController.d.ts +46 -0
  8. package/dist/lib/api/controllers/bulkController.js +132 -0
  9. package/dist/lib/api/controllers/clusterController.d.ts +6 -0
  10. package/{lib → dist/lib}/api/controllers/clusterController.js +7 -11
  11. package/dist/lib/api/controllers/collectionController.d.ts +136 -0
  12. package/dist/lib/api/controllers/collectionController.js +356 -0
  13. package/dist/lib/api/controllers/documentController.d.ts +181 -0
  14. package/dist/lib/api/controllers/documentController.js +768 -0
  15. package/dist/lib/api/controllers/index.d.ts +12 -0
  16. package/{lib → dist/lib}/api/controllers/index.js +13 -14
  17. package/dist/lib/api/controllers/indexController.d.ts +65 -0
  18. package/dist/lib/api/controllers/indexController.js +139 -0
  19. package/dist/lib/api/controllers/memoryStorageController.d.ts +8 -0
  20. package/dist/lib/api/controllers/memoryStorageController.js +867 -0
  21. package/dist/lib/api/controllers/realtimeController.d.ts +47 -0
  22. package/dist/lib/api/controllers/realtimeController.js +128 -0
  23. package/dist/lib/api/controllers/securityController.d.ts +423 -0
  24. package/dist/lib/api/controllers/securityController.js +1139 -0
  25. package/dist/lib/api/controllers/serverController.d.ts +82 -0
  26. package/dist/lib/api/controllers/serverController.js +321 -0
  27. package/dist/lib/api/documentExtractor.d.ts +9 -0
  28. package/dist/lib/api/documentExtractor.js +274 -0
  29. package/dist/lib/api/funnel.d.ts +183 -0
  30. package/dist/lib/api/funnel.js +821 -0
  31. package/dist/lib/api/httpRoutes.d.ts +17 -0
  32. package/dist/lib/api/httpRoutes.js +1496 -0
  33. package/dist/lib/api/rateLimiter.d.ts +18 -0
  34. package/dist/lib/api/rateLimiter.js +74 -0
  35. package/{lib → dist/lib}/api/request/kuzzleRequest.d.ts +2 -2
  36. package/{lib → dist/lib}/api/request/requestContext.d.ts +2 -1
  37. package/dist/lib/cluster/command.d.ts +73 -0
  38. package/dist/lib/cluster/command.js +236 -0
  39. package/dist/lib/cluster/index.d.ts +2 -0
  40. package/{lib → dist/lib}/cluster/index.js +1 -2
  41. package/dist/lib/cluster/node.d.ts +278 -0
  42. package/dist/lib/cluster/node.js +876 -0
  43. package/dist/lib/cluster/publisher.d.ts +188 -0
  44. package/dist/lib/cluster/publisher.js +347 -0
  45. package/dist/lib/cluster/subscriber.d.ts +269 -0
  46. package/dist/lib/cluster/subscriber.js +555 -0
  47. package/dist/lib/cluster/workers/IDCardRenewer.d.ts +13 -0
  48. package/dist/lib/cluster/workers/IDCardRenewer.js +120 -0
  49. package/{lib → dist/lib}/config/documentEventAliases.d.ts +1 -2
  50. package/dist/lib/config/index.d.ts +5 -0
  51. package/dist/lib/config/index.js +244 -0
  52. package/dist/lib/config/sdkCompatibility.json +9 -0
  53. package/dist/lib/core/auth/formatProcessing.d.ts +30 -0
  54. package/dist/lib/core/auth/formatProcessing.js +55 -0
  55. package/dist/lib/core/auth/passportResponse.d.ts +15 -0
  56. package/{lib → dist/lib}/core/auth/passportResponse.js +24 -30
  57. package/dist/lib/core/auth/passportWrapper.d.ts +28 -0
  58. package/dist/lib/core/auth/passportWrapper.js +126 -0
  59. package/{lib → dist/lib}/core/backend/backendConfig.js +2 -2
  60. package/{lib → dist/lib}/core/backend/backendErrors.js +9 -12
  61. package/dist/lib/core/cache/cacheEngine.d.ts +15 -0
  62. package/dist/lib/core/cache/cacheEngine.js +205 -0
  63. package/dist/lib/core/network/accessLogger.d.ts +29 -0
  64. package/dist/lib/core/network/accessLogger.js +250 -0
  65. package/dist/lib/core/network/clientConnection.d.ts +15 -0
  66. package/{lib → dist/lib}/core/network/clientConnection.js +17 -24
  67. package/dist/lib/core/network/context.d.ts +42 -0
  68. package/dist/lib/core/network/context.js +57 -0
  69. package/dist/lib/core/network/entryPoint.d.ts +62 -0
  70. package/dist/lib/core/network/entryPoint.js +261 -0
  71. package/dist/lib/core/network/httpRouter/index.d.ts +85 -0
  72. package/dist/lib/core/network/httpRouter/index.js +258 -0
  73. package/dist/lib/core/network/httpRouter/routeHandler.d.ts +46 -0
  74. package/dist/lib/core/network/httpRouter/routeHandler.js +101 -0
  75. package/dist/lib/core/network/httpRouter/routePart.d.ts +35 -0
  76. package/dist/lib/core/network/httpRouter/routePart.js +117 -0
  77. package/dist/lib/core/network/protocolManifest.d.ts +6 -0
  78. package/{lib → dist/lib}/core/network/protocolManifest.js +5 -9
  79. package/dist/lib/core/network/protocols/httpMessage.d.ts +22 -0
  80. package/dist/lib/core/network/protocols/httpMessage.js +62 -0
  81. package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +171 -0
  82. package/dist/lib/core/network/protocols/httpwsProtocol.js +921 -0
  83. package/dist/lib/core/network/protocols/internalProtocol.d.ts +27 -0
  84. package/dist/lib/core/network/protocols/internalProtocol.js +82 -0
  85. package/dist/lib/core/network/protocols/mqttProtocol.d.ts +39 -0
  86. package/dist/lib/core/network/protocols/mqttProtocol.js +219 -0
  87. package/dist/lib/core/network/protocols/protocol.d.ts +26 -0
  88. package/dist/lib/core/network/protocols/protocol.js +74 -0
  89. package/dist/lib/core/network/router.d.ts +49 -0
  90. package/dist/lib/core/network/router.js +193 -0
  91. package/dist/lib/core/plugin/plugin.d.ts +56 -0
  92. package/dist/lib/core/plugin/plugin.js +282 -0
  93. package/{lib → dist/lib}/core/plugin/pluginContext.js +2 -2
  94. package/dist/lib/core/plugin/pluginManifest.d.ts +5 -0
  95. package/{lib → dist/lib}/core/plugin/pluginManifest.js +16 -27
  96. package/dist/lib/core/plugin/pluginRepository.d.ts +53 -0
  97. package/dist/lib/core/plugin/pluginRepository.js +112 -0
  98. package/dist/lib/core/plugin/pluginsManager.d.ts +190 -0
  99. package/dist/lib/core/plugin/pluginsManager.js +817 -0
  100. package/dist/lib/core/plugin/privilegedContext.d.ts +14 -0
  101. package/{lib → dist/lib}/core/plugin/privilegedContext.js +10 -14
  102. package/dist/lib/core/realtime/actionEnum.d.ts +25 -0
  103. package/{lib → dist/lib}/core/realtime/actionEnum.js +7 -10
  104. package/dist/lib/core/realtime/index.d.ts +8 -0
  105. package/{lib → dist/lib}/core/realtime/index.js +9 -13
  106. package/dist/lib/core/realtime/notification/document.d.ts +34 -0
  107. package/dist/lib/core/realtime/notification/document.js +98 -0
  108. package/dist/lib/core/realtime/notification/index.d.ts +3 -0
  109. package/{lib → dist/lib}/core/realtime/notification/index.js +4 -5
  110. package/dist/lib/core/realtime/notification/server.d.ts +17 -0
  111. package/{lib → dist/lib}/core/realtime/notification/server.js +8 -10
  112. package/dist/lib/core/realtime/notification/user.d.ts +29 -0
  113. package/dist/lib/core/realtime/notification/user.js +66 -0
  114. package/dist/lib/core/realtime/notifier.d.ts +171 -0
  115. package/dist/lib/core/realtime/notifier.js +405 -0
  116. package/dist/lib/core/security/index.d.ts +14 -0
  117. package/{lib → dist/lib}/core/security/index.js +15 -19
  118. package/dist/lib/core/security/roleRepository.d.ts +143 -0
  119. package/dist/lib/core/security/roleRepository.js +445 -0
  120. package/dist/lib/core/security/securityLoader.d.ts +24 -0
  121. package/dist/lib/core/security/securityLoader.js +125 -0
  122. package/{lib → dist/lib}/core/security/tokenRepository.js +1 -1
  123. package/dist/lib/core/security/userRepository.d.ts +81 -0
  124. package/dist/lib/core/security/userRepository.js +346 -0
  125. package/dist/lib/core/shared/abstractManifest.d.ts +27 -0
  126. package/dist/lib/core/shared/abstractManifest.js +85 -0
  127. package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +7 -0
  128. package/dist/lib/core/shared/sdk/impersonatedSdk.js +80 -0
  129. package/{lib → dist/lib}/core/shared/store.d.ts +2 -2
  130. package/dist/lib/core/statistics/statistics.d.ts +94 -0
  131. package/dist/lib/core/statistics/statistics.js +287 -0
  132. package/dist/lib/core/storage/clientAdapter.d.ts +62 -0
  133. package/dist/lib/core/storage/clientAdapter.js +756 -0
  134. package/dist/lib/core/storage/storageEngine.d.ts +13 -0
  135. package/dist/lib/core/storage/storageEngine.js +52 -0
  136. package/dist/lib/core/validation/baseType.d.ts +35 -0
  137. package/dist/lib/core/validation/baseType.js +70 -0
  138. package/dist/lib/core/validation/types/anything.d.ts +10 -0
  139. package/{lib → dist/lib}/core/validation/types/anything.js +7 -10
  140. package/dist/lib/core/validation/types/boolean.d.ts +16 -0
  141. package/{lib → dist/lib}/core/validation/types/boolean.js +18 -23
  142. package/dist/lib/core/validation/types/date.d.ts +17 -0
  143. package/dist/lib/core/validation/types/date.js +215 -0
  144. package/dist/lib/core/validation/types/email.d.ts +17 -0
  145. package/dist/lib/core/validation/types/email.js +80 -0
  146. package/dist/lib/core/validation/types/enum.d.ts +17 -0
  147. package/dist/lib/core/validation/types/enum.js +70 -0
  148. package/dist/lib/core/validation/types/geoPoint.d.ts +17 -0
  149. package/{lib → dist/lib}/core/validation/types/geoPoint.js +19 -24
  150. package/dist/lib/core/validation/types/geoShape.d.ts +31 -0
  151. package/dist/lib/core/validation/types/geoShape.js +280 -0
  152. package/dist/lib/core/validation/types/integer.d.ts +7 -0
  153. package/{lib → dist/lib}/core/validation/types/integer.js +21 -27
  154. package/dist/lib/core/validation/types/ipAddress.d.ts +17 -0
  155. package/dist/lib/core/validation/types/ipAddress.js +73 -0
  156. package/dist/lib/core/validation/types/numeric.d.ts +17 -0
  157. package/dist/lib/core/validation/types/numeric.js +84 -0
  158. package/dist/lib/core/validation/types/object.d.ts +24 -0
  159. package/dist/lib/core/validation/types/object.js +74 -0
  160. package/dist/lib/core/validation/types/string.d.ts +17 -0
  161. package/dist/lib/core/validation/types/string.js +85 -0
  162. package/dist/lib/core/validation/types/url.d.ts +17 -0
  163. package/dist/lib/core/validation/types/url.js +73 -0
  164. package/dist/lib/core/validation/validation.d.ts +113 -0
  165. package/dist/lib/core/validation/validation.js +692 -0
  166. package/dist/lib/kerror/codes/0-core.json +194 -0
  167. package/dist/lib/kerror/codes/1-services.json +351 -0
  168. package/dist/lib/kerror/codes/2-api.json +195 -0
  169. package/dist/lib/kerror/codes/3-network.json +151 -0
  170. package/dist/lib/kerror/codes/4-plugin.json +498 -0
  171. package/dist/lib/kerror/codes/5-validation.json +158 -0
  172. package/dist/lib/kerror/codes/6-protocol.json +28 -0
  173. package/dist/lib/kerror/codes/7-security.json +283 -0
  174. package/dist/lib/kerror/codes/8-cluster.json +16 -0
  175. package/dist/lib/kerror/codes/index.d.ts +24 -0
  176. package/dist/lib/kerror/codes/index.js +140 -0
  177. package/{lib → dist/lib}/kerror/index.d.ts +5 -5
  178. package/{lib → dist/lib}/kuzzle/Logger.d.ts +6 -0
  179. package/{lib → dist/lib}/kuzzle/Logger.js +26 -5
  180. package/dist/lib/kuzzle/dumpGenerator.d.ts +14 -0
  181. package/dist/lib/kuzzle/dumpGenerator.js +180 -0
  182. package/dist/lib/kuzzle/event/pipeRunner.d.ts +30 -0
  183. package/dist/lib/kuzzle/event/pipeRunner.js +119 -0
  184. package/dist/lib/kuzzle/event/waterfall.d.ts +2 -0
  185. package/dist/lib/kuzzle/event/waterfall.js +90 -0
  186. package/dist/lib/kuzzle/internalIndexHandler.d.ts +186 -0
  187. package/dist/lib/kuzzle/internalIndexHandler.js +174 -0
  188. package/{lib → dist/lib}/kuzzle/kuzzle.d.ts +6 -7
  189. package/{lib → dist/lib}/kuzzle/kuzzle.js +5 -2
  190. package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +20 -0
  191. package/{lib → dist/lib}/kuzzle/kuzzleStateEnum.js +5 -8
  192. package/dist/lib/kuzzle/vault.d.ts +2 -0
  193. package/dist/lib/kuzzle/vault.js +63 -0
  194. package/dist/lib/model/security/rights.d.ts +8 -0
  195. package/{lib → dist/lib}/model/security/rights.js +4 -8
  196. package/{lib → dist/lib}/model/security/role.d.ts +1 -1
  197. package/{lib → dist/lib}/model/security/user.d.ts +1 -0
  198. package/dist/lib/model/storage/apiKey.d.ts +49 -0
  199. package/dist/lib/model/storage/apiKey.js +126 -0
  200. package/dist/lib/model/storage/baseModel.d.ts +100 -0
  201. package/dist/lib/model/storage/baseModel.js +211 -0
  202. package/dist/lib/service/cache/redis.d.ts +74 -0
  203. package/dist/lib/service/cache/redis.js +237 -0
  204. package/dist/lib/service/service.d.ts +30 -0
  205. package/dist/lib/service/service.js +74 -0
  206. package/{lib → dist/lib}/service/storage/7/elasticsearch.d.ts +2 -2
  207. package/{lib → dist/lib}/service/storage/7/elasticsearch.js +23 -25
  208. package/dist/lib/service/storage/7/esWrapper.d.ts +19 -0
  209. package/dist/lib/service/storage/7/esWrapper.js +245 -0
  210. package/{lib → dist/lib}/service/storage/8/elasticsearch.js +23 -25
  211. package/dist/lib/service/storage/8/esWrapper.d.ts +19 -0
  212. package/dist/lib/service/storage/8/esWrapper.js +245 -0
  213. package/{lib → dist/lib}/types/Plugin.d.ts +1 -1
  214. package/{lib/types → dist/lib/types/controllers}/Controller.d.ts +2 -2
  215. package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.d.ts +1 -1
  216. package/dist/lib/types/controllers/adminControlller.type.d.ts +5 -0
  217. package/dist/lib/types/controllers/adminControlller.type.js +3 -0
  218. package/dist/lib/types/controllers/authController.type.d.ts +5 -0
  219. package/dist/lib/types/controllers/authController.type.js +3 -0
  220. package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -0
  221. package/dist/lib/types/core/auth/formatProcessing.type.js +3 -0
  222. package/{lib → dist/lib}/types/index.d.ts +3 -3
  223. package/{lib → dist/lib}/types/index.js +3 -3
  224. package/dist/lib/util/assertType.d.ts +41 -0
  225. package/{lib → dist/lib}/util/assertType.js +38 -56
  226. package/dist/lib/util/asyncStore.d.ts +38 -0
  227. package/dist/lib/util/asyncStore.js +70 -0
  228. package/dist/lib/util/bytes.d.ts +2 -0
  229. package/dist/lib/util/bytes.js +33 -0
  230. package/dist/lib/util/debug.d.ts +2 -0
  231. package/{lib → dist/lib}/util/debug.js +15 -23
  232. package/dist/lib/util/deprecate.d.ts +1 -0
  233. package/dist/lib/util/deprecate.js +64 -0
  234. package/dist/lib/util/didYouMean.d.ts +2 -0
  235. package/{lib → dist/lib}/util/didYouMean.js +9 -15
  236. package/dist/lib/util/extractFields.d.ts +17 -0
  237. package/{lib → dist/lib}/util/extractFields.js +18 -32
  238. package/dist/lib/util/memoize.d.ts +7 -0
  239. package/{lib → dist/lib}/util/memoize.js +14 -21
  240. package/dist/lib/util/promback.d.ts +13 -0
  241. package/dist/lib/util/promback.js +60 -0
  242. package/dist/lib/util/requestAssertions.d.ts +10 -0
  243. package/dist/lib/util/requestAssertions.js +143 -0
  244. package/dist/lib/util/safeObject.d.ts +3 -0
  245. package/{lib → dist/lib}/util/safeObject.js +7 -13
  246. package/dist/lib/util/stackTrace.d.ts +19 -0
  247. package/{lib → dist/lib}/util/stackTrace.js +35 -41
  248. package/dist/lib/util/wildcard.d.ts +1 -0
  249. package/{lib → dist/lib}/util/wildcard.js +21 -30
  250. package/dist/package.json +120 -0
  251. package/package.json +45 -58
  252. package/bin/start-kuzzle-server +0 -126
  253. package/check-node-version.js +0 -17
  254. package/lib/api/controllers/adminController.js +0 -229
  255. package/lib/api/controllers/bulkController.js +0 -210
  256. package/lib/api/controllers/collectionController.js +0 -502
  257. package/lib/api/controllers/documentController.js +0 -1156
  258. package/lib/api/controllers/indexController.js +0 -179
  259. package/lib/api/controllers/memoryStorageController.js +0 -1023
  260. package/lib/api/controllers/realtimeController.js +0 -155
  261. package/lib/api/controllers/securityController.js +0 -1571
  262. package/lib/api/controllers/serverController.js +0 -381
  263. package/lib/api/documentExtractor.js +0 -309
  264. package/lib/api/funnel.js +0 -1143
  265. package/lib/api/httpRoutes.js +0 -1547
  266. package/lib/api/rateLimiter.js +0 -87
  267. package/lib/cluster/command.js +0 -284
  268. package/lib/cluster/node.js +0 -1203
  269. package/lib/cluster/publisher.js +0 -386
  270. package/lib/cluster/subscriber.js +0 -776
  271. package/lib/cluster/workers/IDCardRenewer.js +0 -144
  272. package/lib/config/index.js +0 -351
  273. package/lib/config/sdkCompatibility.json +0 -9
  274. package/lib/core/auth/formatProcessing.js +0 -66
  275. package/lib/core/auth/passportWrapper.js +0 -126
  276. package/lib/core/cache/cacheEngine.js +0 -278
  277. package/lib/core/network/accessLogger.js +0 -322
  278. package/lib/core/network/context.js +0 -80
  279. package/lib/core/network/entryPoint.js +0 -358
  280. package/lib/core/network/httpRouter/index.js +0 -316
  281. package/lib/core/network/httpRouter/routeHandler.js +0 -111
  282. package/lib/core/network/httpRouter/routePart.js +0 -147
  283. package/lib/core/network/protocols/httpMessage.js +0 -69
  284. package/lib/core/network/protocols/httpwsProtocol.js +0 -1254
  285. package/lib/core/network/protocols/internalProtocol.js +0 -109
  286. package/lib/core/network/protocols/mqttProtocol.js +0 -291
  287. package/lib/core/network/protocols/protocol.js +0 -102
  288. package/lib/core/network/router.js +0 -255
  289. package/lib/core/plugin/plugin.js +0 -436
  290. package/lib/core/plugin/pluginRepository.js +0 -132
  291. package/lib/core/plugin/pluginsManager.js +0 -1244
  292. package/lib/core/realtime/notification/document.js +0 -108
  293. package/lib/core/realtime/notification/user.js +0 -70
  294. package/lib/core/realtime/notifier.js +0 -541
  295. package/lib/core/security/README.md +0 -223
  296. package/lib/core/security/roleRepository.js +0 -569
  297. package/lib/core/security/securityLoader.js +0 -174
  298. package/lib/core/security/userRepository.js +0 -446
  299. package/lib/core/shared/README.md +0 -3
  300. package/lib/core/shared/abstractManifest.js +0 -102
  301. package/lib/core/shared/sdk/impersonatedSdk.js +0 -94
  302. package/lib/core/statistics/index.js +0 -24
  303. package/lib/core/statistics/statistics.js +0 -373
  304. package/lib/core/storage/clientAdapter.js +0 -1045
  305. package/lib/core/storage/storageEngine.js +0 -63
  306. package/lib/core/validation/baseType.js +0 -80
  307. package/lib/core/validation/index.js +0 -24
  308. package/lib/core/validation/types/date.js +0 -284
  309. package/lib/core/validation/types/email.js +0 -92
  310. package/lib/core/validation/types/enum.js +0 -100
  311. package/lib/core/validation/types/geoShape.js +0 -370
  312. package/lib/core/validation/types/ipAddress.js +0 -83
  313. package/lib/core/validation/types/numeric.js +0 -108
  314. package/lib/core/validation/types/object.js +0 -88
  315. package/lib/core/validation/types/string.js +0 -110
  316. package/lib/core/validation/types/url.js +0 -83
  317. package/lib/core/validation/validation.js +0 -1180
  318. package/lib/kerror/codes/0-core.json +0 -194
  319. package/lib/kerror/codes/1-services.json +0 -351
  320. package/lib/kerror/codes/2-api.json +0 -195
  321. package/lib/kerror/codes/3-network.json +0 -151
  322. package/lib/kerror/codes/4-plugin.json +0 -498
  323. package/lib/kerror/codes/5-validation.json +0 -158
  324. package/lib/kerror/codes/6-protocol.json +0 -28
  325. package/lib/kerror/codes/7-security.json +0 -283
  326. package/lib/kerror/codes/8-cluster.json +0 -16
  327. package/lib/kerror/codes/index.js +0 -208
  328. package/lib/kuzzle/dumpGenerator.js +0 -259
  329. package/lib/kuzzle/event/pipeRunner.js +0 -144
  330. package/lib/kuzzle/event/waterfall.js +0 -101
  331. package/lib/kuzzle/internalIndexHandler.js +0 -234
  332. package/lib/kuzzle/vault.js +0 -89
  333. package/lib/model/storage/apiKey.js +0 -158
  334. package/lib/model/storage/baseModel.js +0 -275
  335. package/lib/service/cache/redis.js +0 -282
  336. package/lib/service/service.js +0 -84
  337. package/lib/service/storage/7/esWrapper.js +0 -303
  338. package/lib/service/storage/8/esWrapper.js +0 -303
  339. package/lib/util/asyncStore.js +0 -112
  340. package/lib/util/bytes.js +0 -36
  341. package/lib/util/deprecate.js +0 -82
  342. package/lib/util/promback.js +0 -66
  343. package/lib/util/readYamlFile.d.ts +0 -2
  344. package/lib/util/readYamlFile.js +0 -10
  345. package/lib/util/requestAssertions.js +0 -157
  346. /package/{index.d.ts → dist/index.d.ts} +0 -0
  347. /package/{index.js → dist/index.js} +0 -0
  348. /package/{lib → dist/lib}/api/controllers/baseController.d.ts +0 -0
  349. /package/{lib → dist/lib}/api/controllers/baseController.js +0 -0
  350. /package/{lib → dist/lib}/api/controllers/debugController.d.ts +0 -0
  351. /package/{lib → dist/lib}/api/controllers/debugController.js +0 -0
  352. /package/{lib → dist/lib}/api/openapi/OpenApiManager.d.ts +0 -0
  353. /package/{lib → dist/lib}/api/openapi/OpenApiManager.js +0 -0
  354. /package/{lib → dist/lib}/api/openapi/index.d.ts +0 -0
  355. /package/{lib → dist/lib}/api/openapi/index.js +0 -0
  356. /package/{lib → dist/lib}/api/openapi/openApiGenerator.d.ts +0 -0
  357. /package/{lib → dist/lib}/api/openapi/openApiGenerator.js +0 -0
  358. /package/{lib → dist/lib}/api/request/index.d.ts +0 -0
  359. /package/{lib → dist/lib}/api/request/index.js +0 -0
  360. /package/{lib → dist/lib}/api/request/kuzzleRequest.js +0 -0
  361. /package/{lib → dist/lib}/api/request/requestContext.js +0 -0
  362. /package/{lib → dist/lib}/api/request/requestInput.d.ts +0 -0
  363. /package/{lib → dist/lib}/api/request/requestInput.js +0 -0
  364. /package/{lib → dist/lib}/api/request/requestResponse.d.ts +0 -0
  365. /package/{lib → dist/lib}/api/request/requestResponse.js +0 -0
  366. /package/{lib → dist/lib}/cluster/idCardHandler.d.ts +0 -0
  367. /package/{lib → dist/lib}/cluster/idCardHandler.js +0 -0
  368. /package/{lib → dist/lib}/cluster/protobuf/command.proto +0 -0
  369. /package/{lib → dist/lib}/cluster/protobuf/sync.proto +0 -0
  370. /package/{lib → dist/lib}/cluster/state.d.ts +0 -0
  371. /package/{lib → dist/lib}/cluster/state.js +0 -0
  372. /package/{lib → dist/lib}/config/default.config.d.ts +0 -0
  373. /package/{lib → dist/lib}/config/default.config.js +0 -0
  374. /package/{lib → dist/lib}/config/documentEventAliases.js +0 -0
  375. /package/{lib → dist/lib}/core/auth/tokenManager.d.ts +0 -0
  376. /package/{lib → dist/lib}/core/auth/tokenManager.js +0 -0
  377. /package/{lib → dist/lib}/core/backend/applicationManager.d.ts +0 -0
  378. /package/{lib → dist/lib}/core/backend/applicationManager.js +0 -0
  379. /package/{lib → dist/lib}/core/backend/backend.d.ts +0 -0
  380. /package/{lib → dist/lib}/core/backend/backend.js +0 -0
  381. /package/{lib → dist/lib}/core/backend/backendCluster.d.ts +0 -0
  382. /package/{lib → dist/lib}/core/backend/backendCluster.js +0 -0
  383. /package/{lib → dist/lib}/core/backend/backendConfig.d.ts +0 -0
  384. /package/{lib → dist/lib}/core/backend/backendController.d.ts +0 -0
  385. /package/{lib → dist/lib}/core/backend/backendController.js +0 -0
  386. /package/{lib → dist/lib}/core/backend/backendErrors.d.ts +0 -0
  387. /package/{lib → dist/lib}/core/backend/backendHook.d.ts +0 -0
  388. /package/{lib → dist/lib}/core/backend/backendHook.js +0 -0
  389. /package/{lib → dist/lib}/core/backend/backendImport.d.ts +0 -0
  390. /package/{lib → dist/lib}/core/backend/backendImport.js +0 -0
  391. /package/{lib → dist/lib}/core/backend/backendOpenApi.d.ts +0 -0
  392. /package/{lib → dist/lib}/core/backend/backendOpenApi.js +0 -0
  393. /package/{lib → dist/lib}/core/backend/backendPipe.d.ts +0 -0
  394. /package/{lib → dist/lib}/core/backend/backendPipe.js +0 -0
  395. /package/{lib → dist/lib}/core/backend/backendPlugin.d.ts +0 -0
  396. /package/{lib → dist/lib}/core/backend/backendPlugin.js +0 -0
  397. /package/{lib → dist/lib}/core/backend/backendStorage.d.ts +0 -0
  398. /package/{lib → dist/lib}/core/backend/backendStorage.js +0 -0
  399. /package/{lib → dist/lib}/core/backend/backendSubscription.d.ts +0 -0
  400. /package/{lib → dist/lib}/core/backend/backendSubscription.js +0 -0
  401. /package/{lib → dist/lib}/core/backend/backendVault.d.ts +0 -0
  402. /package/{lib → dist/lib}/core/backend/backendVault.js +0 -0
  403. /package/{lib → dist/lib}/core/backend/index.d.ts +0 -0
  404. /package/{lib → dist/lib}/core/backend/index.js +0 -0
  405. /package/{lib → dist/lib}/core/backend/internalLogger.d.ts +0 -0
  406. /package/{lib → dist/lib}/core/backend/internalLogger.js +0 -0
  407. /package/{lib → dist/lib}/core/cache/cacheDbEnum.d.ts +0 -0
  408. /package/{lib → dist/lib}/core/cache/cacheDbEnum.js +0 -0
  409. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.d.ts +0 -0
  410. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.js +0 -0
  411. /package/{lib → dist/lib}/core/plugin/pluginContext.d.ts +0 -0
  412. /package/{lib → dist/lib}/core/realtime/channel.d.ts +0 -0
  413. /package/{lib → dist/lib}/core/realtime/channel.js +0 -0
  414. /package/{lib → dist/lib}/core/realtime/connectionRooms.d.ts +0 -0
  415. /package/{lib → dist/lib}/core/realtime/connectionRooms.js +0 -0
  416. /package/{lib → dist/lib}/core/realtime/hotelClerk.d.ts +0 -0
  417. /package/{lib → dist/lib}/core/realtime/hotelClerk.js +0 -0
  418. /package/{lib → dist/lib}/core/realtime/room.d.ts +0 -0
  419. /package/{lib → dist/lib}/core/realtime/room.js +0 -0
  420. /package/{lib → dist/lib}/core/realtime/subscription.d.ts +0 -0
  421. /package/{lib → dist/lib}/core/realtime/subscription.js +0 -0
  422. /package/{lib → dist/lib}/core/security/profileRepository.d.ts +0 -0
  423. /package/{lib → dist/lib}/core/security/profileRepository.js +0 -0
  424. /package/{lib → dist/lib}/core/security/tokenRepository.d.ts +0 -0
  425. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.d.ts +0 -0
  426. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.js +0 -0
  427. /package/{lib → dist/lib}/core/shared/ObjectRepository.d.ts +0 -0
  428. /package/{lib → dist/lib}/core/shared/ObjectRepository.js +0 -0
  429. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.d.ts +0 -0
  430. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.js +0 -0
  431. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.d.ts +0 -0
  432. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.js +0 -0
  433. /package/{lib → dist/lib}/core/shared/store.js +0 -0
  434. /package/{lib → dist/lib}/core/storage/indexCache.d.ts +0 -0
  435. /package/{lib → dist/lib}/core/storage/indexCache.js +0 -0
  436. /package/{lib → dist/lib}/core/storage/storeScopeEnum.d.ts +0 -0
  437. /package/{lib → dist/lib}/core/storage/storeScopeEnum.js +0 -0
  438. /package/{lib → dist/lib}/kerror/errors/badRequestError.d.ts +0 -0
  439. /package/{lib → dist/lib}/kerror/errors/badRequestError.js +0 -0
  440. /package/{lib → dist/lib}/kerror/errors/externalServiceError.d.ts +0 -0
  441. /package/{lib → dist/lib}/kerror/errors/externalServiceError.js +0 -0
  442. /package/{lib → dist/lib}/kerror/errors/forbiddenError.d.ts +0 -0
  443. /package/{lib → dist/lib}/kerror/errors/forbiddenError.js +0 -0
  444. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.d.ts +0 -0
  445. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.js +0 -0
  446. /package/{lib → dist/lib}/kerror/errors/index.d.ts +0 -0
  447. /package/{lib → dist/lib}/kerror/errors/index.js +0 -0
  448. /package/{lib → dist/lib}/kerror/errors/internalError.d.ts +0 -0
  449. /package/{lib → dist/lib}/kerror/errors/internalError.js +0 -0
  450. /package/{lib → dist/lib}/kerror/errors/kuzzleError.d.ts +0 -0
  451. /package/{lib → dist/lib}/kerror/errors/kuzzleError.js +0 -0
  452. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.d.ts +0 -0
  453. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.js +0 -0
  454. /package/{lib → dist/lib}/kerror/errors/notFoundError.d.ts +0 -0
  455. /package/{lib → dist/lib}/kerror/errors/notFoundError.js +0 -0
  456. /package/{lib → dist/lib}/kerror/errors/partialError.d.ts +0 -0
  457. /package/{lib → dist/lib}/kerror/errors/partialError.js +0 -0
  458. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.d.ts +0 -0
  459. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.js +0 -0
  460. /package/{lib → dist/lib}/kerror/errors/preconditionError.d.ts +0 -0
  461. /package/{lib → dist/lib}/kerror/errors/preconditionError.js +0 -0
  462. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.d.ts +0 -0
  463. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.js +0 -0
  464. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.d.ts +0 -0
  465. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.js +0 -0
  466. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.d.ts +0 -0
  467. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.js +0 -0
  468. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.d.ts +0 -0
  469. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.js +0 -0
  470. /package/{lib → dist/lib}/kerror/index.js +0 -0
  471. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.d.ts +0 -0
  472. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.js +0 -0
  473. /package/{lib → dist/lib}/kuzzle/index.d.ts +0 -0
  474. /package/{lib → dist/lib}/kuzzle/index.js +0 -0
  475. /package/{lib → dist/lib}/model/security/profile.d.ts +0 -0
  476. /package/{lib → dist/lib}/model/security/profile.js +0 -0
  477. /package/{lib → dist/lib}/model/security/role.js +0 -0
  478. /package/{lib → dist/lib}/model/security/token.d.ts +0 -0
  479. /package/{lib → dist/lib}/model/security/token.js +0 -0
  480. /package/{lib → dist/lib}/model/security/user.js +0 -0
  481. /package/{lib → dist/lib}/service/storage/8/elasticsearch.d.ts +0 -0
  482. /package/{lib → dist/lib}/service/storage/Elasticsearch.d.ts +0 -0
  483. /package/{lib → dist/lib}/service/storage/Elasticsearch.js +0 -0
  484. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.d.ts +0 -0
  485. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.js +0 -0
  486. /package/{lib → dist/lib}/types/ClientConnection.d.ts +0 -0
  487. /package/{lib → dist/lib}/types/ClientConnection.js +0 -0
  488. /package/{lib → dist/lib}/types/Deprecation.d.ts +0 -0
  489. /package/{lib → dist/lib}/types/Deprecation.js +0 -0
  490. /package/{lib → dist/lib}/types/EventHandler.d.ts +0 -0
  491. /package/{lib → dist/lib}/types/EventHandler.js +0 -0
  492. /package/{lib → dist/lib}/types/Global.d.ts +0 -0
  493. /package/{lib → dist/lib}/types/Global.js +0 -0
  494. /package/{lib → dist/lib}/types/HttpMessage.d.ts +0 -0
  495. /package/{lib → dist/lib}/types/HttpMessage.js +0 -0
  496. /package/{lib → dist/lib}/types/HttpStream.d.ts +0 -0
  497. /package/{lib → dist/lib}/types/HttpStream.js +0 -0
  498. /package/{lib → dist/lib}/types/Kuzzle.d.ts +0 -0
  499. /package/{lib → dist/lib}/types/Kuzzle.js +0 -0
  500. /package/{lib → dist/lib}/types/KuzzleDocument.d.ts +0 -0
  501. /package/{lib → dist/lib}/types/KuzzleDocument.js +0 -0
  502. /package/{lib → dist/lib}/types/OpenApiDefinition.d.ts +0 -0
  503. /package/{lib → dist/lib}/types/OpenApiDefinition.js +0 -0
  504. /package/{lib → dist/lib}/types/PasswordPolicy.d.ts +0 -0
  505. /package/{lib → dist/lib}/types/PasswordPolicy.js +0 -0
  506. /package/{lib → dist/lib}/types/Plugin.js +0 -0
  507. /package/{lib → dist/lib}/types/PluginManifest.d.ts +0 -0
  508. /package/{lib → dist/lib}/types/PluginManifest.js +0 -0
  509. /package/{lib → dist/lib}/types/Policy.d.ts +0 -0
  510. /package/{lib → dist/lib}/types/Policy.js +0 -0
  511. /package/{lib → dist/lib}/types/PolicyRestrictions.d.ts +0 -0
  512. /package/{lib → dist/lib}/types/PolicyRestrictions.js +0 -0
  513. /package/{lib → dist/lib}/types/ProfileDefinition.d.ts +0 -0
  514. /package/{lib → dist/lib}/types/ProfileDefinition.js +0 -0
  515. /package/{lib → dist/lib}/types/RoleDefinition.d.ts +0 -0
  516. /package/{lib → dist/lib}/types/RoleDefinition.js +0 -0
  517. /package/{lib → dist/lib}/types/StrategyDefinition.d.ts +0 -0
  518. /package/{lib → dist/lib}/types/StrategyDefinition.js +0 -0
  519. /package/{lib → dist/lib}/types/Target.d.ts +0 -0
  520. /package/{lib → dist/lib}/types/Target.js +0 -0
  521. /package/{lib → dist/lib}/types/Token.d.ts +0 -0
  522. /package/{lib → dist/lib}/types/Token.js +0 -0
  523. /package/{lib → dist/lib}/types/User.d.ts +0 -0
  524. /package/{lib → dist/lib}/types/User.js +0 -0
  525. /package/{lib → dist/lib}/types/config/DumpConfiguration.d.ts +0 -0
  526. /package/{lib → dist/lib}/types/config/DumpConfiguration.js +0 -0
  527. /package/{lib → dist/lib}/types/config/HttpConfiguration.d.ts +0 -0
  528. /package/{lib → dist/lib}/types/config/HttpConfiguration.js +0 -0
  529. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.d.ts +0 -0
  530. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.js +0 -0
  531. /package/{lib → dist/lib}/types/config/LimitsConfiguration.d.ts +0 -0
  532. /package/{lib → dist/lib}/types/config/LimitsConfiguration.js +0 -0
  533. /package/{lib → dist/lib}/types/config/PluginsConfiguration.d.ts +0 -0
  534. /package/{lib → dist/lib}/types/config/PluginsConfiguration.js +0 -0
  535. /package/{lib → dist/lib}/types/config/SecurityConfiguration.d.ts +0 -0
  536. /package/{lib → dist/lib}/types/config/SecurityConfiguration.js +0 -0
  537. /package/{lib → dist/lib}/types/config/ServerConfiguration.d.ts +0 -0
  538. /package/{lib → dist/lib}/types/config/ServerConfiguration.js +0 -0
  539. /package/{lib → dist/lib}/types/config/ServicesConfiguration.d.ts +0 -0
  540. /package/{lib → dist/lib}/types/config/ServicesConfiguration.js +0 -0
  541. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +0 -0
  542. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.js +0 -0
  543. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +0 -0
  544. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.js +0 -0
  545. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +0 -0
  546. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.js +0 -0
  547. /package/{lib/types → dist/lib/types/controllers}/Controller.js +0 -0
  548. /package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.js +0 -0
  549. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.d.ts +0 -0
  550. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.js +0 -0
  551. /package/{lib → dist/lib}/types/errors/ErrorDefinition.d.ts +0 -0
  552. /package/{lib → dist/lib}/types/errors/ErrorDefinition.js +0 -0
  553. /package/{lib → dist/lib}/types/errors/ErrorDomains.d.ts +0 -0
  554. /package/{lib → dist/lib}/types/errors/ErrorDomains.js +0 -0
  555. /package/{lib → dist/lib}/types/events/EventGenericDocument.d.ts +0 -0
  556. /package/{lib → dist/lib}/types/events/EventGenericDocument.js +0 -0
  557. /package/{lib → dist/lib}/types/events/EventProtocol.d.ts +0 -0
  558. /package/{lib → dist/lib}/types/events/EventProtocol.js +0 -0
  559. /package/{lib → dist/lib}/types/realtime/RealtimeScope.d.ts +0 -0
  560. /package/{lib → dist/lib}/types/realtime/RealtimeScope.js +0 -0
  561. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.d.ts +0 -0
  562. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.js +0 -0
  563. /package/{lib → dist/lib}/types/realtime/RoomList.d.ts +0 -0
  564. /package/{lib → dist/lib}/types/realtime/RoomList.js +0 -0
  565. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.d.ts +0 -0
  566. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.js +0 -0
  567. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.d.ts +0 -0
  568. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.js +0 -0
  569. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.d.ts +0 -0
  570. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.js +0 -0
  571. /package/{lib → dist/lib}/util/Inflector.d.ts +0 -0
  572. /package/{lib → dist/lib}/util/Inflector.js +0 -0
  573. /package/{lib → dist/lib}/util/array.d.ts +0 -0
  574. /package/{lib → dist/lib}/util/array.js +0 -0
  575. /package/{lib → dist/lib}/util/async.d.ts +0 -0
  576. /package/{lib → dist/lib}/util/async.js +0 -0
  577. /package/{lib → dist/lib}/util/bufferedPassThrough.d.ts +0 -0
  578. /package/{lib → dist/lib}/util/bufferedPassThrough.js +0 -0
  579. /package/{lib → dist/lib}/util/crypto.d.ts +0 -0
  580. /package/{lib → dist/lib}/util/crypto.js +0 -0
  581. /package/{lib → dist/lib}/util/dump-collection.d.ts +0 -0
  582. /package/{lib → dist/lib}/util/dump-collection.js +0 -0
  583. /package/{lib → dist/lib}/util/esRequest.d.ts +0 -0
  584. /package/{lib → dist/lib}/util/esRequest.js +0 -0
  585. /package/{lib → dist/lib}/util/koncordeCompat.d.ts +0 -0
  586. /package/{lib → dist/lib}/util/koncordeCompat.js +0 -0
  587. /package/{lib → dist/lib}/util/mutex.d.ts +0 -0
  588. /package/{lib → dist/lib}/util/mutex.js +0 -0
  589. /package/{lib → dist/lib}/util/name-generator.d.ts +0 -0
  590. /package/{lib → dist/lib}/util/name-generator.js +0 -0
  591. /package/{lib → dist/lib}/util/time.d.ts +0 -0
  592. /package/{lib → dist/lib}/util/time.js +0 -0
@@ -0,0 +1,445 @@
1
+ /*
2
+ * Kuzzle, a backend software, self-hostable and ready to use
3
+ * to power modern apps
4
+ *
5
+ * Copyright 2015-2022 Kuzzle
6
+ * mailto: support AT kuzzle.io
7
+ * website: http://kuzzle.io
8
+ *
9
+ * Licensed under the Apache License, Version 2.0 (the "License");
10
+ * you may not use this file except in compliance with the License.
11
+ * You may obtain a copy of the License at
12
+ *
13
+ * https://www.apache.org/licenses/LICENSE-2.0
14
+ *
15
+ * Unless required by applicable law or agreed to in writing, software
16
+ * distributed under the License is distributed on an "AS IS" BASIS,
17
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ * See the License for the specific language governing permissions and
19
+ * limitations under the License.
20
+ */
21
+ "use strict";
22
+ const Bluebird = require("bluebird");
23
+ const kuzzleStateEnum = require("../../kuzzle/kuzzleStateEnum");
24
+ const { Role } = require("../../model/security/role");
25
+ const { ObjectRepository } = require("../shared/ObjectRepository");
26
+ const kerror = require("../../kerror");
27
+ const didYouMean = require("../../util/didYouMean");
28
+ const { cacheDbEnum } = require("../cache/cacheDbEnum");
29
+ const roleRightsError = kerror.wrap("security", "role");
30
+ /**
31
+ * @class RoleRepository
32
+ * @extends ObjectRepository
33
+ */
34
+ class RoleRepository extends ObjectRepository {
35
+ /**
36
+ * @constructor
37
+ * @param {SecurityModule} securityModule
38
+ */
39
+ constructor(securityModule) {
40
+ super({
41
+ cache: cacheDbEnum.INTERNAL,
42
+ store: global.kuzzle.internalIndex,
43
+ });
44
+ this.module = securityModule;
45
+ this.collection = "roles";
46
+ this.ObjectConstructor = Role;
47
+ this.roles = new Map();
48
+ this.logger = global.kuzzle.log.child("core:security:roleRepository");
49
+ }
50
+ init() {
51
+ /**
52
+ * Creates a new role
53
+ * @param {String} id - role identifier / name
54
+ * @param {Object} content
55
+ * @param {Object} opts - force, refresh, userId (used for metadata)
56
+ * @returns {Role}
57
+ * @throws If already exists or if the content is invalid
58
+ */
59
+ global.kuzzle.onAsk("core:security:role:create", (id, content, opts) => this.create(id, content, opts));
60
+ /**
61
+ * Creates a new role, or replaces it if it already exists
62
+ * @param {String} id
63
+ * @param {Object} content
64
+ * @param {Object} opts - force, refresh, userId (used for metadata)
65
+ * @returns {Role}
66
+ * @throws If the content is invalid
67
+ */
68
+ global.kuzzle.onAsk("core:security:role:createOrReplace", (id, content, opts) => this.createOrReplace(id, content, opts));
69
+ /**
70
+ * Deletes an existing role
71
+ * @param {String} id
72
+ * @param {Object} opts - refresh
73
+ * @throws If the role doesn't exist, if it is protected, or if it's
74
+ * still in use
75
+ */
76
+ global.kuzzle.onAsk("core:security:role:delete", (id, opts) => this.deleteById(id, opts));
77
+ /**
78
+ * Loads and returns an existing role
79
+ * @param {String} id - role identifier
80
+ * @returns {Role}
81
+ * @throws {NotFoundError} If the role doesn't exist
82
+ */
83
+ global.kuzzle.onAsk("core:security:role:get", (id) => this.load(id));
84
+ /**
85
+ * Invalidates the RAM cache from the given role ID. If none is provided,
86
+ * the entire cache is emptied.
87
+ *
88
+ * @param {String} [id] - role identifier
89
+ */
90
+ global.kuzzle.onAsk("core:security:role:invalidate", (id) => this.invalidate(id));
91
+ /**
92
+ * Gets multiple roles
93
+ * @param {Array} ids
94
+ * @returns {Array.<Role>}
95
+ * @throws If one or more roles don't exist
96
+ */
97
+ global.kuzzle.onAsk("core:security:role:mGet", (ids) => this.loadRoles(ids));
98
+ /**
99
+ * Searches roles associated to a provided list of API controllers
100
+ * @param {Array.<String>} controllers
101
+ * @param {Number} from
102
+ * @param {Number} size
103
+ * @returns {Object} Search results
104
+ */
105
+ global.kuzzle.onAsk("core:security:role:search", (controllers, opts) => this.searchRole(controllers, opts));
106
+ /**
107
+ * Removes all existing roles and invalidates the RAM cache
108
+ * @param {Object} opts (refresh)
109
+ */
110
+ global.kuzzle.onAsk("core:security:role:truncate", (opts) => this.truncate(opts));
111
+ /**
112
+ * Updates an existing profile using a partial content
113
+ * @param {String} id - profile identifier to update
114
+ * @param {Object} content - partial content to apply
115
+ * @param {Object} opts - force, refresh, retryOnConflict,
116
+ * userId (used for metadata)
117
+ * @returns {Role} Updated role
118
+ */
119
+ global.kuzzle.onAsk("core:security:role:update", (id, content, opts) => this.update(id, content, opts));
120
+ /**
121
+ * Verifies that existing roles are sane
122
+ */
123
+ global.kuzzle.onAsk("core:security:verify", () => this.sanityCheck());
124
+ }
125
+ /**
126
+ * From a list of role ids, retrieves the matching Role objects.
127
+ *
128
+ * @param {Array} ids The role ids to load
129
+ * @param {Object} options - resetCache (false)
130
+ * @returns {Promise.<Array.<Role>>}
131
+ */
132
+ loadRoles(ids) {
133
+ const roles = [];
134
+ for (const id of ids) {
135
+ let role = this.roles.get(id);
136
+ if (!role) {
137
+ role = this.loadOneFromDatabase(id).then((r) => {
138
+ this.roles.set(id, r);
139
+ return r;
140
+ });
141
+ this.roles.set(id, role);
142
+ }
143
+ roles.push(role);
144
+ }
145
+ return Bluebird.all(roles);
146
+ }
147
+ /**
148
+ * Creates a new role, or create/replace a role
149
+ *
150
+ * @param {String} id
151
+ * @param {Object} content
152
+ * @param {Object} [opts]
153
+ * @returns {Role}
154
+ */
155
+ async _createOrReplace(id, content, { force = false, method, refresh = "false", userId = null } = {}) {
156
+ const dto = {
157
+ ...content,
158
+ // Always last, in case content contains these keys
159
+ _id: id,
160
+ _kuzzle_info: {
161
+ author: userId,
162
+ createdAt: Date.now(),
163
+ updatedAt: null,
164
+ updater: null,
165
+ },
166
+ };
167
+ const role = await this.fromDTO(dto);
168
+ return this.validateAndSaveRole(role, { force, method, refresh });
169
+ }
170
+ /**
171
+ * Creates a new role
172
+ *
173
+ * @param {String} id
174
+ * @param {Object} content
175
+ * @param {Object} [opts]
176
+ * @returns {Role}
177
+ */
178
+ async create(id, content, opts) {
179
+ return this._createOrReplace(id, content, {
180
+ method: "create",
181
+ ...opts,
182
+ });
183
+ }
184
+ /**
185
+ * Creates or replaces a role
186
+ *
187
+ * @param {String} id
188
+ * @param {Object} content
189
+ * @param {Object} [opts]
190
+ * @returns {Role}
191
+ */
192
+ async createOrReplace(id, content, opts) {
193
+ return this._createOrReplace(id, content, {
194
+ method: "createOrReplace",
195
+ ...opts,
196
+ });
197
+ }
198
+ /**
199
+ * Updates a role (replaces the entire content)
200
+ *
201
+ * @todo (breaking change) make this function able to handle partial updates
202
+ * instead of replacing the entire role content (hint: _.merge)
203
+ *
204
+ * @param {String} id
205
+ * @param {Object} content
206
+ * @param {Object} [opts]
207
+ * @returns {Promise}
208
+ */
209
+ async update(id, content, { force, refresh, retryOnConflict, userId } = {}) {
210
+ const updated = await this.fromDTO({
211
+ // /!\ order is important
212
+ ...content,
213
+ // Always last, in case content contains these keys
214
+ _id: id,
215
+ _kuzzle_info: {
216
+ updatedAt: Date.now(),
217
+ updater: userId,
218
+ },
219
+ });
220
+ return this.validateAndSaveRole(updated, {
221
+ force,
222
+ method: "replace",
223
+ refresh,
224
+ retryOnConflict,
225
+ });
226
+ }
227
+ /**
228
+ * Get from database the document that represent the role given in parameter
229
+ *
230
+ * @param {string} id
231
+ * @returns {Promise.<Role>} role
232
+ * @throws {NotFoundError} If the corresponding role doesn't exist
233
+ */
234
+ async load(id) {
235
+ if (this.roles.has(id)) {
236
+ return this.roles.get(id);
237
+ }
238
+ const role = await this.loadOneFromDatabase(id);
239
+ await this.roles.set(role._id, role);
240
+ return role;
241
+ }
242
+ /**
243
+ * @override
244
+ */
245
+ async loadOneFromDatabase(id) {
246
+ try {
247
+ return await super.loadOneFromDatabase(id);
248
+ }
249
+ catch (err) {
250
+ if (err.status === 404) {
251
+ throw kerror.get("security", "role", "not_found", id);
252
+ }
253
+ throw err;
254
+ }
255
+ }
256
+ /**
257
+ * @param {Object} body Search body containing either "query" or "controllers"
258
+ * @param {Object} options
259
+ */
260
+ async searchRole(body, { from = 0, size = 9999 } = {}) {
261
+ if (!body.controllers) {
262
+ return this.search(body, { from, size });
263
+ }
264
+ const searchResults = await this.search({ query: {}, sort: [] }, { from: 0, size: 9999 }); // /!\ NOT the options values
265
+ const result = {
266
+ hits: searchResults.hits,
267
+ total: searchResults.total,
268
+ };
269
+ if (body.controllers.length > 0) {
270
+ result.hits = searchResults.hits.filter((role) => Object.keys(role.controllers).some((key) => key === "*" || body.controllers.includes(key)));
271
+ result.total = result.hits.length;
272
+ }
273
+ result.hits = result.hits.slice(from, from + size);
274
+ return result;
275
+ }
276
+ /**
277
+ * Given a Role object, validates its definition and if OK, persist it to the database.
278
+ *
279
+ * @param {Role} role
280
+ * @param {object} [options] The persistence options
281
+ * @returns Promise
282
+ */
283
+ async validateAndSaveRole(role, options = {}) {
284
+ await role.validateDefinition();
285
+ if (role._id === "anonymous" && !role.canLogIn()) {
286
+ throw kerror.get("security", "role", "login_required");
287
+ }
288
+ this.checkRoleNativeRights(role);
289
+ this.checkRolePluginsRights(role, options);
290
+ await this.persistToDatabase(role, options);
291
+ const updatedRole = await this.loadOneFromDatabase(role._id);
292
+ await this.roles.set(role._id, updatedRole);
293
+ return updatedRole;
294
+ }
295
+ /**
296
+ * Given a Role object, checks if its controllers and actions exist.
297
+ *
298
+ * @param {Role} role
299
+ */
300
+ checkRoleNativeRights(role) {
301
+ Object.keys(role.controllers).forEach((roleController) => {
302
+ if (roleController !== "*" &&
303
+ !global.kuzzle.funnel.isNativeController(roleController)) {
304
+ return;
305
+ }
306
+ if (roleController === "*") {
307
+ Object.keys(role.controllers["*"].actions).forEach((action) => {
308
+ if (action !== "*") {
309
+ throw roleRightsError.get("unknown_action", role._id, action, "*");
310
+ }
311
+ });
312
+ }
313
+ else {
314
+ const controller = global.kuzzle.funnel.controllers.get(roleController);
315
+ const actions = Object.keys(role.controllers[roleController].actions);
316
+ actions.forEach((action) => {
317
+ if (action !== "*" && !controller._isAction(action)) {
318
+ throw roleRightsError.get("unknown_action", role._id, action, roleController, didYouMean(action, controller.__actions));
319
+ }
320
+ });
321
+ }
322
+ });
323
+ }
324
+ /**
325
+ * Given a Role object, checks if its controllers and actions exist in plugins.
326
+ *
327
+ * @param {Role} role
328
+ * @param {Force} force
329
+ */
330
+ checkRolePluginsRights(role, { force = false, forceWarn = false } = {}) {
331
+ const plugins = global.kuzzle.pluginsManager;
332
+ for (const roleController of Object.keys(role.controllers)) {
333
+ if (roleController === "*" ||
334
+ global.kuzzle.funnel.isNativeController(roleController)) {
335
+ return;
336
+ }
337
+ if (!plugins.isController(roleController)) {
338
+ if (!force) {
339
+ throw roleRightsError.get("unknown_controller", role._id, roleController, didYouMean(roleController, plugins.getControllerNames()));
340
+ }
341
+ // Do not print any warning if Kuzzle is not started or if warn is not forced.
342
+ // We need this to load rights without displaying warning at startup
343
+ // because plugins controllers are loaded after default roles
344
+ // then we need to display non-existing controllers with the sanity check
345
+ // made after plugins controllers loading.
346
+ if (global.kuzzle.state === kuzzleStateEnum.RUNNING || forceWarn) {
347
+ this.logger.warn(`The role "${role._id}" gives access to the non-existing controller "${roleController}".`);
348
+ }
349
+ return;
350
+ }
351
+ const roleActions = Object.keys(role.controllers[roleController].actions);
352
+ for (const action of roleActions) {
353
+ if (action !== "*" && !plugins.isAction(roleController, action)) {
354
+ if (!force) {
355
+ throw roleRightsError.get("unknown_action", role._id, action, roleController, didYouMean(action, plugins.getActions(roleController)));
356
+ }
357
+ // see the other comment
358
+ if (global.kuzzle.state === kuzzleStateEnum.RUNNING || forceWarn) {
359
+ this.logger.warn(`The role "${role._id}" gives access to the non-existing action "${action}" for the controller "${roleController}".`);
360
+ }
361
+ }
362
+ }
363
+ }
364
+ }
365
+ /**
366
+ * Fetching roles and check for each of them for invalid plugin rights.
367
+ * If there are some, Kuzzle will log a warning.
368
+ */
369
+ async sanityCheck() {
370
+ const roles = await this.search({}, {});
371
+ for (const role of roles.hits) {
372
+ this.checkRolePluginsRights(role, { force: true, forceWarn: true });
373
+ }
374
+ }
375
+ /**
376
+ * Deletes a role
377
+ *
378
+ * @param {String} id
379
+ * @param {object} [options]
380
+ * @returns Promise
381
+ */
382
+ async deleteById(id, options) {
383
+ const role = await this.load(id);
384
+ return this.delete(role, options);
385
+ }
386
+ /**
387
+ * @override
388
+ */
389
+ async delete(role, { refresh = "false" } = {}) {
390
+ if (["admin", "default", "anonymous"].indexOf(role._id) > -1) {
391
+ throw kerror.get("security", "role", "cannot_delete");
392
+ }
393
+ const query = { term: { "policies.roleId": role._id } };
394
+ const response = await this.module.profile.search({ query }, {
395
+ from: 0,
396
+ size: 1,
397
+ });
398
+ if (response.total > 0) {
399
+ throw kerror.get("security", "role", "in_use", role._id);
400
+ }
401
+ await this.deleteFromDatabase(role._id, { refresh });
402
+ this.roles.delete(role._id);
403
+ }
404
+ /**
405
+ * From a Role object, returns an object ready to be persisted
406
+ *
407
+ * @param {Role} role
408
+ * @returns {object}
409
+ */
410
+ serializeToDatabase(role) {
411
+ const serializedRole = {};
412
+ Object.keys(role).forEach((key) => {
413
+ if (key !== "_id" && key !== "restrictedTo") {
414
+ serializedRole[key] = role[key];
415
+ }
416
+ });
417
+ return serializedRole;
418
+ }
419
+ /**
420
+ * @override
421
+ */
422
+ async truncate(opts) {
423
+ try {
424
+ await super.truncate(opts);
425
+ }
426
+ finally {
427
+ this.invalidate();
428
+ }
429
+ }
430
+ /**
431
+ * Invalidate the cache entries for the given role. If none is provided,
432
+ * the entire cache is emptied.
433
+ * @param {string} [roleId]
434
+ */
435
+ invalidate(roleId) {
436
+ if (!roleId) {
437
+ this.roles.clear();
438
+ }
439
+ else {
440
+ this.roles.delete(roleId);
441
+ }
442
+ }
443
+ }
444
+ module.exports = RoleRepository;
445
+ //# sourceMappingURL=roleRepository.js.map
@@ -0,0 +1,24 @@
1
+ export = SecurityLoader;
2
+ /**
3
+ * @class SecurityLoader
4
+ */
5
+ declare class SecurityLoader {
6
+ logger: import("../../kuzzle/Logger").Logger;
7
+ init(): Promise<void>;
8
+ load(permissions?: {}, { force, onExistingUsers, onExistingUsersWarning, refresh, user, }?: {
9
+ force: any;
10
+ onExistingUsers?: string;
11
+ onExistingUsersWarning?: boolean;
12
+ refresh?: string;
13
+ user?: any;
14
+ }): Promise<void>;
15
+ _create(action: any, objects: any, collection: any, { force, refresh, user }?: {
16
+ force: any;
17
+ refresh: any;
18
+ user: any;
19
+ }): Promise<void>;
20
+ _getUsersToLoad(users: any, { onExistingUsers, warning }?: {
21
+ onExistingUsers: any;
22
+ warning: any;
23
+ }): Promise<any>;
24
+ }
@@ -0,0 +1,125 @@
1
+ /*
2
+ * Kuzzle, a backend software, self-hostable and ready to use
3
+ * to power modern apps
4
+ *
5
+ * Copyright 2015-2022 Kuzzle
6
+ * mailto: support AT kuzzle.io
7
+ * website: http://kuzzle.io
8
+ *
9
+ * Licensed under the Apache License, Version 2.0 (the "License");
10
+ * you may not use this file except in compliance with the License.
11
+ * You may obtain a copy of the License at
12
+ *
13
+ * https://www.apache.org/licenses/LICENSE-2.0
14
+ *
15
+ * Unless required by applicable law or agreed to in writing, software
16
+ * distributed under the License is distributed on an "AS IS" BASIS,
17
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ * See the License for the specific language governing permissions and
19
+ * limitations under the License.
20
+ */
21
+ "use strict";
22
+ const { isEmpty } = require("lodash");
23
+ const Bluebird = require("bluebird");
24
+ const { Request } = require("../../api/request");
25
+ const { assertIsObject } = require("../../util/requestAssertions");
26
+ const kerror = require("../../kerror");
27
+ /**
28
+ * @class SecurityLoader
29
+ */
30
+ class SecurityLoader {
31
+ constructor() {
32
+ this.logger = global.kuzzle.log.child("core:security:loader");
33
+ }
34
+ async init() {
35
+ /**
36
+ * Loads permissions into the app
37
+ * @param {Object} permissions Object containing roles, profiles and users
38
+ * @param {Object} opts - force, onExistingUsers (fail), onExistingUsersWarning (false), user (null)
39
+ */
40
+ global.kuzzle.onAsk("core:security:load", (json, opts) => this.load(json, opts));
41
+ }
42
+ async load(permissions = {}, { force, onExistingUsers = "fail", onExistingUsersWarning = false, refresh = "false", user = null, } = {}) {
43
+ assertIsObject(permissions);
44
+ await this._create("createOrReplaceRole", permissions.roles, "roles", {
45
+ force,
46
+ refresh,
47
+ user,
48
+ });
49
+ await this._create("createOrReplaceProfile", permissions.profiles, "profiles", { refresh, user });
50
+ const usersToLoad = await this._getUsersToLoad(permissions.users, {
51
+ onExistingUsers,
52
+ warning: onExistingUsersWarning,
53
+ });
54
+ await this._create("createUser", usersToLoad, "users", { refresh, user });
55
+ }
56
+ async _create(action, objects, collection, { force, refresh, user } = {}) {
57
+ if (!objects) {
58
+ return;
59
+ }
60
+ assertIsObject(objects);
61
+ const promises = [];
62
+ for (const [_id, body] of Object.entries(objects)) {
63
+ assertIsObject(body);
64
+ const request = new Request({
65
+ _id,
66
+ action,
67
+ body,
68
+ controller: "security",
69
+ force,
70
+ refresh,
71
+ }, { user });
72
+ promises.push(global.kuzzle.funnel.processRequest(request));
73
+ }
74
+ await Bluebird.all(promises);
75
+ await global.kuzzle.internalIndex.refreshCollection(collection);
76
+ }
77
+ async _getUsersToLoad(users, { onExistingUsers, warning } = {}) {
78
+ if (isEmpty(users)) {
79
+ return users;
80
+ }
81
+ const ids = Object.keys(users);
82
+ const mGetUsers = new Request({
83
+ action: "mGetUsers",
84
+ body: { ids },
85
+ controller: "security",
86
+ });
87
+ const { result } = await global.kuzzle.funnel.processRequest(mGetUsers);
88
+ const existingUserIds = result.hits.map(({ _id }) => _id);
89
+ if (existingUserIds.length === 0) {
90
+ return users;
91
+ }
92
+ if (onExistingUsers === "fail") {
93
+ throw kerror.get("security", "user", "prevent_overwrite");
94
+ }
95
+ else if (onExistingUsers === "skip") {
96
+ if (warning) {
97
+ this.logger.info(`Users skipped during import: ${existingUserIds}`);
98
+ }
99
+ return Object.entries(users).reduce((memo, [userId, content]) => {
100
+ if (!existingUserIds.includes(userId)) {
101
+ memo[userId] = content;
102
+ }
103
+ return memo;
104
+ }, {});
105
+ }
106
+ else if (onExistingUsers === "overwrite") {
107
+ if (warning) {
108
+ this.logger.info(`Users overwritten during import: ${existingUserIds}`);
109
+ }
110
+ const mDeleteUsers = new Request({
111
+ action: "mDeleteUsers",
112
+ body: { ids: existingUserIds },
113
+ controller: "security",
114
+ refresh: "wait_for",
115
+ });
116
+ await global.kuzzle.funnel.processRequest(mDeleteUsers);
117
+ return users;
118
+ }
119
+ else {
120
+ throw kerror.get("api", "assert", "unexpected_argument", "onExistingUsers", ["skip", "overwrite", "fail"]);
121
+ }
122
+ }
123
+ }
124
+ module.exports = SecurityLoader;
125
+ //# sourceMappingURL=securityLoader.js.map
@@ -302,7 +302,7 @@ class TokenRepository extends ObjectRepository_1.ObjectRepository {
302
302
  userId: decoded._id,
303
303
  },
304
304
  },
305
- });
305
+ }, {});
306
306
  const targetApiKey = userApiKeys?.find((apiKey) => apiKey.fingerprint === fingerprint);
307
307
  if (!targetApiKey) {
308
308
  throw securityError.get("invalid");
@@ -0,0 +1,81 @@
1
+ export = UserRepository;
2
+ /**
3
+ * @class UserRepository
4
+ * @extends ObjectRepository
5
+ */
6
+ declare class UserRepository extends ObjectRepository<any> {
7
+ /**
8
+ * @param {SecurityModule} securityModule
9
+ * @constructor
10
+ */
11
+ constructor(securityModule: SecurityModule);
12
+ module: SecurityModule;
13
+ ObjectConstructor: typeof User;
14
+ anonymousUser: User;
15
+ init(): Promise<void>;
16
+ /**
17
+ * Creates a user
18
+ * @param {String} id
19
+ * @param {Array} profileIds - profiles to associate to this user
20
+ * @param {Object} content
21
+ * @param {Object} [opts]
22
+ */
23
+ create(id: string, profileIds: any[], content: any, { userId, refresh }?: any): Promise<any>;
24
+ /**
25
+ * Updates a user's content
26
+ * @param {String} id
27
+ * @param {Array} profileIds
28
+ * @param {Object} content
29
+ * @param {Object} [opts]
30
+ * @returns {Promise}
31
+ */
32
+ update(id: string, profileIds: any[], content: any, { refresh, retryOnConflict, userId }?: any): Promise<any>;
33
+ /**
34
+ * Replaces a user's content
35
+ * @param {String} id
36
+ * @param {Object} content
37
+ * @param {Object} [opts]
38
+ * @returns {Promise}
39
+ */
40
+ replace(id: string, profileIds: any, content: any, { refresh, userId }?: {
41
+ refresh?: string;
42
+ userId: any;
43
+ }): Promise<any>;
44
+ /**
45
+ * Loads a user
46
+ *
47
+ * @param {string} id
48
+ * @returns {Promise.<User>}
49
+ * @throws {NotFoundError} If the user is not found
50
+ */
51
+ load(id: string): Promise<User>;
52
+ persist(user: any, options?: {}): Promise<any>;
53
+ /**
54
+ * @param dto
55
+ * @returns {Promise<User>}
56
+ */
57
+ fromDTO(dto: any): Promise<User>;
58
+ /**
59
+ * Deletes a user from memory and database, along with its related tokens and
60
+ * strategies.
61
+ *
62
+ * @param {String} id
63
+ * @param {Object} [options]
64
+ * @returns {Promise}
65
+ */
66
+ deleteById(id: string, opts: any): Promise<any>;
67
+ /**
68
+ * @override
69
+ */
70
+ override delete(user: any, { refresh }?: {
71
+ refresh?: string;
72
+ }): Promise<void>;
73
+ _removeUserStrategies(user: any): Promise<void>;
74
+ /**
75
+ * @override
76
+ */
77
+ override loadOneFromDatabase(id: any): Promise<any>;
78
+ adminExists(): Promise<boolean>;
79
+ }
80
+ import { ObjectRepository } from "../shared/ObjectRepository";
81
+ import { User } from "../../model/security/user";