@boxyhq/saml-jackson 1.6.0 → 1.7.1
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/dist/controller/oauth.js +2 -6
- package/dist/controller/oauth.js.map +1 -1
- package/dist/directory-sync/DirectoryConfig.d.ts +3 -6
- package/dist/directory-sync/DirectoryConfig.js +19 -5
- package/dist/directory-sync/DirectoryConfig.js.map +1 -1
- package/dist/directory-sync/DirectoryGroups.d.ts +6 -5
- package/dist/directory-sync/DirectoryGroups.js +12 -3
- package/dist/directory-sync/DirectoryGroups.js.map +1 -1
- package/dist/directory-sync/DirectoryUsers.d.ts +5 -4
- package/dist/directory-sync/DirectoryUsers.js +9 -4
- package/dist/directory-sync/DirectoryUsers.js.map +1 -1
- package/dist/directory-sync/Groups.d.ts +6 -6
- package/dist/directory-sync/Groups.js +27 -11
- package/dist/directory-sync/Groups.js.map +1 -1
- package/dist/directory-sync/Users.d.ts +15 -13
- package/dist/directory-sync/Users.js +32 -11
- package/dist/directory-sync/Users.js.map +1 -1
- package/dist/directory-sync/WebhookEventsLogger.d.ts +4 -5
- package/dist/directory-sync/WebhookEventsLogger.js +11 -2
- package/dist/directory-sync/WebhookEventsLogger.js.map +1 -1
- package/dist/directory-sync/events.d.ts +2 -2
- package/dist/directory-sync/events.js.map +1 -1
- package/dist/directory-sync/index.d.ts +20 -3
- package/dist/directory-sync/index.js +2 -2
- package/dist/directory-sync/index.js.map +1 -1
- package/dist/directory-sync/request.d.ts +1 -1
- package/dist/directory-sync/request.js +6 -5
- package/dist/directory-sync/request.js.map +1 -1
- package/dist/directory-sync/types.d.ts +103 -0
- package/dist/directory-sync/types.js +12 -0
- package/dist/directory-sync/types.js.map +1 -0
- package/dist/typings.d.ts +2 -264
- package/dist/typings.js +1 -9
- package/dist/typings.js.map +1 -1
- package/package.json +4 -4
@@ -1,16 +1,18 @@
|
|
1
|
-
import type { User, DatabaseStore, ApiError } from '../typings';
|
1
|
+
import type { User, DatabaseStore, ApiError, PaginationParams } from '../typings';
|
2
2
|
import { Base } from './Base';
|
3
|
+
type CreateUserPayload = {
|
4
|
+
directoryId: string;
|
5
|
+
first_name: string;
|
6
|
+
last_name: string;
|
7
|
+
email: string;
|
8
|
+
active: boolean;
|
9
|
+
raw: any;
|
10
|
+
};
|
3
11
|
export declare class Users extends Base {
|
4
12
|
constructor({ db }: {
|
5
13
|
db: DatabaseStore;
|
6
14
|
});
|
7
|
-
create(
|
8
|
-
first_name: string;
|
9
|
-
last_name: string;
|
10
|
-
email: string;
|
11
|
-
active: boolean;
|
12
|
-
raw: any;
|
13
|
-
}): Promise<{
|
15
|
+
create({ directoryId, first_name, last_name, email, active, raw, }: CreateUserPayload): Promise<{
|
14
16
|
data: User | null;
|
15
17
|
error: ApiError | null;
|
16
18
|
}>;
|
@@ -32,16 +34,16 @@ export declare class Users extends Base {
|
|
32
34
|
data: null;
|
33
35
|
error: ApiError | null;
|
34
36
|
}>;
|
35
|
-
|
36
|
-
pageOffset?: number;
|
37
|
-
pageLimit?: number;
|
38
|
-
}): Promise<{
|
37
|
+
search(userName: string, directoryId: string): Promise<{
|
39
38
|
data: User[] | null;
|
40
39
|
error: ApiError | null;
|
41
40
|
}>;
|
42
|
-
|
41
|
+
getAll({ pageOffset, pageLimit, directoryId, }?: PaginationParams & {
|
42
|
+
directoryId?: string;
|
43
|
+
}): Promise<{
|
43
44
|
data: User[] | null;
|
44
45
|
error: ApiError | null;
|
45
46
|
}>;
|
46
47
|
clear(): Promise<void>;
|
47
48
|
}
|
49
|
+
export {};
|
@@ -12,15 +12,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.Users = void 0;
|
13
13
|
const error_1 = require("../controller/error");
|
14
14
|
const Base_1 = require("./Base");
|
15
|
+
const utils_1 = require("../db/utils");
|
16
|
+
const indexNames = {
|
17
|
+
directoryIdUsername: 'directoryIdUsername',
|
18
|
+
directoryId: 'directoryId',
|
19
|
+
};
|
15
20
|
class Users extends Base_1.Base {
|
16
21
|
constructor({ db }) {
|
17
22
|
super({ db });
|
18
23
|
}
|
19
24
|
// Create a new user
|
20
|
-
create(
|
25
|
+
create({ directoryId, first_name, last_name, email, active, raw, }) {
|
21
26
|
return __awaiter(this, void 0, void 0, function* () {
|
22
27
|
try {
|
23
|
-
const { first_name, last_name, email, active, raw } = param;
|
24
28
|
const id = this.createId();
|
25
29
|
raw['id'] = id;
|
26
30
|
const user = {
|
@@ -32,8 +36,11 @@ class Users extends Base_1.Base {
|
|
32
36
|
raw,
|
33
37
|
};
|
34
38
|
yield this.store('users').put(id, user, {
|
35
|
-
name:
|
36
|
-
value: email,
|
39
|
+
name: indexNames.directoryIdUsername,
|
40
|
+
value: (0, utils_1.keyFromParts)(directoryId, email),
|
41
|
+
}, {
|
42
|
+
name: indexNames.directoryId,
|
43
|
+
value: directoryId,
|
37
44
|
});
|
38
45
|
return { data: user, error: null };
|
39
46
|
}
|
@@ -95,11 +102,14 @@ class Users extends Base_1.Base {
|
|
95
102
|
}
|
96
103
|
});
|
97
104
|
}
|
98
|
-
//
|
99
|
-
|
105
|
+
// Search users by userName
|
106
|
+
search(userName, directoryId) {
|
100
107
|
return __awaiter(this, void 0, void 0, function* () {
|
101
108
|
try {
|
102
|
-
const users =
|
109
|
+
const users = yield this.store('users').getByIndex({
|
110
|
+
name: indexNames.directoryIdUsername,
|
111
|
+
value: (0, utils_1.keyFromParts)(directoryId, userName),
|
112
|
+
});
|
103
113
|
return { data: users, error: null };
|
104
114
|
}
|
105
115
|
catch (err) {
|
@@ -107,11 +117,21 @@ class Users extends Base_1.Base {
|
|
107
117
|
}
|
108
118
|
});
|
109
119
|
}
|
110
|
-
//
|
111
|
-
|
120
|
+
// Get all users in a directory
|
121
|
+
getAll({ pageOffset, pageLimit, directoryId, } = {}) {
|
112
122
|
return __awaiter(this, void 0, void 0, function* () {
|
113
123
|
try {
|
114
|
-
|
124
|
+
let users = [];
|
125
|
+
// Filter by directoryId
|
126
|
+
if (directoryId) {
|
127
|
+
users = yield this.store('users').getByIndex({
|
128
|
+
name: indexNames.directoryId,
|
129
|
+
value: directoryId,
|
130
|
+
}, pageOffset, pageLimit);
|
131
|
+
}
|
132
|
+
else {
|
133
|
+
users = yield this.store('users').getAll(pageOffset, pageLimit);
|
134
|
+
}
|
115
135
|
return { data: users, error: null };
|
116
136
|
}
|
117
137
|
catch (err) {
|
@@ -120,9 +140,10 @@ class Users extends Base_1.Base {
|
|
120
140
|
});
|
121
141
|
}
|
122
142
|
// Clear all the users
|
143
|
+
// This is used for testing
|
123
144
|
clear() {
|
124
145
|
return __awaiter(this, void 0, void 0, function* () {
|
125
|
-
const { data: users, error } = yield this.
|
146
|
+
const { data: users, error } = yield this.getAll();
|
126
147
|
if (!users || error) {
|
127
148
|
return;
|
128
149
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Users.js","sourceRoot":"","sources":["../../src/directory-sync/Users.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,+CAA6D;AAC7D,iCAA8B;
|
1
|
+
{"version":3,"file":"Users.js","sourceRoot":"","sources":["../../src/directory-sync/Users.ts"],"names":[],"mappings":"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"}
|
@@ -1,14 +1,13 @@
|
|
1
|
-
import type { Directory, DatabaseStore, WebhookEventLog, DirectorySyncEvent,
|
1
|
+
import type { Directory, DatabaseStore, WebhookEventLog, DirectorySyncEvent, PaginationParams } from '../typings';
|
2
2
|
import { Base } from './Base';
|
3
|
-
export declare class WebhookEventsLogger extends Base
|
3
|
+
export declare class WebhookEventsLogger extends Base {
|
4
4
|
constructor({ db }: {
|
5
5
|
db: DatabaseStore;
|
6
6
|
});
|
7
7
|
log(directory: Directory, event: DirectorySyncEvent): Promise<WebhookEventLog>;
|
8
8
|
get(id: string): Promise<WebhookEventLog>;
|
9
|
-
getAll({ pageOffset, pageLimit, }
|
10
|
-
|
11
|
-
pageLimit?: number;
|
9
|
+
getAll({ pageOffset, pageLimit, directoryId, }?: PaginationParams & {
|
10
|
+
directoryId?: string;
|
12
11
|
}): Promise<WebhookEventLog[]>;
|
13
12
|
delete(id: string): Promise<void>;
|
14
13
|
clear(): Promise<void>;
|
@@ -19,7 +19,10 @@ class WebhookEventsLogger extends Base_1.Base {
|
|
19
19
|
return __awaiter(this, void 0, void 0, function* () {
|
20
20
|
const id = this.createId();
|
21
21
|
const log = Object.assign(Object.assign({}, event), { id, webhook_endpoint: directory.webhook.endpoint, created_at: new Date() });
|
22
|
-
yield this.store('logs').put(id, log
|
22
|
+
yield this.store('logs').put(id, log, {
|
23
|
+
name: 'directoryId',
|
24
|
+
value: directory.id,
|
25
|
+
});
|
23
26
|
return log;
|
24
27
|
});
|
25
28
|
}
|
@@ -28,8 +31,14 @@ class WebhookEventsLogger extends Base_1.Base {
|
|
28
31
|
return yield this.store('logs').get(id);
|
29
32
|
});
|
30
33
|
}
|
31
|
-
getAll({ pageOffset, pageLimit, }) {
|
34
|
+
getAll({ pageOffset, pageLimit, directoryId, } = {}) {
|
32
35
|
return __awaiter(this, void 0, void 0, function* () {
|
36
|
+
if (directoryId) {
|
37
|
+
return (yield this.store('logs').getByIndex({
|
38
|
+
name: 'directoryId',
|
39
|
+
value: directoryId,
|
40
|
+
}, pageOffset, pageLimit));
|
41
|
+
}
|
33
42
|
return (yield this.store('logs').getAll(pageOffset, pageLimit));
|
34
43
|
});
|
35
44
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"WebhookEventsLogger.js","sourceRoot":"","sources":["../../src/directory-sync/WebhookEventsLogger.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,iCAA8B;AAE9B,MAAa,mBAAoB,SAAQ,WAAI;IAC3C,YAAY,EAAE,EAAE,EAAyB;QACvC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChB,CAAC;IAEY,GAAG,CAAC,SAAoB,EAAE,KAAyB;;YAC9D,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE3B,MAAM,GAAG,mCACJ,KAAK,KACR,EAAE,EACF,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,EAC5C,UAAU,EAAE,IAAI,IAAI,EAAE,GACvB,CAAC;YAEF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;
|
1
|
+
{"version":3,"file":"WebhookEventsLogger.js","sourceRoot":"","sources":["../../src/directory-sync/WebhookEventsLogger.ts"],"names":[],"mappings":";;;;;;;;;;;;AAOA,iCAA8B;AAE9B,MAAa,mBAAoB,SAAQ,WAAI;IAC3C,YAAY,EAAE,EAAE,EAAyB;QACvC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChB,CAAC;IAEY,GAAG,CAAC,SAAoB,EAAE,KAAyB;;YAC9D,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAE3B,MAAM,GAAG,mCACJ,KAAK,KACR,EAAE,EACF,gBAAgB,EAAE,SAAS,CAAC,OAAO,CAAC,QAAQ,EAC5C,UAAU,EAAE,IAAI,IAAI,EAAE,GACvB,CAAC;YAEF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE;gBACpC,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,SAAS,CAAC,EAAE;aACpB,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC;QACb,CAAC;KAAA;IAEY,GAAG,CAAC,EAAU;;YACzB,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;KAAA;IAEY,MAAM,CAAC,EAClB,UAAU,EACV,SAAS,EACT,WAAW,MAGT,EAAE;;YACJ,IAAI,WAAW,EAAE;gBACf,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CACzC;oBACE,IAAI,EAAE,aAAa;oBACnB,KAAK,EAAE,WAAW;iBACnB,EACD,UAAU,EACV,SAAS,CACV,CAAsB,CAAC;aACzB;YAED,OAAO,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAsB,CAAC;QACvF,CAAC;KAAA;IAEY,MAAM,CAAC,EAAU;;YAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;KAAA;IAEY,KAAK;;YAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAErC,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,CAAO,KAAK,EAAE,EAAE;gBACzB,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC,CAAA,CAAC,CACH,CAAC;QACJ,CAAC;KAAA;IAEY,YAAY,CAAC,GAAoB,EAAE,UAAkB;;YAChE,MAAM,UAAU,mCACX,GAAG,KACN,WAAW,EAAE,UAAU,EACvB,SAAS,EAAE,UAAU,KAAK,GAAG,GAC9B,CAAC;YAEF,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAEjD,OAAO,UAAU,CAAC;QACpB,CAAC;KAAA;CACF;AAzED,kDAyEC"}
|
@@ -1,7 +1,7 @@
|
|
1
|
-
import type { DirectorySyncEventType, Directory, User, Group, EventCallback, DirectorySyncEvent,
|
1
|
+
import type { DirectorySyncEventType, Directory, User, Group, EventCallback, DirectorySyncEvent, IWebhookEventsLogger, IDirectoryConfig } from '../typings';
|
2
2
|
export declare const sendEvent: (event: DirectorySyncEventType, payload: {
|
3
3
|
directory: Directory;
|
4
4
|
group?: Group | null;
|
5
5
|
user?: User | null;
|
6
6
|
}, callback?: EventCallback) => Promise<void>;
|
7
|
-
export declare const handleEventCallback: (directories:
|
7
|
+
export declare const handleEventCallback: (directories: IDirectoryConfig, webhookEventsLogger: IWebhookEventsLogger) => Promise<(event: DirectorySyncEvent) => Promise<void>>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/directory-sync/events.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAUA,mCAA8D;AAC9D,kDAA0B;AAEnB,MAAM,SAAS,GAAG,CACvB,KAA6B,EAC7B,OAA2E,EAC3E,QAAwB,EACxB,EAAE;IACF,MAAM,gBAAgB,GAAG,IAAA,6BAAqB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE/D,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACzE,CAAC,CAAA,CAAC;AARW,QAAA,SAAS,aAQpB;AAEK,MAAM,mBAAmB,GAAG,CACjC,
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/directory-sync/events.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAUA,mCAA8D;AAC9D,kDAA0B;AAEnB,MAAM,SAAS,GAAG,CACvB,KAA6B,EAC7B,OAA2E,EAC3E,QAAwB,EACxB,EAAE;IACF,MAAM,gBAAgB,GAAG,IAAA,6BAAqB,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAE/D,OAAO,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACzE,CAAC,CAAA,CAAC;AARW,QAAA,SAAS,aAQpB;AAEK,MAAM,mBAAmB,GAAG,CACjC,WAA6B,EAC7B,mBAAyC,EACzC,EAAE;IACF,OAAO,CAAO,KAAyB,EAAE,EAAE;QACzC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;QAE7D,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAE/D,IAAI,CAAC,SAAS,EAAE;YACd,OAAO;SACR;QAED,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC;QAE9B,8DAA8D;QAC9D,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE,EAAE;YAC3B,OAAO;SACR;QAED,mBAAmB,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEzD,MAAM,OAAO,GAAG,MAAM,IAAA,oBAAY,EAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAE1D,yDAAyD;QACzD,MAAM,GAAG,GAAG,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvG,IAAI,MAAM,GAAG,GAAG,CAAC;QAEjB,IAAI;YACF,MAAM,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE;gBACxC,OAAO;aACR,CAAC,CAAC;SACJ;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;SACnD;QAED,IAAI,GAAG,EAAE;YACP,MAAM,mBAAmB,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;SACrD;IACH,CAAC,CAAA,CAAC;AACJ,CAAC,CAAA,CAAC;AAzCW,QAAA,mBAAmB,uBAyC9B"}
|
@@ -1,6 +1,23 @@
|
|
1
|
-
import type { DatabaseStore,
|
2
|
-
|
1
|
+
import type { DatabaseStore, JacksonOption } from '../typings';
|
2
|
+
import { DirectoryConfig } from './DirectoryConfig';
|
3
|
+
import { Users } from './Users';
|
4
|
+
import { Groups } from './Groups';
|
5
|
+
import { RequestHandler } from './request';
|
6
|
+
import { WebhookEventsLogger } from './WebhookEventsLogger';
|
7
|
+
declare const directorySync: ({ db, opts }: {
|
3
8
|
db: DatabaseStore;
|
4
9
|
opts: JacksonOption;
|
5
|
-
}) => Promise<
|
10
|
+
}) => Promise<{
|
11
|
+
users: Users;
|
12
|
+
groups: Groups;
|
13
|
+
directories: DirectoryConfig;
|
14
|
+
webhookLogs: WebhookEventsLogger;
|
15
|
+
requests: RequestHandler;
|
16
|
+
events: {
|
17
|
+
callback: (event: import("./types").DirectorySyncEvent) => Promise<void>;
|
18
|
+
};
|
19
|
+
providers: () => {
|
20
|
+
[K: string]: string;
|
21
|
+
};
|
22
|
+
}>;
|
6
23
|
export default directorySync;
|
@@ -18,7 +18,7 @@ const utils_1 = require("./utils");
|
|
18
18
|
const request_1 = require("./request");
|
19
19
|
const events_1 = require("./events");
|
20
20
|
const WebhookEventsLogger_1 = require("./WebhookEventsLogger");
|
21
|
-
const directorySync = ({ db, opts
|
21
|
+
const directorySync = ({ db, opts }) => __awaiter(void 0, void 0, void 0, function* () {
|
22
22
|
const directories = new DirectoryConfig_1.DirectoryConfig({ db, opts });
|
23
23
|
const users = new Users_1.Users({ db });
|
24
24
|
const groups = new Groups_1.Groups({ db });
|
@@ -30,7 +30,7 @@ const directorySync = ({ db, opts, }) => __awaiter(void 0, void 0, void 0, funct
|
|
30
30
|
groups,
|
31
31
|
directories,
|
32
32
|
webhookLogs: webhookEventsLogger,
|
33
|
-
requests: new request_1.
|
33
|
+
requests: new request_1.RequestHandler(directoryUsers, directoryGroups),
|
34
34
|
events: {
|
35
35
|
callback: yield (0, events_1.handleEventCallback)(directories, webhookEventsLogger),
|
36
36
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/directory-sync/index.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,uDAAoD;AACpD,qDAAkD;AAClD,uDAAoD;AACpD,mCAAgC;AAChC,qCAAkC;AAClC,mCAAoD;AACpD,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/directory-sync/index.ts"],"names":[],"mappings":";;;;;;;;;;;AACA,uDAAoD;AACpD,qDAAkD;AAClD,uDAAoD;AACpD,mCAAgC;AAChC,qCAAkC;AAClC,mCAAoD;AACpD,uCAA2C;AAC3C,qCAA+C;AAC/C,+DAA4D;AAE5D,MAAM,aAAa,GAAG,CAAO,EAAE,EAAE,EAAE,IAAI,EAA8C,EAAE,EAAE;IACvF,MAAM,WAAW,GAAG,IAAI,iCAAe,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAI,aAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAElC,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IAClE,MAAM,eAAe,GAAG,IAAI,iCAAe,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,MAAM,mBAAmB,GAAG,IAAI,yCAAmB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAE5D,OAAO;QACL,KAAK;QACL,MAAM;QACN,WAAW;QACX,WAAW,EAAE,mBAAmB;QAChC,QAAQ,EAAE,IAAI,wBAAc,CAAC,cAAc,EAAE,eAAe,CAAC;QAC7D,MAAM,EAAE;YACN,QAAQ,EAAE,MAAM,IAAA,4BAAmB,EAAC,WAAW,EAAE,mBAAmB,CAAC;SACtE;QACD,SAAS,EAAE,GAAG,EAAE;YACd,OAAO,IAAA,iCAAyB,GAAE,CAAC;QACrC,CAAC;KACF,CAAC;AACJ,CAAC,CAAA,CAAC;AAEF,kBAAe,aAAa,CAAC"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import type { DirectorySyncResponse, IDirectoryGroups, IDirectoryUsers, EventCallback, DirectorySyncRequest } from '../typings';
|
2
|
-
export declare class
|
2
|
+
export declare class RequestHandler {
|
3
3
|
private directoryUsers;
|
4
4
|
private directoryGroups;
|
5
5
|
constructor(directoryUsers: IDirectoryUsers, directoryGroups: IDirectoryGroups);
|
@@ -9,23 +9,24 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
9
9
|
});
|
10
10
|
};
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
12
|
-
exports.
|
13
|
-
class
|
12
|
+
exports.RequestHandler = void 0;
|
13
|
+
class RequestHandler {
|
14
14
|
constructor(directoryUsers, directoryGroups) {
|
15
15
|
this.directoryUsers = directoryUsers;
|
16
16
|
this.directoryGroups = directoryGroups;
|
17
17
|
}
|
18
18
|
handle(request, callback) {
|
19
19
|
return __awaiter(this, void 0, void 0, function* () {
|
20
|
-
|
20
|
+
const resourceType = request.resourceType.toLowerCase();
|
21
|
+
if (resourceType === 'users') {
|
21
22
|
return yield this.directoryUsers.handleRequest(request, callback);
|
22
23
|
}
|
23
|
-
else if (
|
24
|
+
else if (resourceType === 'groups') {
|
24
25
|
return yield this.directoryGroups.handleRequest(request, callback);
|
25
26
|
}
|
26
27
|
return { status: 404, data: {} };
|
27
28
|
});
|
28
29
|
}
|
29
30
|
}
|
30
|
-
exports.
|
31
|
+
exports.RequestHandler = RequestHandler;
|
31
32
|
//# sourceMappingURL=request.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/directory-sync/request.ts"],"names":[],"mappings":";;;;;;;;;;;;AAQA,MAAa,
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/directory-sync/request.ts"],"names":[],"mappings":";;;;;;;;;;;;AAQA,MAAa,cAAc;IACzB,YAAoB,cAA+B,EAAU,eAAiC;QAA1E,mBAAc,GAAd,cAAc,CAAiB;QAAU,oBAAe,GAAf,eAAe,CAAkB;IAAG,CAAC;IAE5F,MAAM,CAAC,OAA6B,EAAE,QAAwB;;YAClE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;YAExD,IAAI,YAAY,KAAK,OAAO,EAAE;gBAC5B,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACnE;iBAAM,IAAI,YAAY,KAAK,QAAQ,EAAE;gBACpC,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;aACpE;YAED,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACnC,CAAC;KAAA;CACF;AAdD,wCAcC"}
|
@@ -0,0 +1,103 @@
|
|
1
|
+
import directorySync from '.';
|
2
|
+
import { DirectoryConfig } from './DirectoryConfig';
|
3
|
+
import { DirectoryGroups } from './DirectoryGroups';
|
4
|
+
import { DirectoryUsers } from './DirectoryUsers';
|
5
|
+
import { Users } from './Users';
|
6
|
+
import { Groups } from './Groups';
|
7
|
+
import { WebhookEventsLogger } from './WebhookEventsLogger';
|
8
|
+
export type IDirectorySyncController = Awaited<ReturnType<typeof directorySync>>;
|
9
|
+
export type IDirectoryConfig = InstanceType<typeof DirectoryConfig>;
|
10
|
+
export type IDirectoryGroups = InstanceType<typeof DirectoryGroups>;
|
11
|
+
export type IDirectoryUsers = InstanceType<typeof DirectoryUsers>;
|
12
|
+
export type IUsers = InstanceType<typeof Users>;
|
13
|
+
export type IGroups = InstanceType<typeof Groups>;
|
14
|
+
export type IWebhookEventsLogger = InstanceType<typeof WebhookEventsLogger>;
|
15
|
+
export type DirectorySyncEventType = 'user.created' | 'user.updated' | 'user.deleted' | 'group.created' | 'group.updated' | 'group.deleted' | 'group.user_added' | 'group.user_removed';
|
16
|
+
export declare enum DirectorySyncProviders {
|
17
|
+
'azure-scim-v2' = "Azure SCIM v2.0",
|
18
|
+
'onelogin-scim-v2' = "OneLogin SCIM v2.0",
|
19
|
+
'okta-scim-v2' = "Okta SCIM v2.0",
|
20
|
+
'jumpcloud-scim-v2' = "JumpCloud v2.0",
|
21
|
+
'generic-scim-v2' = "SCIM Generic v2.0"
|
22
|
+
}
|
23
|
+
export type DirectoryType = keyof typeof DirectorySyncProviders;
|
24
|
+
export type Directory = {
|
25
|
+
id: string;
|
26
|
+
name: string;
|
27
|
+
tenant: string;
|
28
|
+
product: string;
|
29
|
+
type: DirectoryType;
|
30
|
+
log_webhook_events: boolean;
|
31
|
+
scim: {
|
32
|
+
path: string;
|
33
|
+
endpoint?: string;
|
34
|
+
secret: string;
|
35
|
+
};
|
36
|
+
webhook: {
|
37
|
+
endpoint: string;
|
38
|
+
secret: string;
|
39
|
+
};
|
40
|
+
};
|
41
|
+
export type DirectorySyncGroupMember = {
|
42
|
+
value: string;
|
43
|
+
email?: string;
|
44
|
+
};
|
45
|
+
export type DirectorySyncResponse = {
|
46
|
+
status: number;
|
47
|
+
data?: any;
|
48
|
+
};
|
49
|
+
export interface DirectorySyncRequestHandler {
|
50
|
+
handle(request: DirectorySyncRequest, callback?: EventCallback): Promise<DirectorySyncResponse>;
|
51
|
+
}
|
52
|
+
export interface Events {
|
53
|
+
handle(event: DirectorySyncEvent): Promise<void>;
|
54
|
+
}
|
55
|
+
export interface DirectorySyncRequest {
|
56
|
+
method: string;
|
57
|
+
body: any | undefined;
|
58
|
+
directoryId: Directory['id'];
|
59
|
+
resourceType: string;
|
60
|
+
resourceId: string | undefined;
|
61
|
+
apiSecret: string | null;
|
62
|
+
query: {
|
63
|
+
count?: number;
|
64
|
+
startIndex?: number;
|
65
|
+
filter?: string;
|
66
|
+
};
|
67
|
+
}
|
68
|
+
export interface DirectorySyncEvent {
|
69
|
+
directory_id: Directory['id'];
|
70
|
+
event: DirectorySyncEventType;
|
71
|
+
data: User | Group | (User & {
|
72
|
+
group: Group;
|
73
|
+
});
|
74
|
+
tenant: string;
|
75
|
+
product: string;
|
76
|
+
}
|
77
|
+
export interface EventCallback {
|
78
|
+
(event: DirectorySyncEvent): Promise<void>;
|
79
|
+
}
|
80
|
+
export interface WebhookEventLog extends DirectorySyncEvent {
|
81
|
+
id: string;
|
82
|
+
webhook_endpoint: string;
|
83
|
+
created_at: Date;
|
84
|
+
status_code?: number;
|
85
|
+
delivered?: boolean;
|
86
|
+
}
|
87
|
+
export type User = {
|
88
|
+
id: string;
|
89
|
+
email: string;
|
90
|
+
first_name: string;
|
91
|
+
last_name: string;
|
92
|
+
active: boolean;
|
93
|
+
raw?: any;
|
94
|
+
};
|
95
|
+
export type Group = {
|
96
|
+
id: string;
|
97
|
+
name: string;
|
98
|
+
raw?: any;
|
99
|
+
};
|
100
|
+
export type PaginationParams = {
|
101
|
+
pageOffset?: number;
|
102
|
+
pageLimit?: number;
|
103
|
+
};
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.DirectorySyncProviders = void 0;
|
4
|
+
var DirectorySyncProviders;
|
5
|
+
(function (DirectorySyncProviders) {
|
6
|
+
DirectorySyncProviders["azure-scim-v2"] = "Azure SCIM v2.0";
|
7
|
+
DirectorySyncProviders["onelogin-scim-v2"] = "OneLogin SCIM v2.0";
|
8
|
+
DirectorySyncProviders["okta-scim-v2"] = "Okta SCIM v2.0";
|
9
|
+
DirectorySyncProviders["jumpcloud-scim-v2"] = "JumpCloud v2.0";
|
10
|
+
DirectorySyncProviders["generic-scim-v2"] = "SCIM Generic v2.0";
|
11
|
+
})(DirectorySyncProviders = exports.DirectorySyncProviders || (exports.DirectorySyncProviders = {}));
|
12
|
+
//# sourceMappingURL=types.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/directory-sync/types.ts"],"names":[],"mappings":";;;AA0BA,IAAY,sBAMX;AAND,WAAY,sBAAsB;IAChC,2DAAmC,CAAA;IACnC,iEAAyC,CAAA;IACzC,yDAAiC,CAAA;IACjC,8DAAsC,CAAA;IACtC,+DAAuC,CAAA;AACzC,CAAC,EANW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAMjC"}
|