kuzzle 2.49.1 → 2.50.0-beta.4

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 (591) hide show
  1. package/dist/bin/copy-protobuf.js +17 -0
  2. package/dist/lib/api/controllers/adminController.d.ts +51 -0
  3. package/dist/lib/api/controllers/adminController.js +191 -0
  4. package/{lib → dist/lib}/api/controllers/authController.d.ts +20 -40
  5. package/{lib → dist/lib}/api/controllers/authController.js +23 -24
  6. package/dist/lib/api/controllers/bulkController.d.ts +46 -0
  7. package/dist/lib/api/controllers/bulkController.js +132 -0
  8. package/dist/lib/api/controllers/clusterController.d.ts +6 -0
  9. package/{lib → dist/lib}/api/controllers/clusterController.js +7 -11
  10. package/dist/lib/api/controllers/collectionController.d.ts +136 -0
  11. package/dist/lib/api/controllers/collectionController.js +356 -0
  12. package/dist/lib/api/controllers/documentController.d.ts +181 -0
  13. package/dist/lib/api/controllers/documentController.js +768 -0
  14. package/dist/lib/api/controllers/index.d.ts +12 -0
  15. package/{lib → dist/lib}/api/controllers/index.js +13 -14
  16. package/dist/lib/api/controllers/indexController.d.ts +65 -0
  17. package/dist/lib/api/controllers/indexController.js +139 -0
  18. package/dist/lib/api/controllers/memoryStorageController.d.ts +8 -0
  19. package/dist/lib/api/controllers/memoryStorageController.js +867 -0
  20. package/dist/lib/api/controllers/realtimeController.d.ts +47 -0
  21. package/dist/lib/api/controllers/realtimeController.js +128 -0
  22. package/dist/lib/api/controllers/securityController.d.ts +423 -0
  23. package/dist/lib/api/controllers/securityController.js +1139 -0
  24. package/dist/lib/api/controllers/serverController.d.ts +82 -0
  25. package/dist/lib/api/controllers/serverController.js +321 -0
  26. package/dist/lib/api/documentExtractor.d.ts +9 -0
  27. package/dist/lib/api/documentExtractor.js +274 -0
  28. package/dist/lib/api/funnel.d.ts +183 -0
  29. package/dist/lib/api/funnel.js +821 -0
  30. package/dist/lib/api/httpRoutes.d.ts +17 -0
  31. package/dist/lib/api/httpRoutes.js +1496 -0
  32. package/dist/lib/api/rateLimiter.d.ts +18 -0
  33. package/dist/lib/api/rateLimiter.js +74 -0
  34. package/{lib → dist/lib}/api/request/kuzzleRequest.d.ts +2 -2
  35. package/{lib → dist/lib}/api/request/requestContext.d.ts +2 -1
  36. package/dist/lib/cluster/command.d.ts +73 -0
  37. package/dist/lib/cluster/command.js +236 -0
  38. package/dist/lib/cluster/index.d.ts +2 -0
  39. package/{lib → dist/lib}/cluster/index.js +1 -2
  40. package/dist/lib/cluster/node.d.ts +278 -0
  41. package/dist/lib/cluster/node.js +876 -0
  42. package/dist/lib/cluster/publisher.d.ts +188 -0
  43. package/dist/lib/cluster/publisher.js +347 -0
  44. package/dist/lib/cluster/subscriber.d.ts +269 -0
  45. package/dist/lib/cluster/subscriber.js +555 -0
  46. package/dist/lib/cluster/workers/IDCardRenewer.d.ts +13 -0
  47. package/dist/lib/cluster/workers/IDCardRenewer.js +120 -0
  48. package/{lib → dist/lib}/config/documentEventAliases.d.ts +1 -2
  49. package/dist/lib/config/index.d.ts +5 -0
  50. package/dist/lib/config/index.js +244 -0
  51. package/dist/lib/config/sdkCompatibility.json +9 -0
  52. package/dist/lib/core/auth/formatProcessing.d.ts +30 -0
  53. package/dist/lib/core/auth/formatProcessing.js +55 -0
  54. package/dist/lib/core/auth/passportResponse.d.ts +15 -0
  55. package/{lib → dist/lib}/core/auth/passportResponse.js +24 -30
  56. package/dist/lib/core/auth/passportWrapper.d.ts +28 -0
  57. package/dist/lib/core/auth/passportWrapper.js +126 -0
  58. package/{lib → dist/lib}/core/backend/backendConfig.js +2 -2
  59. package/{lib → dist/lib}/core/backend/backendErrors.js +9 -12
  60. package/dist/lib/core/cache/cacheEngine.d.ts +15 -0
  61. package/dist/lib/core/cache/cacheEngine.js +205 -0
  62. package/dist/lib/core/network/accessLogger.d.ts +29 -0
  63. package/dist/lib/core/network/accessLogger.js +250 -0
  64. package/dist/lib/core/network/clientConnection.d.ts +15 -0
  65. package/{lib → dist/lib}/core/network/clientConnection.js +17 -24
  66. package/dist/lib/core/network/context.d.ts +42 -0
  67. package/dist/lib/core/network/context.js +57 -0
  68. package/dist/lib/core/network/entryPoint.d.ts +62 -0
  69. package/dist/lib/core/network/entryPoint.js +261 -0
  70. package/dist/lib/core/network/httpRouter/index.d.ts +85 -0
  71. package/dist/lib/core/network/httpRouter/index.js +258 -0
  72. package/dist/lib/core/network/httpRouter/routeHandler.d.ts +46 -0
  73. package/dist/lib/core/network/httpRouter/routeHandler.js +101 -0
  74. package/dist/lib/core/network/httpRouter/routePart.d.ts +35 -0
  75. package/dist/lib/core/network/httpRouter/routePart.js +117 -0
  76. package/dist/lib/core/network/protocolManifest.d.ts +6 -0
  77. package/{lib → dist/lib}/core/network/protocolManifest.js +5 -9
  78. package/dist/lib/core/network/protocols/httpMessage.d.ts +22 -0
  79. package/dist/lib/core/network/protocols/httpMessage.js +62 -0
  80. package/dist/lib/core/network/protocols/httpwsProtocol.d.ts +171 -0
  81. package/dist/lib/core/network/protocols/httpwsProtocol.js +921 -0
  82. package/dist/lib/core/network/protocols/internalProtocol.d.ts +27 -0
  83. package/dist/lib/core/network/protocols/internalProtocol.js +82 -0
  84. package/dist/lib/core/network/protocols/mqttProtocol.d.ts +39 -0
  85. package/dist/lib/core/network/protocols/mqttProtocol.js +219 -0
  86. package/dist/lib/core/network/protocols/protocol.d.ts +26 -0
  87. package/dist/lib/core/network/protocols/protocol.js +74 -0
  88. package/dist/lib/core/network/router.d.ts +49 -0
  89. package/dist/lib/core/network/router.js +193 -0
  90. package/dist/lib/core/plugin/plugin.d.ts +56 -0
  91. package/dist/lib/core/plugin/plugin.js +282 -0
  92. package/{lib → dist/lib}/core/plugin/pluginContext.js +2 -2
  93. package/dist/lib/core/plugin/pluginManifest.d.ts +5 -0
  94. package/{lib → dist/lib}/core/plugin/pluginManifest.js +16 -27
  95. package/dist/lib/core/plugin/pluginRepository.d.ts +53 -0
  96. package/dist/lib/core/plugin/pluginRepository.js +112 -0
  97. package/dist/lib/core/plugin/pluginsManager.d.ts +190 -0
  98. package/dist/lib/core/plugin/pluginsManager.js +817 -0
  99. package/dist/lib/core/plugin/privilegedContext.d.ts +14 -0
  100. package/{lib → dist/lib}/core/plugin/privilegedContext.js +10 -14
  101. package/dist/lib/core/realtime/actionEnum.d.ts +25 -0
  102. package/{lib → dist/lib}/core/realtime/actionEnum.js +7 -10
  103. package/dist/lib/core/realtime/index.d.ts +8 -0
  104. package/{lib → dist/lib}/core/realtime/index.js +9 -13
  105. package/dist/lib/core/realtime/notification/document.d.ts +34 -0
  106. package/dist/lib/core/realtime/notification/document.js +98 -0
  107. package/dist/lib/core/realtime/notification/index.d.ts +3 -0
  108. package/{lib → dist/lib}/core/realtime/notification/index.js +4 -5
  109. package/dist/lib/core/realtime/notification/server.d.ts +17 -0
  110. package/{lib → dist/lib}/core/realtime/notification/server.js +8 -10
  111. package/dist/lib/core/realtime/notification/user.d.ts +29 -0
  112. package/dist/lib/core/realtime/notification/user.js +66 -0
  113. package/dist/lib/core/realtime/notifier.d.ts +171 -0
  114. package/dist/lib/core/realtime/notifier.js +405 -0
  115. package/dist/lib/core/security/index.d.ts +14 -0
  116. package/{lib → dist/lib}/core/security/index.js +15 -19
  117. package/dist/lib/core/security/roleRepository.d.ts +143 -0
  118. package/dist/lib/core/security/roleRepository.js +445 -0
  119. package/dist/lib/core/security/securityLoader.d.ts +24 -0
  120. package/dist/lib/core/security/securityLoader.js +125 -0
  121. package/{lib → dist/lib}/core/security/tokenRepository.js +1 -1
  122. package/dist/lib/core/security/userRepository.d.ts +81 -0
  123. package/dist/lib/core/security/userRepository.js +346 -0
  124. package/dist/lib/core/shared/abstractManifest.d.ts +27 -0
  125. package/dist/lib/core/shared/abstractManifest.js +85 -0
  126. package/dist/lib/core/shared/sdk/impersonatedSdk.d.ts +7 -0
  127. package/dist/lib/core/shared/sdk/impersonatedSdk.js +80 -0
  128. package/{lib → dist/lib}/core/shared/store.d.ts +2 -2
  129. package/dist/lib/core/statistics/statistics.d.ts +94 -0
  130. package/dist/lib/core/statistics/statistics.js +287 -0
  131. package/dist/lib/core/storage/clientAdapter.d.ts +62 -0
  132. package/dist/lib/core/storage/clientAdapter.js +756 -0
  133. package/dist/lib/core/storage/storageEngine.d.ts +13 -0
  134. package/dist/lib/core/storage/storageEngine.js +52 -0
  135. package/dist/lib/core/validation/baseType.d.ts +35 -0
  136. package/dist/lib/core/validation/baseType.js +70 -0
  137. package/dist/lib/core/validation/types/anything.d.ts +10 -0
  138. package/{lib → dist/lib}/core/validation/types/anything.js +7 -10
  139. package/dist/lib/core/validation/types/boolean.d.ts +16 -0
  140. package/{lib → dist/lib}/core/validation/types/boolean.js +18 -23
  141. package/dist/lib/core/validation/types/date.d.ts +17 -0
  142. package/dist/lib/core/validation/types/date.js +215 -0
  143. package/dist/lib/core/validation/types/email.d.ts +17 -0
  144. package/dist/lib/core/validation/types/email.js +80 -0
  145. package/dist/lib/core/validation/types/enum.d.ts +17 -0
  146. package/dist/lib/core/validation/types/enum.js +70 -0
  147. package/dist/lib/core/validation/types/geoPoint.d.ts +17 -0
  148. package/{lib → dist/lib}/core/validation/types/geoPoint.js +19 -24
  149. package/dist/lib/core/validation/types/geoShape.d.ts +31 -0
  150. package/dist/lib/core/validation/types/geoShape.js +280 -0
  151. package/dist/lib/core/validation/types/integer.d.ts +7 -0
  152. package/{lib → dist/lib}/core/validation/types/integer.js +21 -27
  153. package/dist/lib/core/validation/types/ipAddress.d.ts +17 -0
  154. package/dist/lib/core/validation/types/ipAddress.js +73 -0
  155. package/dist/lib/core/validation/types/numeric.d.ts +17 -0
  156. package/dist/lib/core/validation/types/numeric.js +84 -0
  157. package/dist/lib/core/validation/types/object.d.ts +24 -0
  158. package/dist/lib/core/validation/types/object.js +74 -0
  159. package/dist/lib/core/validation/types/string.d.ts +17 -0
  160. package/dist/lib/core/validation/types/string.js +85 -0
  161. package/dist/lib/core/validation/types/url.d.ts +17 -0
  162. package/dist/lib/core/validation/types/url.js +73 -0
  163. package/dist/lib/core/validation/validation.d.ts +113 -0
  164. package/dist/lib/core/validation/validation.js +692 -0
  165. package/dist/lib/kerror/codes/0-core.json +194 -0
  166. package/dist/lib/kerror/codes/1-services.json +351 -0
  167. package/dist/lib/kerror/codes/2-api.json +195 -0
  168. package/dist/lib/kerror/codes/3-network.json +151 -0
  169. package/dist/lib/kerror/codes/4-plugin.json +498 -0
  170. package/dist/lib/kerror/codes/5-validation.json +158 -0
  171. package/dist/lib/kerror/codes/6-protocol.json +28 -0
  172. package/dist/lib/kerror/codes/7-security.json +283 -0
  173. package/dist/lib/kerror/codes/8-cluster.json +16 -0
  174. package/dist/lib/kerror/codes/index.d.ts +24 -0
  175. package/dist/lib/kerror/codes/index.js +140 -0
  176. package/{lib → dist/lib}/kerror/index.d.ts +5 -5
  177. package/{lib → dist/lib}/kuzzle/Logger.d.ts +6 -0
  178. package/{lib → dist/lib}/kuzzle/Logger.js +26 -5
  179. package/dist/lib/kuzzle/dumpGenerator.d.ts +14 -0
  180. package/dist/lib/kuzzle/dumpGenerator.js +180 -0
  181. package/dist/lib/kuzzle/event/pipeRunner.d.ts +30 -0
  182. package/dist/lib/kuzzle/event/pipeRunner.js +119 -0
  183. package/dist/lib/kuzzle/event/waterfall.d.ts +2 -0
  184. package/dist/lib/kuzzle/event/waterfall.js +90 -0
  185. package/dist/lib/kuzzle/internalIndexHandler.d.ts +186 -0
  186. package/dist/lib/kuzzle/internalIndexHandler.js +174 -0
  187. package/{lib → dist/lib}/kuzzle/kuzzle.d.ts +6 -7
  188. package/{lib → dist/lib}/kuzzle/kuzzle.js +5 -2
  189. package/dist/lib/kuzzle/kuzzleStateEnum.d.ts +20 -0
  190. package/{lib → dist/lib}/kuzzle/kuzzleStateEnum.js +5 -8
  191. package/dist/lib/kuzzle/vault.d.ts +2 -0
  192. package/dist/lib/kuzzle/vault.js +63 -0
  193. package/dist/lib/model/security/rights.d.ts +8 -0
  194. package/{lib → dist/lib}/model/security/rights.js +4 -8
  195. package/{lib → dist/lib}/model/security/role.d.ts +1 -1
  196. package/{lib → dist/lib}/model/security/user.d.ts +1 -0
  197. package/dist/lib/model/storage/apiKey.d.ts +49 -0
  198. package/dist/lib/model/storage/apiKey.js +126 -0
  199. package/dist/lib/model/storage/baseModel.d.ts +100 -0
  200. package/dist/lib/model/storage/baseModel.js +211 -0
  201. package/dist/lib/service/cache/redis.d.ts +74 -0
  202. package/dist/lib/service/cache/redis.js +237 -0
  203. package/dist/lib/service/service.d.ts +30 -0
  204. package/dist/lib/service/service.js +74 -0
  205. package/{lib → dist/lib}/service/storage/7/elasticsearch.d.ts +2 -2
  206. package/{lib → dist/lib}/service/storage/7/elasticsearch.js +23 -25
  207. package/dist/lib/service/storage/7/esWrapper.d.ts +19 -0
  208. package/dist/lib/service/storage/7/esWrapper.js +245 -0
  209. package/{lib → dist/lib}/service/storage/8/elasticsearch.js +23 -25
  210. package/dist/lib/service/storage/8/esWrapper.d.ts +19 -0
  211. package/dist/lib/service/storage/8/esWrapper.js +245 -0
  212. package/{lib → dist/lib}/types/Plugin.d.ts +1 -1
  213. package/{lib/types → dist/lib/types/controllers}/Controller.d.ts +2 -2
  214. package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.d.ts +1 -1
  215. package/dist/lib/types/controllers/adminControlller.type.d.ts +5 -0
  216. package/dist/lib/types/controllers/adminControlller.type.js +3 -0
  217. package/dist/lib/types/controllers/authController.type.d.ts +5 -0
  218. package/dist/lib/types/controllers/authController.type.js +3 -0
  219. package/dist/lib/types/core/auth/formatProcessing.type.d.ts +7 -0
  220. package/dist/lib/types/core/auth/formatProcessing.type.js +3 -0
  221. package/{lib → dist/lib}/types/index.d.ts +3 -3
  222. package/{lib → dist/lib}/types/index.js +3 -3
  223. package/dist/lib/util/assertType.d.ts +41 -0
  224. package/{lib → dist/lib}/util/assertType.js +38 -56
  225. package/dist/lib/util/asyncStore.d.ts +38 -0
  226. package/dist/lib/util/asyncStore.js +70 -0
  227. package/dist/lib/util/bytes.d.ts +2 -0
  228. package/dist/lib/util/bytes.js +33 -0
  229. package/dist/lib/util/debug.d.ts +2 -0
  230. package/{lib → dist/lib}/util/debug.js +15 -23
  231. package/dist/lib/util/deprecate.d.ts +1 -0
  232. package/dist/lib/util/deprecate.js +64 -0
  233. package/dist/lib/util/didYouMean.d.ts +2 -0
  234. package/{lib → dist/lib}/util/didYouMean.js +9 -15
  235. package/dist/lib/util/extractFields.d.ts +17 -0
  236. package/{lib → dist/lib}/util/extractFields.js +18 -32
  237. package/dist/lib/util/memoize.d.ts +7 -0
  238. package/{lib → dist/lib}/util/memoize.js +14 -21
  239. package/dist/lib/util/promback.d.ts +13 -0
  240. package/dist/lib/util/promback.js +60 -0
  241. package/dist/lib/util/requestAssertions.d.ts +10 -0
  242. package/dist/lib/util/requestAssertions.js +143 -0
  243. package/dist/lib/util/safeObject.d.ts +3 -0
  244. package/{lib → dist/lib}/util/safeObject.js +7 -13
  245. package/dist/lib/util/stackTrace.d.ts +19 -0
  246. package/{lib → dist/lib}/util/stackTrace.js +35 -41
  247. package/dist/lib/util/wildcard.d.ts +1 -0
  248. package/{lib → dist/lib}/util/wildcard.js +21 -30
  249. package/dist/package.json +119 -0
  250. package/package.json +44 -58
  251. package/bin/start-kuzzle-server +0 -126
  252. package/check-node-version.js +0 -17
  253. package/lib/api/controllers/adminController.js +0 -229
  254. package/lib/api/controllers/bulkController.js +0 -210
  255. package/lib/api/controllers/collectionController.js +0 -502
  256. package/lib/api/controllers/documentController.js +0 -1156
  257. package/lib/api/controllers/indexController.js +0 -179
  258. package/lib/api/controllers/memoryStorageController.js +0 -1023
  259. package/lib/api/controllers/realtimeController.js +0 -155
  260. package/lib/api/controllers/securityController.js +0 -1571
  261. package/lib/api/controllers/serverController.js +0 -381
  262. package/lib/api/documentExtractor.js +0 -309
  263. package/lib/api/funnel.js +0 -1143
  264. package/lib/api/httpRoutes.js +0 -1547
  265. package/lib/api/rateLimiter.js +0 -87
  266. package/lib/cluster/command.js +0 -284
  267. package/lib/cluster/node.js +0 -1203
  268. package/lib/cluster/publisher.js +0 -386
  269. package/lib/cluster/subscriber.js +0 -776
  270. package/lib/cluster/workers/IDCardRenewer.js +0 -144
  271. package/lib/config/index.js +0 -351
  272. package/lib/config/sdkCompatibility.json +0 -9
  273. package/lib/core/auth/formatProcessing.js +0 -66
  274. package/lib/core/auth/passportWrapper.js +0 -126
  275. package/lib/core/cache/cacheEngine.js +0 -278
  276. package/lib/core/network/accessLogger.js +0 -322
  277. package/lib/core/network/context.js +0 -80
  278. package/lib/core/network/entryPoint.js +0 -358
  279. package/lib/core/network/httpRouter/index.js +0 -316
  280. package/lib/core/network/httpRouter/routeHandler.js +0 -111
  281. package/lib/core/network/httpRouter/routePart.js +0 -147
  282. package/lib/core/network/protocols/httpMessage.js +0 -69
  283. package/lib/core/network/protocols/httpwsProtocol.js +0 -1254
  284. package/lib/core/network/protocols/internalProtocol.js +0 -109
  285. package/lib/core/network/protocols/mqttProtocol.js +0 -291
  286. package/lib/core/network/protocols/protocol.js +0 -102
  287. package/lib/core/network/router.js +0 -255
  288. package/lib/core/plugin/plugin.js +0 -436
  289. package/lib/core/plugin/pluginRepository.js +0 -132
  290. package/lib/core/plugin/pluginsManager.js +0 -1244
  291. package/lib/core/realtime/notification/document.js +0 -108
  292. package/lib/core/realtime/notification/user.js +0 -70
  293. package/lib/core/realtime/notifier.js +0 -541
  294. package/lib/core/security/README.md +0 -223
  295. package/lib/core/security/roleRepository.js +0 -569
  296. package/lib/core/security/securityLoader.js +0 -174
  297. package/lib/core/security/userRepository.js +0 -446
  298. package/lib/core/shared/README.md +0 -3
  299. package/lib/core/shared/abstractManifest.js +0 -102
  300. package/lib/core/shared/sdk/impersonatedSdk.js +0 -94
  301. package/lib/core/statistics/index.js +0 -24
  302. package/lib/core/statistics/statistics.js +0 -373
  303. package/lib/core/storage/clientAdapter.js +0 -1045
  304. package/lib/core/storage/storageEngine.js +0 -63
  305. package/lib/core/validation/baseType.js +0 -80
  306. package/lib/core/validation/index.js +0 -24
  307. package/lib/core/validation/types/date.js +0 -284
  308. package/lib/core/validation/types/email.js +0 -92
  309. package/lib/core/validation/types/enum.js +0 -100
  310. package/lib/core/validation/types/geoShape.js +0 -370
  311. package/lib/core/validation/types/ipAddress.js +0 -83
  312. package/lib/core/validation/types/numeric.js +0 -108
  313. package/lib/core/validation/types/object.js +0 -88
  314. package/lib/core/validation/types/string.js +0 -110
  315. package/lib/core/validation/types/url.js +0 -83
  316. package/lib/core/validation/validation.js +0 -1180
  317. package/lib/kerror/codes/0-core.json +0 -194
  318. package/lib/kerror/codes/1-services.json +0 -351
  319. package/lib/kerror/codes/2-api.json +0 -195
  320. package/lib/kerror/codes/3-network.json +0 -151
  321. package/lib/kerror/codes/4-plugin.json +0 -498
  322. package/lib/kerror/codes/5-validation.json +0 -158
  323. package/lib/kerror/codes/6-protocol.json +0 -28
  324. package/lib/kerror/codes/7-security.json +0 -283
  325. package/lib/kerror/codes/8-cluster.json +0 -16
  326. package/lib/kerror/codes/index.js +0 -208
  327. package/lib/kuzzle/dumpGenerator.js +0 -259
  328. package/lib/kuzzle/event/pipeRunner.js +0 -144
  329. package/lib/kuzzle/event/waterfall.js +0 -101
  330. package/lib/kuzzle/internalIndexHandler.js +0 -234
  331. package/lib/kuzzle/vault.js +0 -89
  332. package/lib/model/storage/apiKey.js +0 -158
  333. package/lib/model/storage/baseModel.js +0 -275
  334. package/lib/service/cache/redis.js +0 -282
  335. package/lib/service/service.js +0 -84
  336. package/lib/service/storage/7/esWrapper.js +0 -303
  337. package/lib/service/storage/8/esWrapper.js +0 -303
  338. package/lib/util/asyncStore.js +0 -112
  339. package/lib/util/bytes.js +0 -36
  340. package/lib/util/deprecate.js +0 -82
  341. package/lib/util/promback.js +0 -66
  342. package/lib/util/readYamlFile.d.ts +0 -2
  343. package/lib/util/readYamlFile.js +0 -10
  344. package/lib/util/requestAssertions.js +0 -157
  345. /package/{index.d.ts → dist/index.d.ts} +0 -0
  346. /package/{index.js → dist/index.js} +0 -0
  347. /package/{lib → dist/lib}/api/controllers/baseController.d.ts +0 -0
  348. /package/{lib → dist/lib}/api/controllers/baseController.js +0 -0
  349. /package/{lib → dist/lib}/api/controllers/debugController.d.ts +0 -0
  350. /package/{lib → dist/lib}/api/controllers/debugController.js +0 -0
  351. /package/{lib → dist/lib}/api/openapi/OpenApiManager.d.ts +0 -0
  352. /package/{lib → dist/lib}/api/openapi/OpenApiManager.js +0 -0
  353. /package/{lib → dist/lib}/api/openapi/index.d.ts +0 -0
  354. /package/{lib → dist/lib}/api/openapi/index.js +0 -0
  355. /package/{lib → dist/lib}/api/openapi/openApiGenerator.d.ts +0 -0
  356. /package/{lib → dist/lib}/api/openapi/openApiGenerator.js +0 -0
  357. /package/{lib → dist/lib}/api/request/index.d.ts +0 -0
  358. /package/{lib → dist/lib}/api/request/index.js +0 -0
  359. /package/{lib → dist/lib}/api/request/kuzzleRequest.js +0 -0
  360. /package/{lib → dist/lib}/api/request/requestContext.js +0 -0
  361. /package/{lib → dist/lib}/api/request/requestInput.d.ts +0 -0
  362. /package/{lib → dist/lib}/api/request/requestInput.js +0 -0
  363. /package/{lib → dist/lib}/api/request/requestResponse.d.ts +0 -0
  364. /package/{lib → dist/lib}/api/request/requestResponse.js +0 -0
  365. /package/{lib → dist/lib}/cluster/idCardHandler.d.ts +0 -0
  366. /package/{lib → dist/lib}/cluster/idCardHandler.js +0 -0
  367. /package/{lib → dist/lib}/cluster/protobuf/command.proto +0 -0
  368. /package/{lib → dist/lib}/cluster/protobuf/sync.proto +0 -0
  369. /package/{lib → dist/lib}/cluster/state.d.ts +0 -0
  370. /package/{lib → dist/lib}/cluster/state.js +0 -0
  371. /package/{lib → dist/lib}/config/default.config.d.ts +0 -0
  372. /package/{lib → dist/lib}/config/default.config.js +0 -0
  373. /package/{lib → dist/lib}/config/documentEventAliases.js +0 -0
  374. /package/{lib → dist/lib}/core/auth/tokenManager.d.ts +0 -0
  375. /package/{lib → dist/lib}/core/auth/tokenManager.js +0 -0
  376. /package/{lib → dist/lib}/core/backend/applicationManager.d.ts +0 -0
  377. /package/{lib → dist/lib}/core/backend/applicationManager.js +0 -0
  378. /package/{lib → dist/lib}/core/backend/backend.d.ts +0 -0
  379. /package/{lib → dist/lib}/core/backend/backend.js +0 -0
  380. /package/{lib → dist/lib}/core/backend/backendCluster.d.ts +0 -0
  381. /package/{lib → dist/lib}/core/backend/backendCluster.js +0 -0
  382. /package/{lib → dist/lib}/core/backend/backendConfig.d.ts +0 -0
  383. /package/{lib → dist/lib}/core/backend/backendController.d.ts +0 -0
  384. /package/{lib → dist/lib}/core/backend/backendController.js +0 -0
  385. /package/{lib → dist/lib}/core/backend/backendErrors.d.ts +0 -0
  386. /package/{lib → dist/lib}/core/backend/backendHook.d.ts +0 -0
  387. /package/{lib → dist/lib}/core/backend/backendHook.js +0 -0
  388. /package/{lib → dist/lib}/core/backend/backendImport.d.ts +0 -0
  389. /package/{lib → dist/lib}/core/backend/backendImport.js +0 -0
  390. /package/{lib → dist/lib}/core/backend/backendOpenApi.d.ts +0 -0
  391. /package/{lib → dist/lib}/core/backend/backendOpenApi.js +0 -0
  392. /package/{lib → dist/lib}/core/backend/backendPipe.d.ts +0 -0
  393. /package/{lib → dist/lib}/core/backend/backendPipe.js +0 -0
  394. /package/{lib → dist/lib}/core/backend/backendPlugin.d.ts +0 -0
  395. /package/{lib → dist/lib}/core/backend/backendPlugin.js +0 -0
  396. /package/{lib → dist/lib}/core/backend/backendStorage.d.ts +0 -0
  397. /package/{lib → dist/lib}/core/backend/backendStorage.js +0 -0
  398. /package/{lib → dist/lib}/core/backend/backendSubscription.d.ts +0 -0
  399. /package/{lib → dist/lib}/core/backend/backendSubscription.js +0 -0
  400. /package/{lib → dist/lib}/core/backend/backendVault.d.ts +0 -0
  401. /package/{lib → dist/lib}/core/backend/backendVault.js +0 -0
  402. /package/{lib → dist/lib}/core/backend/index.d.ts +0 -0
  403. /package/{lib → dist/lib}/core/backend/index.js +0 -0
  404. /package/{lib → dist/lib}/core/backend/internalLogger.d.ts +0 -0
  405. /package/{lib → dist/lib}/core/backend/internalLogger.js +0 -0
  406. /package/{lib → dist/lib}/core/cache/cacheDbEnum.d.ts +0 -0
  407. /package/{lib → dist/lib}/core/cache/cacheDbEnum.js +0 -0
  408. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.d.ts +0 -0
  409. /package/{lib → dist/lib}/core/debug/kuzzleDebugger.js +0 -0
  410. /package/{lib → dist/lib}/core/plugin/pluginContext.d.ts +0 -0
  411. /package/{lib → dist/lib}/core/realtime/channel.d.ts +0 -0
  412. /package/{lib → dist/lib}/core/realtime/channel.js +0 -0
  413. /package/{lib → dist/lib}/core/realtime/connectionRooms.d.ts +0 -0
  414. /package/{lib → dist/lib}/core/realtime/connectionRooms.js +0 -0
  415. /package/{lib → dist/lib}/core/realtime/hotelClerk.d.ts +0 -0
  416. /package/{lib → dist/lib}/core/realtime/hotelClerk.js +0 -0
  417. /package/{lib → dist/lib}/core/realtime/room.d.ts +0 -0
  418. /package/{lib → dist/lib}/core/realtime/room.js +0 -0
  419. /package/{lib → dist/lib}/core/realtime/subscription.d.ts +0 -0
  420. /package/{lib → dist/lib}/core/realtime/subscription.js +0 -0
  421. /package/{lib → dist/lib}/core/security/profileRepository.d.ts +0 -0
  422. /package/{lib → dist/lib}/core/security/profileRepository.js +0 -0
  423. /package/{lib → dist/lib}/core/security/tokenRepository.d.ts +0 -0
  424. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.d.ts +0 -0
  425. /package/{lib → dist/lib}/core/shared/KoncordeWrapper.js +0 -0
  426. /package/{lib → dist/lib}/core/shared/ObjectRepository.d.ts +0 -0
  427. /package/{lib → dist/lib}/core/shared/ObjectRepository.js +0 -0
  428. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.d.ts +0 -0
  429. /package/{lib → dist/lib}/core/shared/sdk/embeddedSdk.js +0 -0
  430. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.d.ts +0 -0
  431. /package/{lib → dist/lib}/core/shared/sdk/funnelProtocol.js +0 -0
  432. /package/{lib → dist/lib}/core/shared/store.js +0 -0
  433. /package/{lib → dist/lib}/core/storage/indexCache.d.ts +0 -0
  434. /package/{lib → dist/lib}/core/storage/indexCache.js +0 -0
  435. /package/{lib → dist/lib}/core/storage/storeScopeEnum.d.ts +0 -0
  436. /package/{lib → dist/lib}/core/storage/storeScopeEnum.js +0 -0
  437. /package/{lib → dist/lib}/kerror/errors/badRequestError.d.ts +0 -0
  438. /package/{lib → dist/lib}/kerror/errors/badRequestError.js +0 -0
  439. /package/{lib → dist/lib}/kerror/errors/externalServiceError.d.ts +0 -0
  440. /package/{lib → dist/lib}/kerror/errors/externalServiceError.js +0 -0
  441. /package/{lib → dist/lib}/kerror/errors/forbiddenError.d.ts +0 -0
  442. /package/{lib → dist/lib}/kerror/errors/forbiddenError.js +0 -0
  443. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.d.ts +0 -0
  444. /package/{lib → dist/lib}/kerror/errors/gatewayTimeoutError.js +0 -0
  445. /package/{lib → dist/lib}/kerror/errors/index.d.ts +0 -0
  446. /package/{lib → dist/lib}/kerror/errors/index.js +0 -0
  447. /package/{lib → dist/lib}/kerror/errors/internalError.d.ts +0 -0
  448. /package/{lib → dist/lib}/kerror/errors/internalError.js +0 -0
  449. /package/{lib → dist/lib}/kerror/errors/kuzzleError.d.ts +0 -0
  450. /package/{lib → dist/lib}/kerror/errors/kuzzleError.js +0 -0
  451. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.d.ts +0 -0
  452. /package/{lib → dist/lib}/kerror/errors/multipleErrorsError.js +0 -0
  453. /package/{lib → dist/lib}/kerror/errors/notFoundError.d.ts +0 -0
  454. /package/{lib → dist/lib}/kerror/errors/notFoundError.js +0 -0
  455. /package/{lib → dist/lib}/kerror/errors/partialError.d.ts +0 -0
  456. /package/{lib → dist/lib}/kerror/errors/partialError.js +0 -0
  457. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.d.ts +0 -0
  458. /package/{lib → dist/lib}/kerror/errors/pluginImplementationError.js +0 -0
  459. /package/{lib → dist/lib}/kerror/errors/preconditionError.d.ts +0 -0
  460. /package/{lib → dist/lib}/kerror/errors/preconditionError.js +0 -0
  461. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.d.ts +0 -0
  462. /package/{lib → dist/lib}/kerror/errors/serviceUnavailableError.js +0 -0
  463. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.d.ts +0 -0
  464. /package/{lib → dist/lib}/kerror/errors/sizeLimitError.js +0 -0
  465. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.d.ts +0 -0
  466. /package/{lib → dist/lib}/kerror/errors/tooManyRequestsError.js +0 -0
  467. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.d.ts +0 -0
  468. /package/{lib → dist/lib}/kerror/errors/unauthorizedError.js +0 -0
  469. /package/{lib → dist/lib}/kerror/index.js +0 -0
  470. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.d.ts +0 -0
  471. /package/{lib → dist/lib}/kuzzle/event/KuzzleEventEmitter.js +0 -0
  472. /package/{lib → dist/lib}/kuzzle/index.d.ts +0 -0
  473. /package/{lib → dist/lib}/kuzzle/index.js +0 -0
  474. /package/{lib → dist/lib}/model/security/profile.d.ts +0 -0
  475. /package/{lib → dist/lib}/model/security/profile.js +0 -0
  476. /package/{lib → dist/lib}/model/security/role.js +0 -0
  477. /package/{lib → dist/lib}/model/security/token.d.ts +0 -0
  478. /package/{lib → dist/lib}/model/security/token.js +0 -0
  479. /package/{lib → dist/lib}/model/security/user.js +0 -0
  480. /package/{lib → dist/lib}/service/storage/8/elasticsearch.d.ts +0 -0
  481. /package/{lib → dist/lib}/service/storage/Elasticsearch.d.ts +0 -0
  482. /package/{lib → dist/lib}/service/storage/Elasticsearch.js +0 -0
  483. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.d.ts +0 -0
  484. /package/{lib → dist/lib}/service/storage/commons/queryTranslator.js +0 -0
  485. /package/{lib → dist/lib}/types/ClientConnection.d.ts +0 -0
  486. /package/{lib → dist/lib}/types/ClientConnection.js +0 -0
  487. /package/{lib → dist/lib}/types/Deprecation.d.ts +0 -0
  488. /package/{lib → dist/lib}/types/Deprecation.js +0 -0
  489. /package/{lib → dist/lib}/types/EventHandler.d.ts +0 -0
  490. /package/{lib → dist/lib}/types/EventHandler.js +0 -0
  491. /package/{lib → dist/lib}/types/Global.d.ts +0 -0
  492. /package/{lib → dist/lib}/types/Global.js +0 -0
  493. /package/{lib → dist/lib}/types/HttpMessage.d.ts +0 -0
  494. /package/{lib → dist/lib}/types/HttpMessage.js +0 -0
  495. /package/{lib → dist/lib}/types/HttpStream.d.ts +0 -0
  496. /package/{lib → dist/lib}/types/HttpStream.js +0 -0
  497. /package/{lib → dist/lib}/types/Kuzzle.d.ts +0 -0
  498. /package/{lib → dist/lib}/types/Kuzzle.js +0 -0
  499. /package/{lib → dist/lib}/types/KuzzleDocument.d.ts +0 -0
  500. /package/{lib → dist/lib}/types/KuzzleDocument.js +0 -0
  501. /package/{lib → dist/lib}/types/OpenApiDefinition.d.ts +0 -0
  502. /package/{lib → dist/lib}/types/OpenApiDefinition.js +0 -0
  503. /package/{lib → dist/lib}/types/PasswordPolicy.d.ts +0 -0
  504. /package/{lib → dist/lib}/types/PasswordPolicy.js +0 -0
  505. /package/{lib → dist/lib}/types/Plugin.js +0 -0
  506. /package/{lib → dist/lib}/types/PluginManifest.d.ts +0 -0
  507. /package/{lib → dist/lib}/types/PluginManifest.js +0 -0
  508. /package/{lib → dist/lib}/types/Policy.d.ts +0 -0
  509. /package/{lib → dist/lib}/types/Policy.js +0 -0
  510. /package/{lib → dist/lib}/types/PolicyRestrictions.d.ts +0 -0
  511. /package/{lib → dist/lib}/types/PolicyRestrictions.js +0 -0
  512. /package/{lib → dist/lib}/types/ProfileDefinition.d.ts +0 -0
  513. /package/{lib → dist/lib}/types/ProfileDefinition.js +0 -0
  514. /package/{lib → dist/lib}/types/RoleDefinition.d.ts +0 -0
  515. /package/{lib → dist/lib}/types/RoleDefinition.js +0 -0
  516. /package/{lib → dist/lib}/types/StrategyDefinition.d.ts +0 -0
  517. /package/{lib → dist/lib}/types/StrategyDefinition.js +0 -0
  518. /package/{lib → dist/lib}/types/Target.d.ts +0 -0
  519. /package/{lib → dist/lib}/types/Target.js +0 -0
  520. /package/{lib → dist/lib}/types/Token.d.ts +0 -0
  521. /package/{lib → dist/lib}/types/Token.js +0 -0
  522. /package/{lib → dist/lib}/types/User.d.ts +0 -0
  523. /package/{lib → dist/lib}/types/User.js +0 -0
  524. /package/{lib → dist/lib}/types/config/DumpConfiguration.d.ts +0 -0
  525. /package/{lib → dist/lib}/types/config/DumpConfiguration.js +0 -0
  526. /package/{lib → dist/lib}/types/config/HttpConfiguration.d.ts +0 -0
  527. /package/{lib → dist/lib}/types/config/HttpConfiguration.js +0 -0
  528. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.d.ts +0 -0
  529. /package/{lib → dist/lib}/types/config/KuzzleConfiguration.js +0 -0
  530. /package/{lib → dist/lib}/types/config/LimitsConfiguration.d.ts +0 -0
  531. /package/{lib → dist/lib}/types/config/LimitsConfiguration.js +0 -0
  532. /package/{lib → dist/lib}/types/config/PluginsConfiguration.d.ts +0 -0
  533. /package/{lib → dist/lib}/types/config/PluginsConfiguration.js +0 -0
  534. /package/{lib → dist/lib}/types/config/SecurityConfiguration.d.ts +0 -0
  535. /package/{lib → dist/lib}/types/config/SecurityConfiguration.js +0 -0
  536. /package/{lib → dist/lib}/types/config/ServerConfiguration.d.ts +0 -0
  537. /package/{lib → dist/lib}/types/config/ServerConfiguration.js +0 -0
  538. /package/{lib → dist/lib}/types/config/ServicesConfiguration.d.ts +0 -0
  539. /package/{lib → dist/lib}/types/config/ServicesConfiguration.js +0 -0
  540. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +0 -0
  541. /package/{lib → dist/lib}/types/config/internalCache/InternalCacheRedisConfiguration.js +0 -0
  542. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +0 -0
  543. /package/{lib → dist/lib}/types/config/publicCache/PublicCacheRedisConfiguration.js +0 -0
  544. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +0 -0
  545. /package/{lib → dist/lib}/types/config/storageEngine/StorageEngineElasticsearchConfiguration.js +0 -0
  546. /package/{lib/types → dist/lib/types/controllers}/Controller.js +0 -0
  547. /package/{lib/types → dist/lib/types/controllers}/ControllerDefinition.js +0 -0
  548. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.d.ts +0 -0
  549. /package/{lib/types → dist/lib/types/controllers}/ControllerRights.js +0 -0
  550. /package/{lib → dist/lib}/types/errors/ErrorDefinition.d.ts +0 -0
  551. /package/{lib → dist/lib}/types/errors/ErrorDefinition.js +0 -0
  552. /package/{lib → dist/lib}/types/errors/ErrorDomains.d.ts +0 -0
  553. /package/{lib → dist/lib}/types/errors/ErrorDomains.js +0 -0
  554. /package/{lib → dist/lib}/types/events/EventGenericDocument.d.ts +0 -0
  555. /package/{lib → dist/lib}/types/events/EventGenericDocument.js +0 -0
  556. /package/{lib → dist/lib}/types/events/EventProtocol.d.ts +0 -0
  557. /package/{lib → dist/lib}/types/events/EventProtocol.js +0 -0
  558. /package/{lib → dist/lib}/types/realtime/RealtimeScope.d.ts +0 -0
  559. /package/{lib → dist/lib}/types/realtime/RealtimeScope.js +0 -0
  560. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.d.ts +0 -0
  561. /package/{lib → dist/lib}/types/realtime/RealtimeUsers.js +0 -0
  562. /package/{lib → dist/lib}/types/realtime/RoomList.d.ts +0 -0
  563. /package/{lib → dist/lib}/types/realtime/RoomList.js +0 -0
  564. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.d.ts +0 -0
  565. /package/{lib → dist/lib}/types/shared/StoreCollectionsDefinition.js +0 -0
  566. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.d.ts +0 -0
  567. /package/{lib → dist/lib}/types/storage/7/Elasticsearch.js +0 -0
  568. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.d.ts +0 -0
  569. /package/{lib → dist/lib}/types/storage/8/Elasticsearch.js +0 -0
  570. /package/{lib → dist/lib}/util/Inflector.d.ts +0 -0
  571. /package/{lib → dist/lib}/util/Inflector.js +0 -0
  572. /package/{lib → dist/lib}/util/array.d.ts +0 -0
  573. /package/{lib → dist/lib}/util/array.js +0 -0
  574. /package/{lib → dist/lib}/util/async.d.ts +0 -0
  575. /package/{lib → dist/lib}/util/async.js +0 -0
  576. /package/{lib → dist/lib}/util/bufferedPassThrough.d.ts +0 -0
  577. /package/{lib → dist/lib}/util/bufferedPassThrough.js +0 -0
  578. /package/{lib → dist/lib}/util/crypto.d.ts +0 -0
  579. /package/{lib → dist/lib}/util/crypto.js +0 -0
  580. /package/{lib → dist/lib}/util/dump-collection.d.ts +0 -0
  581. /package/{lib → dist/lib}/util/dump-collection.js +0 -0
  582. /package/{lib → dist/lib}/util/esRequest.d.ts +0 -0
  583. /package/{lib → dist/lib}/util/esRequest.js +0 -0
  584. /package/{lib → dist/lib}/util/koncordeCompat.d.ts +0 -0
  585. /package/{lib → dist/lib}/util/koncordeCompat.js +0 -0
  586. /package/{lib → dist/lib}/util/mutex.d.ts +0 -0
  587. /package/{lib → dist/lib}/util/mutex.js +0 -0
  588. /package/{lib → dist/lib}/util/name-generator.d.ts +0 -0
  589. /package/{lib → dist/lib}/util/name-generator.js +0 -0
  590. /package/{lib → dist/lib}/util/time.d.ts +0 -0
  591. /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";