@boxyhq/saml-jackson 1.21.2 → 1.21.4
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/controller/oauth.d.ts +1 -1
- package/dist/controller/oauth.js +74 -29
- package/dist/controller/oauth.js.map +1 -1
- package/dist/cron/lock.d.ts +18 -0
- package/dist/{directory-sync/batch-events → cron}/lock.js +40 -21
- package/dist/cron/lock.js.map +1 -0
- package/dist/directory-sync/batch-events/queue.d.ts +5 -2
- package/dist/directory-sync/batch-events/queue.js +47 -26
- package/dist/directory-sync/batch-events/queue.js.map +1 -1
- package/dist/directory-sync/index.d.ts +2 -3
- package/dist/directory-sync/index.js +30 -18
- package/dist/directory-sync/index.js.map +1 -1
- package/dist/directory-sync/non-scim/index.d.ts +16 -2
- package/dist/directory-sync/non-scim/index.js +70 -32
- package/dist/directory-sync/non-scim/index.js.map +1 -1
- package/dist/directory-sync/request.d.ts +8 -1
- package/dist/directory-sync/request.js +4 -3
- package/dist/directory-sync/request.js.map +1 -1
- package/dist/directory-sync/scim/Groups.js +15 -20
- package/dist/directory-sync/scim/Groups.js.map +1 -1
- package/dist/directory-sync/scim/Users.js +9 -13
- package/dist/directory-sync/scim/Users.js.map +1 -1
- package/dist/directory-sync/scim/WebhookEventsLogger.js +8 -8
- package/dist/directory-sync/scim/WebhookEventsLogger.js.map +1 -1
- package/dist/directory-sync/scim/utils.d.ts +6 -0
- package/dist/directory-sync/scim/utils.js +7 -1
- package/dist/directory-sync/scim/utils.js.map +1 -1
- package/dist/directory-sync/types.d.ts +2 -2
- package/dist/directory-sync/utils.d.ts +4 -2
- package/dist/directory-sync/utils.js +5 -3
- package/dist/directory-sync/utils.js.map +1 -1
- package/dist/sso-tracer/types.d.ts +3 -2
- package/dist/typings.d.ts +4 -0
- package/package.json +6 -6
- package/dist/directory-sync/batch-events/lock.d.ts +0 -18
- package/dist/directory-sync/batch-events/lock.js.map +0 -1
@@ -36,14 +36,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
36
|
};
|
37
37
|
Object.defineProperty(exports, "__esModule", { value: true });
|
38
38
|
exports.EventProcessor = void 0;
|
39
|
-
const os_1 = __importDefault(require("os"));
|
40
39
|
const lodash_1 = __importDefault(require("lodash"));
|
41
40
|
const crypto_1 = require("crypto");
|
42
|
-
const utils_1 = require("../utils");
|
43
41
|
const webhook_1 = require("../../event/webhook");
|
44
|
-
const
|
42
|
+
const utils_1 = require("../../controller/utils");
|
45
43
|
const error_1 = require("../../controller/error");
|
46
44
|
const metrics = __importStar(require("../../opentelemetry/metrics"));
|
45
|
+
const utils_2 = require("../scim/utils");
|
47
46
|
var EventStatus;
|
48
47
|
(function (EventStatus) {
|
49
48
|
EventStatus["PENDING"] = "PENDING";
|
@@ -51,15 +50,20 @@ var EventStatus;
|
|
51
50
|
EventStatus["PROCESSING"] = "PROCESSING";
|
52
51
|
})(EventStatus || (EventStatus = {}));
|
53
52
|
let isJobRunning = false;
|
54
|
-
|
55
|
-
const lockRenewalInterval = (utils_1.eventLockTTL / 2) * 1000;
|
53
|
+
let intervalId;
|
56
54
|
class EventProcessor {
|
57
55
|
constructor({ opts, eventStore, eventLock, directories, webhookLogs }) {
|
56
|
+
var _a;
|
58
57
|
this.opts = opts;
|
59
58
|
this.eventLock = eventLock;
|
60
59
|
this.eventStore = eventStore;
|
61
60
|
this.directories = directories;
|
62
61
|
this.webhookLogs = webhookLogs;
|
62
|
+
this.cronInterval = (_a = this.opts.dsync) === null || _a === void 0 ? void 0 : _a.webhookBatchCronInterval;
|
63
|
+
if (this.cronInterval) {
|
64
|
+
this.scheduleWorker = this.scheduleWorker.bind(this);
|
65
|
+
this.scheduleWorker();
|
66
|
+
}
|
63
67
|
}
|
64
68
|
// Push the new event to the database
|
65
69
|
push(event) {
|
@@ -74,7 +78,7 @@ class EventProcessor {
|
|
74
78
|
};
|
75
79
|
const index = [
|
76
80
|
{
|
77
|
-
name:
|
81
|
+
name: utils_2.indexNames.directoryId,
|
78
82
|
value: event.directory_id,
|
79
83
|
},
|
80
84
|
];
|
@@ -82,32 +86,16 @@ class EventProcessor {
|
|
82
86
|
return record;
|
83
87
|
});
|
84
88
|
}
|
85
|
-
|
86
|
-
process() {
|
89
|
+
_process() {
|
87
90
|
return __awaiter(this, void 0, void 0, function* () {
|
88
91
|
var _a, _b;
|
89
|
-
|
90
|
-
return;
|
91
|
-
}
|
92
|
-
if (!(yield this.eventLock.acquire(lockKey))) {
|
93
|
-
return;
|
94
|
-
}
|
95
|
-
isJobRunning = true;
|
96
|
-
// Renew the lock periodically
|
97
|
-
const intervalId = setInterval(() => __awaiter(this, void 0, void 0, function* () {
|
98
|
-
this.eventLock.renew(lockKey);
|
99
|
-
}), lockRenewalInterval);
|
100
|
-
const batchSize = (_a = this.opts.dsync) === null || _a === void 0 ? void 0 : _a.webhookBatchSize;
|
101
|
-
if (!batchSize) {
|
102
|
-
throw new error_1.JacksonError('Batch size not defined');
|
103
|
-
}
|
92
|
+
const batchSize = ((_a = this.opts.dsync) === null || _a === void 0 ? void 0 : _a.webhookBatchSize) || 50;
|
104
93
|
// eslint-disable-next-line no-constant-condition
|
105
94
|
while (true) {
|
106
95
|
const events = yield this.fetchNextBatch(0, batchSize);
|
107
96
|
const eventsCount = events.length;
|
108
97
|
if (eventsCount === 0) {
|
109
|
-
|
110
|
-
yield this.eventLock.release(lockKey);
|
98
|
+
yield this.eventLock.release();
|
111
99
|
break;
|
112
100
|
}
|
113
101
|
// Group the events by directory
|
@@ -133,7 +121,7 @@ class EventProcessor {
|
|
133
121
|
yield this.delete(events);
|
134
122
|
continue;
|
135
123
|
}
|
136
|
-
if (!(0,
|
124
|
+
if (!(0, utils_1.isConnectionActive)(directory)) {
|
137
125
|
console.error(`Directory ${directoryId} is not active. Deleting the dsync events.`);
|
138
126
|
yield this.delete(events);
|
139
127
|
continue;
|
@@ -164,7 +152,29 @@ class EventProcessor {
|
|
164
152
|
}
|
165
153
|
}
|
166
154
|
}
|
155
|
+
});
|
156
|
+
}
|
157
|
+
// Process the events and send them to the webhooks as a batch
|
158
|
+
process() {
|
159
|
+
return __awaiter(this, void 0, void 0, function* () {
|
160
|
+
if (isJobRunning) {
|
161
|
+
console.info('A batch process is already running, skipping.');
|
162
|
+
return;
|
163
|
+
}
|
164
|
+
if (!(yield this.eventLock.acquire())) {
|
165
|
+
return;
|
166
|
+
}
|
167
|
+
isJobRunning = true;
|
168
|
+
try {
|
169
|
+
this._process();
|
170
|
+
}
|
171
|
+
catch (e) {
|
172
|
+
console.error(' Error processing webhooks batch:', e);
|
173
|
+
}
|
167
174
|
isJobRunning = false;
|
175
|
+
if (this.cronInterval) {
|
176
|
+
this.scheduleWorker();
|
177
|
+
}
|
168
178
|
});
|
169
179
|
}
|
170
180
|
// Fetch next batch of events from the database
|
@@ -230,6 +240,17 @@ class EventProcessor {
|
|
230
240
|
console.error('All events in the batch have failed. Please check the system.');
|
231
241
|
});
|
232
242
|
}
|
243
|
+
scheduleWorker() {
|
244
|
+
return __awaiter(this, void 0, void 0, function* () {
|
245
|
+
if (!this.cronInterval) {
|
246
|
+
return;
|
247
|
+
}
|
248
|
+
if (intervalId) {
|
249
|
+
clearInterval(intervalId);
|
250
|
+
}
|
251
|
+
intervalId = setInterval(() => this.process(), this.cronInterval * 1000);
|
252
|
+
});
|
253
|
+
}
|
233
254
|
}
|
234
255
|
exports.EventProcessor = EventProcessor;
|
235
256
|
//# sourceMappingURL=queue.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/directory-sync/batch-events/queue.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/directory-sync/batch-events/queue.ts"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import type { JacksonOption, IEventController,
|
1
|
+
import type { JacksonOption, IEventController, DB } from '../typings';
|
2
2
|
import { DirectoryConfig } from './scim/DirectoryConfig';
|
3
3
|
import { Users } from './scim/Users';
|
4
4
|
import { Groups } from './scim/Groups';
|
@@ -19,10 +19,9 @@ declare const directorySync: (params: {
|
|
19
19
|
[K: string]: string;
|
20
20
|
};
|
21
21
|
events: {
|
22
|
-
callback: (event: import("./types").DirectorySyncEvent) => Promise<void>;
|
23
22
|
batch: EventProcessor;
|
24
23
|
};
|
25
24
|
google: import("./non-scim/google/oauth").GoogleAuth;
|
26
|
-
sync: (
|
25
|
+
sync: () => Promise<void>;
|
27
26
|
}>;
|
28
27
|
export default directorySync;
|
@@ -22,8 +22,9 @@ const non_scim_1 = require("./non-scim");
|
|
22
22
|
const utils_2 = require("../controller/utils");
|
23
23
|
const utils_3 = require("./utils");
|
24
24
|
const queue_1 = require("./batch-events/queue");
|
25
|
-
const lock_1 = require("
|
25
|
+
const lock_1 = require("../cron/lock");
|
26
26
|
const directorySync = (params) => __awaiter(void 0, void 0, void 0, function* () {
|
27
|
+
var _a;
|
27
28
|
const { db, opts, eventController } = params;
|
28
29
|
const users = new Users_1.Users({ db });
|
29
30
|
const groups = new Groups_1.Groups({ db });
|
@@ -38,7 +39,6 @@ const directorySync = (params) => __awaiter(void 0, void 0, void 0, function* ()
|
|
38
39
|
});
|
39
40
|
const directoryUsers = new DirectoryUsers_1.DirectoryUsers({ directories, users });
|
40
41
|
const directoryGroups = new DirectoryGroups_1.DirectoryGroups({ directories, users, groups });
|
41
|
-
const requestHandler = new request_1.RequestHandler(directoryUsers, directoryGroups);
|
42
42
|
// Fetch the supported providers
|
43
43
|
const getProviders = () => {
|
44
44
|
return (0, utils_1.getDirectorySyncProviders)();
|
@@ -47,7 +47,8 @@ const directorySync = (params) => __awaiter(void 0, void 0, void 0, function* ()
|
|
47
47
|
// Batch send events
|
48
48
|
const eventStore = db.store(utils_2.storeNamespacePrefix.dsync.events);
|
49
49
|
const lockStore = db.store(utils_2.storeNamespacePrefix.dsync.lock, utils_3.eventLockTTL);
|
50
|
-
const eventLock = new lock_1.
|
50
|
+
const eventLock = new lock_1.CronLock({ key: utils_3.eventLockKey, lockStore });
|
51
|
+
const googleLock = new lock_1.CronLock({ key: utils_3.googleLockKey, lockStore });
|
51
52
|
const eventProcessor = new queue_1.EventProcessor({
|
52
53
|
opts,
|
53
54
|
eventStore,
|
@@ -55,6 +56,31 @@ const directorySync = (params) => __awaiter(void 0, void 0, void 0, function* ()
|
|
55
56
|
directories,
|
56
57
|
webhookLogs,
|
57
58
|
});
|
59
|
+
// Internal callback handles sending webhooks
|
60
|
+
const internalCallback = yield (0, utils_3.handleEventCallback)({
|
61
|
+
opts,
|
62
|
+
directories,
|
63
|
+
webhookLogs,
|
64
|
+
eventProcessor,
|
65
|
+
});
|
66
|
+
// Use the provided callback (Embedded) or fallback to the internal callback (Hosted)
|
67
|
+
const _callback = ((_a = opts.dsync) === null || _a === void 0 ? void 0 : _a.callback) || internalCallback;
|
68
|
+
// SCIM handler
|
69
|
+
const requestHandler = new request_1.RequestHandler({
|
70
|
+
directoryUsers,
|
71
|
+
directoryGroups,
|
72
|
+
eventCallback: _callback,
|
73
|
+
});
|
74
|
+
// Google sync handler
|
75
|
+
const syncProviders = new non_scim_1.SyncProviders({
|
76
|
+
userController: users,
|
77
|
+
groupController: groups,
|
78
|
+
opts,
|
79
|
+
directories,
|
80
|
+
requestHandler,
|
81
|
+
eventCallback: _callback,
|
82
|
+
eventLock: googleLock,
|
83
|
+
});
|
58
84
|
return {
|
59
85
|
users,
|
60
86
|
groups,
|
@@ -63,24 +89,10 @@ const directorySync = (params) => __awaiter(void 0, void 0, void 0, function* ()
|
|
63
89
|
requests: requestHandler,
|
64
90
|
providers: getProviders,
|
65
91
|
events: {
|
66
|
-
callback: yield (0, utils_3.handleEventCallback)({
|
67
|
-
opts,
|
68
|
-
directories,
|
69
|
-
webhookLogs,
|
70
|
-
eventProcessor,
|
71
|
-
}),
|
72
92
|
batch: eventProcessor,
|
73
93
|
},
|
74
94
|
google: googleProvider.oauth,
|
75
|
-
sync: (
|
76
|
-
return yield (0, non_scim_1.startSync)({
|
77
|
-
userController: users,
|
78
|
-
groupController: groups,
|
79
|
-
opts,
|
80
|
-
directories,
|
81
|
-
requestHandler,
|
82
|
-
}, callback);
|
83
|
-
}),
|
95
|
+
sync: syncProviders.startSync.bind(syncProviders),
|
84
96
|
};
|
85
97
|
});
|
86
98
|
exports.default = directorySync;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/directory-sync/index.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,4DAAyD;AACzD,0DAAuD;AACvD,4DAAyD;AACzD,wCAAqC;AACrC,0CAAuC;AACvC,wCAAyD;AACzD,uCAA2C;AAC3C,oEAAiE;AACjE,8CAAsD;AACtD,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/directory-sync/index.ts"],"names":[],"mappings":"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"}
|
@@ -1,10 +1,24 @@
|
|
1
|
-
import type { IDirectoryConfig, IUsers, IGroups, IRequestHandler, JacksonOption, EventCallback } from '../../typings';
|
1
|
+
import type { IDirectoryConfig, IUsers, IGroups, IRequestHandler, JacksonOption, EventCallback, CronLock } from '../../typings';
|
2
2
|
interface SyncParams {
|
3
3
|
userController: IUsers;
|
4
4
|
groupController: IGroups;
|
5
5
|
opts: JacksonOption;
|
6
6
|
directories: IDirectoryConfig;
|
7
7
|
requestHandler: IRequestHandler;
|
8
|
+
eventCallback: EventCallback;
|
9
|
+
eventLock: CronLock;
|
10
|
+
}
|
11
|
+
export declare class SyncProviders {
|
12
|
+
private userController;
|
13
|
+
private groupController;
|
14
|
+
private directories;
|
15
|
+
private requestHandler;
|
16
|
+
private opts;
|
17
|
+
private cronInterval;
|
18
|
+
private eventCallback;
|
19
|
+
private eventLock;
|
20
|
+
constructor({ userController, groupController, opts, directories, requestHandler, eventCallback, eventLock, }: SyncParams);
|
21
|
+
startSync(): Promise<void>;
|
22
|
+
private scheduleSync;
|
8
23
|
}
|
9
|
-
export declare const startSync: (params: SyncParams, callback: EventCallback) => Promise<void>;
|
10
24
|
export {};
|
@@ -9,43 +9,81 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
9
9
|
});
|
10
10
|
};
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
exports.
|
12
|
+
exports.SyncProviders = void 0;
|
13
13
|
const google_1 = require("./google");
|
14
14
|
const syncUsers_1 = require("./syncUsers");
|
15
15
|
const syncGroups_1 = require("./syncGroups");
|
16
16
|
const syncGroupMembers_1 = require("./syncGroupMembers");
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
userController,
|
34
|
-
groupController,
|
35
|
-
provider,
|
36
|
-
requestHandler,
|
37
|
-
callback,
|
38
|
-
};
|
39
|
-
yield new syncUsers_1.SyncUsers(params).sync();
|
40
|
-
yield new syncGroups_1.SyncGroups(params).sync();
|
41
|
-
yield new syncGroupMembers_1.SyncGroupMembers(params).sync();
|
17
|
+
let isJobRunning = false;
|
18
|
+
let intervalId;
|
19
|
+
class SyncProviders {
|
20
|
+
constructor({ userController, groupController, opts, directories, requestHandler, eventCallback, eventLock, }) {
|
21
|
+
var _a, _b;
|
22
|
+
this.userController = userController;
|
23
|
+
this.groupController = groupController;
|
24
|
+
this.directories = directories;
|
25
|
+
this.requestHandler = requestHandler;
|
26
|
+
this.eventCallback = eventCallback;
|
27
|
+
this.opts = opts;
|
28
|
+
this.cronInterval = (_b = (_a = this.opts.dsync) === null || _a === void 0 ? void 0 : _a.providers) === null || _b === void 0 ? void 0 : _b.google.cronInterval;
|
29
|
+
this.eventLock = eventLock;
|
30
|
+
if (this.cronInterval) {
|
31
|
+
this.scheduleSync = this.scheduleSync.bind(this);
|
32
|
+
this.scheduleSync();
|
42
33
|
}
|
43
34
|
}
|
44
|
-
|
45
|
-
|
35
|
+
// Start the sync process
|
36
|
+
startSync() {
|
37
|
+
return __awaiter(this, void 0, void 0, function* () {
|
38
|
+
if (isJobRunning) {
|
39
|
+
console.info('A sync process is already running, skipping.');
|
40
|
+
return;
|
41
|
+
}
|
42
|
+
if (!(yield this.eventLock.acquire())) {
|
43
|
+
return;
|
44
|
+
}
|
45
|
+
isJobRunning = true;
|
46
|
+
const { directory: provider } = (0, google_1.newGoogleProvider)({ directories: this.directories, opts: this.opts });
|
47
|
+
const startTime = Date.now();
|
48
|
+
try {
|
49
|
+
const allDirectories = yield provider.getDirectories();
|
50
|
+
console.info(`Starting the sync process for ${allDirectories.length} directories`);
|
51
|
+
for (const directory of allDirectories) {
|
52
|
+
const params = {
|
53
|
+
directory,
|
54
|
+
provider,
|
55
|
+
userController: this.userController,
|
56
|
+
groupController: this.groupController,
|
57
|
+
requestHandler: this.requestHandler,
|
58
|
+
callback: this.eventCallback,
|
59
|
+
};
|
60
|
+
yield new syncUsers_1.SyncUsers(params).sync();
|
61
|
+
yield new syncGroups_1.SyncGroups(params).sync();
|
62
|
+
yield new syncGroupMembers_1.SyncGroupMembers(params).sync();
|
63
|
+
}
|
64
|
+
}
|
65
|
+
catch (e) {
|
66
|
+
console.error(' Error processing Google sync:', e);
|
67
|
+
}
|
68
|
+
yield this.eventLock.release();
|
69
|
+
const endTime = Date.now();
|
70
|
+
console.info(`Sync process completed in ${(endTime - startTime) / 1000} seconds`);
|
71
|
+
isJobRunning = false;
|
72
|
+
if (this.cronInterval) {
|
73
|
+
this.scheduleSync();
|
74
|
+
}
|
75
|
+
});
|
76
|
+
}
|
77
|
+
// Schedule the next sync process
|
78
|
+
scheduleSync() {
|
79
|
+
if (!this.cronInterval) {
|
80
|
+
return;
|
81
|
+
}
|
82
|
+
if (intervalId) {
|
83
|
+
clearInterval(intervalId);
|
84
|
+
}
|
85
|
+
intervalId = setInterval(() => this.startSync(), this.cronInterval * 1000);
|
46
86
|
}
|
47
|
-
|
48
|
-
|
49
|
-
});
|
50
|
-
exports.startSync = startSync;
|
87
|
+
}
|
88
|
+
exports.SyncProviders = SyncProviders;
|
51
89
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/directory-sync/non-scim/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA6C;
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/directory-sync/non-scim/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAA6C;AAU7C,2CAAwC;AACxC,6CAA0C;AAC1C,yDAAsD;AAYtD,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,IAAI,UAA0B,CAAC;AAE/B,MAAa,aAAa;IAUxB,YAAY,EACV,cAAc,EACd,eAAe,EACf,IAAI,EACJ,WAAW,EACX,cAAc,EACd,aAAa,EACb,SAAS,GACE;;QACX,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,GAAG,MAAA,MAAA,IAAI,CAAC,IAAI,CAAC,KAAK,0CAAE,SAAS,0CAAE,MAAM,CAAC,YAAY,CAAC;QACpE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,yBAAyB;IACZ,SAAS;;YACpB,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;gBAC7D,OAAO;YACT,CAAC;YAED,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;gBACtC,OAAO;YACT,CAAC;YAED,YAAY,GAAG,IAAI,CAAC;YAEpB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAA,0BAAiB,EAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAEtG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE7B,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAEvD,OAAO,CAAC,IAAI,CAAC,iCAAiC,cAAc,CAAC,MAAM,cAAc,CAAC,CAAC;gBAEnF,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;oBACvC,MAAM,MAAM,GAAG;wBACb,SAAS;wBACT,QAAQ;wBACR,cAAc,EAAE,IAAI,CAAC,cAAc;wBACnC,eAAe,EAAE,IAAI,CAAC,eAAe;wBACrC,cAAc,EAAE,IAAI,CAAC,cAAc;wBACnC,QAAQ,EAAE,IAAI,CAAC,aAAa;qBAC7B,CAAC;oBAEF,MAAM,IAAI,qBAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;oBACnC,MAAM,IAAI,uBAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;oBACpC,MAAM,IAAI,mCAAgB,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC5C,CAAC;YACH,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,CAAC,CAAC,CAAC;YACrD,CAAC;YAED,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,6BAA6B,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC;YAElF,YAAY,GAAG,KAAK,CAAC;YAErB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,CAAC;QACH,CAAC;KAAA;IAED,iCAAiC;IACzB,YAAY;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,aAAa,CAAC,UAAU,CAAC,CAAC;QAC5B,CAAC;QAED,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC7E,CAAC;CACF;AAlGD,sCAkGC"}
|
@@ -1,7 +1,14 @@
|
|
1
1
|
import type { DirectorySyncResponse, IDirectoryGroups, IDirectoryUsers, EventCallback, DirectorySyncRequest } from '../typings';
|
2
|
+
interface RequestHandlerParams {
|
3
|
+
directoryUsers: IDirectoryUsers;
|
4
|
+
directoryGroups: IDirectoryGroups;
|
5
|
+
eventCallback: EventCallback;
|
6
|
+
}
|
2
7
|
export declare class RequestHandler {
|
3
8
|
private directoryUsers;
|
4
9
|
private directoryGroups;
|
5
|
-
|
10
|
+
private eventCallback;
|
11
|
+
constructor({ directoryUsers, directoryGroups, eventCallback }: RequestHandlerParams);
|
6
12
|
handle(request: DirectorySyncRequest, callback?: EventCallback): Promise<DirectorySyncResponse>;
|
7
13
|
}
|
14
|
+
export {};
|
@@ -11,18 +11,19 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
12
|
exports.RequestHandler = void 0;
|
13
13
|
class RequestHandler {
|
14
|
-
constructor(directoryUsers, directoryGroups) {
|
14
|
+
constructor({ directoryUsers, directoryGroups, eventCallback }) {
|
15
15
|
this.directoryUsers = directoryUsers;
|
16
16
|
this.directoryGroups = directoryGroups;
|
17
|
+
this.eventCallback = eventCallback;
|
17
18
|
}
|
18
19
|
handle(request, callback) {
|
19
20
|
return __awaiter(this, void 0, void 0, function* () {
|
20
21
|
const resourceType = request.resourceType.toLowerCase();
|
21
22
|
if (resourceType === 'users') {
|
22
|
-
return yield this.directoryUsers.handleRequest(request, callback);
|
23
|
+
return yield this.directoryUsers.handleRequest(request, callback || this.eventCallback);
|
23
24
|
}
|
24
25
|
else if (resourceType === 'groups') {
|
25
|
-
return yield this.directoryGroups.handleRequest(request, callback);
|
26
|
+
return yield this.directoryGroups.handleRequest(request, callback || this.eventCallback);
|
26
27
|
}
|
27
28
|
return { status: 404, data: {} };
|
28
29
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/directory-sync/request.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/directory-sync/request.ts"],"names":[],"mappings":";;;;;;;;;;;;AAcA,MAAa,cAAc;IAKzB,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAwB;QAClF,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEK,MAAM,CAAC,OAA6B,EAAE,QAAwB;;YAClE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAExD,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;gBAC7B,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;YAC1F,CAAC;iBAAM,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrC,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3F,CAAC;YAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACnC,CAAC;KAAA;CACF;AAtBD,wCAsBC"}
|
@@ -37,10 +37,7 @@ const crypto_1 = require("crypto");
|
|
37
37
|
const dbutils = __importStar(require("../../db/utils"));
|
38
38
|
const error_1 = require("../../controller/error");
|
39
39
|
const Base_1 = require("./Base");
|
40
|
-
const
|
41
|
-
directoryIdDisplayname: 'directoryIdDisplayname',
|
42
|
-
directoryId: 'directoryId',
|
43
|
-
};
|
40
|
+
const utils_1 = require("./utils");
|
44
41
|
/**
|
45
42
|
* @swagger
|
46
43
|
* parameters:
|
@@ -84,10 +81,10 @@ class Groups extends Base_1.Base {
|
|
84
81
|
};
|
85
82
|
try {
|
86
83
|
yield this.store('groups').put(id, group, {
|
87
|
-
name: indexNames.directoryIdDisplayname,
|
84
|
+
name: utils_1.indexNames.directoryIdDisplayname,
|
88
85
|
value: dbutils.keyFromParts(directoryId, name),
|
89
86
|
}, {
|
90
|
-
name: indexNames.directoryId,
|
87
|
+
name: utils_1.indexNames.directoryId,
|
91
88
|
value: directoryId,
|
92
89
|
});
|
93
90
|
return { data: group, error: null };
|
@@ -174,7 +171,7 @@ class Groups extends Base_1.Base {
|
|
174
171
|
group_id: groupId,
|
175
172
|
user_id: userId,
|
176
173
|
}, {
|
177
|
-
name:
|
174
|
+
name: utils_1.indexNames.groupId,
|
178
175
|
value: groupId,
|
179
176
|
});
|
180
177
|
});
|
@@ -198,7 +195,7 @@ class Groups extends Base_1.Base {
|
|
198
195
|
return __awaiter(this, void 0, void 0, function* () {
|
199
196
|
try {
|
200
197
|
const { data: groups } = yield this.store('groups').getByIndex({
|
201
|
-
name: indexNames.directoryIdDisplayname,
|
198
|
+
name: utils_1.indexNames.directoryIdDisplayname,
|
202
199
|
value: dbutils.keyFromParts(directoryId, displayName),
|
203
200
|
});
|
204
201
|
return { data: groups, error: null };
|
@@ -248,7 +245,7 @@ class Groups extends Base_1.Base {
|
|
248
245
|
// Filter by directoryId
|
249
246
|
if (directoryId) {
|
250
247
|
const index = {
|
251
|
-
name: indexNames.directoryId,
|
248
|
+
name: utils_1.indexNames.directoryId,
|
252
249
|
value: directoryId,
|
253
250
|
};
|
254
251
|
groups = (yield this.store('groups').getByIndex(index, pageOffset, pageLimit)).data;
|
@@ -305,7 +302,7 @@ class Groups extends Base_1.Base {
|
|
305
302
|
const { groupId, pageOffset, pageLimit } = parmas;
|
306
303
|
try {
|
307
304
|
const { data } = (yield this.store('members').getByIndex({
|
308
|
-
name:
|
305
|
+
name: utils_1.indexNames.groupId,
|
309
306
|
value: groupId,
|
310
307
|
}, pageOffset, pageLimit));
|
311
308
|
const members = data.map((member) => {
|
@@ -323,13 +320,12 @@ class Groups extends Base_1.Base {
|
|
323
320
|
// Delete all groups from a directory
|
324
321
|
deleteAll(directoryId) {
|
325
322
|
return __awaiter(this, void 0, void 0, function* () {
|
326
|
-
const index = {
|
327
|
-
name: indexNames.directoryId,
|
328
|
-
value: directoryId,
|
329
|
-
};
|
330
323
|
// eslint-disable-next-line no-constant-condition
|
331
324
|
while (true) {
|
332
|
-
const { data: groups } = yield this.store('groups').getByIndex(
|
325
|
+
const { data: groups } = yield this.store('groups').getByIndex({
|
326
|
+
name: utils_1.indexNames.directoryId,
|
327
|
+
value: directoryId,
|
328
|
+
}, 0, this.bulkDeleteBatchSize);
|
333
329
|
if (!groups || groups.length === 0) {
|
334
330
|
break;
|
335
331
|
}
|
@@ -344,13 +340,12 @@ class Groups extends Base_1.Base {
|
|
344
340
|
// Remove all users from a group
|
345
341
|
removeAllUsers(groupId) {
|
346
342
|
return __awaiter(this, void 0, void 0, function* () {
|
347
|
-
const index = {
|
348
|
-
name: 'groupId',
|
349
|
-
value: groupId,
|
350
|
-
};
|
351
343
|
// eslint-disable-next-line no-constant-condition
|
352
344
|
while (true) {
|
353
|
-
const { data: members } = yield this.store('members').getByIndex(
|
345
|
+
const { data: members } = yield this.store('members').getByIndex({
|
346
|
+
name: utils_1.indexNames.groupId,
|
347
|
+
value: groupId,
|
348
|
+
}, 0, this.bulkDeleteBatchSize);
|
354
349
|
if (!members || members.length === 0) {
|
355
350
|
break;
|
356
351
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Groups.js","sourceRoot":"","sources":["../../../src/directory-sync/scim/Groups.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAoC;AAGpC,wDAA0C;AAC1C,kDAAgE;AAChE,iCAA8B;
|
1
|
+
{"version":3,"file":"Groups.js","sourceRoot":"","sources":["../../../src/directory-sync/scim/Groups.ts"],"names":[],"mappings":"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"}
|