@boxyhq/saml-jackson 1.32.0 → 1.33.1-beta.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/api.js +17 -7
- package/dist/controller/api.js.map +1 -1
- package/dist/controller/connection/oidc.js +17 -7
- package/dist/controller/connection/oidc.js.map +1 -1
- package/dist/controller/connection/saml.js +17 -7
- package/dist/controller/connection/saml.js.map +1 -1
- package/dist/controller/logout.js +17 -7
- package/dist/controller/logout.js.map +1 -1
- package/dist/controller/oauth/oidc-client.d.ts +9 -4
- package/dist/controller/oauth/oidc-client.js +80 -11
- package/dist/controller/oauth/oidc-client.js.map +1 -1
- package/dist/controller/oauth/oidc-issuer.d.ts +2 -0
- package/dist/controller/oauth/oidc-issuer.js +25 -0
- package/dist/controller/oauth/oidc-issuer.js.map +1 -0
- package/dist/controller/oauth.js +97 -46
- package/dist/controller/oauth.js.map +1 -1
- package/dist/controller/setup-link.js +17 -7
- package/dist/controller/setup-link.js.map +1 -1
- package/dist/controller/sso-handler.d.ts +10 -2
- package/dist/controller/sso-handler.js +34 -12
- package/dist/controller/sso-handler.js.map +1 -1
- package/dist/controller/utils.d.ts +5 -3
- package/dist/controller/utils.js +27 -9
- package/dist/controller/utils.js.map +1 -1
- package/dist/db/db.js +17 -7
- package/dist/db/db.js.map +1 -1
- package/dist/db/dynamoDb.js +17 -7
- package/dist/db/dynamoDb.js.map +1 -1
- package/dist/db/mem.js +17 -7
- package/dist/db/mem.js.map +1 -1
- package/dist/db/mongo.js +17 -7
- package/dist/db/mongo.js.map +1 -1
- package/dist/db/redis.js +17 -7
- package/dist/db/redis.js.map +1 -1
- package/dist/db/sql/sql.js +17 -7
- package/dist/db/sql/sql.js.map +1 -1
- package/dist/db/store.js +17 -7
- package/dist/db/store.js.map +1 -1
- package/dist/directory-sync/batch-events/queue.js +17 -7
- package/dist/directory-sync/batch-events/queue.js.map +1 -1
- package/dist/directory-sync/scim/DirectoryConfig.js +17 -7
- package/dist/directory-sync/scim/DirectoryConfig.js.map +1 -1
- package/dist/directory-sync/scim/Groups.js +17 -7
- package/dist/directory-sync/scim/Groups.js.map +1 -1
- package/dist/ee/identity-federation/idp-login.js +20 -14
- package/dist/ee/identity-federation/idp-login.js.map +1 -1
- package/dist/ee/identity-federation/sso.js +16 -11
- package/dist/ee/identity-federation/sso.js.map +1 -1
- package/dist/event/axios.d.ts +2 -1
- package/dist/index.js +17 -7
- package/dist/index.js.map +1 -1
- package/dist/loadConnection.js +17 -7
- package/dist/loadConnection.js.map +1 -1
- package/dist/saml/lib.js +17 -7
- package/dist/saml/lib.js.map +1 -1
- package/dist/saml/x509.js +17 -7
- package/dist/saml/x509.js.map +1 -1
- package/dist/src/controller/admin.d.ts +27 -0
- package/dist/src/controller/admin.js +60 -0
- package/dist/src/controller/admin.js.map +1 -0
- package/dist/src/controller/analytics.d.ts +16 -0
- package/dist/src/controller/analytics.js +79 -0
- package/dist/src/controller/analytics.js.map +1 -0
- package/dist/src/controller/api.d.ts +557 -0
- package/dist/src/controller/api.js +806 -0
- package/dist/src/controller/api.js.map +1 -0
- package/dist/src/controller/connection/oidc.d.ts +7 -0
- package/dist/src/controller/connection/oidc.js +181 -0
- package/dist/src/controller/connection/oidc.js.map +1 -0
- package/dist/src/controller/connection/saml.d.ts +7 -0
- package/dist/src/controller/connection/saml.js +250 -0
- package/dist/src/controller/connection/saml.js.map +1 -0
- package/dist/src/controller/error.d.ts +10 -0
- package/dist/src/controller/error.js +13 -0
- package/dist/src/controller/error.js.map +1 -0
- package/dist/src/controller/health-check.d.ts +11 -0
- package/dist/src/controller/health-check.js +51 -0
- package/dist/src/controller/health-check.js.map +1 -0
- package/dist/src/controller/logout.d.ts +18 -0
- package/dist/src/controller/logout.js +132 -0
- package/dist/src/controller/logout.js.map +1 -0
- package/dist/src/controller/oauth/allowed.d.ts +1 -0
- package/dist/src/controller/oauth/allowed.js +30 -0
- package/dist/src/controller/oauth/allowed.js.map +1 -0
- package/dist/src/controller/oauth/code-verifier.d.ts +1 -0
- package/dist/src/controller/oauth/code-verifier.js +8 -0
- package/dist/src/controller/oauth/code-verifier.js.map +1 -0
- package/dist/src/controller/oauth/oidc-client.d.ts +12 -0
- package/dist/src/controller/oauth/oidc-client.js +89 -0
- package/dist/src/controller/oauth/oidc-client.js.map +1 -0
- package/dist/src/controller/oauth/redirect.d.ts +1 -0
- package/dist/src/controller/oauth/redirect.js +13 -0
- package/dist/src/controller/oauth/redirect.js.map +1 -0
- package/dist/src/controller/oauth.d.ts +142 -0
- package/dist/src/controller/oauth.js +1112 -0
- package/dist/src/controller/oauth.js.map +1 -0
- package/dist/src/controller/oidc-discovery.d.ts +22 -0
- package/dist/src/controller/oidc-discovery.js +47 -0
- package/dist/src/controller/oidc-discovery.js.map +1 -0
- package/dist/src/controller/setup-link.d.ts +307 -0
- package/dist/src/controller/setup-link.js +462 -0
- package/dist/src/controller/setup-link.js.map +1 -0
- package/dist/src/controller/sp-config.d.ts +22 -0
- package/dist/src/controller/sp-config.js +89 -0
- package/dist/src/controller/sp-config.js.map +1 -0
- package/dist/src/controller/sso-handler.d.ts +66 -0
- package/dist/src/controller/sso-handler.js +306 -0
- package/dist/src/controller/sso-handler.js.map +1 -0
- package/dist/src/controller/utils.d.ts +84 -0
- package/dist/src/controller/utils.js +328 -0
- package/dist/src/controller/utils.js.map +1 -0
- package/dist/src/cron/lock.d.ts +18 -0
- package/dist/src/cron/lock.js +98 -0
- package/dist/src/cron/lock.js.map +1 -0
- package/dist/src/db/db.d.ts +5 -0
- package/dist/src/db/db.js +178 -0
- package/dist/src/db/db.js.map +1 -0
- package/dist/src/db/defaultDb.d.ts +2 -0
- package/dist/src/db/defaultDb.js +18 -0
- package/dist/src/db/defaultDb.js.map +1 -0
- package/dist/src/db/dynamoDb.d.ts +19 -0
- package/dist/src/db/dynamoDb.js +320 -0
- package/dist/src/db/dynamoDb.js.map +1 -0
- package/dist/src/db/encrypter.d.ts +3 -0
- package/dist/src/db/encrypter.js +22 -0
- package/dist/src/db/encrypter.js.map +1 -0
- package/dist/src/db/mem.d.ts +23 -0
- package/dist/src/db/mem.js +186 -0
- package/dist/src/db/mem.js.map +1 -0
- package/dist/src/db/mongo.d.ts +22 -0
- package/dist/src/db/mongo.js +177 -0
- package/dist/src/db/mongo.js.map +1 -0
- package/dist/src/db/planetscale/entity/JacksonIndex.d.ts +5 -0
- package/dist/src/db/planetscale/entity/JacksonIndex.js +32 -0
- package/dist/src/db/planetscale/entity/JacksonIndex.js.map +1 -0
- package/dist/src/db/planetscale/entity/JacksonStore.d.ts +9 -0
- package/dist/src/db/planetscale/entity/JacksonStore.js +63 -0
- package/dist/src/db/planetscale/entity/JacksonStore.js.map +1 -0
- package/dist/src/db/planetscale/entity/JacksonTTL.d.ts +4 -0
- package/dist/src/db/planetscale/entity/JacksonTTL.js +27 -0
- package/dist/src/db/planetscale/entity/JacksonTTL.js.map +1 -0
- package/dist/src/db/redis.d.ts +18 -0
- package/dist/src/db/redis.js +214 -0
- package/dist/src/db/redis.js.map +1 -0
- package/dist/src/db/sql/entity/JacksonIndex.d.ts +7 -0
- package/dist/src/db/sql/entity/JacksonIndex.js +39 -0
- package/dist/src/db/sql/entity/JacksonIndex.js.map +1 -0
- package/dist/src/db/sql/entity/JacksonStore.d.ts +9 -0
- package/dist/src/db/sql/entity/JacksonStore.js +61 -0
- package/dist/src/db/sql/entity/JacksonStore.js.map +1 -0
- package/dist/src/db/sql/entity/JacksonTTL.d.ts +4 -0
- package/dist/src/db/sql/entity/JacksonTTL.js +27 -0
- package/dist/src/db/sql/entity/JacksonTTL.js.map +1 -0
- package/dist/src/db/sql/mariadb/entity/JacksonIndex.d.ts +7 -0
- package/dist/src/db/sql/mariadb/entity/JacksonIndex.js +39 -0
- package/dist/src/db/sql/mariadb/entity/JacksonIndex.js.map +1 -0
- package/dist/src/db/sql/mariadb/entity/JacksonStore.d.ts +9 -0
- package/dist/src/db/sql/mariadb/entity/JacksonStore.js +63 -0
- package/dist/src/db/sql/mariadb/entity/JacksonStore.js.map +1 -0
- package/dist/src/db/sql/mariadb/entity/JacksonTTL.d.ts +4 -0
- package/dist/src/db/sql/mariadb/entity/JacksonTTL.js +27 -0
- package/dist/src/db/sql/mariadb/entity/JacksonTTL.js.map +1 -0
- package/dist/src/db/sql/mssql/entity/JacksonIndex.d.ts +7 -0
- package/dist/src/db/sql/mssql/entity/JacksonIndex.js +39 -0
- package/dist/src/db/sql/mssql/entity/JacksonIndex.js.map +1 -0
- package/dist/src/db/sql/mssql/entity/JacksonStore.d.ts +9 -0
- package/dist/src/db/sql/mssql/entity/JacksonStore.js +61 -0
- package/dist/src/db/sql/mssql/entity/JacksonStore.js.map +1 -0
- package/dist/src/db/sql/mssql/entity/JacksonTTL.d.ts +4 -0
- package/dist/src/db/sql/mssql/entity/JacksonTTL.js +27 -0
- package/dist/src/db/sql/mssql/entity/JacksonTTL.js.map +1 -0
- package/dist/src/db/sql/mssql.d.ts +1 -0
- package/dist/src/db/sql/mssql.js +44 -0
- package/dist/src/db/sql/mssql.js.map +1 -0
- package/dist/src/db/sql/sql.d.ts +32 -0
- package/dist/src/db/sql/sql.js +318 -0
- package/dist/src/db/sql/sql.js.map +1 -0
- package/dist/src/db/sql/sqlite/entity/JacksonIndex.d.ts +7 -0
- package/dist/src/db/sql/sqlite/entity/JacksonIndex.js +39 -0
- package/dist/src/db/sql/sqlite/entity/JacksonIndex.js.map +1 -0
- package/dist/src/db/sql/sqlite/entity/JacksonStore.d.ts +9 -0
- package/dist/src/db/sql/sqlite/entity/JacksonStore.js +61 -0
- package/dist/src/db/sql/sqlite/entity/JacksonStore.js.map +1 -0
- package/dist/src/db/sql/sqlite/entity/JacksonTTL.d.ts +4 -0
- package/dist/src/db/sql/sqlite/entity/JacksonTTL.js +27 -0
- package/dist/src/db/sql/sqlite/entity/JacksonTTL.js.map +1 -0
- package/dist/src/db/store.d.ts +5 -0
- package/dist/src/db/store.js +65 -0
- package/dist/src/db/store.js.map +1 -0
- package/dist/src/db/utils.d.ts +16 -0
- package/dist/src/db/utils.js +28 -0
- package/dist/src/db/utils.js.map +1 -0
- package/dist/src/directory-sync/batch-events/queue.d.ts +40 -0
- package/dist/src/directory-sync/batch-events/queue.js +225 -0
- package/dist/src/directory-sync/batch-events/queue.js.map +1 -0
- package/dist/src/directory-sync/index.d.ts +27 -0
- package/dist/src/directory-sync/index.js +97 -0
- package/dist/src/directory-sync/index.js.map +1 -0
- package/dist/src/directory-sync/non-scim/google/api.d.ts +36 -0
- package/dist/src/directory-sync/non-scim/google/api.js +143 -0
- package/dist/src/directory-sync/non-scim/google/api.js.map +1 -0
- package/dist/src/directory-sync/non-scim/google/index.d.ts +12 -0
- package/dist/src/directory-sync/non-scim/google/index.js +10 -0
- package/dist/src/directory-sync/non-scim/google/index.js.map +1 -0
- package/dist/src/directory-sync/non-scim/google/oauth.d.ts +27 -0
- package/dist/src/directory-sync/non-scim/google/oauth.js +105 -0
- package/dist/src/directory-sync/non-scim/google/oauth.js.map +1 -0
- package/dist/src/directory-sync/non-scim/index.d.ts +24 -0
- package/dist/src/directory-sync/non-scim/index.js +85 -0
- package/dist/src/directory-sync/non-scim/index.js.map +1 -0
- package/dist/src/directory-sync/non-scim/syncGroupMembers.d.ts +23 -0
- package/dist/src/directory-sync/non-scim/syncGroupMembers.js +105 -0
- package/dist/src/directory-sync/non-scim/syncGroupMembers.js.map +1 -0
- package/dist/src/directory-sync/non-scim/syncGroups.d.ts +24 -0
- package/dist/src/directory-sync/non-scim/syncGroups.js +120 -0
- package/dist/src/directory-sync/non-scim/syncGroups.js.map +1 -0
- package/dist/src/directory-sync/non-scim/syncUsers.d.ts +24 -0
- package/dist/src/directory-sync/non-scim/syncUsers.js +120 -0
- package/dist/src/directory-sync/non-scim/syncUsers.js.map +1 -0
- package/dist/src/directory-sync/non-scim/utils.d.ts +36 -0
- package/dist/src/directory-sync/non-scim/utils.js +109 -0
- package/dist/src/directory-sync/non-scim/utils.js.map +1 -0
- package/dist/src/directory-sync/request.d.ts +14 -0
- package/dist/src/directory-sync/request.js +29 -0
- package/dist/src/directory-sync/request.js.map +1 -0
- package/dist/src/directory-sync/scim/Base.d.ts +12 -0
- package/dist/src/directory-sync/scim/Base.js +23 -0
- package/dist/src/directory-sync/scim/Base.js.map +1 -0
- package/dist/src/directory-sync/scim/DirectoryConfig.d.ts +343 -0
- package/dist/src/directory-sync/scim/DirectoryConfig.js +580 -0
- package/dist/src/directory-sync/scim/DirectoryConfig.js.map +1 -0
- package/dist/src/directory-sync/scim/DirectoryGroups.d.ts +28 -0
- package/dist/src/directory-sync/scim/DirectoryGroups.js +252 -0
- package/dist/src/directory-sync/scim/DirectoryGroups.js.map +1 -0
- package/dist/src/directory-sync/scim/DirectoryUsers.d.ts +25 -0
- package/dist/src/directory-sync/scim/DirectoryUsers.js +193 -0
- package/dist/src/directory-sync/scim/DirectoryUsers.js.map +1 -0
- package/dist/src/directory-sync/scim/Groups.d.ts +166 -0
- package/dist/src/directory-sync/scim/Groups.js +348 -0
- package/dist/src/directory-sync/scim/Groups.js.map +1 -0
- package/dist/src/directory-sync/scim/Users.d.ts +99 -0
- package/dist/src/directory-sync/scim/Users.js +215 -0
- package/dist/src/directory-sync/scim/Users.js.map +1 -0
- package/dist/src/directory-sync/scim/WebhookEventsLogger.d.ts +101 -0
- package/dist/src/directory-sync/scim/WebhookEventsLogger.js +165 -0
- package/dist/src/directory-sync/scim/WebhookEventsLogger.js.map +1 -0
- package/dist/src/directory-sync/scim/transform.d.ts +6 -0
- package/dist/src/directory-sync/scim/transform.js +37 -0
- package/dist/src/directory-sync/scim/transform.js.map +1 -0
- package/dist/src/directory-sync/scim/utils.d.ts +33 -0
- package/dist/src/directory-sync/scim/utils.js +129 -0
- package/dist/src/directory-sync/scim/utils.js.map +1 -0
- package/dist/src/directory-sync/types.d.ts +195 -0
- package/dist/src/directory-sync/types.js +10 -0
- package/dist/src/directory-sync/types.js.map +1 -0
- package/dist/src/directory-sync/utils.d.ts +19 -0
- package/dist/src/directory-sync/utils.js +56 -0
- package/dist/src/directory-sync/utils.js.map +1 -0
- package/dist/src/ee/branding/index.d.ts +17 -0
- package/dist/src/ee/branding/index.js +49 -0
- package/dist/src/ee/branding/index.js.map +1 -0
- package/dist/src/ee/common/checkLicense.d.ts +3 -0
- package/dist/src/ee/common/checkLicense.js +23 -0
- package/dist/src/ee/common/checkLicense.js.map +1 -0
- package/dist/src/ee/identity-federation/app.d.ts +328 -0
- package/dist/src/ee/identity-federation/app.js +532 -0
- package/dist/src/ee/identity-federation/app.js.map +1 -0
- package/dist/src/ee/identity-federation/idp-login.d.ts +18 -0
- package/dist/src/ee/identity-federation/idp-login.js +98 -0
- package/dist/src/ee/identity-federation/idp-login.js.map +1 -0
- package/dist/src/ee/identity-federation/index.d.ts +15 -0
- package/dist/src/ee/identity-federation/index.js +43 -0
- package/dist/src/ee/identity-federation/index.js.map +1 -0
- package/dist/src/ee/identity-federation/sso.d.ts +24 -0
- package/dist/src/ee/identity-federation/sso.js +124 -0
- package/dist/src/ee/identity-federation/sso.js.map +1 -0
- package/dist/src/ee/identity-federation/types.d.ts +38 -0
- package/dist/src/ee/identity-federation/types.js +2 -0
- package/dist/src/ee/identity-federation/types.js.map +1 -0
- package/dist/src/ee/ory/ory.d.ts +18 -0
- package/dist/src/ee/ory/ory.js +195 -0
- package/dist/src/ee/ory/ory.js.map +1 -0
- package/dist/src/ee/product/index.d.ts +14 -0
- package/dist/src/ee/product/index.js +45 -0
- package/dist/src/ee/product/index.js.map +1 -0
- package/dist/src/event/axios.d.ts +2 -0
- package/dist/src/event/axios.js +27 -0
- package/dist/src/event/axios.js.map +1 -0
- package/dist/src/event/index.d.ts +11 -0
- package/dist/src/event/index.js +53 -0
- package/dist/src/event/index.js.map +1 -0
- package/dist/src/event/types.d.ts +21 -0
- package/dist/src/event/types.js +2 -0
- package/dist/src/event/types.js.map +1 -0
- package/dist/src/event/utils.d.ts +4 -0
- package/dist/src/event/utils.js +33 -0
- package/dist/src/event/utils.js.map +1 -0
- package/dist/src/event/webhook.d.ts +3 -0
- package/dist/src/event/webhook.js +34 -0
- package/dist/src/event/webhook.js.map +1 -0
- package/dist/src/index.d.ts +35 -0
- package/dist/src/index.js +161 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/loadConnection.d.ts +4 -0
- package/dist/src/loadConnection.js +38 -0
- package/dist/src/loadConnection.js.map +1 -0
- package/dist/src/opentelemetry/metrics.d.ts +14 -0
- package/dist/src/opentelemetry/metrics.js +64 -0
- package/dist/src/opentelemetry/metrics.js.map +1 -0
- package/dist/src/saml/claims.d.ts +12 -0
- package/dist/src/saml/claims.js +57 -0
- package/dist/src/saml/claims.js.map +1 -0
- package/dist/src/saml/lib.d.ts +8 -0
- package/dist/src/saml/lib.js +29 -0
- package/dist/src/saml/lib.js.map +1 -0
- package/dist/src/saml/x509.d.ts +9 -0
- package/dist/src/saml/x509.js +93 -0
- package/dist/src/saml/x509.js.map +1 -0
- package/dist/src/sso-traces/index.d.ts +114 -0
- package/dist/src/sso-traces/index.js +229 -0
- package/dist/src/sso-traces/index.js.map +1 -0
- package/dist/src/sso-traces/types.d.ts +44 -0
- package/dist/src/sso-traces/types.js +2 -0
- package/dist/src/sso-traces/types.js.map +1 -0
- package/dist/src/typings.d.ts +540 -0
- package/dist/src/typings.js +5 -0
- package/dist/src/typings.js.map +1 -0
- package/dist/typeorm.d.ts +3 -0
- package/dist/typeorm.js +58 -0
- package/dist/typeorm.js.map +1 -0
- package/dist/typings.d.ts +1 -1
- package/package.json +13 -13
@@ -0,0 +1,101 @@
|
|
1
|
+
import type { Directory, DatabaseStore, WebhookEventLog, DirectorySyncEvent, PaginationParams } from '../../typings';
|
2
|
+
import { Base } from './Base';
|
3
|
+
type GetAllParams = PaginationParams & {
|
4
|
+
directoryId?: string;
|
5
|
+
};
|
6
|
+
/**
|
7
|
+
* @swagger
|
8
|
+
* definitions:
|
9
|
+
* Event:
|
10
|
+
* type: object
|
11
|
+
* example:
|
12
|
+
* {
|
13
|
+
* "id": "id1",
|
14
|
+
* "webhook_endpoint": "https://example.com/webhook",
|
15
|
+
* "created_at": "2024-03-05T17:06:26.074Z",
|
16
|
+
* "status_code": 200,
|
17
|
+
* "delivered": true,
|
18
|
+
* "payload": {
|
19
|
+
* "directory_id": "58b5cd9dfaa39d47eb8f5f88631f9a629a232016",
|
20
|
+
* "event": "user.created",
|
21
|
+
* "tenant": "boxyhq",
|
22
|
+
* "product": "jackson",
|
23
|
+
* "data": {
|
24
|
+
* "id": "038e767b-9bc6-4dbd-975e-fbc38a8e7d82",
|
25
|
+
* "first_name": "Deepak",
|
26
|
+
* "last_name": "Prabhakara",
|
27
|
+
* "email": "deepak@boxyhq.com",
|
28
|
+
* "active": true,
|
29
|
+
* "raw": {
|
30
|
+
* "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
|
31
|
+
* "userName": "deepak@boxyhq.com",
|
32
|
+
* "name": {
|
33
|
+
* "givenName": "Deepak",
|
34
|
+
* "familyName": "Prabhakara"
|
35
|
+
* },
|
36
|
+
* "emails": [
|
37
|
+
* {
|
38
|
+
* "primary": true,
|
39
|
+
* "value": "deepak@boxyhq.com",
|
40
|
+
* "type": "work"
|
41
|
+
* }
|
42
|
+
* ],
|
43
|
+
* "title": "CEO",
|
44
|
+
* "displayName": "Deepak Prabhakara",
|
45
|
+
* "locale": "en-US",
|
46
|
+
* "externalId": "00u1ldzzogFkXFmvT5d7",
|
47
|
+
* "groups": [],
|
48
|
+
* "active": true,
|
49
|
+
* "id": "038e767b-9bc6-4dbd-975e-fbc38a8e7d82"
|
50
|
+
* }
|
51
|
+
* }
|
52
|
+
* }
|
53
|
+
* }
|
54
|
+
*/
|
55
|
+
export declare class WebhookEventsLogger extends Base {
|
56
|
+
constructor({ db }: {
|
57
|
+
db: DatabaseStore;
|
58
|
+
});
|
59
|
+
log(directory: Directory, event: DirectorySyncEvent | DirectorySyncEvent[], status: number): Promise<WebhookEventLog>;
|
60
|
+
get(id: string): Promise<WebhookEventLog>;
|
61
|
+
/**
|
62
|
+
* @swagger
|
63
|
+
* /api/v1/dsync/events:
|
64
|
+
* get:
|
65
|
+
* summary: Get event logs for a directory
|
66
|
+
* parameters:
|
67
|
+
* - $ref: '#/parameters/directoryId'
|
68
|
+
* - $ref: '#/parameters/tenant'
|
69
|
+
* - $ref: '#/parameters/product'
|
70
|
+
* - $ref: '#/parameters/pageOffset'
|
71
|
+
* - $ref: '#/parameters/pageLimit'
|
72
|
+
* - $ref: '#/parameters/pageToken'
|
73
|
+
* tags:
|
74
|
+
* - Directory Sync
|
75
|
+
* produces:
|
76
|
+
* - application/json
|
77
|
+
* responses:
|
78
|
+
* 200:
|
79
|
+
* description: Success
|
80
|
+
* content:
|
81
|
+
* application/json:
|
82
|
+
* schema:
|
83
|
+
* type: object
|
84
|
+
* properties:
|
85
|
+
* data:
|
86
|
+
* type: array
|
87
|
+
* items:
|
88
|
+
* $ref: '#/definitions/Event'
|
89
|
+
* pageToken:
|
90
|
+
* type: string
|
91
|
+
* description: token for pagination
|
92
|
+
*/
|
93
|
+
getAll(params?: GetAllParams): Promise<{
|
94
|
+
data: WebhookEventLog[];
|
95
|
+
pageToken: string | undefined;
|
96
|
+
}>;
|
97
|
+
delete(id: string): Promise<void>;
|
98
|
+
deleteAll(directoryId: string): Promise<void>;
|
99
|
+
private eventStore;
|
100
|
+
}
|
101
|
+
export {};
|
@@ -0,0 +1,165 @@
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
8
|
+
});
|
9
|
+
};
|
10
|
+
import { randomUUID } from 'crypto';
|
11
|
+
import { Base } from './Base';
|
12
|
+
import { webhookLogsTTL } from '../utils';
|
13
|
+
import { indexNames } from './utils';
|
14
|
+
/**
|
15
|
+
* @swagger
|
16
|
+
* definitions:
|
17
|
+
* Event:
|
18
|
+
* type: object
|
19
|
+
* example:
|
20
|
+
* {
|
21
|
+
* "id": "id1",
|
22
|
+
* "webhook_endpoint": "https://example.com/webhook",
|
23
|
+
* "created_at": "2024-03-05T17:06:26.074Z",
|
24
|
+
* "status_code": 200,
|
25
|
+
* "delivered": true,
|
26
|
+
* "payload": {
|
27
|
+
* "directory_id": "58b5cd9dfaa39d47eb8f5f88631f9a629a232016",
|
28
|
+
* "event": "user.created",
|
29
|
+
* "tenant": "boxyhq",
|
30
|
+
* "product": "jackson",
|
31
|
+
* "data": {
|
32
|
+
* "id": "038e767b-9bc6-4dbd-975e-fbc38a8e7d82",
|
33
|
+
* "first_name": "Deepak",
|
34
|
+
* "last_name": "Prabhakara",
|
35
|
+
* "email": "deepak@boxyhq.com",
|
36
|
+
* "active": true,
|
37
|
+
* "raw": {
|
38
|
+
* "schemas": ["urn:ietf:params:scim:schemas:core:2.0:User"],
|
39
|
+
* "userName": "deepak@boxyhq.com",
|
40
|
+
* "name": {
|
41
|
+
* "givenName": "Deepak",
|
42
|
+
* "familyName": "Prabhakara"
|
43
|
+
* },
|
44
|
+
* "emails": [
|
45
|
+
* {
|
46
|
+
* "primary": true,
|
47
|
+
* "value": "deepak@boxyhq.com",
|
48
|
+
* "type": "work"
|
49
|
+
* }
|
50
|
+
* ],
|
51
|
+
* "title": "CEO",
|
52
|
+
* "displayName": "Deepak Prabhakara",
|
53
|
+
* "locale": "en-US",
|
54
|
+
* "externalId": "00u1ldzzogFkXFmvT5d7",
|
55
|
+
* "groups": [],
|
56
|
+
* "active": true,
|
57
|
+
* "id": "038e767b-9bc6-4dbd-975e-fbc38a8e7d82"
|
58
|
+
* }
|
59
|
+
* }
|
60
|
+
* }
|
61
|
+
* }
|
62
|
+
*/
|
63
|
+
export class WebhookEventsLogger extends Base {
|
64
|
+
constructor({ db }) {
|
65
|
+
super({ db });
|
66
|
+
}
|
67
|
+
log(directory, event, status) {
|
68
|
+
return __awaiter(this, void 0, void 0, function* () {
|
69
|
+
const id = randomUUID();
|
70
|
+
const log = {
|
71
|
+
id,
|
72
|
+
payload: event,
|
73
|
+
webhook_endpoint: directory.webhook.endpoint,
|
74
|
+
created_at: new Date(),
|
75
|
+
status_code: status,
|
76
|
+
delivered: status === 200,
|
77
|
+
};
|
78
|
+
yield this.eventStore().put(id, log, {
|
79
|
+
name: indexNames.directoryId,
|
80
|
+
value: directory.id,
|
81
|
+
});
|
82
|
+
return log;
|
83
|
+
});
|
84
|
+
}
|
85
|
+
get(id) {
|
86
|
+
return __awaiter(this, void 0, void 0, function* () {
|
87
|
+
return yield this.eventStore().get(id);
|
88
|
+
});
|
89
|
+
}
|
90
|
+
/**
|
91
|
+
* @swagger
|
92
|
+
* /api/v1/dsync/events:
|
93
|
+
* get:
|
94
|
+
* summary: Get event logs for a directory
|
95
|
+
* parameters:
|
96
|
+
* - $ref: '#/parameters/directoryId'
|
97
|
+
* - $ref: '#/parameters/tenant'
|
98
|
+
* - $ref: '#/parameters/product'
|
99
|
+
* - $ref: '#/parameters/pageOffset'
|
100
|
+
* - $ref: '#/parameters/pageLimit'
|
101
|
+
* - $ref: '#/parameters/pageToken'
|
102
|
+
* tags:
|
103
|
+
* - Directory Sync
|
104
|
+
* produces:
|
105
|
+
* - application/json
|
106
|
+
* responses:
|
107
|
+
* 200:
|
108
|
+
* description: Success
|
109
|
+
* content:
|
110
|
+
* application/json:
|
111
|
+
* schema:
|
112
|
+
* type: object
|
113
|
+
* properties:
|
114
|
+
* data:
|
115
|
+
* type: array
|
116
|
+
* items:
|
117
|
+
* $ref: '#/definitions/Event'
|
118
|
+
* pageToken:
|
119
|
+
* type: string
|
120
|
+
* description: token for pagination
|
121
|
+
*/
|
122
|
+
// Get the event logs for a directory paginated
|
123
|
+
getAll() {
|
124
|
+
return __awaiter(this, arguments, void 0, function* (params = {}) {
|
125
|
+
const { pageOffset, pageLimit, pageToken, directoryId } = params;
|
126
|
+
let result;
|
127
|
+
if (directoryId) {
|
128
|
+
const index = {
|
129
|
+
name: indexNames.directoryId,
|
130
|
+
value: directoryId,
|
131
|
+
};
|
132
|
+
result = yield this.eventStore().getByIndex(index, pageOffset, pageLimit, pageToken);
|
133
|
+
}
|
134
|
+
else {
|
135
|
+
result = yield this.eventStore().getAll(pageOffset, pageLimit, pageToken);
|
136
|
+
}
|
137
|
+
return { data: result.data, pageToken: result.pageToken };
|
138
|
+
});
|
139
|
+
}
|
140
|
+
delete(id) {
|
141
|
+
return __awaiter(this, void 0, void 0, function* () {
|
142
|
+
yield this.eventStore().delete(id);
|
143
|
+
});
|
144
|
+
}
|
145
|
+
// Delete all event logs for a directory
|
146
|
+
deleteAll(directoryId) {
|
147
|
+
return __awaiter(this, void 0, void 0, function* () {
|
148
|
+
while (true) {
|
149
|
+
const { data: events } = yield this.eventStore().getByIndex({
|
150
|
+
name: indexNames.directoryId,
|
151
|
+
value: directoryId,
|
152
|
+
}, 0, this.bulkDeleteBatchSize);
|
153
|
+
if (!events || events.length === 0) {
|
154
|
+
break;
|
155
|
+
}
|
156
|
+
yield this.eventStore().deleteMany(events.map((event) => event.id));
|
157
|
+
}
|
158
|
+
});
|
159
|
+
}
|
160
|
+
// Get the store for the events
|
161
|
+
eventStore() {
|
162
|
+
return this.store('logs', webhookLogsTTL);
|
163
|
+
}
|
164
|
+
}
|
165
|
+
//# sourceMappingURL=WebhookEventsLogger.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"WebhookEventsLogger.js","sourceRoot":"","sources":["../../../../src/directory-sync/scim/WebhookEventsLogger.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
import { Directory, DirectorySyncEvent, DirectorySyncEventType, Group, User } from '../../typings';
|
2
|
+
export declare const transformEventPayload: (event: DirectorySyncEventType, payload: {
|
3
|
+
directory: Directory;
|
4
|
+
group?: Group | null;
|
5
|
+
user?: User | null;
|
6
|
+
}) => DirectorySyncEvent;
|
@@ -0,0 +1,37 @@
|
|
1
|
+
const transformUser = (user) => {
|
2
|
+
return Object.assign(Object.assign({ id: user.id, first_name: user.first_name, last_name: user.last_name, email: user.email, active: user.active }, ('roles' in user ? { roles: user.roles } : undefined)), { raw: user.raw });
|
3
|
+
};
|
4
|
+
const transformGroup = (group) => {
|
5
|
+
return {
|
6
|
+
id: group.id,
|
7
|
+
name: group.name,
|
8
|
+
raw: group.raw,
|
9
|
+
};
|
10
|
+
};
|
11
|
+
const transformUserGroup = (user, group) => {
|
12
|
+
return Object.assign(Object.assign({}, transformUser(user)), { group: transformGroup(group) });
|
13
|
+
};
|
14
|
+
export const transformEventPayload = (event, payload) => {
|
15
|
+
const { directory, group, user } = payload;
|
16
|
+
const { tenant, product, id: directory_id } = directory;
|
17
|
+
const eventPayload = {
|
18
|
+
event,
|
19
|
+
tenant,
|
20
|
+
product,
|
21
|
+
directory_id,
|
22
|
+
};
|
23
|
+
// User events
|
24
|
+
if (['user.created', 'user.updated', 'user.deleted'].includes(event) && user) {
|
25
|
+
eventPayload['data'] = transformUser(user);
|
26
|
+
}
|
27
|
+
// Group events
|
28
|
+
if (['group.created', 'group.updated', 'group.deleted'].includes(event) && group) {
|
29
|
+
eventPayload['data'] = transformGroup(group);
|
30
|
+
}
|
31
|
+
// Group membership events
|
32
|
+
if (['group.user_added', 'group.user_removed'].includes(event) && user && group) {
|
33
|
+
eventPayload['data'] = transformUserGroup(user, group);
|
34
|
+
}
|
35
|
+
return eventPayload;
|
36
|
+
};
|
37
|
+
//# sourceMappingURL=transform.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../../../../src/directory-sync/scim/transform.ts"],"names":[],"mappings":"AAEA,MAAM,aAAa,GAAG,CAAC,IAAU,EAAQ,EAAE;IACzC,qCACE,EAAE,EAAE,IAAI,CAAC,EAAE,EACX,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,MAAM,EAAE,IAAI,CAAC,MAAM,IAChB,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,KACxD,GAAG,EAAE,IAAI,CAAC,GAAG,IACb;AACJ,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAY,EAAS,EAAE;IAC7C,OAAO;QACL,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,EAAE,KAAK,CAAC,GAAG;KACf,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,IAAU,EAAE,KAAY,EAA2B,EAAE;IAC/E,uCACK,aAAa,CAAC,IAAI,CAAC,KACtB,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC,IAC5B;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,KAA6B,EAC7B,OAA2E,EAC3E,EAAE;IACF,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IAExD,MAAM,YAAY,GAAG;QACnB,KAAK;QACL,MAAM;QACN,OAAO;QACP,YAAY;KACb,CAAC;IAEF,cAAc;IACd,IAAI,CAAC,cAAc,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7E,YAAY,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,eAAe;IACf,IAAI,CAAC,eAAe,EAAE,eAAe,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACjF,YAAY,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QAChF,YAAY,CAAC,MAAM,CAAC,GAAG,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,YAAkC,CAAC;AAC5C,CAAC,CAAC"}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import type { DirectoryType, User, UserPatchOperation, GroupPatchOperation } from '../../typings';
|
2
|
+
export declare const indexNames: {
|
3
|
+
directoryIdUsername: string;
|
4
|
+
directoryIdDisplayname: string;
|
5
|
+
directoryId: string;
|
6
|
+
groupId: string;
|
7
|
+
};
|
8
|
+
export declare const parseGroupOperation: (operation: GroupPatchOperation) => {
|
9
|
+
action: string;
|
10
|
+
members: {
|
11
|
+
value: string;
|
12
|
+
display?: string;
|
13
|
+
}[];
|
14
|
+
displayName?: undefined;
|
15
|
+
} | {
|
16
|
+
action: string;
|
17
|
+
displayName: unknown;
|
18
|
+
members?: undefined;
|
19
|
+
} | {
|
20
|
+
action: string;
|
21
|
+
members?: undefined;
|
22
|
+
displayName?: undefined;
|
23
|
+
};
|
24
|
+
export declare const getDirectorySyncProviders: () => {
|
25
|
+
[K: string]: string;
|
26
|
+
};
|
27
|
+
export declare const parseUserPatchRequest: (operation: UserPatchOperation) => {
|
28
|
+
attributes: Partial<User>;
|
29
|
+
rawAttributes: {};
|
30
|
+
};
|
31
|
+
export declare const extractStandardUserAttributes: (body: any) => Omit<User, "raw">;
|
32
|
+
export declare const updateRawUserAttributes: (raw: any, attributes: any) => any;
|
33
|
+
export declare const isSCIMEnabledProvider: (type: DirectoryType) => type is "azure-scim-v2" | "onelogin-scim-v2" | "okta-scim-v2" | "jumpcloud-scim-v2" | "generic-scim-v2";
|
@@ -0,0 +1,129 @@
|
|
1
|
+
import _ from 'lodash';
|
2
|
+
import { DirectorySyncProviders } from '../../typings';
|
3
|
+
export const indexNames = {
|
4
|
+
directoryIdUsername: 'directoryIdUsername',
|
5
|
+
directoryIdDisplayname: 'directoryIdDisplayname',
|
6
|
+
directoryId: 'directoryId',
|
7
|
+
groupId: 'groupId',
|
8
|
+
};
|
9
|
+
const parseUserRoles = (roles) => {
|
10
|
+
if (typeof roles === 'string') {
|
11
|
+
return roles.split(',');
|
12
|
+
}
|
13
|
+
return roles;
|
14
|
+
};
|
15
|
+
export const parseGroupOperation = (operation) => {
|
16
|
+
const { op, path, value } = operation;
|
17
|
+
if (path === 'members' && typeof value == 'object') {
|
18
|
+
if (op === 'add') {
|
19
|
+
return {
|
20
|
+
action: 'addGroupMember',
|
21
|
+
members: value,
|
22
|
+
};
|
23
|
+
}
|
24
|
+
if (op === 'remove') {
|
25
|
+
return {
|
26
|
+
action: 'removeGroupMember',
|
27
|
+
members: value,
|
28
|
+
};
|
29
|
+
}
|
30
|
+
}
|
31
|
+
if (path && path.startsWith('members[value eq')) {
|
32
|
+
if (op === 'remove') {
|
33
|
+
return {
|
34
|
+
action: 'removeGroupMember',
|
35
|
+
members: [{ value: path.split('"')[1] }],
|
36
|
+
};
|
37
|
+
}
|
38
|
+
}
|
39
|
+
// Update group name
|
40
|
+
if (op === 'replace') {
|
41
|
+
if (path == 'displayName' && typeof value == 'string') {
|
42
|
+
return {
|
43
|
+
action: 'updateGroupName',
|
44
|
+
displayName: value,
|
45
|
+
};
|
46
|
+
}
|
47
|
+
else if (typeof value == 'object' && 'displayName' in value) {
|
48
|
+
return {
|
49
|
+
action: 'updateGroupName',
|
50
|
+
displayName: value.displayName,
|
51
|
+
};
|
52
|
+
}
|
53
|
+
}
|
54
|
+
return {
|
55
|
+
action: 'unknown',
|
56
|
+
};
|
57
|
+
};
|
58
|
+
// List of directory sync providers
|
59
|
+
// TODO: Fix the return type
|
60
|
+
export const getDirectorySyncProviders = () => {
|
61
|
+
return Object.entries(DirectorySyncProviders).reduce((acc, [key, value]) => {
|
62
|
+
acc[key] = value;
|
63
|
+
return acc;
|
64
|
+
}, {});
|
65
|
+
};
|
66
|
+
// Parse the PATCH request body and return the user attributes (both standard and custom)
|
67
|
+
export const parseUserPatchRequest = (operation) => {
|
68
|
+
const { value, path } = operation;
|
69
|
+
const attributes = {};
|
70
|
+
const rawAttributes = {};
|
71
|
+
const attributesMap = {
|
72
|
+
active: 'active',
|
73
|
+
'name.givenName': 'first_name',
|
74
|
+
'name.familyName': 'last_name',
|
75
|
+
'emails[type eq "work"].value': 'email',
|
76
|
+
};
|
77
|
+
// If there is a path, then the value is the value
|
78
|
+
// For example { path: "active", value: true }
|
79
|
+
if (path) {
|
80
|
+
if (path in attributesMap) {
|
81
|
+
attributes[attributesMap[path]] = value;
|
82
|
+
}
|
83
|
+
rawAttributes[path] = value;
|
84
|
+
}
|
85
|
+
// If there is no path, then the value can be an object with multiple attributes
|
86
|
+
// For example { value: { active: true, "name.familyName": "John" } }
|
87
|
+
else if (typeof value === 'object') {
|
88
|
+
for (const attribute of Object.keys(value)) {
|
89
|
+
if (attribute in attributesMap) {
|
90
|
+
attributes[attributesMap[attribute]] = value[attribute];
|
91
|
+
}
|
92
|
+
rawAttributes[attribute] = value[attribute];
|
93
|
+
}
|
94
|
+
}
|
95
|
+
return {
|
96
|
+
attributes,
|
97
|
+
rawAttributes,
|
98
|
+
};
|
99
|
+
};
|
100
|
+
// Extract standard attributes from the user body
|
101
|
+
export const extractStandardUserAttributes = (body) => {
|
102
|
+
const { name, emails, userName, active, userId, roles } = body;
|
103
|
+
const userAttributes = {
|
104
|
+
first_name: name && 'givenName' in name ? name.givenName : '',
|
105
|
+
last_name: name && 'familyName' in name ? name.familyName : '',
|
106
|
+
email: emails && emails.length > 0 ? emails[0].value : userName,
|
107
|
+
active: 'active' in body ? active : true,
|
108
|
+
id: userId || '', // For non-SCIM providers, the id will exist in the body
|
109
|
+
};
|
110
|
+
if (roles) {
|
111
|
+
userAttributes['roles'] = parseUserRoles(roles);
|
112
|
+
}
|
113
|
+
return userAttributes;
|
114
|
+
};
|
115
|
+
// Update raw user attributes
|
116
|
+
export const updateRawUserAttributes = (raw, attributes) => {
|
117
|
+
const keys = Object.keys(attributes);
|
118
|
+
if (keys.length === 0) {
|
119
|
+
return raw;
|
120
|
+
}
|
121
|
+
for (const key of keys) {
|
122
|
+
_.set(raw, key, attributes[key]);
|
123
|
+
}
|
124
|
+
return raw;
|
125
|
+
};
|
126
|
+
export const isSCIMEnabledProvider = (type) => {
|
127
|
+
return type !== 'google';
|
128
|
+
};
|
129
|
+
//# sourceMappingURL=utils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/directory-sync/scim/utils.ts"],"names":[],"mappings":"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"}
|