@prosopo/user-access-policy 3.4.0 → 3.5.27
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/CHANGELOG.md +309 -0
- package/coverage/base.css +224 -0
- package/coverage/block-navigation.js +87 -0
- package/coverage/clover.xml +786 -0
- package/coverage/coverage-final.json +15 -0
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +146 -0
- package/coverage/prettify.css +1 -0
- package/coverage/prettify.js +2 -0
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +210 -0
- package/coverage/src/accessPolicy.ts.html +457 -0
- package/coverage/src/accessPolicyResolver.ts.html +211 -0
- package/coverage/src/accessRules.ts.html +265 -0
- package/coverage/src/api/accessRuleApiRoutes.ts.html +379 -0
- package/coverage/src/api/accessRulesApiClient.ts.html +274 -0
- package/coverage/src/api/deleteAllRulesEndpoint.ts.html +229 -0
- package/coverage/src/api/deleteRulesEndpoint.ts.html +301 -0
- package/coverage/src/api/index.html +176 -0
- package/coverage/src/api/insertRulesEndpoint.ts.html +436 -0
- package/coverage/src/index.html +176 -0
- package/coverage/src/index.ts.html +277 -0
- package/coverage/src/redis/index.html +161 -0
- package/coverage/src/redis/redisRulesIndex.ts.html +769 -0
- package/coverage/src/redis/redisRulesReader.ts.html +652 -0
- package/coverage/src/redis/redisRulesStorage.ts.html +229 -0
- package/coverage/src/redis/redisRulesWriter.ts.html +424 -0
- package/coverage/src/util.ts.html +136 -0
- package/dist/.export.d.ts +6 -0
- package/dist/.export.d.ts.map +1 -0
- package/dist/.export.js +21 -0
- package/dist/.export.js.map +1 -0
- package/dist/accessPolicy.d.ts +169 -0
- package/dist/accessPolicy.d.ts.map +1 -0
- package/dist/accessPolicy.js.map +1 -0
- package/dist/accessPolicyResolver.d.ts +110 -0
- package/dist/accessPolicyResolver.d.ts.map +1 -0
- package/dist/accessPolicyResolver.js.map +1 -0
- package/dist/accessRules.d.ts +16 -0
- package/dist/accessRules.d.ts.map +1 -0
- package/dist/accessRules.js.map +1 -0
- package/dist/api/.export.d.ts +7 -0
- package/dist/api/.export.d.ts.map +1 -0
- package/dist/api/.export.js +11 -0
- package/dist/api/.export.js.map +1 -0
- package/dist/api/accessRuleApiRoutes.d.ts +27 -0
- package/dist/api/accessRuleApiRoutes.d.ts.map +1 -0
- package/dist/api/accessRuleApiRoutes.js.map +1 -0
- package/dist/api/accessRulesApiClient.d.ts +10 -0
- package/dist/api/accessRulesApiClient.d.ts.map +1 -0
- package/dist/api/accessRulesApiClient.js +38 -0
- package/dist/api/accessRulesApiClient.js.map +1 -0
- package/dist/api/delete/.export.d.ts +2 -0
- package/dist/api/delete/.export.d.ts.map +1 -0
- package/dist/api/delete/.export.js +1 -0
- package/dist/api/delete/.export.js.map +1 -0
- package/dist/api/delete/deleteAllRules.d.ts +11 -0
- package/dist/api/delete/deleteAllRules.d.ts.map +1 -0
- package/dist/api/delete/deleteAllRules.js +25 -0
- package/dist/api/delete/deleteAllRules.js.map +1 -0
- package/dist/api/delete/deleteRuleGroups.d.ts +19 -0
- package/dist/api/delete/deleteRuleGroups.d.ts.map +1 -0
- package/dist/api/delete/deleteRuleGroups.js +52 -0
- package/dist/api/delete/deleteRuleGroups.js.map +1 -0
- package/dist/api/delete/deleteRules.d.ts +15 -0
- package/dist/api/delete/deleteRules.d.ts.map +1 -0
- package/dist/api/delete/deleteRules.js +43 -0
- package/dist/api/delete/deleteRules.js.map +1 -0
- package/dist/api/deleteAllRulesEndpoint.d.ts +12 -0
- package/dist/api/deleteAllRulesEndpoint.d.ts.map +1 -0
- package/dist/api/deleteAllRulesEndpoint.js.map +1 -0
- package/dist/api/deleteRulesEndpoint.d.ts +116 -0
- package/dist/api/deleteRulesEndpoint.d.ts.map +1 -0
- package/dist/api/deleteRulesEndpoint.js.map +1 -0
- package/dist/api/insertRulesEndpoint.d.ts +22 -0
- package/dist/api/insertRulesEndpoint.d.ts.map +1 -0
- package/dist/api/insertRulesEndpoint.js.map +1 -0
- package/dist/api/read/.export.d.ts +4 -0
- package/dist/api/read/.export.d.ts.map +1 -0
- package/dist/api/read/.export.js +1 -0
- package/dist/api/read/.export.js.map +1 -0
- package/dist/api/read/fetchRules.d.ts +53 -0
- package/dist/api/read/fetchRules.d.ts.map +1 -0
- package/dist/api/read/fetchRules.js +43 -0
- package/dist/api/read/fetchRules.js.map +1 -0
- package/dist/api/read/findRuleIds.d.ts +28 -0
- package/dist/api/read/findRuleIds.d.ts.map +1 -0
- package/dist/api/read/findRuleIds.js +50 -0
- package/dist/api/read/findRuleIds.js.map +1 -0
- package/dist/api/read/getMissingIds.d.ts +28 -0
- package/dist/api/read/getMissingIds.d.ts.map +1 -0
- package/dist/api/read/getMissingIds.js +41 -0
- package/dist/api/read/getMissingIds.js.map +1 -0
- package/dist/api/ruleApiRoutes.d.ts +43 -0
- package/dist/api/ruleApiRoutes.d.ts.map +1 -0
- package/dist/api/ruleApiRoutes.js +131 -0
- package/dist/api/ruleApiRoutes.js.map +1 -0
- package/dist/api/rulesApiClient.d.ts +20 -0
- package/dist/api/rulesApiClient.d.ts.map +1 -0
- package/dist/api/rulesApiClient.js +93 -0
- package/dist/api/rulesApiClient.js.map +1 -0
- package/dist/api/write/.export.d.ts +2 -0
- package/dist/api/write/.export.d.ts.map +1 -0
- package/dist/api/write/.export.js +1 -0
- package/dist/api/write/.export.js.map +1 -0
- package/dist/api/write/insertRules.d.ts +29 -0
- package/dist/api/write/insertRules.d.ts.map +1 -0
- package/dist/api/write/insertRules.js +102 -0
- package/dist/api/write/insertRules.js.map +1 -0
- package/dist/api/write/rehashRules.d.ts +11 -0
- package/dist/api/write/rehashRules.d.ts.map +1 -0
- package/dist/api/write/rehashRules.js +57 -0
- package/dist/api/write/rehashRules.js.map +1 -0
- package/dist/cjs/.export.cjs +21 -0
- package/dist/cjs/api/.export.cjs +11 -0
- package/dist/cjs/api/delete/.export.cjs +1 -0
- package/dist/cjs/api/delete/deleteAllRules.cjs +25 -0
- package/dist/cjs/api/delete/deleteRuleGroups.cjs +52 -0
- package/dist/cjs/api/delete/deleteRules.cjs +43 -0
- package/dist/cjs/api/read/.export.cjs +1 -0
- package/dist/cjs/api/read/fetchRules.cjs +43 -0
- package/dist/cjs/api/read/findRuleIds.cjs +50 -0
- package/dist/cjs/api/read/getMissingIds.cjs +41 -0
- package/dist/cjs/api/ruleApiRoutes.cjs +131 -0
- package/dist/cjs/api/rulesApiClient.cjs +93 -0
- package/dist/cjs/api/write/.export.cjs +1 -0
- package/dist/cjs/api/write/insertRules.cjs +102 -0
- package/dist/cjs/api/write/rehashRules.cjs +57 -0
- package/dist/cjs/index.cjs +2 -0
- package/dist/cjs/mongoose/.export.cjs +4 -0
- package/dist/cjs/mongoose/mongooseRuleSchema.cjs +36 -0
- package/dist/cjs/redis/.export.cjs +6 -0
- package/dist/cjs/redis/reader/redisAggregate.cjs +60 -0
- package/dist/cjs/redis/reader/redisRulesQuery.cjs +99 -0
- package/dist/cjs/redis/reader/redisRulesReader.cjs +230 -0
- package/dist/cjs/redis/redisAccessRules.cjs +4 -4
- package/dist/cjs/redis/redisAccessRulesIndex.cjs +55 -14
- package/dist/cjs/redis/redisClient.cjs +67 -0
- package/dist/cjs/redis/redisRuleIndex.cjs +50 -0
- package/dist/cjs/redis/redisRulesStorage.cjs +34 -0
- package/dist/cjs/redis/redisRulesWriter.cjs +100 -0
- package/dist/cjs/rule.cjs +8 -0
- package/dist/cjs/ruleInput/.export.cjs +9 -0
- package/dist/cjs/ruleInput/policyInput.cjs +25 -0
- package/dist/cjs/ruleInput/ruleInput.cjs +50 -0
- package/dist/cjs/ruleInput/userScopeInput.cjs +55 -0
- package/dist/cjs/ruleRecord.cjs +23 -0
- package/dist/cjs/rulesStorage.cjs +8 -0
- package/dist/cjs/transformRule.cjs +77 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -0
- package/dist/mongoose/.export.d.ts +2 -0
- package/dist/mongoose/.export.d.ts.map +1 -0
- package/dist/mongoose/.export.js +4 -0
- package/dist/mongoose/.export.js.map +1 -0
- package/dist/mongoose/mongooseRuleSchema.d.ts +4 -0
- package/dist/mongoose/mongooseRuleSchema.d.ts.map +1 -0
- package/dist/mongoose/mongooseRuleSchema.js +36 -0
- package/dist/mongoose/mongooseRuleSchema.js.map +1 -0
- package/dist/redis/.export.d.ts +3 -0
- package/dist/redis/.export.d.ts.map +1 -0
- package/dist/redis/.export.js +6 -0
- package/dist/redis/.export.js.map +1 -0
- package/dist/redis/reader/redisAggregate.d.ts +4 -0
- package/dist/redis/reader/redisAggregate.d.ts.map +1 -0
- package/dist/redis/reader/redisAggregate.js +60 -0
- package/dist/redis/reader/redisAggregate.js.map +1 -0
- package/dist/redis/reader/redisRulesQuery.d.ts +4 -0
- package/dist/redis/reader/redisRulesQuery.d.ts.map +1 -0
- package/dist/redis/reader/redisRulesQuery.js +99 -0
- package/dist/redis/reader/redisRulesQuery.js.map +1 -0
- package/dist/redis/reader/redisRulesReader.d.ts +26 -0
- package/dist/redis/reader/redisRulesReader.d.ts.map +1 -0
- package/dist/redis/reader/redisRulesReader.js +213 -0
- package/dist/redis/reader/redisRulesReader.js.map +1 -0
- package/dist/redis/redisAccessRules.d.ts +7 -0
- package/dist/redis/redisAccessRules.d.ts.map +1 -0
- package/dist/redis/redisAccessRules.js +112 -128
- package/dist/redis/redisAccessRules.js.map +1 -0
- package/dist/redis/redisAccessRulesIndex.d.ts +13 -0
- package/dist/redis/redisAccessRulesIndex.d.ts.map +1 -0
- package/dist/redis/redisAccessRulesIndex.js +122 -112
- package/dist/redis/redisAccessRulesIndex.js.map +1 -0
- package/dist/redis/redisClient.d.ts +11 -0
- package/dist/redis/redisClient.d.ts.map +1 -0
- package/dist/redis/redisClient.js +67 -0
- package/dist/redis/redisClient.js.map +1 -0
- package/dist/redis/redisIndex.d.ts +9 -0
- package/dist/redis/redisIndex.d.ts.map +1 -0
- package/dist/redis/redisIndex.js +16 -15
- package/dist/redis/redisIndex.js.map +1 -0
- package/dist/redis/redisRuleIndex.d.ts +13 -0
- package/dist/redis/redisRuleIndex.d.ts.map +1 -0
- package/dist/redis/redisRuleIndex.js +50 -0
- package/dist/redis/redisRuleIndex.js.map +1 -0
- package/dist/redis/redisRulesIndex.d.ts +9 -0
- package/dist/redis/redisRulesIndex.d.ts.map +1 -0
- package/dist/redis/redisRulesIndex.js +138 -0
- package/dist/redis/redisRulesIndex.js.map +1 -0
- package/dist/redis/redisRulesReader.d.ts +6 -0
- package/dist/redis/redisRulesReader.d.ts.map +1 -0
- package/dist/redis/redisRulesReader.js +125 -0
- package/dist/redis/redisRulesReader.js.map +1 -0
- package/dist/redis/redisRulesStorage.d.ts +5 -0
- package/dist/redis/redisRulesStorage.d.ts.map +1 -0
- package/dist/redis/redisRulesStorage.js +34 -0
- package/dist/redis/redisRulesStorage.js.map +1 -0
- package/dist/redis/redisRulesWriter.d.ts +22 -0
- package/dist/redis/redisRulesWriter.d.ts.map +1 -0
- package/dist/redis/redisRulesWriter.js +100 -0
- package/dist/redis/redisRulesWriter.js.map +1 -0
- package/dist/rule.d.ts +34 -0
- package/dist/rule.d.ts.map +1 -0
- package/dist/rule.js +8 -0
- package/dist/rule.js.map +1 -0
- package/dist/ruleInput/.export.d.ts +4 -0
- package/dist/ruleInput/.export.d.ts.map +1 -0
- package/dist/ruleInput/.export.js +9 -0
- package/dist/ruleInput/.export.js.map +1 -0
- package/dist/ruleInput/policyInput.d.ts +38 -0
- package/dist/ruleInput/policyInput.d.ts.map +1 -0
- package/dist/ruleInput/policyInput.js +25 -0
- package/dist/ruleInput/policyInput.js.map +1 -0
- package/dist/ruleInput/ruleInput.d.ts +145 -0
- package/dist/ruleInput/ruleInput.d.ts.map +1 -0
- package/dist/ruleInput/ruleInput.js +50 -0
- package/dist/ruleInput/ruleInput.js.map +1 -0
- package/dist/ruleInput/userScopeInput.d.ts +93 -0
- package/dist/ruleInput/userScopeInput.d.ts.map +1 -0
- package/dist/ruleInput/userScopeInput.js +55 -0
- package/dist/ruleInput/userScopeInput.js.map +1 -0
- package/dist/ruleRecord.d.ts +18 -0
- package/dist/ruleRecord.d.ts.map +1 -0
- package/dist/ruleRecord.js +23 -0
- package/dist/ruleRecord.js.map +1 -0
- package/dist/rulesStorage.d.ts +30 -0
- package/dist/rulesStorage.d.ts.map +1 -0
- package/dist/rulesStorage.js +8 -0
- package/dist/rulesStorage.js.map +1 -0
- package/dist/tests/accessPolicy.test.d.ts +2 -0
- package/dist/tests/accessPolicy.test.d.ts.map +1 -0
- package/dist/tests/accessPolicy.test.js +27 -0
- package/dist/tests/accessPolicy.test.js.map +1 -0
- package/dist/tests/redis/reader/redisRulesQuery.unit.test.d.ts +2 -0
- package/dist/tests/redis/reader/redisRulesQuery.unit.test.d.ts.map +1 -0
- package/dist/tests/redis/reader/redisRulesQuery.unit.test.js +101 -0
- package/dist/tests/redis/reader/redisRulesQuery.unit.test.js.map +1 -0
- package/dist/tests/redis/redisAccessRules.integration.test.d.ts +2 -0
- package/dist/tests/redis/redisAccessRules.integration.test.d.ts.map +1 -0
- package/dist/tests/redis/redisAccessRules.integration.test.js +586 -0
- package/dist/tests/redis/redisAccessRules.integration.test.js.map +1 -0
- package/dist/tests/redis/redisAccessRules.unit.test.d.ts +2 -0
- package/dist/tests/redis/redisAccessRules.unit.test.d.ts.map +1 -0
- package/dist/tests/redis/redisAccessRules.unit.test.js +198 -0
- package/dist/tests/redis/redisAccessRules.unit.test.js.map +1 -0
- package/dist/tests/redis/redisIndex.integration.test.d.ts +2 -0
- package/dist/tests/redis/redisIndex.integration.test.d.ts.map +1 -0
- package/dist/tests/redis/redisIndex.integration.test.js +80 -0
- package/dist/tests/redis/redisIndex.integration.test.js.map +1 -0
- package/dist/tests/redis/redisRulesIndex.unit.test.d.ts +2 -0
- package/dist/tests/redis/redisRulesIndex.unit.test.d.ts.map +1 -0
- package/dist/tests/redis/redisRulesIndex.unit.test.js +101 -0
- package/dist/tests/redis/redisRulesIndex.unit.test.js.map +1 -0
- package/dist/tests/redis/redisRulesStorage.integration.test.d.ts +2 -0
- package/dist/tests/redis/redisRulesStorage.integration.test.d.ts.map +1 -0
- package/dist/tests/redis/redisRulesStorage.integration.test.js +611 -0
- package/dist/tests/redis/redisRulesStorage.integration.test.js.map +1 -0
- package/dist/tests/redis/testRedisClient.d.ts +3 -0
- package/dist/tests/redis/testRedisClient.d.ts.map +1 -0
- package/dist/tests/redis/testRedisClient.js +8 -0
- package/dist/tests/redis/testRedisClient.js.map +1 -0
- package/dist/tests/testLogger.d.ts +4 -0
- package/dist/tests/testLogger.d.ts.map +1 -0
- package/dist/tests/testLogger.js +22 -0
- package/dist/tests/testLogger.js.map +1 -0
- package/dist/tests/transformRule.unit.test.d.ts +2 -0
- package/dist/tests/transformRule.unit.test.d.ts.map +1 -0
- package/dist/tests/transformRule.unit.test.js +188 -0
- package/dist/tests/transformRule.unit.test.js.map +1 -0
- package/dist/transformRule.d.ts +7 -0
- package/dist/transformRule.d.ts.map +1 -0
- package/dist/transformRule.js +77 -0
- package/dist/transformRule.js.map +1 -0
- package/dist/util.d.ts +2 -0
- package/dist/util.d.ts.map +1 -0
- package/dist/util.js.map +1 -0
- package/entries.ts +20 -0
- package/package.json +42 -21
- package/vite.cjs.config.ts +4 -1
- package/vite.esm.config.ts +6 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const apiRoute = require("@prosopo/api-route");
|
|
4
|
+
const common = require("@prosopo/common");
|
|
5
|
+
const zod = require("zod");
|
|
6
|
+
const ruleInput = require("../../ruleInput/ruleInput.cjs");
|
|
7
|
+
class DeleteRulesEndpoint {
|
|
8
|
+
constructor(accessRulesStorage, logger) {
|
|
9
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
getRequestArgsSchema() {
|
|
13
|
+
return zod.z.array(ruleInput.accessRulesFilterInput);
|
|
14
|
+
}
|
|
15
|
+
async processRequest(args) {
|
|
16
|
+
let deletedCount = 0;
|
|
17
|
+
for (const rulesFilterInput of args) {
|
|
18
|
+
const ruleFilters = ruleInput.getAccessRuleFiltersFromInput(rulesFilterInput);
|
|
19
|
+
await common.executeBatchesSequentially(ruleFilters, async (ruleFilter) => {
|
|
20
|
+
const ruleIds = await this.accessRulesStorage.findRuleIds(ruleFilter);
|
|
21
|
+
const uniqueRuleIds = [...new Set(ruleIds)];
|
|
22
|
+
if (uniqueRuleIds.length > 0) {
|
|
23
|
+
await this.accessRulesStorage.deleteRules(uniqueRuleIds);
|
|
24
|
+
deletedCount += uniqueRuleIds.length;
|
|
25
|
+
this.logger.info(() => ({
|
|
26
|
+
msg: "Endpoint deleted rules",
|
|
27
|
+
data: {
|
|
28
|
+
rulesFilterInput,
|
|
29
|
+
uniqueRuleIds
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
|
|
37
|
+
data: {
|
|
38
|
+
deleted_count: deletedCount
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.DeleteRulesEndpoint = DeleteRulesEndpoint;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const apiRoute = require("@prosopo/api-route");
|
|
4
|
+
const zod = require("zod");
|
|
5
|
+
const ruleInput = require("../../ruleInput/ruleInput.cjs");
|
|
6
|
+
const fetchRulesResponse = zod.z.object({
|
|
7
|
+
ruleEntries: ruleInput.ruleEntryInput.array()
|
|
8
|
+
});
|
|
9
|
+
class FetchRulesEndpoint {
|
|
10
|
+
constructor(accessRulesStorage, logger) {
|
|
11
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
12
|
+
this.logger = logger;
|
|
13
|
+
}
|
|
14
|
+
getRequestArgsSchema() {
|
|
15
|
+
return zod.z.object({
|
|
16
|
+
ids: zod.z.string().array()
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async processRequest(args) {
|
|
20
|
+
const ruleEntries = await this.accessRulesStorage.fetchRules(args.ids);
|
|
21
|
+
this.logger.info(() => ({
|
|
22
|
+
msg: "Endpoint fetched rules",
|
|
23
|
+
data: {
|
|
24
|
+
requestedCount: args.ids.length,
|
|
25
|
+
foundCount: ruleEntries.length
|
|
26
|
+
}
|
|
27
|
+
}));
|
|
28
|
+
this.logger.debug(() => ({
|
|
29
|
+
msg: "Fetched rule details",
|
|
30
|
+
data: {
|
|
31
|
+
ruleEntries
|
|
32
|
+
}
|
|
33
|
+
}));
|
|
34
|
+
return {
|
|
35
|
+
status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
|
|
36
|
+
data: {
|
|
37
|
+
ruleEntries
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
exports.FetchRulesEndpoint = FetchRulesEndpoint;
|
|
43
|
+
exports.fetchRulesResponse = fetchRulesResponse;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const apiRoute = require("@prosopo/api-route");
|
|
4
|
+
const common = require("@prosopo/common");
|
|
5
|
+
const zod = require("zod");
|
|
6
|
+
const ruleInput = require("../../ruleInput/ruleInput.cjs");
|
|
7
|
+
const ruleIdsResponse = zod.z.object({
|
|
8
|
+
ruleIds: zod.z.string().array()
|
|
9
|
+
});
|
|
10
|
+
class FindRuleIdsEndpoint {
|
|
11
|
+
constructor(accessRulesStorage, logger) {
|
|
12
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
13
|
+
this.logger = logger;
|
|
14
|
+
}
|
|
15
|
+
getRequestArgsSchema() {
|
|
16
|
+
return zod.z.array(ruleInput.accessRulesFilterInput);
|
|
17
|
+
}
|
|
18
|
+
async processRequest(args) {
|
|
19
|
+
const ruleIdBatches = await common.executeBatchesSequentially(
|
|
20
|
+
args,
|
|
21
|
+
async (rulesFilterInput) => {
|
|
22
|
+
const ruleFilters = ruleInput.getAccessRuleFiltersFromInput(rulesFilterInput);
|
|
23
|
+
const ruleIds2 = await common.executeBatchesSequentially(
|
|
24
|
+
ruleFilters,
|
|
25
|
+
(ruleFilter) => this.accessRulesStorage.findRuleIds(ruleFilter)
|
|
26
|
+
);
|
|
27
|
+
return ruleIds2.flat();
|
|
28
|
+
}
|
|
29
|
+
);
|
|
30
|
+
const ruleIds = ruleIdBatches.flat();
|
|
31
|
+
const uniqueRuleIds = [...new Set(ruleIds)];
|
|
32
|
+
this.logger.info(() => ({
|
|
33
|
+
msg: "Endpoint found rules",
|
|
34
|
+
data: {
|
|
35
|
+
totalFoundCount: ruleIds.length,
|
|
36
|
+
uniqueFoundCount: uniqueRuleIds.length,
|
|
37
|
+
searchFilters: args,
|
|
38
|
+
foundIds: uniqueRuleIds
|
|
39
|
+
}
|
|
40
|
+
}));
|
|
41
|
+
return {
|
|
42
|
+
status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
|
|
43
|
+
data: {
|
|
44
|
+
ruleIds: uniqueRuleIds
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.FindRuleIdsEndpoint = FindRuleIdsEndpoint;
|
|
50
|
+
exports.ruleIdsResponse = ruleIdsResponse;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const apiRoute = require("@prosopo/api-route");
|
|
4
|
+
const zod = require("zod");
|
|
5
|
+
const missingIdsResponse = zod.z.object({
|
|
6
|
+
ids: zod.z.string().array()
|
|
7
|
+
});
|
|
8
|
+
class GetMissingIdsEndpoint {
|
|
9
|
+
constructor(accessRulesStorage, logger) {
|
|
10
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
}
|
|
13
|
+
getRequestArgsSchema() {
|
|
14
|
+
return zod.z.string().array();
|
|
15
|
+
}
|
|
16
|
+
async processRequest(args) {
|
|
17
|
+
const missingIds = await this.accessRulesStorage.getMissingRuleIds(args);
|
|
18
|
+
this.logger.info(() => ({
|
|
19
|
+
msg: "Endpoint checked missing ids",
|
|
20
|
+
data: {
|
|
21
|
+
idsToCheck: args.length,
|
|
22
|
+
missingIds: missingIds.length
|
|
23
|
+
}
|
|
24
|
+
}));
|
|
25
|
+
this.logger.debug(() => ({
|
|
26
|
+
msg: "Missing id details",
|
|
27
|
+
data: {
|
|
28
|
+
idsToCheck: args,
|
|
29
|
+
missingIds
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
return {
|
|
33
|
+
status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
|
|
34
|
+
data: {
|
|
35
|
+
ids: missingIds
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.GetMissingIdsEndpoint = GetMissingIdsEndpoint;
|
|
41
|
+
exports.missingIdsResponse = missingIdsResponse;
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const fetchRules = require("./read/fetchRules.cjs");
|
|
4
|
+
const findRuleIds = require("./read/findRuleIds.cjs");
|
|
5
|
+
const getMissingIds = require("./read/getMissingIds.cjs");
|
|
6
|
+
const rehashRules = require("./write/rehashRules.cjs");
|
|
7
|
+
const deleteAllRules = require("./delete/deleteAllRules.cjs");
|
|
8
|
+
const deleteRuleGroups = require("./delete/deleteRuleGroups.cjs");
|
|
9
|
+
const deleteRules = require("./delete/deleteRules.cjs");
|
|
10
|
+
const insertRules = require("./write/insertRules.cjs");
|
|
11
|
+
var accessRuleApiPaths = /* @__PURE__ */ ((accessRuleApiPaths2) => {
|
|
12
|
+
accessRuleApiPaths2["DELETE_ALL"] = "/v1/prosopo/user-access-policy/rules/delete-all";
|
|
13
|
+
accessRuleApiPaths2["DELETE_GROUPS"] = "/v1/prosopo/user-access-policy/rules/delete-groups";
|
|
14
|
+
accessRuleApiPaths2["DELETE_MANY"] = "/v1/prosopo/user-access-policy/rules/delete-many";
|
|
15
|
+
accessRuleApiPaths2["FETCH_MANY"] = "/v1/prosopo/user-access-policy/rules/fetch-many";
|
|
16
|
+
accessRuleApiPaths2["FIND_IDS"] = "/v1/prosopo/user-access-policy/rules/find-ids";
|
|
17
|
+
accessRuleApiPaths2["GET_MISSING_IDS"] = "/v1/prosopo/user-access-policy/rules/get-missing-ids";
|
|
18
|
+
accessRuleApiPaths2["INSERT_MANY"] = "/v1/prosopo/user-access-policy/rules/insert-many";
|
|
19
|
+
accessRuleApiPaths2["REHASH_ALL"] = "/v1/prosopo/user-access-policy/rules/rehash-all";
|
|
20
|
+
return accessRuleApiPaths2;
|
|
21
|
+
})(accessRuleApiPaths || {});
|
|
22
|
+
class AccessRuleApiRoutes {
|
|
23
|
+
constructor(accessRulesStorage, logger) {
|
|
24
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
25
|
+
this.logger = logger;
|
|
26
|
+
}
|
|
27
|
+
getRoutes() {
|
|
28
|
+
return {
|
|
29
|
+
...this.makeDeleteEndpoints(),
|
|
30
|
+
...this.makeReadEndpoints(),
|
|
31
|
+
...this.makeWriteEndpoints()
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
makeDeleteEndpoints() {
|
|
35
|
+
return {
|
|
36
|
+
[
|
|
37
|
+
"/v1/prosopo/user-access-policy/rules/delete-all"
|
|
38
|
+
/* DELETE_ALL */
|
|
39
|
+
]: new deleteAllRules.DeleteAllRulesEndpoint(
|
|
40
|
+
this.accessRulesStorage,
|
|
41
|
+
this.logger
|
|
42
|
+
),
|
|
43
|
+
[
|
|
44
|
+
"/v1/prosopo/user-access-policy/rules/delete-groups"
|
|
45
|
+
/* DELETE_GROUPS */
|
|
46
|
+
]: new deleteRuleGroups.DeleteRuleGroupsEndpoint(
|
|
47
|
+
this.accessRulesStorage,
|
|
48
|
+
this.logger
|
|
49
|
+
),
|
|
50
|
+
[
|
|
51
|
+
"/v1/prosopo/user-access-policy/rules/delete-many"
|
|
52
|
+
/* DELETE_MANY */
|
|
53
|
+
]: new deleteRules.DeleteRulesEndpoint(
|
|
54
|
+
this.accessRulesStorage,
|
|
55
|
+
this.logger
|
|
56
|
+
)
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
makeReadEndpoints() {
|
|
60
|
+
return {
|
|
61
|
+
[
|
|
62
|
+
"/v1/prosopo/user-access-policy/rules/fetch-many"
|
|
63
|
+
/* FETCH_MANY */
|
|
64
|
+
]: new fetchRules.FetchRulesEndpoint(
|
|
65
|
+
this.accessRulesStorage,
|
|
66
|
+
this.logger
|
|
67
|
+
),
|
|
68
|
+
[
|
|
69
|
+
"/v1/prosopo/user-access-policy/rules/find-ids"
|
|
70
|
+
/* FIND_IDS */
|
|
71
|
+
]: new findRuleIds.FindRuleIdsEndpoint(
|
|
72
|
+
this.accessRulesStorage,
|
|
73
|
+
this.logger
|
|
74
|
+
),
|
|
75
|
+
[
|
|
76
|
+
"/v1/prosopo/user-access-policy/rules/get-missing-ids"
|
|
77
|
+
/* GET_MISSING_IDS */
|
|
78
|
+
]: new getMissingIds.GetMissingIdsEndpoint(
|
|
79
|
+
this.accessRulesStorage,
|
|
80
|
+
this.logger
|
|
81
|
+
)
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
makeWriteEndpoints() {
|
|
85
|
+
return {
|
|
86
|
+
[
|
|
87
|
+
"/v1/prosopo/user-access-policy/rules/insert-many"
|
|
88
|
+
/* INSERT_MANY */
|
|
89
|
+
]: new insertRules.InsertRulesEndpoint(
|
|
90
|
+
this.accessRulesStorage,
|
|
91
|
+
this.logger
|
|
92
|
+
),
|
|
93
|
+
[
|
|
94
|
+
"/v1/prosopo/user-access-policy/rules/rehash-all"
|
|
95
|
+
/* REHASH_ALL */
|
|
96
|
+
]: new rehashRules.RehashRulesEndpoint(
|
|
97
|
+
this.accessRulesStorage,
|
|
98
|
+
this.logger
|
|
99
|
+
)
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
const getExpressApiRuleRateLimits = () => {
|
|
104
|
+
const defaults = {
|
|
105
|
+
limit: 5,
|
|
106
|
+
windowSeconds: 10
|
|
107
|
+
};
|
|
108
|
+
const defaultWindowMs = defaults.windowSeconds * 1e3;
|
|
109
|
+
const rateLimitEntries = Object.entries(accessRuleApiPaths).map(
|
|
110
|
+
([endpointName, endpointPath]) => [
|
|
111
|
+
endpointPath,
|
|
112
|
+
{
|
|
113
|
+
windowMs: getIntEnvironmentVariable(
|
|
114
|
+
`PROSOPO_USER_ACCESS_POLICY_RULE_${endpointName}_WINDOW`
|
|
115
|
+
) || defaultWindowMs,
|
|
116
|
+
limit: getIntEnvironmentVariable(
|
|
117
|
+
`PROSOPO_USER_ACCESS_POLICY_RULE_${endpointName}_LIMIT`
|
|
118
|
+
) || defaults.limit
|
|
119
|
+
}
|
|
120
|
+
]
|
|
121
|
+
);
|
|
122
|
+
return Object.fromEntries(rateLimitEntries);
|
|
123
|
+
};
|
|
124
|
+
const getIntEnvironmentVariable = (variableName) => {
|
|
125
|
+
const variableValue = process.env[variableName];
|
|
126
|
+
const numericValue = variableValue ? Number.parseInt(variableValue) : Number.NaN;
|
|
127
|
+
return Number.isInteger(numericValue) ? numericValue : void 0;
|
|
128
|
+
};
|
|
129
|
+
exports.AccessRuleApiRoutes = AccessRuleApiRoutes;
|
|
130
|
+
exports.accessRuleApiPaths = accessRuleApiPaths;
|
|
131
|
+
exports.getExpressApiRuleRateLimits = getExpressApiRuleRateLimits;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const api = require("@prosopo/api");
|
|
4
|
+
const fetchRules = require("./read/fetchRules.cjs");
|
|
5
|
+
const findRuleIds = require("./read/findRuleIds.cjs");
|
|
6
|
+
const getMissingIds = require("./read/getMissingIds.cjs");
|
|
7
|
+
const ruleApiRoutes = require("./ruleApiRoutes.cjs");
|
|
8
|
+
class AccessRulesApiClient extends api.ApiClient {
|
|
9
|
+
//// delete
|
|
10
|
+
deleteMany(filters, timestamp, signature) {
|
|
11
|
+
return this.post(
|
|
12
|
+
ruleApiRoutes.accessRuleApiPaths.DELETE_MANY,
|
|
13
|
+
filters,
|
|
14
|
+
this.getAuthHeaders(timestamp, signature)
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
deleteGroups(siteGroups, timestamp, signature) {
|
|
18
|
+
return this.post(
|
|
19
|
+
ruleApiRoutes.accessRuleApiPaths.DELETE_GROUPS,
|
|
20
|
+
siteGroups,
|
|
21
|
+
this.getAuthHeaders(timestamp, signature)
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
deleteAll(timestamp, signature) {
|
|
25
|
+
return this.post(
|
|
26
|
+
ruleApiRoutes.accessRuleApiPaths.DELETE_ALL,
|
|
27
|
+
{},
|
|
28
|
+
this.getAuthHeaders(timestamp, signature)
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
//// read
|
|
32
|
+
async getMissingIds(idsToCheck, timestamp, signature) {
|
|
33
|
+
const endpointResponse = await this.post(
|
|
34
|
+
ruleApiRoutes.accessRuleApiPaths.GET_MISSING_IDS,
|
|
35
|
+
idsToCheck,
|
|
36
|
+
this.getAuthHeaders(timestamp, signature)
|
|
37
|
+
);
|
|
38
|
+
const parsedData = getMissingIds.missingIdsResponse.safeParse(endpointResponse.data);
|
|
39
|
+
return {
|
|
40
|
+
...endpointResponse,
|
|
41
|
+
data: parsedData.success ? parsedData.data : void 0
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
async fetchMany(fetchOptions, timestamp, signature) {
|
|
45
|
+
const endpointResponse = await this.post(
|
|
46
|
+
ruleApiRoutes.accessRuleApiPaths.FETCH_MANY,
|
|
47
|
+
fetchOptions,
|
|
48
|
+
this.getAuthHeaders(timestamp, signature)
|
|
49
|
+
);
|
|
50
|
+
const parsedData = fetchRules.fetchRulesResponse.safeParse(endpointResponse.data);
|
|
51
|
+
return {
|
|
52
|
+
...endpointResponse,
|
|
53
|
+
data: parsedData.success ? parsedData.data : void 0
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
async findIds(filters, timestamp, signature) {
|
|
57
|
+
const endpointResponse = await this.post(
|
|
58
|
+
ruleApiRoutes.accessRuleApiPaths.FIND_IDS,
|
|
59
|
+
filters,
|
|
60
|
+
this.getAuthHeaders(timestamp, signature)
|
|
61
|
+
);
|
|
62
|
+
const parsedData = findRuleIds.ruleIdsResponse.safeParse(endpointResponse.data);
|
|
63
|
+
return {
|
|
64
|
+
...endpointResponse,
|
|
65
|
+
data: parsedData.success ? parsedData.data : void 0
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
//// write
|
|
69
|
+
async rehashAll(timestamp, signature) {
|
|
70
|
+
return this.post(
|
|
71
|
+
ruleApiRoutes.accessRuleApiPaths.REHASH_ALL,
|
|
72
|
+
{},
|
|
73
|
+
this.getAuthHeaders(timestamp, signature)
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
insertMany(ruleGroups, timestamp, signature) {
|
|
77
|
+
return this.post(
|
|
78
|
+
ruleApiRoutes.accessRuleApiPaths.INSERT_MANY,
|
|
79
|
+
ruleGroups,
|
|
80
|
+
this.getAuthHeaders(timestamp, signature)
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
getAuthHeaders(timestamp, signature) {
|
|
84
|
+
return {
|
|
85
|
+
headers: {
|
|
86
|
+
"Prosopo-Site-Key": this.account,
|
|
87
|
+
timestamp,
|
|
88
|
+
signature
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.AccessRulesApiClient = AccessRulesApiClient;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const apiRoute = require("@prosopo/api-route");
|
|
4
|
+
const common = require("@prosopo/common");
|
|
5
|
+
const zod = require("zod");
|
|
6
|
+
const policyInput = require("../../ruleInput/policyInput.cjs");
|
|
7
|
+
const userScopeInput = require("../../ruleInput/userScopeInput.cjs");
|
|
8
|
+
class InsertRulesEndpoint {
|
|
9
|
+
constructor(accessRulesWriter, logger) {
|
|
10
|
+
this.accessRulesWriter = accessRulesWriter;
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
}
|
|
13
|
+
getRequestArgsSchema() {
|
|
14
|
+
return zod.z.array(
|
|
15
|
+
zod.z.object({
|
|
16
|
+
accessPolicy: policyInput.accessPolicyInput,
|
|
17
|
+
policyScopes: zod.z.array(policyInput.policyScopeInput).optional(),
|
|
18
|
+
groupId: zod.z.string().optional(),
|
|
19
|
+
userScopes: zod.z.array(userScopeInput.userScopeInput),
|
|
20
|
+
expiresUnixTimestamp: zod.z.number().optional()
|
|
21
|
+
})
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
async processRequest(args) {
|
|
25
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
26
|
+
setTimeout(() => {
|
|
27
|
+
resolve({
|
|
28
|
+
status: apiRoute.ApiEndpointResponseStatus.PROCESSING
|
|
29
|
+
});
|
|
30
|
+
}, 5e3);
|
|
31
|
+
});
|
|
32
|
+
const userScopesCount = args.reduce(
|
|
33
|
+
(userScopesCount2, group) => userScopesCount2 + group.userScopes.length,
|
|
34
|
+
0
|
|
35
|
+
);
|
|
36
|
+
const createRulesPromise = this.createRuleGroups(args).then((insertedIds) => {
|
|
37
|
+
this.logger.info(() => ({
|
|
38
|
+
msg: "Endpoint inserted access rules",
|
|
39
|
+
data: {
|
|
40
|
+
userScopesCount,
|
|
41
|
+
insertedCount: insertedIds.length,
|
|
42
|
+
uniqueIdsCount: new Set(insertedIds).size
|
|
43
|
+
}
|
|
44
|
+
}));
|
|
45
|
+
this.logger.debug(() => ({
|
|
46
|
+
msg: "Inserted access rules details",
|
|
47
|
+
data: {
|
|
48
|
+
insertedIds,
|
|
49
|
+
input: args
|
|
50
|
+
}
|
|
51
|
+
}));
|
|
52
|
+
return {
|
|
53
|
+
status: apiRoute.ApiEndpointResponseStatus.SUCCESS
|
|
54
|
+
};
|
|
55
|
+
}).catch((error) => {
|
|
56
|
+
if (common.LogLevel.enum.debug === this.logger.getLogLevel()) {
|
|
57
|
+
this.logger.error(() => ({
|
|
58
|
+
err: error,
|
|
59
|
+
data: { args },
|
|
60
|
+
msg: "Failed to insert access rules"
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
status: apiRoute.ApiEndpointResponseStatus.FAIL
|
|
65
|
+
};
|
|
66
|
+
});
|
|
67
|
+
return Promise.race([timeoutPromise, createRulesPromise]);
|
|
68
|
+
}
|
|
69
|
+
async createRuleGroups(groups) {
|
|
70
|
+
const ruleIdPromises = groups.map((group) => this.createRulesGroup(group));
|
|
71
|
+
const ruleIdSets = await Promise.all(ruleIdPromises);
|
|
72
|
+
return ruleIdSets.flat();
|
|
73
|
+
}
|
|
74
|
+
async createRulesGroup(group) {
|
|
75
|
+
const ruleEntries = [];
|
|
76
|
+
const policyScopes = group.policyScopes || [];
|
|
77
|
+
for (const userScope of group.userScopes) {
|
|
78
|
+
const ruleBase = {
|
|
79
|
+
...group.accessPolicy,
|
|
80
|
+
...userScope,
|
|
81
|
+
...group.groupId ? { groupId: group.groupId } : {}
|
|
82
|
+
};
|
|
83
|
+
if (policyScopes.length > 0) {
|
|
84
|
+
for (const policyScope of policyScopes) {
|
|
85
|
+
ruleEntries.push({
|
|
86
|
+
rule: {
|
|
87
|
+
...ruleBase,
|
|
88
|
+
...policyScope
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
} else {
|
|
93
|
+
ruleEntries.push({
|
|
94
|
+
rule: ruleBase,
|
|
95
|
+
expiresUnixTimestamp: group.expiresUnixTimestamp
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return this.accessRulesWriter.insertRules(ruleEntries);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.InsertRulesEndpoint = InsertRulesEndpoint;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const apiRoute = require("@prosopo/api-route");
|
|
4
|
+
class RehashRulesEndpoint {
|
|
5
|
+
constructor(accessRulesStorage, logger) {
|
|
6
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
7
|
+
this.logger = logger;
|
|
8
|
+
}
|
|
9
|
+
getRequestArgsSchema() {
|
|
10
|
+
}
|
|
11
|
+
async processRequest() {
|
|
12
|
+
await this.accessRulesStorage.fetchAllRuleIds(async (ruleIds) => {
|
|
13
|
+
this.logger.info(() => ({
|
|
14
|
+
msg: "Fetched rule ids batch",
|
|
15
|
+
data: {
|
|
16
|
+
count: ruleIds.length,
|
|
17
|
+
ruleIds
|
|
18
|
+
}
|
|
19
|
+
}));
|
|
20
|
+
const ruleEntries = await this.accessRulesStorage.fetchRules(ruleIds);
|
|
21
|
+
this.logger.info(() => ({
|
|
22
|
+
msg: "Fetched rules",
|
|
23
|
+
data: {
|
|
24
|
+
count: ruleEntries.length
|
|
25
|
+
}
|
|
26
|
+
}));
|
|
27
|
+
if (ruleEntries.length !== ruleIds.length) {
|
|
28
|
+
this.logger.warn(() => ({
|
|
29
|
+
msg: "Fetched rules count is not equal to the requested count",
|
|
30
|
+
data: {
|
|
31
|
+
fetchedCount: ruleEntries.length,
|
|
32
|
+
requestedCount: ruleIds.length
|
|
33
|
+
}
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
await this.accessRulesStorage.deleteRules(ruleIds);
|
|
37
|
+
this.logger.info(() => ({
|
|
38
|
+
msg: "Deleted rules",
|
|
39
|
+
data: {
|
|
40
|
+
count: ruleIds.length
|
|
41
|
+
}
|
|
42
|
+
}));
|
|
43
|
+
await this.accessRulesStorage.insertRules(ruleEntries);
|
|
44
|
+
this.logger.info(() => ({
|
|
45
|
+
msg: "Inserted rules",
|
|
46
|
+
data: {
|
|
47
|
+
count: ruleEntries.length
|
|
48
|
+
}
|
|
49
|
+
}));
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
|
|
53
|
+
data: {}
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.RehashRulesEndpoint = RehashRulesEndpoint;
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const accessPolicy = require("./accessPolicy.cjs");
|
|
4
4
|
const accessPolicyResolver = require("./accessPolicyResolver.cjs");
|
|
5
|
+
const accessRules = require("./accessRules.cjs");
|
|
5
6
|
const accessRuleApiRoutes = require("./api/accessRuleApiRoutes.cjs");
|
|
6
7
|
const deleteAllRulesEndpoint = require("./api/deleteAllRulesEndpoint.cjs");
|
|
7
8
|
const deleteRulesEndpoint = require("./api/deleteRulesEndpoint.cjs");
|
|
@@ -17,6 +18,7 @@ exports.accessRuleSchemaExtended = accessPolicy.accessRuleSchemaExtended;
|
|
|
17
18
|
exports.policyScopeSchema = accessPolicy.policyScopeSchema;
|
|
18
19
|
exports.userScopeInputSchema = accessPolicy.userScopeInputSchema;
|
|
19
20
|
exports.ScopeMatch = accessPolicyResolver.ScopeMatch;
|
|
21
|
+
exports.accessRuleSchema = accessRules.accessRuleSchema;
|
|
20
22
|
exports.accessRuleApiPaths = accessRuleApiRoutes.accessRuleApiPaths;
|
|
21
23
|
exports.getExpressApiRuleRateLimits = accessRuleApiRoutes.getExpressApiRuleRateLimits;
|
|
22
24
|
exports.deleteAllRulesEndpointSchema = deleteAllRulesEndpoint.deleteAllRulesEndpointSchema;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const userAttributesSchema = {
|
|
4
|
+
userId: { type: String, required: false },
|
|
5
|
+
ja4Hash: { type: String, required: false },
|
|
6
|
+
userAgent: { type: String, required: false },
|
|
7
|
+
headersHash: { type: String, required: false }
|
|
8
|
+
};
|
|
9
|
+
const userIpSchema = {
|
|
10
|
+
ip: { type: String, required: false },
|
|
11
|
+
ipMask: { type: String, required: false }
|
|
12
|
+
};
|
|
13
|
+
const userScopeSchema = {
|
|
14
|
+
...userAttributesSchema,
|
|
15
|
+
...userIpSchema
|
|
16
|
+
};
|
|
17
|
+
const policyScopeSchema = {
|
|
18
|
+
clientId: { type: String, required: false }
|
|
19
|
+
};
|
|
20
|
+
const accessPolicySchema = {
|
|
21
|
+
type: { type: String, required: true },
|
|
22
|
+
captchaType: { type: String, required: false },
|
|
23
|
+
description: { type: String, required: false },
|
|
24
|
+
solvedImagesCount: { type: Number, required: false },
|
|
25
|
+
imageThreshold: { type: Number, required: false },
|
|
26
|
+
powDifficulty: { type: Number, required: false },
|
|
27
|
+
unsolvedImagesCount: { type: Number, required: false },
|
|
28
|
+
frictionlessScore: { type: Number, required: false }
|
|
29
|
+
};
|
|
30
|
+
const accessRuleMongooseSchema = {
|
|
31
|
+
...accessPolicySchema,
|
|
32
|
+
...policyScopeSchema,
|
|
33
|
+
...userScopeSchema,
|
|
34
|
+
ruleGroupId: { type: String, required: false }
|
|
35
|
+
};
|
|
36
|
+
exports.accessRuleMongooseSchema = accessRuleMongooseSchema;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const redisRulesStorage = require("./redisRulesStorage.cjs");
|
|
4
|
+
const redisRuleIndex = require("./redisRuleIndex.cjs");
|
|
5
|
+
exports.createRedisAccessRulesStorage = redisRulesStorage.createRedisAccessRulesStorage;
|
|
6
|
+
exports.accessRulesRedisIndex = redisRuleIndex.accessRulesRedisIndex;
|