@alanszp/access-list 12.0.1 → 12.0.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/package.json +4 -7
- package/.gitignore +0 -3
- package/.npmignore +0 -3
- package/node_modules/@types/node/LICENSE +0 -21
- package/node_modules/@types/node/README.md +0 -15
- package/node_modules/@types/node/assert/strict.d.ts +0 -8
- package/node_modules/@types/node/assert.d.ts +0 -996
- package/node_modules/@types/node/async_hooks.d.ts +0 -539
- package/node_modules/@types/node/buffer.d.ts +0 -2362
- package/node_modules/@types/node/child_process.d.ts +0 -1540
- package/node_modules/@types/node/cluster.d.ts +0 -432
- package/node_modules/@types/node/console.d.ts +0 -415
- package/node_modules/@types/node/constants.d.ts +0 -19
- package/node_modules/@types/node/crypto.d.ts +0 -4487
- package/node_modules/@types/node/dgram.d.ts +0 -596
- package/node_modules/@types/node/diagnostics_channel.d.ts +0 -545
- package/node_modules/@types/node/dns/promises.d.ts +0 -425
- package/node_modules/@types/node/dns.d.ts +0 -809
- package/node_modules/@types/node/dom-events.d.ts +0 -122
- package/node_modules/@types/node/domain.d.ts +0 -170
- package/node_modules/@types/node/events.d.ts +0 -879
- package/node_modules/@types/node/fs/promises.d.ts +0 -1239
- package/node_modules/@types/node/fs.d.ts +0 -4311
- package/node_modules/@types/node/globals.d.ts +0 -411
- package/node_modules/@types/node/globals.global.d.ts +0 -1
- package/node_modules/@types/node/http.d.ts +0 -1887
- package/node_modules/@types/node/http2.d.ts +0 -2382
- package/node_modules/@types/node/https.d.ts +0 -550
- package/node_modules/@types/node/index.d.ts +0 -88
- package/node_modules/@types/node/inspector.d.ts +0 -2747
- package/node_modules/@types/node/module.d.ts +0 -315
- package/node_modules/@types/node/net.d.ts +0 -949
- package/node_modules/@types/node/os.d.ts +0 -478
- package/node_modules/@types/node/package.json +0 -229
- package/node_modules/@types/node/path.d.ts +0 -191
- package/node_modules/@types/node/perf_hooks.d.ts +0 -645
- package/node_modules/@types/node/process.d.ts +0 -1561
- package/node_modules/@types/node/punycode.d.ts +0 -117
- package/node_modules/@types/node/querystring.d.ts +0 -141
- package/node_modules/@types/node/readline/promises.d.ts +0 -150
- package/node_modules/@types/node/readline.d.ts +0 -539
- package/node_modules/@types/node/repl.d.ts +0 -430
- package/node_modules/@types/node/stream/consumers.d.ts +0 -12
- package/node_modules/@types/node/stream/promises.d.ts +0 -83
- package/node_modules/@types/node/stream/web.d.ts +0 -366
- package/node_modules/@types/node/stream.d.ts +0 -1701
- package/node_modules/@types/node/string_decoder.d.ts +0 -67
- package/node_modules/@types/node/test.d.ts +0 -1465
- package/node_modules/@types/node/timers/promises.d.ts +0 -93
- package/node_modules/@types/node/timers.d.ts +0 -240
- package/node_modules/@types/node/tls.d.ts +0 -1210
- package/node_modules/@types/node/trace_events.d.ts +0 -182
- package/node_modules/@types/node/ts4.8/assert/strict.d.ts +0 -8
- package/node_modules/@types/node/ts4.8/assert.d.ts +0 -996
- package/node_modules/@types/node/ts4.8/async_hooks.d.ts +0 -539
- package/node_modules/@types/node/ts4.8/buffer.d.ts +0 -2362
- package/node_modules/@types/node/ts4.8/child_process.d.ts +0 -1540
- package/node_modules/@types/node/ts4.8/cluster.d.ts +0 -432
- package/node_modules/@types/node/ts4.8/console.d.ts +0 -415
- package/node_modules/@types/node/ts4.8/constants.d.ts +0 -19
- package/node_modules/@types/node/ts4.8/crypto.d.ts +0 -4487
- package/node_modules/@types/node/ts4.8/dgram.d.ts +0 -596
- package/node_modules/@types/node/ts4.8/diagnostics_channel.d.ts +0 -545
- package/node_modules/@types/node/ts4.8/dns/promises.d.ts +0 -425
- package/node_modules/@types/node/ts4.8/dns.d.ts +0 -809
- package/node_modules/@types/node/ts4.8/dom-events.d.ts +0 -122
- package/node_modules/@types/node/ts4.8/domain.d.ts +0 -170
- package/node_modules/@types/node/ts4.8/events.d.ts +0 -879
- package/node_modules/@types/node/ts4.8/fs/promises.d.ts +0 -1239
- package/node_modules/@types/node/ts4.8/fs.d.ts +0 -4311
- package/node_modules/@types/node/ts4.8/globals.d.ts +0 -411
- package/node_modules/@types/node/ts4.8/globals.global.d.ts +0 -1
- package/node_modules/@types/node/ts4.8/http.d.ts +0 -1887
- package/node_modules/@types/node/ts4.8/http2.d.ts +0 -2382
- package/node_modules/@types/node/ts4.8/https.d.ts +0 -550
- package/node_modules/@types/node/ts4.8/index.d.ts +0 -88
- package/node_modules/@types/node/ts4.8/inspector.d.ts +0 -2747
- package/node_modules/@types/node/ts4.8/module.d.ts +0 -315
- package/node_modules/@types/node/ts4.8/net.d.ts +0 -949
- package/node_modules/@types/node/ts4.8/os.d.ts +0 -478
- package/node_modules/@types/node/ts4.8/path.d.ts +0 -191
- package/node_modules/@types/node/ts4.8/perf_hooks.d.ts +0 -645
- package/node_modules/@types/node/ts4.8/process.d.ts +0 -1561
- package/node_modules/@types/node/ts4.8/punycode.d.ts +0 -117
- package/node_modules/@types/node/ts4.8/querystring.d.ts +0 -141
- package/node_modules/@types/node/ts4.8/readline/promises.d.ts +0 -150
- package/node_modules/@types/node/ts4.8/readline.d.ts +0 -539
- package/node_modules/@types/node/ts4.8/repl.d.ts +0 -430
- package/node_modules/@types/node/ts4.8/stream/consumers.d.ts +0 -12
- package/node_modules/@types/node/ts4.8/stream/promises.d.ts +0 -83
- package/node_modules/@types/node/ts4.8/stream/web.d.ts +0 -366
- package/node_modules/@types/node/ts4.8/stream.d.ts +0 -1701
- package/node_modules/@types/node/ts4.8/string_decoder.d.ts +0 -67
- package/node_modules/@types/node/ts4.8/test.d.ts +0 -1465
- package/node_modules/@types/node/ts4.8/timers/promises.d.ts +0 -93
- package/node_modules/@types/node/ts4.8/timers.d.ts +0 -240
- package/node_modules/@types/node/ts4.8/tls.d.ts +0 -1210
- package/node_modules/@types/node/ts4.8/trace_events.d.ts +0 -182
- package/node_modules/@types/node/ts4.8/tty.d.ts +0 -208
- package/node_modules/@types/node/ts4.8/url.d.ts +0 -927
- package/node_modules/@types/node/ts4.8/util.d.ts +0 -2183
- package/node_modules/@types/node/ts4.8/v8.d.ts +0 -764
- package/node_modules/@types/node/ts4.8/vm.d.ts +0 -903
- package/node_modules/@types/node/ts4.8/wasi.d.ts +0 -179
- package/node_modules/@types/node/ts4.8/worker_threads.d.ts +0 -691
- package/node_modules/@types/node/ts4.8/zlib.d.ts +0 -517
- package/node_modules/@types/node/tty.d.ts +0 -208
- package/node_modules/@types/node/url.d.ts +0 -927
- package/node_modules/@types/node/util.d.ts +0 -2183
- package/node_modules/@types/node/v8.d.ts +0 -764
- package/node_modules/@types/node/vm.d.ts +0 -903
- package/node_modules/@types/node/wasi.d.ts +0 -179
- package/node_modules/@types/node/worker_threads.d.ts +0 -691
- package/node_modules/@types/node/zlib.d.ts +0 -517
- package/src/clients/AccessListClient.ts +0 -104
- package/src/errors/NoPermissionError.ts +0 -23
- package/src/index.ts +0 -4
- package/src/inputs/AccessListInput.ts +0 -18
- package/src/repositories/accessListRepository.ts +0 -94
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
import { getManager, SelectQueryBuilder } from "typeorm";
|
|
2
|
-
import { AccessListClient } from "..";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Check access to list of employees
|
|
6
|
-
* @param segmentReference the segment which wants to know if it has access to the employee
|
|
7
|
-
* @param employeeReference list of employees
|
|
8
|
-
* @param addFormerEmployees consider left employees
|
|
9
|
-
* @returns true if segment reference can access to any of the employees on the list
|
|
10
|
-
*/
|
|
11
|
-
export async function hasAccessToSomeEmployees(
|
|
12
|
-
segmentReference: string,
|
|
13
|
-
employeeReference: string[],
|
|
14
|
-
addFormerEmployees: boolean,
|
|
15
|
-
): Promise<boolean> {
|
|
16
|
-
const query = `SELECT bool_or(true) as granted
|
|
17
|
-
FROM segments_employee_relation_with_attrition ser
|
|
18
|
-
WHERE ser.segment_id = $2 AND ser.employee_id::text = ANY($1)
|
|
19
|
-
${addFormerEmployees ? "" : " AND left_organization_at IS NULL"};`;
|
|
20
|
-
|
|
21
|
-
const response = (await getManager().query(query, [
|
|
22
|
-
employeeReference,
|
|
23
|
-
segmentReference,
|
|
24
|
-
])) as { granted?: boolean }[];
|
|
25
|
-
|
|
26
|
-
return response[0]?.granted ?? false;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Adds accessList filters to a given queryBuilder. Should be called at the end, or at least
|
|
31
|
-
* after the first where is set to the queryBuilder.
|
|
32
|
-
* @param queryBuilder The query to be filtered with accessList
|
|
33
|
-
* @param segmentId The segment from which the accessList is calculated.
|
|
34
|
-
* @param fullEmployeeReferenceFieldName The alias and name of the field that has the employee reference
|
|
35
|
-
* @returns a query builder with accessList filters
|
|
36
|
-
*/
|
|
37
|
-
export function addFiltersToSelectQuery<T>(
|
|
38
|
-
queryBuilder: SelectQueryBuilder<T>,
|
|
39
|
-
accessList: AccessListClient,
|
|
40
|
-
fullEmployeeReferenceFieldName: string,
|
|
41
|
-
segmentParamAlias = "segmentId",
|
|
42
|
-
subTableAlias?: string,
|
|
43
|
-
segmentReference?: string,
|
|
44
|
-
): SelectQueryBuilder<T> {
|
|
45
|
-
if (accessList.hasAccessToAll() && !segmentReference) return queryBuilder;
|
|
46
|
-
|
|
47
|
-
let segmentReferenceParam = segmentReference;
|
|
48
|
-
if (!segmentReferenceParam) {
|
|
49
|
-
segmentReferenceParam = accessList.getSegmentReferenceOrFail();
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const subTable = subTableAlias ?? "ser";
|
|
53
|
-
|
|
54
|
-
const query = `(SELECT employee_id
|
|
55
|
-
FROM public.segments_employee_relation_with_attrition
|
|
56
|
-
WHERE segment_id = :${segmentParamAlias}
|
|
57
|
-
${
|
|
58
|
-
accessList.shouldAddFormerEmployees()
|
|
59
|
-
? ""
|
|
60
|
-
: "AND left_organization_at IS NULL"
|
|
61
|
-
})`;
|
|
62
|
-
|
|
63
|
-
return queryBuilder.innerJoin(
|
|
64
|
-
query,
|
|
65
|
-
subTable,
|
|
66
|
-
`${subTable}.employee_id::text = ${fullEmployeeReferenceFieldName}`,
|
|
67
|
-
{
|
|
68
|
-
[segmentParamAlias]: segmentReferenceParam,
|
|
69
|
-
},
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export function getSQLJoinFilters(
|
|
74
|
-
accessList: AccessListClient,
|
|
75
|
-
fullEmployeeReferenceFieldName: string,
|
|
76
|
-
segmentReferenceIndex: string,
|
|
77
|
-
subTableAlias?: string,
|
|
78
|
-
): string {
|
|
79
|
-
if (!segmentReferenceIndex.includes("$")) {
|
|
80
|
-
throw new Error(
|
|
81
|
-
"getSQLJoinFilters#segmentReferenceIndex param should be an index",
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
const subTable = subTableAlias ?? "ser";
|
|
85
|
-
|
|
86
|
-
return `JOIN (SELECT employee_id
|
|
87
|
-
FROM public.segments_employee_relation_with_attrition
|
|
88
|
-
WHERE segment_id = ${segmentReferenceIndex}
|
|
89
|
-
${
|
|
90
|
-
accessList.shouldAddFormerEmployees()
|
|
91
|
-
? ""
|
|
92
|
-
: "AND left_organization_at IS NULL"
|
|
93
|
-
}) ${subTable} on ${subTable}.employee_id = ${fullEmployeeReferenceFieldName}`;
|
|
94
|
-
}
|