kuzzle 2.19.2 → 2.19.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.
- package/lib/api/controllers/adminController.js +94 -80
- package/lib/api/controllers/authController.js +239 -212
- package/lib/api/controllers/baseController.js +89 -51
- package/lib/api/controllers/bulkController.js +62 -49
- package/lib/api/controllers/clusterController.js +6 -8
- package/lib/api/controllers/collectionController.js +140 -129
- package/lib/api/controllers/debugController.d.ts +2 -2
- package/lib/api/controllers/debugController.js +33 -31
- package/lib/api/controllers/documentController.js +365 -274
- package/lib/api/controllers/index.js +13 -13
- package/lib/api/controllers/indexController.js +46 -50
- package/lib/api/controllers/memoryStorageController.js +410 -360
- package/lib/api/controllers/realtimeController.js +37 -36
- package/lib/api/controllers/securityController.js +553 -412
- package/lib/api/controllers/serverController.js +111 -104
- package/lib/api/documentExtractor.js +75 -68
- package/lib/api/funnel.js +411 -312
- package/lib/api/httpRoutes.js +1493 -324
- package/lib/api/openapi/OpenApiManager.d.ts +1 -1
- package/lib/api/openapi/OpenApiManager.js +22 -22
- package/lib/api/openapi/components/document/count.yaml +1 -1
- package/lib/api/openapi/components/document/create.yaml +2 -2
- package/lib/api/openapi/components/document/delete.yaml +1 -1
- package/lib/api/openapi/components/document/deleteByQuery.yaml +1 -1
- package/lib/api/openapi/components/document/exists.yaml +1 -1
- package/lib/api/openapi/components/document/get.yaml +2 -2
- package/lib/api/openapi/components/document/index.js +12 -12
- package/lib/api/openapi/components/document/replace.yaml +1 -1
- package/lib/api/openapi/components/document/scroll.yaml +1 -1
- package/lib/api/openapi/components/document/validate.yaml +1 -1
- package/lib/api/openapi/components/index.d.ts +2 -2
- package/lib/api/openapi/components/index.js +1 -1
- package/lib/api/openapi/components/security/index.js +1 -1
- package/lib/api/openapi/components/security/upsertUser.yaml +2 -3
- package/lib/api/openapi/index.d.ts +1 -1
- package/lib/api/openapi/openApiGenerator.d.ts +1 -1
- package/lib/api/openapi/openApiGenerator.js +7 -7
- package/lib/api/rateLimiter.js +12 -13
- package/lib/api/request/index.d.ts +4 -4
- package/lib/api/request/kuzzleRequest.d.ts +9 -9
- package/lib/api/request/kuzzleRequest.js +89 -87
- package/lib/api/request/requestContext.d.ts +2 -2
- package/lib/api/request/requestContext.js +17 -17
- package/lib/api/request/requestInput.d.ts +1 -1
- package/lib/api/request/requestInput.js +19 -19
- package/lib/api/request/requestResponse.d.ts +4 -4
- package/lib/api/request/requestResponse.js +31 -33
- package/lib/cluster/command.js +48 -44
- package/lib/cluster/idCardHandler.d.ts +1 -1
- package/lib/cluster/idCardHandler.js +15 -15
- package/lib/cluster/index.js +2 -2
- package/lib/cluster/node.js +301 -269
- package/lib/cluster/publisher.js +45 -46
- package/lib/cluster/state.d.ts +5 -5
- package/lib/cluster/state.js +8 -8
- package/lib/cluster/subscriber.js +163 -113
- package/lib/cluster/workers/IDCardRenewer.js +33 -32
- package/lib/config/default.config.d.ts +1 -1
- package/lib/config/default.config.js +212 -171
- package/lib/config/documentEventAliases.js +6 -6
- package/lib/config/index.js +161 -98
- package/lib/config/sdkCompatibility.json +8 -8
- package/lib/core/auth/formatProcessing.js +7 -7
- package/lib/core/auth/passportResponse.js +7 -7
- package/lib/core/auth/passportWrapper.js +34 -30
- package/lib/core/auth/tokenManager.d.ts +2 -2
- package/lib/core/auth/tokenManager.js +11 -10
- package/lib/core/backend/applicationManager.d.ts +1 -1
- package/lib/core/backend/applicationManager.js +2 -2
- package/lib/core/backend/backend.d.ts +3 -3
- package/lib/core/backend/backend.js +34 -31
- package/lib/core/backend/backendCluster.d.ts +2 -2
- package/lib/core/backend/backendCluster.js +5 -5
- package/lib/core/backend/backendConfig.d.ts +2 -2
- package/lib/core/backend/backendConfig.js +3 -3
- package/lib/core/backend/backendController.d.ts +2 -2
- package/lib/core/backend/backendController.js +9 -10
- package/lib/core/backend/backendErrors.d.ts +3 -3
- package/lib/core/backend/backendErrors.js +2 -1
- package/lib/core/backend/backendHook.d.ts +2 -2
- package/lib/core/backend/backendHook.js +5 -5
- package/lib/core/backend/backendImport.d.ts +3 -3
- package/lib/core/backend/backendImport.js +23 -23
- package/lib/core/backend/backendOpenApi.d.ts +2 -2
- package/lib/core/backend/backendOpenApi.js +16 -16
- package/lib/core/backend/backendPipe.d.ts +2 -2
- package/lib/core/backend/backendPipe.js +6 -6
- package/lib/core/backend/backendPlugin.d.ts +4 -4
- package/lib/core/backend/backendPlugin.js +14 -14
- package/lib/core/backend/backendStorage.d.ts +2 -2
- package/lib/core/backend/backendStorage.js +1 -2
- package/lib/core/backend/backendVault.d.ts +2 -2
- package/lib/core/backend/backendVault.js +3 -3
- package/lib/core/backend/index.d.ts +14 -14
- package/lib/core/backend/internalLogger.d.ts +1 -1
- package/lib/core/backend/internalLogger.js +5 -5
- package/lib/core/cache/cacheDbEnum.js +4 -4
- package/lib/core/cache/cacheEngine.js +79 -85
- package/lib/core/network/accessLogger.js +126 -120
- package/lib/core/network/clientConnection.js +5 -5
- package/lib/core/network/context.js +8 -8
- package/lib/core/network/entryPoint.js +100 -85
- package/lib/core/network/httpRouter/index.js +63 -60
- package/lib/core/network/httpRouter/routeHandler.js +18 -19
- package/lib/core/network/httpRouter/routePart.js +23 -19
- package/lib/core/network/protocolManifest.js +3 -3
- package/lib/core/network/protocols/httpMessage.js +8 -10
- package/lib/core/network/protocols/httpwsProtocol.js +305 -250
- package/lib/core/network/protocols/internalProtocol.js +27 -24
- package/lib/core/network/protocols/mqttProtocol.js +106 -96
- package/lib/core/network/protocols/protocol.js +20 -17
- package/lib/core/network/router.js +56 -46
- package/lib/core/plugin/plugin.js +151 -120
- package/lib/core/plugin/pluginContext.d.ts +7 -7
- package/lib/core/plugin/pluginContext.js +48 -44
- package/lib/core/plugin/pluginManifest.js +13 -12
- package/lib/core/plugin/pluginRepository.js +26 -27
- package/lib/core/plugin/pluginsManager.js +425 -304
- package/lib/core/plugin/privilegedContext.js +3 -3
- package/lib/core/realtime/actionEnum.js +1 -1
- package/lib/core/realtime/channel.d.ts +1 -1
- package/lib/core/realtime/channel.js +22 -22
- package/lib/core/realtime/connectionRooms.d.ts +1 -1
- package/lib/core/realtime/hotelClerk.d.ts +2 -2
- package/lib/core/realtime/hotelClerk.js +53 -50
- package/lib/core/realtime/index.js +5 -5
- package/lib/core/realtime/notification/document.js +25 -25
- package/lib/core/realtime/notification/index.js +4 -4
- package/lib/core/realtime/notification/server.js +3 -3
- package/lib/core/realtime/notification/user.js +4 -4
- package/lib/core/realtime/notifier.js +113 -75
- package/lib/core/realtime/room.d.ts +1 -1
- package/lib/core/realtime/subscription.d.ts +1 -1
- package/lib/core/realtime/subscription.js +1 -1
- package/lib/core/security/index.js +8 -8
- package/lib/core/security/profileRepository.d.ts +6 -6
- package/lib/core/security/profileRepository.js +48 -45
- package/lib/core/security/roleRepository.js +127 -115
- package/lib/core/security/securityLoader.js +70 -63
- package/lib/core/security/tokenRepository.js +132 -118
- package/lib/core/security/userRepository.js +104 -88
- package/lib/core/shared/KoncordeWrapper.d.ts +1 -1
- package/lib/core/shared/KoncordeWrapper.js +3 -1
- package/lib/core/shared/abstractManifest.js +22 -23
- package/lib/core/shared/repository.js +69 -67
- package/lib/core/shared/sdk/embeddedSdk.d.ts +2 -2
- package/lib/core/shared/sdk/embeddedSdk.js +36 -32
- package/lib/core/shared/sdk/funnelProtocol.d.ts +1 -1
- package/lib/core/shared/sdk/funnelProtocol.js +11 -11
- package/lib/core/shared/sdk/impersonatedSdk.js +19 -18
- package/lib/core/shared/store.js +127 -32
- package/lib/core/statistics/index.js +2 -2
- package/lib/core/statistics/statistics.js +99 -85
- package/lib/core/storage/clientAdapter.js +219 -136
- package/lib/core/storage/indexCache.js +3 -3
- package/lib/core/storage/storageEngine.js +10 -13
- package/lib/core/storage/storeScopeEnum.js +3 -3
- package/lib/core/validation/baseType.js +12 -10
- package/lib/core/validation/index.js +2 -2
- package/lib/core/validation/types/anything.js +4 -4
- package/lib/core/validation/types/boolean.js +7 -7
- package/lib/core/validation/types/date.js +165 -131
- package/lib/core/validation/types/email.js +18 -21
- package/lib/core/validation/types/enum.js +34 -21
- package/lib/core/validation/types/geoPoint.js +7 -7
- package/lib/core/validation/types/geoShape.js +148 -125
- package/lib/core/validation/types/integer.js +9 -9
- package/lib/core/validation/types/ipAddress.js +17 -19
- package/lib/core/validation/types/numeric.js +36 -29
- package/lib/core/validation/types/object.js +19 -19
- package/lib/core/validation/types/string.js +36 -29
- package/lib/core/validation/types/url.js +17 -19
- package/lib/core/validation/validation.js +422 -378
- package/lib/kerror/codes/1-services.json +7 -1
- package/lib/kerror/codes/4-plugin.json +2 -2
- package/lib/kerror/codes/index.js +85 -63
- package/lib/kerror/errors/badRequestError.d.ts +1 -1
- package/lib/kerror/errors/externalServiceError.d.ts +1 -1
- package/lib/kerror/errors/forbiddenError.d.ts +1 -1
- package/lib/kerror/errors/gatewayTimeoutError.d.ts +1 -1
- package/lib/kerror/errors/index.d.ts +15 -15
- package/lib/kerror/errors/internalError.d.ts +1 -1
- package/lib/kerror/errors/kuzzleError.d.ts +1 -1
- package/lib/kerror/errors/multipleErrorsError.d.ts +1 -1
- package/lib/kerror/errors/multipleErrorsError.js +1 -1
- package/lib/kerror/errors/notFoundError.d.ts +1 -1
- package/lib/kerror/errors/partialError.d.ts +1 -1
- package/lib/kerror/errors/partialError.js +1 -1
- package/lib/kerror/errors/pluginImplementationError.d.ts +1 -1
- package/lib/kerror/errors/pluginImplementationError.js +2 -1
- package/lib/kerror/errors/preconditionError.d.ts +1 -1
- package/lib/kerror/errors/serviceUnavailableError.d.ts +1 -1
- package/lib/kerror/errors/sizeLimitError.d.ts +1 -1
- package/lib/kerror/errors/tooManyRequestsError.d.ts +1 -1
- package/lib/kerror/errors/unauthorizedError.d.ts +1 -1
- package/lib/kerror/index.d.ts +3 -3
- package/lib/kerror/index.js +17 -16
- package/lib/kuzzle/dumpGenerator.js +130 -114
- package/lib/kuzzle/event/kuzzleEventEmitter.js +96 -70
- package/lib/kuzzle/event/pipeRunner.js +25 -24
- package/lib/kuzzle/event/waterfall.js +13 -15
- package/lib/kuzzle/index.js +2 -2
- package/lib/kuzzle/internalIndexHandler.js +80 -59
- package/lib/kuzzle/kuzzle.js +99 -99
- package/lib/kuzzle/kuzzleStateEnum.js +1 -1
- package/lib/kuzzle/log.js +23 -18
- package/lib/kuzzle/vault.js +34 -19
- package/lib/model/security/profile.d.ts +3 -3
- package/lib/model/security/profile.js +38 -37
- package/lib/model/security/rights.js +5 -5
- package/lib/model/security/role.d.ts +3 -3
- package/lib/model/security/role.js +25 -26
- package/lib/model/security/token.d.ts +1 -1
- package/lib/model/security/token.js +4 -4
- package/lib/model/security/user.d.ts +2 -2
- package/lib/model/security/user.js +9 -9
- package/lib/model/storage/apiKey.js +43 -33
- package/lib/model/storage/baseModel.js +49 -45
- package/lib/service/cache/redis.js +60 -55
- package/lib/service/service.js +17 -17
- package/lib/service/storage/elasticsearch.js +839 -755
- package/lib/service/storage/esWrapper.js +103 -86
- package/lib/service/storage/queryTranslator.js +52 -59
- package/lib/types/Controller.d.ts +3 -3
- package/lib/types/ControllerDefinition.d.ts +3 -3
- package/lib/types/DebugModule.d.ts +2 -2
- package/lib/types/DebugModule.js +1 -1
- package/lib/types/Global.d.ts +1 -1
- package/lib/types/HttpStream.d.ts +2 -1
- package/lib/types/HttpStream.js +7 -5
- package/lib/types/Kuzzle.d.ts +1 -1
- package/lib/types/KuzzleDocument.d.ts +1 -1
- package/lib/types/OpenApiDefinition.d.ts +1 -1
- package/lib/types/PasswordPolicy.d.ts +1 -1
- package/lib/types/Plugin.d.ts +6 -6
- package/lib/types/Plugin.js +2 -2
- package/lib/types/Policy.d.ts +1 -1
- package/lib/types/RequestPayload.d.ts +1 -1
- package/lib/types/ResponsePayload.d.ts +1 -1
- package/lib/types/Token.d.ts +1 -1
- package/lib/types/User.d.ts +1 -1
- package/lib/types/config/DumpConfiguration.d.ts +8 -8
- package/lib/types/config/HttpConfiguration.d.ts +1 -1
- package/lib/types/config/KuzzleConfiguration.d.ts +1 -1
- package/lib/types/config/LimitsConfiguration.d.ts +8 -8
- package/lib/types/config/PluginsConfiguration.d.ts +4 -4
- package/lib/types/config/SecurityConfiguration.d.ts +62 -62
- package/lib/types/config/ServerConfiguration.d.ts +55 -55
- package/lib/types/config/ServicesConfiguration.d.ts +2 -2
- package/lib/types/config/internalCache/InternalCacheRedisConfiguration.d.ts +10 -10
- package/lib/types/config/publicCache/PublicCacheRedisConfiguration.d.ts +3 -3
- package/lib/types/config/storageEngine/StorageEngineElasticsearchConfiguration.d.ts +194 -110
- package/lib/types/errors/ErrorDefinition.d.ts +1 -1
- package/lib/types/errors/ErrorDomains.d.ts +1 -1
- package/lib/types/index.d.ts +38 -38
- package/lib/types/realtime/RealtimeScope.d.ts +1 -1
- package/lib/types/realtime/RealtimeUsers.d.ts +1 -1
- package/lib/util/assertType.js +13 -11
- package/lib/util/async.d.ts +1 -0
- package/lib/util/async.js +61 -0
- package/lib/util/asyncStore.js +19 -21
- package/lib/util/bufferedPassThrough.d.ts +2 -2
- package/lib/util/bufferedPassThrough.js +4 -4
- package/lib/util/bytes.js +9 -13
- package/lib/util/crypto.js +1 -1
- package/lib/util/debug.js +5 -5
- package/lib/util/deprecate.js +24 -21
- package/lib/util/didYouMean.js +7 -7
- package/lib/util/dump-collection.d.ts +2 -2
- package/lib/util/dump-collection.js +26 -26
- package/lib/util/esRequest.d.ts +1 -0
- package/lib/util/esRequest.js +62 -0
- package/lib/util/extractFields.js +24 -25
- package/lib/util/inflector.js +5 -5
- package/lib/util/koncordeCompat.d.ts +2 -2
- package/lib/util/koncordeCompat.js +5 -5
- package/lib/util/memoize.js +3 -5
- package/lib/util/mutex.d.ts +19 -1
- package/lib/util/mutex.js +39 -12
- package/lib/util/name-generator.js +1331 -1331
- package/lib/util/promback.js +8 -10
- package/lib/util/readYamlFile.d.ts +1 -1
- package/lib/util/readYamlFile.js +1 -1
- package/lib/util/requestAssertions.js +34 -34
- package/lib/util/safeObject.js +5 -5
- package/lib/util/stackTrace.js +20 -22
- package/lib/util/wildcard.js +15 -15
- package/package.json +6 -6
- package/npm-shrinkwrap.json +0 -19422
|
@@ -19,55 +19,55 @@
|
|
|
19
19
|
* limitations under the License.
|
|
20
20
|
*/
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
"use strict";
|
|
23
23
|
|
|
24
|
-
const crypto = require(
|
|
24
|
+
const crypto = require("crypto");
|
|
25
25
|
|
|
26
|
-
const Bluebird = require(
|
|
26
|
+
const Bluebird = require("bluebird");
|
|
27
27
|
|
|
28
|
-
const debug = require(
|
|
29
|
-
const Store = require(
|
|
30
|
-
const { Mutex } = require(
|
|
31
|
-
const scopeEnum = require(
|
|
32
|
-
const kerror = require(
|
|
28
|
+
const debug = require("../util/debug")("kuzzle:bootstrap:internalIndex");
|
|
29
|
+
const Store = require("../core/shared/store");
|
|
30
|
+
const { Mutex } = require("../util/mutex");
|
|
31
|
+
const scopeEnum = require("../core/storage/storeScopeEnum");
|
|
32
|
+
const kerror = require("../kerror");
|
|
33
33
|
|
|
34
34
|
const securitiesBootstrap = {
|
|
35
35
|
profiles: {
|
|
36
36
|
admin: {
|
|
37
|
-
policies: [
|
|
37
|
+
policies: [{ roleId: "admin" }],
|
|
38
38
|
rateLimit: 0,
|
|
39
39
|
},
|
|
40
40
|
anonymous: {
|
|
41
|
-
policies: [
|
|
41
|
+
policies: [{ roleId: "anonymous" }],
|
|
42
42
|
},
|
|
43
43
|
default: {
|
|
44
|
-
policies: [
|
|
45
|
-
}
|
|
44
|
+
policies: [{ roleId: "default" }],
|
|
45
|
+
},
|
|
46
46
|
},
|
|
47
47
|
roles: {
|
|
48
48
|
admin: {
|
|
49
49
|
controllers: {
|
|
50
|
-
|
|
50
|
+
"*": {
|
|
51
51
|
actions: {
|
|
52
|
-
|
|
52
|
+
"*": true,
|
|
53
53
|
},
|
|
54
54
|
},
|
|
55
55
|
},
|
|
56
56
|
},
|
|
57
57
|
anonymous: {
|
|
58
58
|
controllers: {
|
|
59
|
-
|
|
59
|
+
"*": {
|
|
60
60
|
actions: {
|
|
61
|
-
|
|
61
|
+
"*": true,
|
|
62
62
|
},
|
|
63
63
|
},
|
|
64
64
|
},
|
|
65
65
|
},
|
|
66
66
|
default: {
|
|
67
67
|
controllers: {
|
|
68
|
-
|
|
68
|
+
"*": {
|
|
69
69
|
actions: {
|
|
70
|
-
|
|
70
|
+
"*": true,
|
|
71
71
|
},
|
|
72
72
|
},
|
|
73
73
|
},
|
|
@@ -75,30 +75,32 @@ const securitiesBootstrap = {
|
|
|
75
75
|
},
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
-
const dataModelVersion =
|
|
78
|
+
const dataModelVersion = "2.0.0";
|
|
79
79
|
|
|
80
80
|
class InternalIndexHandler extends Store {
|
|
81
|
-
constructor
|
|
81
|
+
constructor() {
|
|
82
82
|
super(
|
|
83
83
|
global.kuzzle.config.services.storageEngine.internalIndex.name,
|
|
84
|
-
scopeEnum.PRIVATE
|
|
84
|
+
scopeEnum.PRIVATE
|
|
85
|
+
);
|
|
85
86
|
|
|
86
|
-
this.timeout =
|
|
87
|
+
this.timeout =
|
|
88
|
+
global.kuzzle.config.services.internalIndex.bootstrapLockTimeout;
|
|
87
89
|
this.config = global.kuzzle.config.services.storageEngine.internalIndex;
|
|
88
90
|
|
|
89
91
|
// IDs for config documents
|
|
90
92
|
this._BOOTSTRAP_DONE_ID = `${this.index}.done`;
|
|
91
|
-
this._DATAMODEL_VERSION_ID =
|
|
92
|
-
this._JWT_SECRET_ID =
|
|
93
|
+
this._DATAMODEL_VERSION_ID = "internalIndex.dataModelVersion";
|
|
94
|
+
this._JWT_SECRET_ID = "security.jwt.secret";
|
|
93
95
|
}
|
|
94
96
|
|
|
95
97
|
/**
|
|
96
98
|
* @returns {Promise}
|
|
97
99
|
*/
|
|
98
|
-
async init
|
|
100
|
+
async init() {
|
|
99
101
|
await super.init(this.config.collections);
|
|
100
102
|
|
|
101
|
-
const mutex = new Mutex(
|
|
103
|
+
const mutex = new Mutex("InternalIndexBootstrap", {
|
|
102
104
|
timeout: -1,
|
|
103
105
|
ttl: 30000,
|
|
104
106
|
});
|
|
@@ -106,7 +108,7 @@ class InternalIndexHandler extends Store {
|
|
|
106
108
|
await mutex.lock();
|
|
107
109
|
|
|
108
110
|
try {
|
|
109
|
-
const bootstrapped = await this.exists(
|
|
111
|
+
const bootstrapped = await this.exists("config", this._BOOTSTRAP_DONE_ID);
|
|
110
112
|
|
|
111
113
|
if (bootstrapped) {
|
|
112
114
|
return;
|
|
@@ -114,18 +116,25 @@ class InternalIndexHandler extends Store {
|
|
|
114
116
|
|
|
115
117
|
await Bluebird.resolve(this._bootstrapSequence()).timeout(this.timeout);
|
|
116
118
|
|
|
117
|
-
await this.create(
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
119
|
+
await this.create(
|
|
120
|
+
"config",
|
|
121
|
+
{ timestamp: Date.now() },
|
|
122
|
+
{
|
|
123
|
+
id: this._BOOTSTRAP_DONE_ID,
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
} catch (error) {
|
|
122
127
|
if (error instanceof Bluebird.TimeoutError) {
|
|
123
|
-
throw kerror.get(
|
|
128
|
+
throw kerror.get(
|
|
129
|
+
"services",
|
|
130
|
+
"storage",
|
|
131
|
+
"bootstrap_timeout",
|
|
132
|
+
"internalIndex"
|
|
133
|
+
);
|
|
124
134
|
}
|
|
125
135
|
|
|
126
136
|
throw error;
|
|
127
|
-
}
|
|
128
|
-
finally {
|
|
137
|
+
} finally {
|
|
129
138
|
await mutex.unlock();
|
|
130
139
|
}
|
|
131
140
|
}
|
|
@@ -133,44 +142,50 @@ class InternalIndexHandler extends Store {
|
|
|
133
142
|
/**
|
|
134
143
|
* @override
|
|
135
144
|
*/
|
|
136
|
-
async _bootstrapSequence
|
|
137
|
-
debug(
|
|
145
|
+
async _bootstrapSequence() {
|
|
146
|
+
debug("Bootstrapping security structure");
|
|
138
147
|
await this.createInitialSecurities();
|
|
139
148
|
|
|
140
|
-
debug(
|
|
149
|
+
debug("Bootstrapping document validation structure");
|
|
141
150
|
await this.createInitialValidations();
|
|
142
151
|
|
|
143
|
-
debug(
|
|
152
|
+
debug("Bootstrapping JWT secret");
|
|
144
153
|
await this._persistSecret();
|
|
145
154
|
|
|
146
155
|
// Create datamodel version
|
|
147
|
-
await this.create(
|
|
148
|
-
|
|
149
|
-
|
|
156
|
+
await this.create(
|
|
157
|
+
"config",
|
|
158
|
+
{ version: dataModelVersion },
|
|
159
|
+
{
|
|
160
|
+
id: this._DATAMODEL_VERSION_ID,
|
|
161
|
+
}
|
|
162
|
+
);
|
|
150
163
|
}
|
|
151
164
|
|
|
152
165
|
/**
|
|
153
166
|
* Creates initial roles and profiles as specified in Kuzzle configuration
|
|
154
167
|
*/
|
|
155
|
-
async createInitialSecurities
|
|
168
|
+
async createInitialSecurities() {
|
|
156
169
|
await Bluebird.map(
|
|
157
170
|
Object.entries(securitiesBootstrap.roles),
|
|
158
171
|
([roleId, content]) => {
|
|
159
|
-
return this.createOrReplace(
|
|
160
|
-
refresh:
|
|
172
|
+
return this.createOrReplace("roles", roleId, content, {
|
|
173
|
+
refresh: "wait_for",
|
|
161
174
|
});
|
|
162
|
-
}
|
|
175
|
+
}
|
|
176
|
+
);
|
|
163
177
|
|
|
164
178
|
await Bluebird.map(
|
|
165
179
|
Object.entries(securitiesBootstrap.profiles),
|
|
166
180
|
([profileId, content]) => {
|
|
167
|
-
return this.createOrReplace(
|
|
168
|
-
refresh:
|
|
181
|
+
return this.createOrReplace("profiles", profileId, content, {
|
|
182
|
+
refresh: "wait_for",
|
|
169
183
|
});
|
|
170
|
-
}
|
|
184
|
+
}
|
|
185
|
+
);
|
|
171
186
|
}
|
|
172
187
|
|
|
173
|
-
async createInitialValidations
|
|
188
|
+
async createInitialValidations() {
|
|
174
189
|
const initialValidations = global.kuzzle.config.validation;
|
|
175
190
|
const promises = [];
|
|
176
191
|
|
|
@@ -179,26 +194,32 @@ class InternalIndexHandler extends Store {
|
|
|
179
194
|
const validationId = `${index}#${collectionName}`;
|
|
180
195
|
|
|
181
196
|
promises.push(
|
|
182
|
-
this.createOrReplace(
|
|
197
|
+
this.createOrReplace("validations", validationId, validation)
|
|
198
|
+
);
|
|
183
199
|
}
|
|
184
200
|
}
|
|
185
201
|
|
|
186
202
|
await Bluebird.all(promises);
|
|
187
203
|
}
|
|
188
204
|
|
|
189
|
-
async getSecret
|
|
190
|
-
const response = await this.get(
|
|
205
|
+
async getSecret() {
|
|
206
|
+
const response = await this.get("config", this._JWT_SECRET_ID);
|
|
191
207
|
|
|
192
208
|
return response._source.seed;
|
|
193
209
|
}
|
|
194
210
|
|
|
195
|
-
async _persistSecret
|
|
196
|
-
const seed =
|
|
197
|
-
|
|
211
|
+
async _persistSecret() {
|
|
212
|
+
const seed =
|
|
213
|
+
global.kuzzle.config.security.jwt.secret ||
|
|
214
|
+
crypto.randomBytes(512).toString("hex");
|
|
198
215
|
|
|
199
|
-
await this.create(
|
|
200
|
-
|
|
201
|
-
|
|
216
|
+
await this.create(
|
|
217
|
+
"config",
|
|
218
|
+
{ seed },
|
|
219
|
+
{
|
|
220
|
+
id: this._JWT_SECRET_ID,
|
|
221
|
+
}
|
|
222
|
+
);
|
|
202
223
|
}
|
|
203
224
|
}
|
|
204
225
|
|