@prosopo/user-access-policy 3.12.8 → 3.12.10
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/.turbo/turbo-build$colon$cjs.log +45 -41
- package/.turbo/turbo-build$colon$tsc.log +14 -14
- package/.turbo/turbo-build.log +46 -42
- package/CHANGELOG.md +24 -0
- package/dist/.export.js +7 -21
- package/dist/_virtual/_rolldown/runtime.js +3 -0
- package/dist/api/.export.js +2 -9
- package/dist/api/accessRulesApiClient.js +1 -1
- package/dist/api/delete/.export.js +2 -1
- package/dist/api/delete/deleteAllRules.js +22 -24
- package/dist/api/delete/deleteRuleGroups.js +39 -51
- package/dist/api/delete/deleteRules.js +37 -41
- package/dist/api/read/.export.js +2 -1
- package/dist/api/read/fetchRules.js +34 -42
- package/dist/api/read/findRuleIds.js +35 -48
- package/dist/api/read/getMissingIds.js +36 -40
- package/dist/api/ruleApiRoutes.js +62 -120
- package/dist/api/rulesApiClient.js +51 -87
- package/dist/api/write/.export.js +2 -1
- package/dist/api/write/insertRules.js +84 -102
- package/dist/api/write/rehashRules.js +48 -56
- package/dist/cjs/.export.cjs +21 -23
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/cjs/api/.export.cjs +6 -10
- package/dist/cjs/api/accessRulesApiClient.cjs +0 -0
- package/dist/cjs/api/delete/.export.cjs +0 -1
- package/dist/cjs/api/delete/deleteAllRules.cjs +22 -24
- package/dist/cjs/api/delete/deleteRuleGroups.cjs +39 -51
- package/dist/cjs/api/delete/deleteRules.cjs +41 -42
- package/dist/cjs/api/read/.export.cjs +0 -1
- package/dist/cjs/api/read/fetchRules.cjs +34 -41
- package/dist/cjs/api/read/findRuleIds.cjs +37 -48
- package/dist/cjs/api/read/getMissingIds.cjs +36 -39
- package/dist/cjs/api/ruleApiRoutes.cjs +69 -125
- package/dist/cjs/api/rulesApiClient.cjs +54 -90
- package/dist/cjs/api/write/.export.cjs +0 -1
- package/dist/cjs/api/write/insertRules.cjs +85 -103
- package/dist/cjs/api/write/rehashRules.cjs +48 -56
- package/dist/cjs/classifyOs.cjs +46 -26
- package/dist/cjs/mongoose/.export.cjs +2 -3
- package/dist/cjs/mongoose/mongooseRuleSchema.cjs +97 -36
- package/dist/cjs/redis/.export.cjs +4 -5
- package/dist/cjs/redis/reader/redisAggregate.cjs +59 -84
- package/dist/cjs/redis/reader/redisRulesQuery.cjs +74 -116
- package/dist/cjs/redis/reader/redisRulesReader.cjs +322 -503
- package/dist/cjs/redis/reader/redisRulesSplitQuery.cjs +94 -72
- package/dist/cjs/redis/redisClient.cjs +53 -58
- package/dist/cjs/redis/redisRuleIndex.cjs +93 -49
- package/dist/cjs/redis/redisRulesStorage.cjs +21 -30
- package/dist/cjs/redis/redisRulesWriter.cjs +86 -112
- package/dist/cjs/rule.cjs +8 -7
- package/dist/cjs/ruleInput/.export.cjs +7 -8
- package/dist/cjs/ruleInput/policyInput.cjs +35 -58
- package/dist/cjs/ruleInput/ruleInput.cjs +37 -42
- package/dist/cjs/ruleInput/userScopeInput.cjs +47 -55
- package/dist/cjs/ruleRecord.cjs +15 -22
- package/dist/cjs/rulesStorage.cjs +7 -6
- package/dist/cjs/transformRule.cjs +36 -70
- package/dist/classifyOs.js +48 -29
- package/dist/mongoose/.export.js +2 -3
- package/dist/mongoose/mongooseRuleSchema.js +99 -38
- package/dist/redis/.export.js +3 -5
- package/dist/redis/reader/redisAggregate.js +60 -86
- package/dist/redis/reader/redisRulesQuery.js +75 -118
- package/dist/redis/reader/redisRulesReader.js +312 -487
- package/dist/redis/reader/redisRulesSplitQuery.js +96 -75
- package/dist/redis/redisClient.js +54 -62
- package/dist/redis/redisRuleIndex.js +93 -58
- package/dist/redis/redisRulesStorage.js +21 -30
- package/dist/redis/redisRulesWriter.js +82 -113
- package/dist/rule.js +10 -10
- package/dist/ruleInput/.export.js +3 -7
- package/dist/ruleInput/policyInput.js +35 -61
- package/dist/ruleInput/ruleInput.js +36 -44
- package/dist/ruleInput/userScopeInput.js +44 -55
- package/dist/ruleRecord.js +17 -27
- package/dist/rulesStorage.js +9 -8
- package/dist/tests/redis/redisRulesStorage.integration.test.js +1 -3
- package/dist/tests/redis/redisRulesStorage.integration.test.js.map +1 -1
- package/dist/transformRule.js +34 -73
- package/entries.ts +25 -6
- package/package.json +13 -12
- package/src/tests/redis/redisRulesStorage.integration.test.ts +191 -195
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,105 +1,87 @@
|
|
|
1
|
+
import "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
import { accessPolicyInput, policyScopeInput, sanitizeAccessPolicy } from "../../ruleInput/policyInput.js";
|
|
3
|
+
import { userScopeInput } from "../../ruleInput/userScopeInput.js";
|
|
4
|
+
import { z } from "zod";
|
|
1
5
|
import { ApiEndpointResponseStatus } from "@prosopo/api-route";
|
|
2
6
|
import { LogLevel } from "@prosopo/logger";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
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
|
-
expiresUnixTimestamp: group.expiresUnixTimestamp
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
} else {
|
|
94
|
-
ruleEntries.push({
|
|
95
|
-
rule: ruleBase,
|
|
96
|
-
expiresUnixTimestamp: group.expiresUnixTimestamp
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
return this.accessRulesWriter.insertRules(ruleEntries);
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
export {
|
|
104
|
-
InsertRulesEndpoint
|
|
7
|
+
//#region src/api/write/insertRules.ts
|
|
8
|
+
var InsertRulesEndpoint = class {
|
|
9
|
+
constructor(accessRulesWriter, logger) {
|
|
10
|
+
this.accessRulesWriter = accessRulesWriter;
|
|
11
|
+
this.logger = logger;
|
|
12
|
+
}
|
|
13
|
+
getRequestArgsSchema() {
|
|
14
|
+
return z.array(z.object({
|
|
15
|
+
accessPolicy: accessPolicyInput,
|
|
16
|
+
policyScopes: z.array(policyScopeInput).optional(),
|
|
17
|
+
groupId: z.string().optional(),
|
|
18
|
+
userScopes: z.array(userScopeInput),
|
|
19
|
+
expiresUnixTimestamp: z.number().optional()
|
|
20
|
+
}));
|
|
21
|
+
}
|
|
22
|
+
async processRequest(args, logger) {
|
|
23
|
+
const log = logger ?? this.logger;
|
|
24
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
25
|
+
setTimeout(() => {
|
|
26
|
+
resolve({ status: ApiEndpointResponseStatus.PROCESSING });
|
|
27
|
+
}, 5e3);
|
|
28
|
+
});
|
|
29
|
+
const userScopesCount = args.reduce((userScopesCount, group) => userScopesCount + group.userScopes.length, 0);
|
|
30
|
+
const createRulesPromise = this.createRuleGroups(args).then((insertedIds) => {
|
|
31
|
+
log.info(() => ({
|
|
32
|
+
msg: "Endpoint inserted access rules",
|
|
33
|
+
data: {
|
|
34
|
+
userScopesCount,
|
|
35
|
+
insertedCount: insertedIds.length,
|
|
36
|
+
uniqueIdsCount: new Set(insertedIds).size
|
|
37
|
+
}
|
|
38
|
+
}));
|
|
39
|
+
log.debug(() => ({
|
|
40
|
+
msg: "Inserted access rules details",
|
|
41
|
+
data: {
|
|
42
|
+
insertedIds,
|
|
43
|
+
input: args
|
|
44
|
+
}
|
|
45
|
+
}));
|
|
46
|
+
return { status: ApiEndpointResponseStatus.SUCCESS };
|
|
47
|
+
}).catch((error) => {
|
|
48
|
+
if (LogLevel.enum.debug === log.getLogLevel()) log.error(() => ({
|
|
49
|
+
err: error,
|
|
50
|
+
data: { args },
|
|
51
|
+
msg: "Failed to insert access rules"
|
|
52
|
+
}));
|
|
53
|
+
return { status: ApiEndpointResponseStatus.FAIL };
|
|
54
|
+
});
|
|
55
|
+
return Promise.race([timeoutPromise, createRulesPromise]);
|
|
56
|
+
}
|
|
57
|
+
async createRuleGroups(groups) {
|
|
58
|
+
const ruleIdPromises = groups.map((group) => this.createRulesGroup(group));
|
|
59
|
+
return (await Promise.all(ruleIdPromises)).flat();
|
|
60
|
+
}
|
|
61
|
+
async createRulesGroup(group) {
|
|
62
|
+
const ruleEntries = [];
|
|
63
|
+
const policyScopes = group.policyScopes || [];
|
|
64
|
+
const sanitizedPolicy = sanitizeAccessPolicy(group.accessPolicy);
|
|
65
|
+
for (const userScope of group.userScopes) {
|
|
66
|
+
const ruleBase = {
|
|
67
|
+
...sanitizedPolicy,
|
|
68
|
+
...userScope,
|
|
69
|
+
...group.groupId ? { groupId: group.groupId } : {}
|
|
70
|
+
};
|
|
71
|
+
if (policyScopes.length > 0) for (const policyScope of policyScopes) ruleEntries.push({
|
|
72
|
+
rule: {
|
|
73
|
+
...ruleBase,
|
|
74
|
+
...policyScope
|
|
75
|
+
},
|
|
76
|
+
expiresUnixTimestamp: group.expiresUnixTimestamp
|
|
77
|
+
});
|
|
78
|
+
else ruleEntries.push({
|
|
79
|
+
rule: ruleBase,
|
|
80
|
+
expiresUnixTimestamp: group.expiresUnixTimestamp
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
return this.accessRulesWriter.insertRules(ruleEntries);
|
|
84
|
+
}
|
|
105
85
|
};
|
|
86
|
+
//#endregion
|
|
87
|
+
export { InsertRulesEndpoint };
|
|
@@ -1,58 +1,50 @@
|
|
|
1
|
+
import "../../_virtual/_rolldown/runtime.js";
|
|
1
2
|
import { ApiEndpointResponseStatus } from "@prosopo/api-route";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
}));
|
|
49
|
-
});
|
|
50
|
-
return {
|
|
51
|
-
status: ApiEndpointResponseStatus.SUCCESS,
|
|
52
|
-
data: {}
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
export {
|
|
57
|
-
RehashRulesEndpoint
|
|
3
|
+
//#region src/api/write/rehashRules.ts
|
|
4
|
+
var RehashRulesEndpoint = class {
|
|
5
|
+
constructor(accessRulesStorage, logger) {
|
|
6
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
7
|
+
this.logger = logger;
|
|
8
|
+
}
|
|
9
|
+
getRequestArgsSchema() {}
|
|
10
|
+
async processRequest(logger) {
|
|
11
|
+
const log = logger ?? this.logger;
|
|
12
|
+
await this.accessRulesStorage.fetchAllRuleIds(async (ruleIds) => {
|
|
13
|
+
log.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
|
+
log.info(() => ({
|
|
22
|
+
msg: "Fetched rules",
|
|
23
|
+
data: { count: ruleEntries.length }
|
|
24
|
+
}));
|
|
25
|
+
if (ruleEntries.length !== ruleIds.length) log.warn(() => ({
|
|
26
|
+
msg: "Fetched rules count is not equal to the requested count",
|
|
27
|
+
data: {
|
|
28
|
+
fetchedCount: ruleEntries.length,
|
|
29
|
+
requestedCount: ruleIds.length
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
await this.accessRulesStorage.deleteRules(ruleIds);
|
|
33
|
+
log.info(() => ({
|
|
34
|
+
msg: "Deleted rules",
|
|
35
|
+
data: { count: ruleIds.length }
|
|
36
|
+
}));
|
|
37
|
+
await this.accessRulesStorage.insertRules(ruleEntries);
|
|
38
|
+
log.info(() => ({
|
|
39
|
+
msg: "Inserted rules",
|
|
40
|
+
data: { count: ruleEntries.length }
|
|
41
|
+
}));
|
|
42
|
+
});
|
|
43
|
+
return {
|
|
44
|
+
status: ApiEndpointResponseStatus.SUCCESS,
|
|
45
|
+
data: {}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
58
48
|
};
|
|
49
|
+
//#endregion
|
|
50
|
+
export { RehashRulesEndpoint };
|
package/dist/cjs/.export.cjs
CHANGED
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
require("./
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
exports.
|
|
13
|
-
exports.
|
|
14
|
-
exports.
|
|
15
|
-
exports.
|
|
16
|
-
exports.
|
|
17
|
-
exports.
|
|
18
|
-
exports.
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.
|
|
24
|
-
exports.userScopeInput = userScopeInput.userScopeInput;
|
|
2
|
+
const require_rulesStorage = require("./rulesStorage.cjs");
|
|
3
|
+
const require_rule = require("./rule.cjs");
|
|
4
|
+
const require_ruleInput_policyInput = require("./ruleInput/policyInput.cjs");
|
|
5
|
+
const require_ruleInput_userScopeInput = require("./ruleInput/userScopeInput.cjs");
|
|
6
|
+
const require_ruleInput_ruleInput = require("./ruleInput/ruleInput.cjs");
|
|
7
|
+
const require_transformRule = require("./transformRule.cjs");
|
|
8
|
+
const require_classifyOs = require("./classifyOs.cjs");
|
|
9
|
+
const require_ruleRecord = require("./ruleRecord.cjs");
|
|
10
|
+
exports.AccessPolicyType = require_rule.AccessPolicyType;
|
|
11
|
+
exports.FilterScopeMatch = require_rulesStorage.FilterScopeMatch;
|
|
12
|
+
exports.OS_NAMES = require_classifyOs.OS_NAMES;
|
|
13
|
+
exports.accessPolicyInput = require_ruleInput_policyInput.accessPolicyInput;
|
|
14
|
+
exports.accessRuleInput = require_ruleInput_ruleInput.accessRuleInput;
|
|
15
|
+
exports.classifyOs = require_classifyOs.classifyOs;
|
|
16
|
+
exports.getUserScopeRecordFromAccessRuleRecord = require_ruleRecord.getUserScopeRecordFromAccessRuleRecord;
|
|
17
|
+
exports.makeAccessRuleHash = require_transformRule.makeAccessRuleHash;
|
|
18
|
+
exports.policyScopeInput = require_ruleInput_policyInput.policyScopeInput;
|
|
19
|
+
exports.transformAccessRuleIntoRecord = require_transformRule.transformAccessRuleIntoRecord;
|
|
20
|
+
exports.transformAccessRuleRecordIntoRule = require_transformRule.transformAccessRuleRecordIntoRule;
|
|
21
|
+
exports.userScopeInput = require_ruleInput_userScopeInput.userScopeInput;
|
|
22
|
+
exports.userScopeRecordFields = require_ruleRecord.userScopeRecordFields;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.__toESM = __toESM;
|
package/dist/cjs/api/.export.cjs
CHANGED
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
require("./
|
|
4
|
-
require("./
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
exports.
|
|
9
|
-
exports.accessRuleApiPaths = ruleApiRoutes.accessRuleApiPaths;
|
|
10
|
-
exports.getExpressApiRuleRateLimits = ruleApiRoutes.getExpressApiRuleRateLimits;
|
|
11
|
-
exports.AccessRulesApiClient = rulesApiClient.AccessRulesApiClient;
|
|
2
|
+
const require_api_ruleApiRoutes = require("./ruleApiRoutes.cjs");
|
|
3
|
+
const require_api_rulesApiClient = require("./rulesApiClient.cjs");
|
|
4
|
+
exports.AccessRuleApiRoutes = require_api_ruleApiRoutes.AccessRuleApiRoutes;
|
|
5
|
+
exports.AccessRulesApiClient = require_api_rulesApiClient.AccessRulesApiClient;
|
|
6
|
+
exports.accessRuleApiPaths = require_api_ruleApiRoutes.accessRuleApiPaths;
|
|
7
|
+
exports.getExpressApiRuleRateLimits = require_api_ruleApiRoutes.getExpressApiRuleRateLimits;
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
@@ -1,26 +1,24 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
2
|
+
let _prosopo_api_route = require("@prosopo/api-route");
|
|
3
|
+
//#region src/api/delete/deleteAllRules.ts
|
|
4
|
+
var DeleteAllRulesEndpoint = class {
|
|
5
|
+
constructor(accessRulesStorage, logger) {
|
|
6
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
7
|
+
this.logger = logger;
|
|
8
|
+
}
|
|
9
|
+
getRequestArgsSchema() {}
|
|
10
|
+
async processRequest(logger) {
|
|
11
|
+
const log = logger ?? this.logger;
|
|
12
|
+
const deletedCount = await this.accessRulesStorage.deleteAllRules();
|
|
13
|
+
log.info(() => ({
|
|
14
|
+
msg: "Endpoint deleted all access rules",
|
|
15
|
+
data: { deletedCount }
|
|
16
|
+
}));
|
|
17
|
+
return {
|
|
18
|
+
status: _prosopo_api_route.ApiEndpointResponseStatus.SUCCESS,
|
|
19
|
+
data: { deleted_count: deletedCount }
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
//#endregion
|
|
26
24
|
exports.DeleteAllRulesEndpoint = DeleteAllRulesEndpoint;
|
|
@@ -1,53 +1,41 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
uniqueRuleIds
|
|
43
|
-
}
|
|
44
|
-
}));
|
|
45
|
-
return {
|
|
46
|
-
status: apiRoute.ApiEndpointResponseStatus.SUCCESS,
|
|
47
|
-
data: {
|
|
48
|
-
deleted_count: uniqueRuleIds.length
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
}
|
|
2
|
+
const require_rulesStorage = require("../../rulesStorage.cjs");
|
|
3
|
+
let zod = require("zod");
|
|
4
|
+
let _prosopo_api_route = require("@prosopo/api-route");
|
|
5
|
+
//#region src/api/delete/deleteRuleGroups.ts
|
|
6
|
+
var DeleteRuleGroupsEndpoint = class {
|
|
7
|
+
constructor(accessRulesStorage, logger) {
|
|
8
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
9
|
+
this.logger = logger;
|
|
10
|
+
}
|
|
11
|
+
getRequestArgsSchema() {
|
|
12
|
+
return zod.z.array(zod.z.object({
|
|
13
|
+
clientIds: zod.z.string().array(),
|
|
14
|
+
groupId: zod.z.string()
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
async processRequest(args, logger) {
|
|
18
|
+
const log = logger ?? this.logger;
|
|
19
|
+
const foundRuleIdPromises = args.flatMap((ruleToDelete) => ruleToDelete.clientIds.map((clientId) => this.accessRulesStorage.findRuleIds({
|
|
20
|
+
policyScope: { clientId },
|
|
21
|
+
policyScopeMatch: require_rulesStorage.FilterScopeMatch.Exact,
|
|
22
|
+
groupId: ruleToDelete.groupId
|
|
23
|
+
})));
|
|
24
|
+
const ruleIds = (await Promise.all(foundRuleIdPromises)).flat();
|
|
25
|
+
const uniqueRuleIds = [...new Set(ruleIds)];
|
|
26
|
+
if (uniqueRuleIds.length > 0) await this.accessRulesStorage.deleteRules(uniqueRuleIds);
|
|
27
|
+
log.info(() => ({
|
|
28
|
+
msg: "Endpoint deleted rule groups",
|
|
29
|
+
data: {
|
|
30
|
+
args,
|
|
31
|
+
uniqueRuleIds
|
|
32
|
+
}
|
|
33
|
+
}));
|
|
34
|
+
return {
|
|
35
|
+
status: _prosopo_api_route.ApiEndpointResponseStatus.SUCCESS,
|
|
36
|
+
data: { deleted_count: uniqueRuleIds.length }
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
//#endregion
|
|
53
41
|
exports.DeleteRuleGroupsEndpoint = DeleteRuleGroupsEndpoint;
|
|
@@ -1,44 +1,43 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
2
|
+
const require_ruleInput_ruleInput = require("../../ruleInput/ruleInput.cjs");
|
|
3
|
+
let zod = require("zod");
|
|
4
|
+
let _prosopo_api_route = require("@prosopo/api-route");
|
|
5
|
+
let _prosopo_common = require("@prosopo/common");
|
|
6
|
+
//#region src/api/delete/deleteRules.ts
|
|
7
|
+
var DeleteRulesEndpoint = class {
|
|
8
|
+
constructor(accessRulesStorage, logger) {
|
|
9
|
+
this.accessRulesStorage = accessRulesStorage;
|
|
10
|
+
this.logger = logger;
|
|
11
|
+
}
|
|
12
|
+
getRequestArgsSchema() {
|
|
13
|
+
return zod.z.array(require_ruleInput_ruleInput.accessRulesFilterInput);
|
|
14
|
+
}
|
|
15
|
+
async processRequest(args, logger) {
|
|
16
|
+
const log = logger ?? this.logger;
|
|
17
|
+
let deletedCount = 0;
|
|
18
|
+
for (const rulesFilterInput of args) {
|
|
19
|
+
const ruleFilters = require_ruleInput_ruleInput.getAccessRuleFiltersFromInput(rulesFilterInput);
|
|
20
|
+
await (0, _prosopo_common.executeBatchesSequentially)(ruleFilters, async (ruleFilter) => {
|
|
21
|
+
const ruleIds = await this.accessRulesStorage.findRuleIds(ruleFilter);
|
|
22
|
+
const uniqueRuleIds = [...new Set(ruleIds)];
|
|
23
|
+
if (uniqueRuleIds.length > 0) {
|
|
24
|
+
await this.accessRulesStorage.deleteRules(uniqueRuleIds);
|
|
25
|
+
deletedCount += uniqueRuleIds.length;
|
|
26
|
+
log.info(() => ({
|
|
27
|
+
msg: "Endpoint deleted rules",
|
|
28
|
+
data: {
|
|
29
|
+
rulesFilterInput,
|
|
30
|
+
uniqueRuleIds
|
|
31
|
+
}
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
status: _prosopo_api_route.ApiEndpointResponseStatus.SUCCESS,
|
|
38
|
+
data: { deleted_count: deletedCount }
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
//#endregion
|
|
44
43
|
exports.DeleteRulesEndpoint = DeleteRulesEndpoint;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|