@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.
Files changed (332) hide show
  1. package/dist/controller/api.js +17 -7
  2. package/dist/controller/api.js.map +1 -1
  3. package/dist/controller/connection/oidc.js +17 -7
  4. package/dist/controller/connection/oidc.js.map +1 -1
  5. package/dist/controller/connection/saml.js +17 -7
  6. package/dist/controller/connection/saml.js.map +1 -1
  7. package/dist/controller/logout.js +17 -7
  8. package/dist/controller/logout.js.map +1 -1
  9. package/dist/controller/oauth/oidc-client.d.ts +9 -4
  10. package/dist/controller/oauth/oidc-client.js +80 -11
  11. package/dist/controller/oauth/oidc-client.js.map +1 -1
  12. package/dist/controller/oauth/oidc-issuer.d.ts +2 -0
  13. package/dist/controller/oauth/oidc-issuer.js +25 -0
  14. package/dist/controller/oauth/oidc-issuer.js.map +1 -0
  15. package/dist/controller/oauth.js +97 -46
  16. package/dist/controller/oauth.js.map +1 -1
  17. package/dist/controller/setup-link.js +17 -7
  18. package/dist/controller/setup-link.js.map +1 -1
  19. package/dist/controller/sso-handler.d.ts +10 -2
  20. package/dist/controller/sso-handler.js +34 -12
  21. package/dist/controller/sso-handler.js.map +1 -1
  22. package/dist/controller/utils.d.ts +5 -3
  23. package/dist/controller/utils.js +27 -9
  24. package/dist/controller/utils.js.map +1 -1
  25. package/dist/db/db.js +17 -7
  26. package/dist/db/db.js.map +1 -1
  27. package/dist/db/dynamoDb.js +17 -7
  28. package/dist/db/dynamoDb.js.map +1 -1
  29. package/dist/db/mem.js +17 -7
  30. package/dist/db/mem.js.map +1 -1
  31. package/dist/db/mongo.js +17 -7
  32. package/dist/db/mongo.js.map +1 -1
  33. package/dist/db/redis.js +17 -7
  34. package/dist/db/redis.js.map +1 -1
  35. package/dist/db/sql/sql.js +17 -7
  36. package/dist/db/sql/sql.js.map +1 -1
  37. package/dist/db/store.js +17 -7
  38. package/dist/db/store.js.map +1 -1
  39. package/dist/directory-sync/batch-events/queue.js +17 -7
  40. package/dist/directory-sync/batch-events/queue.js.map +1 -1
  41. package/dist/directory-sync/scim/DirectoryConfig.js +17 -7
  42. package/dist/directory-sync/scim/DirectoryConfig.js.map +1 -1
  43. package/dist/directory-sync/scim/Groups.js +17 -7
  44. package/dist/directory-sync/scim/Groups.js.map +1 -1
  45. package/dist/ee/identity-federation/idp-login.js +20 -14
  46. package/dist/ee/identity-federation/idp-login.js.map +1 -1
  47. package/dist/ee/identity-federation/sso.js +16 -11
  48. package/dist/ee/identity-federation/sso.js.map +1 -1
  49. package/dist/event/axios.d.ts +2 -1
  50. package/dist/index.js +17 -7
  51. package/dist/index.js.map +1 -1
  52. package/dist/loadConnection.js +17 -7
  53. package/dist/loadConnection.js.map +1 -1
  54. package/dist/saml/lib.js +17 -7
  55. package/dist/saml/lib.js.map +1 -1
  56. package/dist/saml/x509.js +17 -7
  57. package/dist/saml/x509.js.map +1 -1
  58. package/dist/src/controller/admin.d.ts +27 -0
  59. package/dist/src/controller/admin.js +60 -0
  60. package/dist/src/controller/admin.js.map +1 -0
  61. package/dist/src/controller/analytics.d.ts +16 -0
  62. package/dist/src/controller/analytics.js +79 -0
  63. package/dist/src/controller/analytics.js.map +1 -0
  64. package/dist/src/controller/api.d.ts +557 -0
  65. package/dist/src/controller/api.js +806 -0
  66. package/dist/src/controller/api.js.map +1 -0
  67. package/dist/src/controller/connection/oidc.d.ts +7 -0
  68. package/dist/src/controller/connection/oidc.js +181 -0
  69. package/dist/src/controller/connection/oidc.js.map +1 -0
  70. package/dist/src/controller/connection/saml.d.ts +7 -0
  71. package/dist/src/controller/connection/saml.js +250 -0
  72. package/dist/src/controller/connection/saml.js.map +1 -0
  73. package/dist/src/controller/error.d.ts +10 -0
  74. package/dist/src/controller/error.js +13 -0
  75. package/dist/src/controller/error.js.map +1 -0
  76. package/dist/src/controller/health-check.d.ts +11 -0
  77. package/dist/src/controller/health-check.js +51 -0
  78. package/dist/src/controller/health-check.js.map +1 -0
  79. package/dist/src/controller/logout.d.ts +18 -0
  80. package/dist/src/controller/logout.js +132 -0
  81. package/dist/src/controller/logout.js.map +1 -0
  82. package/dist/src/controller/oauth/allowed.d.ts +1 -0
  83. package/dist/src/controller/oauth/allowed.js +30 -0
  84. package/dist/src/controller/oauth/allowed.js.map +1 -0
  85. package/dist/src/controller/oauth/code-verifier.d.ts +1 -0
  86. package/dist/src/controller/oauth/code-verifier.js +8 -0
  87. package/dist/src/controller/oauth/code-verifier.js.map +1 -0
  88. package/dist/src/controller/oauth/oidc-client.d.ts +12 -0
  89. package/dist/src/controller/oauth/oidc-client.js +89 -0
  90. package/dist/src/controller/oauth/oidc-client.js.map +1 -0
  91. package/dist/src/controller/oauth/redirect.d.ts +1 -0
  92. package/dist/src/controller/oauth/redirect.js +13 -0
  93. package/dist/src/controller/oauth/redirect.js.map +1 -0
  94. package/dist/src/controller/oauth.d.ts +142 -0
  95. package/dist/src/controller/oauth.js +1112 -0
  96. package/dist/src/controller/oauth.js.map +1 -0
  97. package/dist/src/controller/oidc-discovery.d.ts +22 -0
  98. package/dist/src/controller/oidc-discovery.js +47 -0
  99. package/dist/src/controller/oidc-discovery.js.map +1 -0
  100. package/dist/src/controller/setup-link.d.ts +307 -0
  101. package/dist/src/controller/setup-link.js +462 -0
  102. package/dist/src/controller/setup-link.js.map +1 -0
  103. package/dist/src/controller/sp-config.d.ts +22 -0
  104. package/dist/src/controller/sp-config.js +89 -0
  105. package/dist/src/controller/sp-config.js.map +1 -0
  106. package/dist/src/controller/sso-handler.d.ts +66 -0
  107. package/dist/src/controller/sso-handler.js +306 -0
  108. package/dist/src/controller/sso-handler.js.map +1 -0
  109. package/dist/src/controller/utils.d.ts +84 -0
  110. package/dist/src/controller/utils.js +328 -0
  111. package/dist/src/controller/utils.js.map +1 -0
  112. package/dist/src/cron/lock.d.ts +18 -0
  113. package/dist/src/cron/lock.js +98 -0
  114. package/dist/src/cron/lock.js.map +1 -0
  115. package/dist/src/db/db.d.ts +5 -0
  116. package/dist/src/db/db.js +178 -0
  117. package/dist/src/db/db.js.map +1 -0
  118. package/dist/src/db/defaultDb.d.ts +2 -0
  119. package/dist/src/db/defaultDb.js +18 -0
  120. package/dist/src/db/defaultDb.js.map +1 -0
  121. package/dist/src/db/dynamoDb.d.ts +19 -0
  122. package/dist/src/db/dynamoDb.js +320 -0
  123. package/dist/src/db/dynamoDb.js.map +1 -0
  124. package/dist/src/db/encrypter.d.ts +3 -0
  125. package/dist/src/db/encrypter.js +22 -0
  126. package/dist/src/db/encrypter.js.map +1 -0
  127. package/dist/src/db/mem.d.ts +23 -0
  128. package/dist/src/db/mem.js +186 -0
  129. package/dist/src/db/mem.js.map +1 -0
  130. package/dist/src/db/mongo.d.ts +22 -0
  131. package/dist/src/db/mongo.js +177 -0
  132. package/dist/src/db/mongo.js.map +1 -0
  133. package/dist/src/db/planetscale/entity/JacksonIndex.d.ts +5 -0
  134. package/dist/src/db/planetscale/entity/JacksonIndex.js +32 -0
  135. package/dist/src/db/planetscale/entity/JacksonIndex.js.map +1 -0
  136. package/dist/src/db/planetscale/entity/JacksonStore.d.ts +9 -0
  137. package/dist/src/db/planetscale/entity/JacksonStore.js +63 -0
  138. package/dist/src/db/planetscale/entity/JacksonStore.js.map +1 -0
  139. package/dist/src/db/planetscale/entity/JacksonTTL.d.ts +4 -0
  140. package/dist/src/db/planetscale/entity/JacksonTTL.js +27 -0
  141. package/dist/src/db/planetscale/entity/JacksonTTL.js.map +1 -0
  142. package/dist/src/db/redis.d.ts +18 -0
  143. package/dist/src/db/redis.js +214 -0
  144. package/dist/src/db/redis.js.map +1 -0
  145. package/dist/src/db/sql/entity/JacksonIndex.d.ts +7 -0
  146. package/dist/src/db/sql/entity/JacksonIndex.js +39 -0
  147. package/dist/src/db/sql/entity/JacksonIndex.js.map +1 -0
  148. package/dist/src/db/sql/entity/JacksonStore.d.ts +9 -0
  149. package/dist/src/db/sql/entity/JacksonStore.js +61 -0
  150. package/dist/src/db/sql/entity/JacksonStore.js.map +1 -0
  151. package/dist/src/db/sql/entity/JacksonTTL.d.ts +4 -0
  152. package/dist/src/db/sql/entity/JacksonTTL.js +27 -0
  153. package/dist/src/db/sql/entity/JacksonTTL.js.map +1 -0
  154. package/dist/src/db/sql/mariadb/entity/JacksonIndex.d.ts +7 -0
  155. package/dist/src/db/sql/mariadb/entity/JacksonIndex.js +39 -0
  156. package/dist/src/db/sql/mariadb/entity/JacksonIndex.js.map +1 -0
  157. package/dist/src/db/sql/mariadb/entity/JacksonStore.d.ts +9 -0
  158. package/dist/src/db/sql/mariadb/entity/JacksonStore.js +63 -0
  159. package/dist/src/db/sql/mariadb/entity/JacksonStore.js.map +1 -0
  160. package/dist/src/db/sql/mariadb/entity/JacksonTTL.d.ts +4 -0
  161. package/dist/src/db/sql/mariadb/entity/JacksonTTL.js +27 -0
  162. package/dist/src/db/sql/mariadb/entity/JacksonTTL.js.map +1 -0
  163. package/dist/src/db/sql/mssql/entity/JacksonIndex.d.ts +7 -0
  164. package/dist/src/db/sql/mssql/entity/JacksonIndex.js +39 -0
  165. package/dist/src/db/sql/mssql/entity/JacksonIndex.js.map +1 -0
  166. package/dist/src/db/sql/mssql/entity/JacksonStore.d.ts +9 -0
  167. package/dist/src/db/sql/mssql/entity/JacksonStore.js +61 -0
  168. package/dist/src/db/sql/mssql/entity/JacksonStore.js.map +1 -0
  169. package/dist/src/db/sql/mssql/entity/JacksonTTL.d.ts +4 -0
  170. package/dist/src/db/sql/mssql/entity/JacksonTTL.js +27 -0
  171. package/dist/src/db/sql/mssql/entity/JacksonTTL.js.map +1 -0
  172. package/dist/src/db/sql/mssql.d.ts +1 -0
  173. package/dist/src/db/sql/mssql.js +44 -0
  174. package/dist/src/db/sql/mssql.js.map +1 -0
  175. package/dist/src/db/sql/sql.d.ts +32 -0
  176. package/dist/src/db/sql/sql.js +318 -0
  177. package/dist/src/db/sql/sql.js.map +1 -0
  178. package/dist/src/db/sql/sqlite/entity/JacksonIndex.d.ts +7 -0
  179. package/dist/src/db/sql/sqlite/entity/JacksonIndex.js +39 -0
  180. package/dist/src/db/sql/sqlite/entity/JacksonIndex.js.map +1 -0
  181. package/dist/src/db/sql/sqlite/entity/JacksonStore.d.ts +9 -0
  182. package/dist/src/db/sql/sqlite/entity/JacksonStore.js +61 -0
  183. package/dist/src/db/sql/sqlite/entity/JacksonStore.js.map +1 -0
  184. package/dist/src/db/sql/sqlite/entity/JacksonTTL.d.ts +4 -0
  185. package/dist/src/db/sql/sqlite/entity/JacksonTTL.js +27 -0
  186. package/dist/src/db/sql/sqlite/entity/JacksonTTL.js.map +1 -0
  187. package/dist/src/db/store.d.ts +5 -0
  188. package/dist/src/db/store.js +65 -0
  189. package/dist/src/db/store.js.map +1 -0
  190. package/dist/src/db/utils.d.ts +16 -0
  191. package/dist/src/db/utils.js +28 -0
  192. package/dist/src/db/utils.js.map +1 -0
  193. package/dist/src/directory-sync/batch-events/queue.d.ts +40 -0
  194. package/dist/src/directory-sync/batch-events/queue.js +225 -0
  195. package/dist/src/directory-sync/batch-events/queue.js.map +1 -0
  196. package/dist/src/directory-sync/index.d.ts +27 -0
  197. package/dist/src/directory-sync/index.js +97 -0
  198. package/dist/src/directory-sync/index.js.map +1 -0
  199. package/dist/src/directory-sync/non-scim/google/api.d.ts +36 -0
  200. package/dist/src/directory-sync/non-scim/google/api.js +143 -0
  201. package/dist/src/directory-sync/non-scim/google/api.js.map +1 -0
  202. package/dist/src/directory-sync/non-scim/google/index.d.ts +12 -0
  203. package/dist/src/directory-sync/non-scim/google/index.js +10 -0
  204. package/dist/src/directory-sync/non-scim/google/index.js.map +1 -0
  205. package/dist/src/directory-sync/non-scim/google/oauth.d.ts +27 -0
  206. package/dist/src/directory-sync/non-scim/google/oauth.js +105 -0
  207. package/dist/src/directory-sync/non-scim/google/oauth.js.map +1 -0
  208. package/dist/src/directory-sync/non-scim/index.d.ts +24 -0
  209. package/dist/src/directory-sync/non-scim/index.js +85 -0
  210. package/dist/src/directory-sync/non-scim/index.js.map +1 -0
  211. package/dist/src/directory-sync/non-scim/syncGroupMembers.d.ts +23 -0
  212. package/dist/src/directory-sync/non-scim/syncGroupMembers.js +105 -0
  213. package/dist/src/directory-sync/non-scim/syncGroupMembers.js.map +1 -0
  214. package/dist/src/directory-sync/non-scim/syncGroups.d.ts +24 -0
  215. package/dist/src/directory-sync/non-scim/syncGroups.js +120 -0
  216. package/dist/src/directory-sync/non-scim/syncGroups.js.map +1 -0
  217. package/dist/src/directory-sync/non-scim/syncUsers.d.ts +24 -0
  218. package/dist/src/directory-sync/non-scim/syncUsers.js +120 -0
  219. package/dist/src/directory-sync/non-scim/syncUsers.js.map +1 -0
  220. package/dist/src/directory-sync/non-scim/utils.d.ts +36 -0
  221. package/dist/src/directory-sync/non-scim/utils.js +109 -0
  222. package/dist/src/directory-sync/non-scim/utils.js.map +1 -0
  223. package/dist/src/directory-sync/request.d.ts +14 -0
  224. package/dist/src/directory-sync/request.js +29 -0
  225. package/dist/src/directory-sync/request.js.map +1 -0
  226. package/dist/src/directory-sync/scim/Base.d.ts +12 -0
  227. package/dist/src/directory-sync/scim/Base.js +23 -0
  228. package/dist/src/directory-sync/scim/Base.js.map +1 -0
  229. package/dist/src/directory-sync/scim/DirectoryConfig.d.ts +343 -0
  230. package/dist/src/directory-sync/scim/DirectoryConfig.js +580 -0
  231. package/dist/src/directory-sync/scim/DirectoryConfig.js.map +1 -0
  232. package/dist/src/directory-sync/scim/DirectoryGroups.d.ts +28 -0
  233. package/dist/src/directory-sync/scim/DirectoryGroups.js +252 -0
  234. package/dist/src/directory-sync/scim/DirectoryGroups.js.map +1 -0
  235. package/dist/src/directory-sync/scim/DirectoryUsers.d.ts +25 -0
  236. package/dist/src/directory-sync/scim/DirectoryUsers.js +193 -0
  237. package/dist/src/directory-sync/scim/DirectoryUsers.js.map +1 -0
  238. package/dist/src/directory-sync/scim/Groups.d.ts +166 -0
  239. package/dist/src/directory-sync/scim/Groups.js +348 -0
  240. package/dist/src/directory-sync/scim/Groups.js.map +1 -0
  241. package/dist/src/directory-sync/scim/Users.d.ts +99 -0
  242. package/dist/src/directory-sync/scim/Users.js +215 -0
  243. package/dist/src/directory-sync/scim/Users.js.map +1 -0
  244. package/dist/src/directory-sync/scim/WebhookEventsLogger.d.ts +101 -0
  245. package/dist/src/directory-sync/scim/WebhookEventsLogger.js +165 -0
  246. package/dist/src/directory-sync/scim/WebhookEventsLogger.js.map +1 -0
  247. package/dist/src/directory-sync/scim/transform.d.ts +6 -0
  248. package/dist/src/directory-sync/scim/transform.js +37 -0
  249. package/dist/src/directory-sync/scim/transform.js.map +1 -0
  250. package/dist/src/directory-sync/scim/utils.d.ts +33 -0
  251. package/dist/src/directory-sync/scim/utils.js +129 -0
  252. package/dist/src/directory-sync/scim/utils.js.map +1 -0
  253. package/dist/src/directory-sync/types.d.ts +195 -0
  254. package/dist/src/directory-sync/types.js +10 -0
  255. package/dist/src/directory-sync/types.js.map +1 -0
  256. package/dist/src/directory-sync/utils.d.ts +19 -0
  257. package/dist/src/directory-sync/utils.js +56 -0
  258. package/dist/src/directory-sync/utils.js.map +1 -0
  259. package/dist/src/ee/branding/index.d.ts +17 -0
  260. package/dist/src/ee/branding/index.js +49 -0
  261. package/dist/src/ee/branding/index.js.map +1 -0
  262. package/dist/src/ee/common/checkLicense.d.ts +3 -0
  263. package/dist/src/ee/common/checkLicense.js +23 -0
  264. package/dist/src/ee/common/checkLicense.js.map +1 -0
  265. package/dist/src/ee/identity-federation/app.d.ts +328 -0
  266. package/dist/src/ee/identity-federation/app.js +532 -0
  267. package/dist/src/ee/identity-federation/app.js.map +1 -0
  268. package/dist/src/ee/identity-federation/idp-login.d.ts +18 -0
  269. package/dist/src/ee/identity-federation/idp-login.js +98 -0
  270. package/dist/src/ee/identity-federation/idp-login.js.map +1 -0
  271. package/dist/src/ee/identity-federation/index.d.ts +15 -0
  272. package/dist/src/ee/identity-federation/index.js +43 -0
  273. package/dist/src/ee/identity-federation/index.js.map +1 -0
  274. package/dist/src/ee/identity-federation/sso.d.ts +24 -0
  275. package/dist/src/ee/identity-federation/sso.js +124 -0
  276. package/dist/src/ee/identity-federation/sso.js.map +1 -0
  277. package/dist/src/ee/identity-federation/types.d.ts +38 -0
  278. package/dist/src/ee/identity-federation/types.js +2 -0
  279. package/dist/src/ee/identity-federation/types.js.map +1 -0
  280. package/dist/src/ee/ory/ory.d.ts +18 -0
  281. package/dist/src/ee/ory/ory.js +195 -0
  282. package/dist/src/ee/ory/ory.js.map +1 -0
  283. package/dist/src/ee/product/index.d.ts +14 -0
  284. package/dist/src/ee/product/index.js +45 -0
  285. package/dist/src/ee/product/index.js.map +1 -0
  286. package/dist/src/event/axios.d.ts +2 -0
  287. package/dist/src/event/axios.js +27 -0
  288. package/dist/src/event/axios.js.map +1 -0
  289. package/dist/src/event/index.d.ts +11 -0
  290. package/dist/src/event/index.js +53 -0
  291. package/dist/src/event/index.js.map +1 -0
  292. package/dist/src/event/types.d.ts +21 -0
  293. package/dist/src/event/types.js +2 -0
  294. package/dist/src/event/types.js.map +1 -0
  295. package/dist/src/event/utils.d.ts +4 -0
  296. package/dist/src/event/utils.js +33 -0
  297. package/dist/src/event/utils.js.map +1 -0
  298. package/dist/src/event/webhook.d.ts +3 -0
  299. package/dist/src/event/webhook.js +34 -0
  300. package/dist/src/event/webhook.js.map +1 -0
  301. package/dist/src/index.d.ts +35 -0
  302. package/dist/src/index.js +161 -0
  303. package/dist/src/index.js.map +1 -0
  304. package/dist/src/loadConnection.d.ts +4 -0
  305. package/dist/src/loadConnection.js +38 -0
  306. package/dist/src/loadConnection.js.map +1 -0
  307. package/dist/src/opentelemetry/metrics.d.ts +14 -0
  308. package/dist/src/opentelemetry/metrics.js +64 -0
  309. package/dist/src/opentelemetry/metrics.js.map +1 -0
  310. package/dist/src/saml/claims.d.ts +12 -0
  311. package/dist/src/saml/claims.js +57 -0
  312. package/dist/src/saml/claims.js.map +1 -0
  313. package/dist/src/saml/lib.d.ts +8 -0
  314. package/dist/src/saml/lib.js +29 -0
  315. package/dist/src/saml/lib.js.map +1 -0
  316. package/dist/src/saml/x509.d.ts +9 -0
  317. package/dist/src/saml/x509.js +93 -0
  318. package/dist/src/saml/x509.js.map +1 -0
  319. package/dist/src/sso-traces/index.d.ts +114 -0
  320. package/dist/src/sso-traces/index.js +229 -0
  321. package/dist/src/sso-traces/index.js.map +1 -0
  322. package/dist/src/sso-traces/types.d.ts +44 -0
  323. package/dist/src/sso-traces/types.js +2 -0
  324. package/dist/src/sso-traces/types.js.map +1 -0
  325. package/dist/src/typings.d.ts +540 -0
  326. package/dist/src/typings.js +5 -0
  327. package/dist/src/typings.js.map +1 -0
  328. package/dist/typeorm.d.ts +3 -0
  329. package/dist/typeorm.js +58 -0
  330. package/dist/typeorm.js.map +1 -0
  331. package/dist/typings.d.ts +1 -1
  332. package/package.json +13 -13
@@ -0,0 +1,348 @@
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 * as dbutils from '../../db/utils';
12
+ import { apiError, JacksonError } from '../../controller/error';
13
+ import { Base } from './Base';
14
+ import { indexNames } from './utils';
15
+ /**
16
+ * @swagger
17
+ * parameters:
18
+ * groupId:
19
+ * name: groupId
20
+ * description: Group ID
21
+ * in: path
22
+ * required: true
23
+ * type: string
24
+ * tenant:
25
+ * name: tenant
26
+ * description: Tenant (Optional if directoryId is provided)
27
+ * in: query
28
+ * required: false
29
+ * type: string
30
+ * product:
31
+ * name: product
32
+ * in: query
33
+ * description: Product (Optional if directoryId is provided)
34
+ * required: false
35
+ * type: string
36
+ * directoryId:
37
+ * name: directoryId
38
+ * description: Directory ID (Optional if tenant/product is provided)
39
+ * in: query
40
+ * required: false
41
+ * type: string
42
+ */
43
+ /**
44
+ * @swagger
45
+ * definitions:
46
+ * Group:
47
+ * type: object
48
+ * properties:
49
+ * id:
50
+ * type: string
51
+ * description: Group ID
52
+ * name:
53
+ * type: string
54
+ * description: Group name
55
+ * raw:
56
+ * type: object
57
+ * description: Raw group attributes from the Identity Provider
58
+ */
59
+ export class Groups extends Base {
60
+ constructor({ db }) {
61
+ super({ db });
62
+ }
63
+ // Create a new group
64
+ create(params) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ const { directoryId, name, raw, id: groupId } = params;
67
+ const id = groupId || randomUUID();
68
+ raw['id'] = id;
69
+ const group = {
70
+ id,
71
+ name,
72
+ raw,
73
+ };
74
+ try {
75
+ yield this.store('groups').put(id, group, {
76
+ name: indexNames.directoryIdDisplayname,
77
+ value: dbutils.keyFromParts(directoryId, name),
78
+ }, {
79
+ name: indexNames.directoryId,
80
+ value: directoryId,
81
+ });
82
+ return { data: group, error: null };
83
+ }
84
+ catch (err) {
85
+ return apiError(err);
86
+ }
87
+ });
88
+ }
89
+ /**
90
+ * @swagger
91
+ * /api/v1/dsync/groups/{groupId}:
92
+ * get:
93
+ * summary: Get group by id from a directory
94
+ * parameters:
95
+ * - $ref: '#/parameters/tenant'
96
+ * - $ref: '#/parameters/product'
97
+ * - $ref: '#/parameters/directoryId'
98
+ * - $ref: '#/parameters/groupId'
99
+ * tags:
100
+ * - Directory Sync
101
+ * produces:
102
+ * - application/json
103
+ * responses:
104
+ * 200:
105
+ * description: Success
106
+ * schema:
107
+ * $ref: '#/definitions/Group'
108
+ */
109
+ get(id) {
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ try {
112
+ const group = yield this.store('groups').get(id);
113
+ if (!group) {
114
+ throw new JacksonError(`Group with id ${id} not found.`, 404);
115
+ }
116
+ return { data: group, error: null };
117
+ }
118
+ catch (err) {
119
+ return apiError(err);
120
+ }
121
+ });
122
+ }
123
+ // Update the group data
124
+ update(id, param) {
125
+ return __awaiter(this, void 0, void 0, function* () {
126
+ const { name, raw } = param;
127
+ const group = {
128
+ id,
129
+ name,
130
+ raw,
131
+ };
132
+ try {
133
+ yield this.store('groups').put(id, group);
134
+ return { data: group, error: null };
135
+ }
136
+ catch (err) {
137
+ return apiError(err);
138
+ }
139
+ });
140
+ }
141
+ // Delete a group by id
142
+ delete(id) {
143
+ return __awaiter(this, void 0, void 0, function* () {
144
+ try {
145
+ const { data, error } = yield this.get(id);
146
+ if (error || !data) {
147
+ throw error;
148
+ }
149
+ yield this.store('groups').delete(id);
150
+ yield this.removeAllUsers(id);
151
+ return { data: null, error: null };
152
+ }
153
+ catch (err) {
154
+ return apiError(err);
155
+ }
156
+ });
157
+ }
158
+ // Add a user to a group
159
+ addUserToGroup(groupId, userId) {
160
+ return __awaiter(this, void 0, void 0, function* () {
161
+ const id = dbutils.keyDigest(dbutils.keyFromParts(groupId, userId));
162
+ yield this.store('members').put(id, {
163
+ id: id,
164
+ group_id: groupId,
165
+ user_id: userId,
166
+ }, {
167
+ name: indexNames.groupId,
168
+ value: groupId,
169
+ });
170
+ });
171
+ }
172
+ // Remove a user from a group
173
+ removeUserFromGroup(groupId, userId) {
174
+ return __awaiter(this, void 0, void 0, function* () {
175
+ const id = dbutils.keyDigest(dbutils.keyFromParts(groupId, userId));
176
+ yield this.store('members').delete(id);
177
+ });
178
+ }
179
+ // Check if a user is a member of a group
180
+ isUserInGroup(groupId, userId) {
181
+ return __awaiter(this, void 0, void 0, function* () {
182
+ const id = dbutils.keyDigest(dbutils.keyFromParts(groupId, userId));
183
+ return !!(yield this.store('members').get(id));
184
+ });
185
+ }
186
+ // Search groups by displayName
187
+ search(displayName, directoryId) {
188
+ return __awaiter(this, void 0, void 0, function* () {
189
+ try {
190
+ const { data: groups } = yield this.store('groups').getByIndex({
191
+ name: indexNames.directoryIdDisplayname,
192
+ value: dbutils.keyFromParts(directoryId, displayName),
193
+ });
194
+ return { data: groups, error: null };
195
+ }
196
+ catch (err) {
197
+ return apiError(err);
198
+ }
199
+ });
200
+ }
201
+ /**
202
+ * @swagger
203
+ * /api/v1/dsync/groups:
204
+ * get:
205
+ * summary: Get groups from a directory
206
+ * parameters:
207
+ * - $ref: '#/parameters/tenant'
208
+ * - $ref: '#/parameters/product'
209
+ * - $ref: '#/parameters/directoryId'
210
+ * - $ref: '#/parameters/pageOffset'
211
+ * - $ref: '#/parameters/pageLimit'
212
+ * - $ref: '#/parameters/pageToken'
213
+ * tags:
214
+ * - Directory Sync
215
+ * produces:
216
+ * - application/json
217
+ * responses:
218
+ * 200:
219
+ * description: Success
220
+ * content:
221
+ * application/json:
222
+ * schema:
223
+ * type: object
224
+ * properties:
225
+ * data:
226
+ * type: array
227
+ * items:
228
+ * $ref: '#/definitions/Group'
229
+ * pageToken:
230
+ * type: string
231
+ * description: token for pagination
232
+ */
233
+ getAll(params) {
234
+ return __awaiter(this, void 0, void 0, function* () {
235
+ const { pageOffset, pageLimit, pageToken, directoryId } = params;
236
+ try {
237
+ let result;
238
+ // Filter by directoryId
239
+ if (directoryId) {
240
+ const index = {
241
+ name: indexNames.directoryId,
242
+ value: directoryId,
243
+ };
244
+ result = yield this.store('groups').getByIndex(index, pageOffset, pageLimit, pageToken);
245
+ }
246
+ else {
247
+ result = yield this.store('groups').getAll(pageOffset, pageLimit, pageToken);
248
+ }
249
+ return { data: result.data, error: null, pageToken: result.pageToken };
250
+ }
251
+ catch (err) {
252
+ return apiError(err);
253
+ }
254
+ });
255
+ }
256
+ /**
257
+ * @swagger
258
+ * definitions:
259
+ * Member:
260
+ * type: object
261
+ * properties:
262
+ * user_id:
263
+ * type: string
264
+ * description: ID of the user
265
+ * /api/v1/dsync/groups/{groupId}/members:
266
+ * get:
267
+ * summary: Get list of members in a group
268
+ * parameters:
269
+ * - $ref: '#/parameters/tenant'
270
+ * - $ref: '#/parameters/product'
271
+ * - $ref: '#/parameters/groupId'
272
+ * - $ref: '#/parameters/directoryId'
273
+ * - $ref: '#/parameters/pageOffset'
274
+ * - $ref: '#/parameters/pageLimit'
275
+ * - $ref: '#/parameters/pageToken'
276
+ * tags:
277
+ * - Directory Sync
278
+ * produces:
279
+ * - application/json
280
+ * responses:
281
+ * 200:
282
+ * description: Success
283
+ * content:
284
+ * application/json:
285
+ * schema:
286
+ * type: object
287
+ * properties:
288
+ * data:
289
+ * type: array
290
+ * items:
291
+ * $ref: '#/definitions/Member'
292
+ */
293
+ getGroupMembers(parmas) {
294
+ return __awaiter(this, void 0, void 0, function* () {
295
+ const { groupId, pageOffset, pageLimit } = parmas;
296
+ try {
297
+ const { data } = (yield this.store('members').getByIndex({
298
+ name: indexNames.groupId,
299
+ value: groupId,
300
+ }, pageOffset, pageLimit));
301
+ const members = data.map((member) => {
302
+ return {
303
+ user_id: member.user_id,
304
+ };
305
+ });
306
+ return { data: members, error: null };
307
+ }
308
+ catch (err) {
309
+ return apiError(err);
310
+ }
311
+ });
312
+ }
313
+ // Delete all groups from a directory
314
+ deleteAll(directoryId) {
315
+ return __awaiter(this, void 0, void 0, function* () {
316
+ while (true) {
317
+ const { data: groups } = yield this.store('groups').getByIndex({
318
+ name: indexNames.directoryId,
319
+ value: directoryId,
320
+ }, 0, this.bulkDeleteBatchSize);
321
+ if (!groups || groups.length === 0) {
322
+ break;
323
+ }
324
+ const keys = groups.map((group) => group.id);
325
+ yield this.store('groups').deleteMany(keys);
326
+ for (const key of keys) {
327
+ yield this.removeAllUsers(key);
328
+ }
329
+ }
330
+ });
331
+ }
332
+ // Remove all users from a group
333
+ removeAllUsers(groupId) {
334
+ return __awaiter(this, void 0, void 0, function* () {
335
+ while (true) {
336
+ const { data: members } = yield this.store('members').getByIndex({
337
+ name: indexNames.groupId,
338
+ value: groupId,
339
+ }, 0, this.bulkDeleteBatchSize);
340
+ if (!members || members.length === 0) {
341
+ break;
342
+ }
343
+ yield this.store('members').deleteMany(members.map((member) => member.id));
344
+ }
345
+ });
346
+ }
347
+ }
348
+ //# sourceMappingURL=Groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Groups.js","sourceRoot":"","sources":["../../../../src/directory-sync/scim/Groups.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,99 @@
1
+ import type { User, DatabaseStore, PaginationParams, Response } from '../../typings';
2
+ import { Base } from './Base';
3
+ /**
4
+ * @swagger
5
+ * definitions:
6
+ * User:
7
+ * type: object
8
+ * properties:
9
+ * id:
10
+ * type: string
11
+ * description: User ID
12
+ * first_name:
13
+ * type: string
14
+ * description: First name
15
+ * last_name:
16
+ * type: string
17
+ * description: Last name
18
+ * email:
19
+ * type: string
20
+ * description: Email address
21
+ * active:
22
+ * type: boolean
23
+ * description: Indicates whether the user is active or not
24
+ * raw:
25
+ * type: object
26
+ * description: Raw user attributes from the Identity Provider
27
+ */
28
+ export declare class Users extends Base {
29
+ constructor({ db }: {
30
+ db: DatabaseStore;
31
+ });
32
+ create(user: User & {
33
+ directoryId: string;
34
+ }): Promise<Response<User>>;
35
+ /**
36
+ * @swagger
37
+ * /api/v1/dsync/users/{userId}:
38
+ * get:
39
+ * summary: Get user by id from a directory
40
+ * parameters:
41
+ * - $ref: '#/parameters/tenant'
42
+ * - $ref: '#/parameters/product'
43
+ * - $ref: '#/parameters/directoryId'
44
+ * - name: userId
45
+ * description: User ID
46
+ * in: path
47
+ * required: true
48
+ * type: string
49
+ * tags:
50
+ * - Directory Sync
51
+ * produces:
52
+ * - application/json
53
+ * responses:
54
+ * 200:
55
+ * description: Success
56
+ * schema:
57
+ * $ref: '#/definitions/User'
58
+ */
59
+ get(id: string): Promise<Response<User>>;
60
+ update(id: string, user: User): Promise<Response<User>>;
61
+ delete(id: string): Promise<Response<null>>;
62
+ search(userName: string, directoryId: string): Promise<Response<User[]>>;
63
+ /**
64
+ * @swagger
65
+ * /api/v1/dsync/users:
66
+ * get:
67
+ * summary: Get users from a directory
68
+ * parameters:
69
+ * - $ref: '#/parameters/tenant'
70
+ * - $ref: '#/parameters/product'
71
+ * - $ref: '#/parameters/directoryId'
72
+ * - $ref: '#/parameters/pageOffset'
73
+ * - $ref: '#/parameters/pageLimit'
74
+ * - $ref: '#/parameters/pageToken'
75
+ * tags:
76
+ * - Directory Sync
77
+ * produces:
78
+ * - application/json
79
+ * responses:
80
+ * 200:
81
+ * description: Success
82
+ * content:
83
+ * application/json:
84
+ * schema:
85
+ * type: object
86
+ * properties:
87
+ * data:
88
+ * type: array
89
+ * items:
90
+ * $ref: '#/definitions/User'
91
+ * pageToken:
92
+ * type: string
93
+ * description: token for pagination
94
+ */
95
+ getAll({ pageOffset, pageLimit, pageToken, directoryId, }?: PaginationParams & {
96
+ directoryId?: string;
97
+ }): Promise<Response<User[]>>;
98
+ deleteAll(directoryId: string): Promise<void>;
99
+ }
@@ -0,0 +1,215 @@
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 { apiError, JacksonError } from '../../controller/error';
11
+ import { Base } from './Base';
12
+ import { keyFromParts } from '../../db/utils';
13
+ import { indexNames } from './utils';
14
+ /**
15
+ * @swagger
16
+ * definitions:
17
+ * User:
18
+ * type: object
19
+ * properties:
20
+ * id:
21
+ * type: string
22
+ * description: User ID
23
+ * first_name:
24
+ * type: string
25
+ * description: First name
26
+ * last_name:
27
+ * type: string
28
+ * description: Last name
29
+ * email:
30
+ * type: string
31
+ * description: Email address
32
+ * active:
33
+ * type: boolean
34
+ * description: Indicates whether the user is active or not
35
+ * raw:
36
+ * type: object
37
+ * description: Raw user attributes from the Identity Provider
38
+ */
39
+ export class Users extends Base {
40
+ constructor({ db }) {
41
+ super({ db });
42
+ }
43
+ // Create a new user
44
+ create(user) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const { directoryId, id, email } = user;
47
+ try {
48
+ yield this.store('users').put(id, user, {
49
+ name: indexNames.directoryIdUsername,
50
+ value: keyFromParts(directoryId, email),
51
+ }, {
52
+ name: indexNames.directoryId,
53
+ value: directoryId,
54
+ });
55
+ return { data: user, error: null };
56
+ }
57
+ catch (err) {
58
+ return apiError(err);
59
+ }
60
+ });
61
+ }
62
+ /**
63
+ * @swagger
64
+ * /api/v1/dsync/users/{userId}:
65
+ * get:
66
+ * summary: Get user by id from a directory
67
+ * parameters:
68
+ * - $ref: '#/parameters/tenant'
69
+ * - $ref: '#/parameters/product'
70
+ * - $ref: '#/parameters/directoryId'
71
+ * - name: userId
72
+ * description: User ID
73
+ * in: path
74
+ * required: true
75
+ * type: string
76
+ * tags:
77
+ * - Directory Sync
78
+ * produces:
79
+ * - application/json
80
+ * responses:
81
+ * 200:
82
+ * description: Success
83
+ * schema:
84
+ * $ref: '#/definitions/User'
85
+ */
86
+ get(id) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ try {
89
+ const user = yield this.store('users').get(id);
90
+ if (user === null) {
91
+ throw new JacksonError('User not found', 404);
92
+ }
93
+ return { data: user, error: null };
94
+ }
95
+ catch (err) {
96
+ return apiError(err);
97
+ }
98
+ });
99
+ }
100
+ // Update the user data
101
+ update(id, user) {
102
+ return __awaiter(this, void 0, void 0, function* () {
103
+ const { raw } = user;
104
+ raw['id'] = id;
105
+ const updatedUser = Object.assign(Object.assign({}, user), { raw });
106
+ try {
107
+ yield this.store('users').put(id, updatedUser);
108
+ return { data: updatedUser, error: null };
109
+ }
110
+ catch (err) {
111
+ return apiError(err);
112
+ }
113
+ });
114
+ }
115
+ // Delete a user by id
116
+ delete(id) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ try {
119
+ const { data, error } = yield this.get(id);
120
+ if (error || !data) {
121
+ throw error;
122
+ }
123
+ yield this.store('users').delete(id);
124
+ return { data: null, error: null };
125
+ }
126
+ catch (err) {
127
+ return apiError(err);
128
+ }
129
+ });
130
+ }
131
+ // Search users by userName
132
+ search(userName, directoryId) {
133
+ return __awaiter(this, void 0, void 0, function* () {
134
+ try {
135
+ const { data: users } = yield this.store('users').getByIndex({
136
+ name: indexNames.directoryIdUsername,
137
+ value: keyFromParts(directoryId, userName),
138
+ });
139
+ return { data: users, error: null };
140
+ }
141
+ catch (err) {
142
+ return apiError(err);
143
+ }
144
+ });
145
+ }
146
+ /**
147
+ * @swagger
148
+ * /api/v1/dsync/users:
149
+ * get:
150
+ * summary: Get users from a directory
151
+ * parameters:
152
+ * - $ref: '#/parameters/tenant'
153
+ * - $ref: '#/parameters/product'
154
+ * - $ref: '#/parameters/directoryId'
155
+ * - $ref: '#/parameters/pageOffset'
156
+ * - $ref: '#/parameters/pageLimit'
157
+ * - $ref: '#/parameters/pageToken'
158
+ * tags:
159
+ * - Directory Sync
160
+ * produces:
161
+ * - application/json
162
+ * responses:
163
+ * 200:
164
+ * description: Success
165
+ * content:
166
+ * application/json:
167
+ * schema:
168
+ * type: object
169
+ * properties:
170
+ * data:
171
+ * type: array
172
+ * items:
173
+ * $ref: '#/definitions/User'
174
+ * pageToken:
175
+ * type: string
176
+ * description: token for pagination
177
+ */
178
+ getAll() {
179
+ return __awaiter(this, arguments, void 0, function* ({ pageOffset, pageLimit, pageToken, directoryId, } = {}) {
180
+ try {
181
+ let result;
182
+ // Filter by directoryId
183
+ if (directoryId) {
184
+ result = yield this.store('users').getByIndex({
185
+ name: indexNames.directoryId,
186
+ value: directoryId,
187
+ }, pageOffset, pageLimit, pageToken);
188
+ }
189
+ else {
190
+ result = yield this.store('users').getAll(pageOffset, pageLimit, pageToken);
191
+ }
192
+ return { data: result.data, error: null, pageToken: result.pageToken };
193
+ }
194
+ catch (err) {
195
+ return apiError(err);
196
+ }
197
+ });
198
+ }
199
+ // Delete all users from a directory
200
+ deleteAll(directoryId) {
201
+ return __awaiter(this, void 0, void 0, function* () {
202
+ while (true) {
203
+ const { data: users } = yield this.store('users').getByIndex({
204
+ name: indexNames.directoryId,
205
+ value: directoryId,
206
+ }, 0, this.bulkDeleteBatchSize);
207
+ if (!users || users.length === 0) {
208
+ break;
209
+ }
210
+ yield this.store('users').deleteMany(users.map((user) => user.id));
211
+ }
212
+ });
213
+ }
214
+ }
215
+ //# sourceMappingURL=Users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Users.js","sourceRoot":"","sources":["../../../../src/directory-sync/scim/Users.ts"],"names":[],"mappings":"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"}