@proconnect-gouv/proconnect.identite 1.0.0

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 (252) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/dist/data/organization/domains-whitelist.d.ts +2 -0
  3. package/dist/data/organization/domains-whitelist.d.ts.map +1 -0
  4. package/dist/data/organization/domains-whitelist.js +7 -0
  5. package/dist/data/organization/index.d.ts +2 -0
  6. package/dist/data/organization/index.d.ts.map +1 -0
  7. package/dist/data/organization/index.js +2 -0
  8. package/dist/errors/index.d.ts +22 -0
  9. package/dist/errors/index.d.ts.map +1 -0
  10. package/dist/errors/index.js +43 -0
  11. package/dist/managers/certification/distance.d.ts +4 -0
  12. package/dist/managers/certification/distance.d.ts.map +1 -0
  13. package/dist/managers/certification/distance.js +16 -0
  14. package/dist/managers/certification/index.d.ts +3 -0
  15. package/dist/managers/certification/index.d.ts.map +1 -0
  16. package/dist/managers/certification/index.js +3 -0
  17. package/dist/managers/certification/is-organization-dirigeant.d.ts +15 -0
  18. package/dist/managers/certification/is-organization-dirigeant.d.ts.map +1 -0
  19. package/dist/managers/certification/is-organization-dirigeant.js +60 -0
  20. package/dist/managers/franceconnect/index.d.ts +2 -0
  21. package/dist/managers/franceconnect/index.d.ts.map +1 -0
  22. package/dist/managers/franceconnect/index.js +2 -0
  23. package/dist/managers/franceconnect/openid-client.d.ts +37 -0
  24. package/dist/managers/franceconnect/openid-client.d.ts.map +1 -0
  25. package/dist/managers/franceconnect/openid-client.js +54 -0
  26. package/dist/managers/organization/force-join-organization.d.ts +29 -0
  27. package/dist/managers/organization/force-join-organization.d.ts.map +1 -0
  28. package/dist/managers/organization/force-join-organization.js +33 -0
  29. package/dist/managers/organization/get-organization-info.d.ts +5 -0
  30. package/dist/managers/organization/get-organization-info.d.ts.map +1 -0
  31. package/dist/managers/organization/get-organization-info.js +33 -0
  32. package/dist/managers/organization/index.d.ts +4 -0
  33. package/dist/managers/organization/index.d.ts.map +1 -0
  34. package/dist/managers/organization/index.js +4 -0
  35. package/dist/managers/organization/mark-domain-as-verified.d.ts +20 -0
  36. package/dist/managers/organization/mark-domain-as-verified.d.ts.map +1 -0
  37. package/dist/managers/organization/mark-domain-as-verified.js +63 -0
  38. package/dist/managers/user/assign-user-verification-type-to-domain.d.ts +10 -0
  39. package/dist/managers/user/assign-user-verification-type-to-domain.d.ts.map +1 -0
  40. package/dist/managers/user/assign-user-verification-type-to-domain.js +21 -0
  41. package/dist/managers/user/index.d.ts +2 -0
  42. package/dist/managers/user/index.d.ts.map +1 -0
  43. package/dist/managers/user/index.js +1 -0
  44. package/dist/mappers/certification/index.d.ts +4 -0
  45. package/dist/mappers/certification/index.d.ts.map +1 -0
  46. package/dist/mappers/certification/index.js +11 -0
  47. package/dist/mappers/index.d.ts +2 -0
  48. package/dist/mappers/index.d.ts.map +1 -0
  49. package/dist/mappers/index.js +2 -0
  50. package/dist/mappers/organization/from-siret.d.ts +5 -0
  51. package/dist/mappers/organization/from-siret.d.ts.map +1 -0
  52. package/dist/mappers/organization/from-siret.js +51 -0
  53. package/dist/mappers/organization/index.d.ts +2 -0
  54. package/dist/mappers/organization/index.d.ts.map +1 -0
  55. package/dist/mappers/organization/index.js +2 -0
  56. package/dist/repositories/email-domain/add-domain.d.ts +8 -0
  57. package/dist/repositories/email-domain/add-domain.d.ts.map +1 -0
  58. package/dist/repositories/email-domain/add-domain.js +25 -0
  59. package/dist/repositories/email-domain/delete-email-domains-by-verification-types.d.ts +8 -0
  60. package/dist/repositories/email-domain/delete-email-domains-by-verification-types.d.ts.map +1 -0
  61. package/dist/repositories/email-domain/delete-email-domains-by-verification-types.js +21 -0
  62. package/dist/repositories/email-domain/find-email-domains-by-organization-id.d.ts +4 -0
  63. package/dist/repositories/email-domain/find-email-domains-by-organization-id.d.ts.map +1 -0
  64. package/dist/repositories/email-domain/find-email-domains-by-organization-id.js +11 -0
  65. package/dist/repositories/email-domain/index.d.ts +12 -0
  66. package/dist/repositories/email-domain/index.d.ts.map +1 -0
  67. package/dist/repositories/email-domain/index.js +3 -0
  68. package/dist/repositories/organization/find-by-id.d.ts +4 -0
  69. package/dist/repositories/organization/find-by-id.d.ts.map +1 -0
  70. package/dist/repositories/organization/find-by-id.js +11 -0
  71. package/dist/repositories/organization/find-by-user-id.d.ts +12 -0
  72. package/dist/repositories/organization/find-by-user-id.d.ts.map +1 -0
  73. package/dist/repositories/organization/find-by-user-id.js +22 -0
  74. package/dist/repositories/organization/get-by-id.d.ts +4 -0
  75. package/dist/repositories/organization/get-by-id.d.ts.map +1 -0
  76. package/dist/repositories/organization/get-by-id.js +15 -0
  77. package/dist/repositories/organization/get-users-by-organization.d.ts +12 -0
  78. package/dist/repositories/organization/get-users-by-organization.d.ts.map +1 -0
  79. package/dist/repositories/organization/get-users-by-organization.js +23 -0
  80. package/dist/repositories/organization/index.d.ts +7 -0
  81. package/dist/repositories/organization/index.d.ts.map +1 -0
  82. package/dist/repositories/organization/index.js +7 -0
  83. package/dist/repositories/organization/link-user-to-organization.d.ts +16 -0
  84. package/dist/repositories/organization/link-user-to-organization.d.ts.map +1 -0
  85. package/dist/repositories/organization/link-user-to-organization.js +22 -0
  86. package/dist/repositories/organization/upsert.d.ts +7 -0
  87. package/dist/repositories/organization/upsert.d.ts.map +1 -0
  88. package/dist/repositories/organization/upsert.js +103 -0
  89. package/dist/repositories/user/create.d.ts +7 -0
  90. package/dist/repositories/user/create.d.ts.map +1 -0
  91. package/dist/repositories/user/create.js +25 -0
  92. package/dist/repositories/user/find-by-email.d.ts +4 -0
  93. package/dist/repositories/user/find-by-email.d.ts.map +1 -0
  94. package/dist/repositories/user/find-by-email.js +12 -0
  95. package/dist/repositories/user/find-by-id.d.ts +4 -0
  96. package/dist/repositories/user/find-by-id.d.ts.map +1 -0
  97. package/dist/repositories/user/find-by-id.js +13 -0
  98. package/dist/repositories/user/get-by-id.d.ts +4 -0
  99. package/dist/repositories/user/get-by-id.d.ts.map +1 -0
  100. package/dist/repositories/user/get-by-id.js +15 -0
  101. package/dist/repositories/user/get-franceconnect-user-info.d.ts +15 -0
  102. package/dist/repositories/user/get-franceconnect-user-info.d.ts.map +1 -0
  103. package/dist/repositories/user/get-franceconnect-user-info.js +13 -0
  104. package/dist/repositories/user/index.d.ts +9 -0
  105. package/dist/repositories/user/index.d.ts.map +1 -0
  106. package/dist/repositories/user/index.js +9 -0
  107. package/dist/repositories/user/update-user-organization-link.d.ts +16 -0
  108. package/dist/repositories/user/update-user-organization-link.d.ts.map +1 -0
  109. package/dist/repositories/user/update-user-organization-link.js +20 -0
  110. package/dist/repositories/user/update.d.ts +4 -0
  111. package/dist/repositories/user/update.d.ts.map +1 -0
  112. package/dist/repositories/user/update.js +19 -0
  113. package/dist/repositories/user/upsert-franceconnect-userinfo.d.ts +15 -0
  114. package/dist/repositories/user/upsert-franceconnect-userinfo.d.ts.map +1 -0
  115. package/dist/repositories/user/upsert-franceconnect-userinfo.js +23 -0
  116. package/dist/services/organization/index.d.ts +3 -0
  117. package/dist/services/organization/index.d.ts.map +1 -0
  118. package/dist/services/organization/index.js +3 -0
  119. package/dist/services/organization/is-domain-allowed-for-organization.d.ts +2 -0
  120. package/dist/services/organization/is-domain-allowed-for-organization.d.ts.map +1 -0
  121. package/dist/services/organization/is-domain-allowed-for-organization.js +8 -0
  122. package/dist/services/organization/is-entreprise-unipersonnelle.d.ts +9 -0
  123. package/dist/services/organization/is-entreprise-unipersonnelle.d.ts.map +1 -0
  124. package/dist/services/organization/is-entreprise-unipersonnelle.js +18 -0
  125. package/dist/services/postgres/hash-to-postgres-params.d.ts +6 -0
  126. package/dist/services/postgres/hash-to-postgres-params.d.ts.map +1 -0
  127. package/dist/services/postgres/hash-to-postgres-params.js +21 -0
  128. package/dist/services/postgres/index.d.ts +2 -0
  129. package/dist/services/postgres/index.d.ts.map +1 -0
  130. package/dist/services/postgres/index.js +2 -0
  131. package/dist/types/claims.d.ts +16 -0
  132. package/dist/types/claims.d.ts.map +1 -0
  133. package/dist/types/claims.js +16 -0
  134. package/dist/types/contexts.d.ts +5 -0
  135. package/dist/types/contexts.d.ts.map +1 -0
  136. package/dist/types/contexts.js +2 -0
  137. package/dist/types/dirigeant.d.ts +9 -0
  138. package/dist/types/dirigeant.d.ts.map +1 -0
  139. package/dist/types/dirigeant.js +9 -0
  140. package/dist/types/email-domain.d.ts +25 -0
  141. package/dist/types/email-domain.d.ts.map +1 -0
  142. package/dist/types/email-domain.js +14 -0
  143. package/dist/types/franceconnect.d.ts +28 -0
  144. package/dist/types/franceconnect.d.ts.map +1 -0
  145. package/dist/types/franceconnect.js +22 -0
  146. package/dist/types/index.d.ts +10 -0
  147. package/dist/types/index.d.ts.map +1 -0
  148. package/dist/types/index.js +10 -0
  149. package/dist/types/organization-info.d.ts +27 -0
  150. package/dist/types/organization-info.d.ts.map +1 -0
  151. package/dist/types/organization-info.js +26 -0
  152. package/dist/types/organization.d.ts +26 -0
  153. package/dist/types/organization.d.ts.map +1 -0
  154. package/dist/types/organization.js +2 -0
  155. package/dist/types/user-organization-link.d.ts +92 -0
  156. package/dist/types/user-organization-link.d.ts.map +1 -0
  157. package/dist/types/user-organization-link.js +44 -0
  158. package/dist/types/user.d.ts +28 -0
  159. package/dist/types/user.d.ts.map +1 -0
  160. package/dist/types/user.js +2 -0
  161. package/package.json +68 -0
  162. package/src/data/organization/domains-whitelist.ts +8 -0
  163. package/src/data/organization/index.ts +3 -0
  164. package/src/errors/index.ts +50 -0
  165. package/src/managers/certification/distance.test.ts +109 -0
  166. package/src/managers/certification/distance.ts +41 -0
  167. package/src/managers/certification/index.ts +4 -0
  168. package/src/managers/certification/is-organization-dirigeant.test.ts +125 -0
  169. package/src/managers/certification/is-organization-dirigeant.ts +136 -0
  170. package/src/managers/franceconnect/index.ts +3 -0
  171. package/src/managers/franceconnect/openid-client.ts +131 -0
  172. package/src/managers/organization/force-join-organization.test.ts +94 -0
  173. package/src/managers/organization/force-join-organization.ts +90 -0
  174. package/src/managers/organization/get-organization-info.test.ts +47 -0
  175. package/src/managers/organization/get-organization-info.test.ts.snapshot +68 -0
  176. package/src/managers/organization/get-organization-info.ts +58 -0
  177. package/src/managers/organization/index.ts +5 -0
  178. package/src/managers/organization/mark-domain-as-verified.test.ts +90 -0
  179. package/src/managers/organization/mark-domain-as-verified.test.ts.snapshot +52 -0
  180. package/src/managers/organization/mark-domain-as-verified.ts +140 -0
  181. package/src/managers/user/assign-user-verification-type-to-domain.ts +50 -0
  182. package/src/managers/user/index.ts +1 -0
  183. package/src/mappers/certification/index.ts +18 -0
  184. package/src/mappers/index.ts +3 -0
  185. package/src/mappers/organization/from-siret.test.ts +26 -0
  186. package/src/mappers/organization/from-siret.test.ts.snapshot +68 -0
  187. package/src/mappers/organization/from-siret.ts +75 -0
  188. package/src/mappers/organization/index.ts +3 -0
  189. package/src/repositories/email-domain/add-domain.test.ts +43 -0
  190. package/src/repositories/email-domain/add-domain.ts +48 -0
  191. package/src/repositories/email-domain/delete-email-domains-by-verification-types.test.ts +49 -0
  192. package/src/repositories/email-domain/delete-email-domains-by-verification-types.ts +45 -0
  193. package/src/repositories/email-domain/find-email-domains-by-organization-id.test.ts +55 -0
  194. package/src/repositories/email-domain/find-email-domains-by-organization-id.ts +28 -0
  195. package/src/repositories/email-domain/index.ts +13 -0
  196. package/src/repositories/organization/find-by-id.test.ts +51 -0
  197. package/src/repositories/organization/find-by-id.ts +22 -0
  198. package/src/repositories/organization/find-by-user-id.test.ts +70 -0
  199. package/src/repositories/organization/find-by-user-id.test.ts.snapshot +102 -0
  200. package/src/repositories/organization/find-by-user-id.ts +38 -0
  201. package/src/repositories/organization/get-by-id.test.ts +60 -0
  202. package/src/repositories/organization/get-by-id.ts +21 -0
  203. package/src/repositories/organization/get-users-by-organization.test.ts +50 -0
  204. package/src/repositories/organization/get-users-by-organization.test.ts.snapshot +38 -0
  205. package/src/repositories/organization/get-users-by-organization.ts +46 -0
  206. package/src/repositories/organization/index.ts +8 -0
  207. package/src/repositories/organization/link-user-to-organization.test.ts +65 -0
  208. package/src/repositories/organization/link-user-to-organization.test.ts.snapshot +31 -0
  209. package/src/repositories/organization/link-user-to-organization.ts +45 -0
  210. package/src/repositories/organization/upsert.ts +142 -0
  211. package/src/repositories/organization/upset.test.ts +95 -0
  212. package/src/repositories/user/create.test.ts +49 -0
  213. package/src/repositories/user/create.ts +44 -0
  214. package/src/repositories/user/find-by-email.test.ts +62 -0
  215. package/src/repositories/user/find-by-email.ts +22 -0
  216. package/src/repositories/user/find-by-id.test.ts +64 -0
  217. package/src/repositories/user/find-by-id.ts +23 -0
  218. package/src/repositories/user/get-by-id.test.ts +63 -0
  219. package/src/repositories/user/get-by-id.ts +21 -0
  220. package/src/repositories/user/get-franceconnect-user-info.test.ts +58 -0
  221. package/src/repositories/user/get-franceconnect-user-info.ts +25 -0
  222. package/src/repositories/user/index.ts +10 -0
  223. package/src/repositories/user/update-user-organization-link.test.ts +46 -0
  224. package/src/repositories/user/update-user-organization-link.ts +42 -0
  225. package/src/repositories/user/update.test.ts +26 -0
  226. package/src/repositories/user/update.ts +34 -0
  227. package/src/repositories/user/upsert-franceconnect-userinfo.test.ts +100 -0
  228. package/src/repositories/user/upsert-franceconnect-userinfo.ts +41 -0
  229. package/src/services/organization/index.ts +4 -0
  230. package/src/services/organization/is-domain-allowed-for-organization.ts +10 -0
  231. package/src/services/organization/is-entreprise-unipersonnelle.test.ts +32 -0
  232. package/src/services/organization/is-entreprise-unipersonnelle.ts +31 -0
  233. package/src/services/postgres/hash-to-postgres-params.ts +34 -0
  234. package/src/services/postgres/index.ts +3 -0
  235. package/src/types/claims.ts +21 -0
  236. package/src/types/contexts.ts +9 -0
  237. package/src/types/dirigeant.ts +13 -0
  238. package/src/types/email-domain.ts +48 -0
  239. package/src/types/franceconnect.ts +37 -0
  240. package/src/types/index.ts +11 -0
  241. package/src/types/organization-info.ts +32 -0
  242. package/src/types/organization.ts +30 -0
  243. package/src/types/user-organization-link.ts +71 -0
  244. package/src/types/user.ts +29 -0
  245. package/testing/index.ts +31 -0
  246. package/testing/seed/franceconnect/index.ts +40 -0
  247. package/testing/seed/insee/index.ts +22 -0
  248. package/testing/seed/mandataires/index.ts +32 -0
  249. package/testing/seed/organizations/index.ts +41 -0
  250. package/tsconfig.json +17 -0
  251. package/tsconfig.lib.json +9 -0
  252. package/tsconfig.lib.tsbuildinfo +1 -0
@@ -0,0 +1,63 @@
1
+ //
2
+ import { NotFoundError } from "#src/errors";
3
+ import { assignUserVerificationTypeToDomainFactory } from "#src/managers/user";
4
+ import { EMAIL_DOMAIN_APPROVED_VERIFICATION_TYPES, EMAIL_DOMAIN_REJECTED_VERIFICATION_TYPES, } from "@proconnect-gouv/proconnect.identite/types";
5
+ import { isEmpty } from "lodash-es";
6
+ import { match } from "ts-pattern";
7
+ export function markDomainAsVerifiedFactory({ addDomain, deleteEmailDomainsByVerificationTypes, findOrganizationById, getUsers, updateUserOrganizationLink, }) {
8
+ const assignUserVerificationTypeToDomain = assignUserVerificationTypeToDomainFactory({
9
+ getUsers,
10
+ updateUserOrganizationLink,
11
+ });
12
+ return async function markDomainAsVerified({ organization_id, domain, domain_verification_type, }) {
13
+ const organization = await findOrganizationById(organization_id);
14
+ if (isEmpty(organization)) {
15
+ throw new NotFoundError();
16
+ }
17
+ return match(domain_verification_type)
18
+ .with(EMAIL_DOMAIN_APPROVED_VERIFICATION_TYPES.enum.official_contact, EMAIL_DOMAIN_APPROVED_VERIFICATION_TYPES.enum.trackdechets_postal_mail, EMAIL_DOMAIN_APPROVED_VERIFICATION_TYPES.enum.verified, ...EMAIL_DOMAIN_APPROVED_VERIFICATION_TYPES.options, async (approved_verification_type) => {
19
+ await assignUserVerificationTypeToDomain(organization_id, domain);
20
+ return markDomainAsApproved({
21
+ organization_id,
22
+ domain,
23
+ domain_verification_type: approved_verification_type,
24
+ });
25
+ })
26
+ .with(EMAIL_DOMAIN_REJECTED_VERIFICATION_TYPES.enum.blacklisted, EMAIL_DOMAIN_REJECTED_VERIFICATION_TYPES.enum.external, EMAIL_DOMAIN_REJECTED_VERIFICATION_TYPES.enum.refused, ...EMAIL_DOMAIN_REJECTED_VERIFICATION_TYPES.options, (rejected_verification_type) => markDomainAsRejected({
27
+ organization_id,
28
+ domain,
29
+ domain_verification_type: rejected_verification_type,
30
+ }))
31
+ .exhaustive();
32
+ };
33
+ async function markDomainAsApproved({ organization_id, domain, domain_verification_type, }) {
34
+ await deleteEmailDomainsByVerificationTypes({
35
+ organization_id,
36
+ domain,
37
+ domain_verification_types: [
38
+ ...EMAIL_DOMAIN_APPROVED_VERIFICATION_TYPES.options,
39
+ null,
40
+ ],
41
+ });
42
+ return addDomain({
43
+ organization_id,
44
+ domain,
45
+ verification_type: domain_verification_type,
46
+ });
47
+ }
48
+ async function markDomainAsRejected({ organization_id, domain, domain_verification_type, }) {
49
+ await deleteEmailDomainsByVerificationTypes({
50
+ organization_id,
51
+ domain,
52
+ domain_verification_types: [
53
+ null,
54
+ ...EMAIL_DOMAIN_REJECTED_VERIFICATION_TYPES.options,
55
+ ],
56
+ });
57
+ return addDomain({
58
+ organization_id,
59
+ domain,
60
+ verification_type: domain_verification_type,
61
+ });
62
+ }
63
+ }
@@ -0,0 +1,10 @@
1
+ import type { GetUsersByOrganizationHandler } from "#src/repositories/organization";
2
+ import type { UpdateUserOrganizationLinkHandler } from "#src/repositories/user";
3
+ type FactoryDependencies = {
4
+ getUsers: GetUsersByOrganizationHandler;
5
+ updateUserOrganizationLink: UpdateUserOrganizationLinkHandler;
6
+ };
7
+ export declare function assignUserVerificationTypeToDomainFactory({ getUsers, updateUserOrganizationLink, }: FactoryDependencies): (organization_id: number, domain: string) => Promise<void>;
8
+ export type AssignUserVerificationTypeToDomainFactoryHandler = ReturnType<typeof assignUserVerificationTypeToDomainFactory>;
9
+ export {};
10
+ //# sourceMappingURL=assign-user-verification-type-to-domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assign-user-verification-type-to-domain.d.ts","sourceRoot":"","sources":["../../../src/managers/user/assign-user-verification-type-to-domain.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAKhF,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,6BAA6B,CAAC;IACxC,0BAA0B,EAAE,iCAAiC,CAAC;CAC/D,CAAC;AAEF,wBAAgB,yCAAyC,CAAC,EACxD,QAAQ,EACR,0BAA0B,GAC3B,EAAE,mBAAmB,IAElB,iBAAiB,MAAM,EACvB,QAAQ,MAAM,mBA0BjB;AAED,MAAM,MAAM,gDAAgD,GAAG,UAAU,CACvE,OAAO,yCAAyC,CACjD,CAAC"}
@@ -0,0 +1,21 @@
1
+ //
2
+ import { getEmailDomain } from "@proconnect-gouv/proconnect.core/services/email";
3
+ export function assignUserVerificationTypeToDomainFactory({ getUsers, updateUserOrganizationLink, }) {
4
+ return async function assignUserVerificationTypeToDomain(organization_id, domain) {
5
+ const usersInOrganization = await getUsers(organization_id);
6
+ await Promise.all(usersInOrganization.map(({ id, email, verification_type: link_verification_type }) => {
7
+ const userDomain = getEmailDomain(email);
8
+ if (userDomain === domain &&
9
+ [
10
+ null,
11
+ "no_verification_means_available",
12
+ "no_verification_means_for_entreprise_unipersonnelle",
13
+ ].includes(link_verification_type)) {
14
+ return updateUserOrganizationLink(organization_id, id, {
15
+ verification_type: "domain",
16
+ });
17
+ }
18
+ return null;
19
+ }));
20
+ };
21
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./assign-user-verification-type-to-domain.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/managers/user/index.ts"],"names":[],"mappings":"AAAA,cAAc,8CAA8C,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "./assign-user-verification-type-to-domain.js";
@@ -0,0 +1,4 @@
1
+ import type { IdentityVector } from "#src/types";
2
+ import type { InfogreffeSirenMandatairesSociaux } from "@proconnect-gouv/proconnect.entreprise/types";
3
+ export declare function fromInfogreffe(mandataire: InfogreffeSirenMandatairesSociaux): IdentityVector;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mappers/certification/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,8CAA8C,CAAC;AAItG,wBAAgB,cAAc,CAC5B,UAAU,EAAE,iCAAiC,GAC5C,cAAc,CAQhB"}
@@ -0,0 +1,11 @@
1
+ //
2
+ //
3
+ export function fromInfogreffe(mandataire) {
4
+ const birthdate = new Date(mandataire.date_naissance_timestamp || NaN);
5
+ return {
6
+ birthplace: mandataire.lieu_naissance ?? null,
7
+ birthdate: isNaN(birthdate.getTime()) ? null : birthdate,
8
+ family_name: mandataire.nom ?? null,
9
+ given_name: mandataire.prenom ?? null,
10
+ };
11
+ }
@@ -0,0 +1,2 @@
1
+ export * as OrganizationInfoMapper from "./organization/index.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mappers/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,sBAAsB,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,2 @@
1
+ //
2
+ export * as OrganizationInfoMapper from "./organization/index.js";
@@ -0,0 +1,5 @@
1
+ import "#src/types";
2
+ import { type OrganizationInfo } from "#src/types";
3
+ import type { InseeSireneEstablishmentSiretResponseData } from "@proconnect-gouv/proconnect.entreprise/types";
4
+ export declare function fromSiret(siretData: InseeSireneEstablishmentSiretResponseData): OrganizationInfo;
5
+ //# sourceMappingURL=from-siret.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"from-siret.d.ts","sourceRoot":"","sources":["../../../src/mappers/organization/from-siret.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,CAAC;AACpB,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAO3E,OAAO,KAAK,EAAE,yCAAyC,EAAE,MAAM,8CAA8C,CAAC;AAK9G,wBAAgB,SAAS,CACvB,SAAS,EAAE,yCAAyC,GACnD,gBAAgB,CAyDlB"}
@@ -0,0 +1,51 @@
1
+ //
2
+ import "#src/types";
3
+ import { OrganizationInfoSchema } from "#src/types";
4
+ import { formatAddress, formatMainActivity, formatNomComplet, libelleFromCodeEffectif, } from "@proconnect-gouv/proconnect.entreprise/formatters";
5
+ import { capitalize } from "lodash-es";
6
+ //
7
+ export function fromSiret(siretData) {
8
+ const isPartiallyNonDiffusible = siretData.status_diffusion === "partiellement_diffusible";
9
+ const enseigne = siretData.enseigne ?? "";
10
+ const nomComplet = isPartiallyNonDiffusible
11
+ ? "Nom inconnu"
12
+ : formatNomComplet({
13
+ denominationUniteLegale: siretData.unite_legale.personne_morale_attributs.raison_sociale ?? "",
14
+ nomUniteLegale: siretData.unite_legale.personne_physique_attributs.nom_naissance,
15
+ nomUsageUniteLegale: siretData.unite_legale.personne_physique_attributs.nom_usage,
16
+ prenomUsuelUniteLegale: siretData.unite_legale.personne_physique_attributs.prenom_usuel,
17
+ sigleUniteLegale: siretData.unite_legale.personne_morale_attributs.sigle,
18
+ });
19
+ const libelle = isPartiallyNonDiffusible
20
+ ? "Nom inconnu"
21
+ : `${nomComplet}${enseigne ? ` - ${capitalize(enseigne)}` : ""}`;
22
+ const trancheEffectifs = isPartiallyNonDiffusible
23
+ ? null
24
+ : siretData.tranche_effectif_salarie.code;
25
+ const trancheEffectifsUniteLegale = isPartiallyNonDiffusible
26
+ ? null
27
+ : siretData.unite_legale.tranche_effectif_salarie.code;
28
+ const codePostal = isPartiallyNonDiffusible
29
+ ? siretData.adresse.code_commune
30
+ : siretData.adresse.code_postal;
31
+ return OrganizationInfoSchema.parse({
32
+ activitePrincipale: siretData.activite_principale.code ?? "",
33
+ adresse: formatAddress(siretData.adresse),
34
+ categorieJuridique: siretData.unite_legale.forme_juridique.code ?? "",
35
+ codeOfficielGeographique: siretData.adresse.code_commune ?? "",
36
+ codePostal,
37
+ enseigne,
38
+ estActive: siretData.etat_administratif === "A",
39
+ estDiffusible: siretData.status_diffusion === "diffusible",
40
+ etatAdministratif: siretData.unite_legale.etat_administratif,
41
+ libelle,
42
+ libelleActivitePrincipale: formatMainActivity(siretData.activite_principale),
43
+ libelleCategorieJuridique: siretData.unite_legale.forme_juridique.libelle,
44
+ libelleTrancheEffectif: libelleFromCodeEffectif(siretData.tranche_effectif_salarie.intitule, siretData.tranche_effectif_salarie.date_reference),
45
+ nomComplet,
46
+ siret: siretData.siret,
47
+ statutDiffusion: siretData.status_diffusion,
48
+ trancheEffectifs,
49
+ trancheEffectifsUniteLegale,
50
+ });
51
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./from-siret.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mappers/organization/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ //
2
+ export * from "./from-siret.js";
@@ -0,0 +1,8 @@
1
+ import type { DatabaseContext, EmailDomain } from "#src/types";
2
+ export declare function addDomainFactory({ pg }: DatabaseContext): ({ organization_id, domain, verification_type, }: {
3
+ organization_id: number;
4
+ domain: string;
5
+ verification_type: EmailDomain["verification_type"];
6
+ }) => Promise<EmailDomain>;
7
+ export type AddDomainHandler = ReturnType<typeof addDomainFactory>;
8
+ //# sourceMappingURL=add-domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-domain.d.ts","sourceRoot":"","sources":["../../../src/repositories/email-domain/add-domain.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK/D,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,IACtB,iDAI7B;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;CACrD,0BA4BF;AAED,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,25 @@
1
+ //
2
+ import { hashToPostgresParams } from "#src/services/postgres";
3
+ //
4
+ export function addDomainFactory({ pg }) {
5
+ return async function addDomain({ organization_id, domain, verification_type, }) {
6
+ const connection = pg;
7
+ const emailDomain = {
8
+ organization_id,
9
+ domain,
10
+ verification_type,
11
+ can_be_suggested: true,
12
+ verified_at: new Date(),
13
+ created_at: new Date(),
14
+ updated_at: new Date(),
15
+ };
16
+ const { paramsString, valuesString, values } = hashToPostgresParams(emailDomain);
17
+ const { rows } = await connection.query(`
18
+ INSERT INTO email_domains
19
+ ${paramsString}
20
+ VALUES
21
+ ${valuesString}
22
+ RETURNING *;`, values);
23
+ return rows.shift();
24
+ };
25
+ }
@@ -0,0 +1,8 @@
1
+ import type { DatabaseContext, EmailDomain } from "#src/types";
2
+ export declare function deleteEmailDomainsByVerificationTypesFactory({ pg, }: DatabaseContext): ({ organization_id, domain, domain_verification_types, }: {
3
+ organization_id: EmailDomain["organization_id"];
4
+ domain_verification_types: EmailDomain["verification_type"][];
5
+ domain: EmailDomain["domain"];
6
+ }) => Promise<import("pg").QueryResult<any>>;
7
+ export type DeleteEmailDomainsByVerificationTypesHandler = ReturnType<typeof deleteEmailDomainsByVerificationTypesFactory>;
8
+ //# sourceMappingURL=delete-email-domains-by-verification-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-email-domains-by-verification-types.d.ts","sourceRoot":"","sources":["../../../src/repositories/email-domain/delete-email-domains-by-verification-types.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI/D,wBAAgB,4CAA4C,CAAC,EAC3D,EAAE,GACH,EAAE,eAAe,IAC4C,yDAIzD;IACD,eAAe,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAC;IAChD,yBAAyB,EAAE,WAAW,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAC9D,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;CAC/B,4CAuBF;AAED,MAAM,MAAM,4CAA4C,GAAG,UAAU,CACnE,OAAO,4CAA4C,CACpD,CAAC"}
@@ -0,0 +1,21 @@
1
+ //
2
+ //
3
+ export function deleteEmailDomainsByVerificationTypesFactory({ pg, }) {
4
+ return async function deleteEmailDomainsByVerificationTypes({ organization_id, domain, domain_verification_types, }) {
5
+ const SQL_VERIFICATION_TYPES = domain_verification_types
6
+ .map((type) => type === null
7
+ ? "verification_type IS NULL"
8
+ : `verification_type = '${type}'`)
9
+ .join(" OR ");
10
+ return pg.query(`
11
+ DELETE FROM email_domains
12
+ WHERE
13
+ ${[
14
+ "organization_id = $1",
15
+ "domain = $2",
16
+ `(${SQL_VERIFICATION_TYPES})`,
17
+ ].join(" AND ")}
18
+ ;
19
+ `, [organization_id, domain]);
20
+ };
21
+ }
@@ -0,0 +1,4 @@
1
+ import type { DatabaseContext, EmailDomain } from "#src/types";
2
+ export declare function findEmailDomainsByOrganizationIdFactory({ pg, }: DatabaseContext): (organization_id: number) => Promise<EmailDomain[]>;
3
+ export type FindEmailDomainsByOrganizationIdHandler = ReturnType<typeof findEmailDomainsByOrganizationIdFactory>;
4
+ //# sourceMappingURL=find-email-domains-by-organization-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-email-domains-by-organization-id.d.ts","sourceRoot":"","sources":["../../../src/repositories/email-domain/find-email-domains-by-organization-id.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK/D,wBAAgB,uCAAuC,CAAC,EACtD,EAAE,GACH,EAAE,eAAe,IAEd,iBAAiB,MAAM,4BAY1B;AAED,MAAM,MAAM,uCAAuC,GAAG,UAAU,CAC9D,OAAO,uCAAuC,CAC/C,CAAC"}
@@ -0,0 +1,11 @@
1
+ //
2
+ //
3
+ export function findEmailDomainsByOrganizationIdFactory({ pg, }) {
4
+ return async function findEmailDomainsByOrganizationId(organization_id) {
5
+ const { rows } = await pg.query(`
6
+ SELECT *
7
+ FROM email_domains
8
+ WHERE organization_id = $1`, [organization_id]);
9
+ return rows;
10
+ };
11
+ }
@@ -0,0 +1,12 @@
1
+ export * from "./add-domain.js";
2
+ export * from "./delete-email-domains-by-verification-types.js";
3
+ export * from "./find-email-domains-by-organization-id.js";
4
+ import type { AddDomainHandler } from "./add-domain.js";
5
+ import type { DeleteEmailDomainsByVerificationTypesHandler } from "./delete-email-domains-by-verification-types.js";
6
+ import type { FindEmailDomainsByOrganizationIdHandler } from "./find-email-domains-by-organization-id.js";
7
+ export type EmailDomainRepository = {
8
+ addDomain: AddDomainHandler;
9
+ deleteEmailDomainsByVerificationTypes: DeleteEmailDomainsByVerificationTypesHandler;
10
+ findEmailDomainsByOrganizationId: FindEmailDomainsByOrganizationIdHandler;
11
+ };
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/repositories/email-domain/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,iDAAiD,CAAC;AAChE,cAAc,4CAA4C,CAAC;AAE3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,4CAA4C,EAAE,MAAM,iDAAiD,CAAC;AACpH,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC;AAE1G,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,qCAAqC,EAAE,4CAA4C,CAAC;IACpF,gCAAgC,EAAE,uCAAuC,CAAC;CAC3E,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./add-domain.js";
2
+ export * from "./delete-email-domains-by-verification-types.js";
3
+ export * from "./find-email-domains-by-organization-id.js";
@@ -0,0 +1,4 @@
1
+ import type { DatabaseContext, Organization } from "#src/types";
2
+ export declare function findByIdFactory({ pg }: DatabaseContext): (id: number) => Promise<Organization | undefined>;
3
+ export type FindByIdHandler = ReturnType<typeof findByIdFactory>;
4
+ //# sourceMappingURL=find-by-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-by-id.d.ts","sourceRoot":"","sources":["../../../src/repositories/organization/find-by-id.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAKhE,wBAAgB,eAAe,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,IACtB,IAAI,MAAM,uCAW1C;AAED,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ //
2
+ //
3
+ export function findByIdFactory({ pg }) {
4
+ return async function findById(id) {
5
+ const { rows } = await pg.query(`
6
+ SELECT *
7
+ FROM organizations
8
+ WHERE id = $1`, [id]);
9
+ return rows.shift();
10
+ };
11
+ }
@@ -0,0 +1,12 @@
1
+ import type { DatabaseContext, Organization } from "#src/types";
2
+ export declare function findByUserIdFactory({ pg }: DatabaseContext): (userId: number) => Promise<(Organization & {
3
+ is_external: boolean;
4
+ verification_type: "code_sent_to_official_contact_email" | "domain" | "imported_from_coop_mediation_numerique" | "imported_from_inclusion_connect" | "in_liste_dirigeants_rna" | "in_liste_dirigeants_rne" | "no_validation_means_available" | "no_verification_means_for_entreprise_unipersonnelle" | "no_verification_means_for_small_association" | "official_contact_email" | "organization_dirigeant" | "proof_received" | "bypassed" | null;
5
+ verified_at: Date | null;
6
+ has_been_greeted: boolean;
7
+ needs_official_contact_email_verification: boolean;
8
+ official_contact_email_verification_token: string | null;
9
+ official_contact_email_verification_sent_at: Date | null;
10
+ })[]>;
11
+ export type FindByUserIdHandler = ReturnType<typeof findByUserIdFactory>;
12
+ //# sourceMappingURL=find-by-user-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find-by-user-id.d.ts","sourceRoot":"","sources":["../../../src/repositories/organization/find-by-user-id.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,eAAe,EACf,YAAY,EACb,MAAM,YAAY,CAAC;AAKpB,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,IACtB,QAAQ,MAAM;;;;;;;;MAuBlD;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ //
2
+ //
3
+ export function findByUserIdFactory({ pg }) {
4
+ return async function findByUserId(userId) {
5
+ const { rows } = await pg.query(`
6
+ SELECT
7
+ o.*,
8
+ uo.is_external,
9
+ uo.verification_type,
10
+ uo.verified_at,
11
+ uo.has_been_greeted,
12
+ uo.needs_official_contact_email_verification,
13
+ uo.official_contact_email_verification_token,
14
+ uo.official_contact_email_verification_sent_at
15
+ FROM organizations o
16
+ INNER JOIN users_organizations uo ON uo.organization_id = o.id
17
+ WHERE uo.user_id = $1
18
+ ORDER BY o.created_at
19
+ `, [userId]);
20
+ return rows;
21
+ };
22
+ }
@@ -0,0 +1,4 @@
1
+ import type { DatabaseContext } from "#src/types";
2
+ export declare function getByIdFactory({ pg }: DatabaseContext): (id: number) => Promise<import("#src/types").Organization>;
3
+ export type GetByIdHandler = ReturnType<typeof getByIdFactory>;
4
+ //# sourceMappingURL=get-by-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-by-id.d.ts","sourceRoot":"","sources":["../../../src/repositories/organization/get-by-id.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMlD,wBAAgB,cAAc,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,IAEtB,IAAI,MAAM,gDAOzC;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ //
2
+ import { OrganizationNotFoundError } from "#src/errors";
3
+ import { isEmpty } from "lodash-es";
4
+ import { findByIdFactory } from "./find-by-id.js";
5
+ //
6
+ export function getByIdFactory({ pg }) {
7
+ const findById = findByIdFactory({ pg });
8
+ return async function getById(id) {
9
+ const organization = await findById(id);
10
+ if (isEmpty(organization)) {
11
+ throw new OrganizationNotFoundError("Organization not found");
12
+ }
13
+ return organization;
14
+ };
15
+ }
@@ -0,0 +1,12 @@
1
+ import type { DatabaseContext, User } from "#src/types";
2
+ export declare function getUsersByOrganizationFactory({ pg }: DatabaseContext): (organization_id: number, additionalWhereClause?: string, additionalParams?: any[]) => Promise<(User & {
3
+ is_external: boolean;
4
+ verification_type: "code_sent_to_official_contact_email" | "domain" | "imported_from_coop_mediation_numerique" | "imported_from_inclusion_connect" | "in_liste_dirigeants_rna" | "in_liste_dirigeants_rne" | "no_validation_means_available" | "no_verification_means_for_entreprise_unipersonnelle" | "no_verification_means_for_small_association" | "official_contact_email" | "organization_dirigeant" | "proof_received" | "bypassed" | null;
5
+ verified_at: Date | null;
6
+ has_been_greeted: boolean;
7
+ needs_official_contact_email_verification: boolean;
8
+ official_contact_email_verification_token: string | null;
9
+ official_contact_email_verification_sent_at: Date | null;
10
+ })[]>;
11
+ export type GetUsersByOrganizationHandler = ReturnType<typeof getUsersByOrganizationFactory>;
12
+ //# sourceMappingURL=get-users-by-organization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-users-by-organization.d.ts","sourceRoot":"","sources":["../../../src/repositories/organization/get-users-by-organization.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,eAAe,EACf,IAAI,EACL,MAAM,YAAY,CAAC;AAKpB,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,IAEjE,iBAAiB,MAAM,EACvB,wBAAuB,MAAW,EAClC,mBAAkB,GAAG,EAAO;;;;;;;;MA0B/B;AAED,MAAM,MAAM,6BAA6B,GAAG,UAAU,CACpD,OAAO,6BAA6B,CACrC,CAAC"}
@@ -0,0 +1,23 @@
1
+ //
2
+ //
3
+ export function getUsersByOrganizationFactory({ pg }) {
4
+ return async function getUsersByOrganization(organization_id, additionalWhereClause = "", additionalParams = []) {
5
+ const connection = pg;
6
+ const baseParams = [organization_id];
7
+ const { rows } = await connection.query(`
8
+ SELECT
9
+ u.*,
10
+ uo.is_external,
11
+ uo.verification_type,
12
+ uo.verified_at,
13
+ uo.has_been_greeted,
14
+ uo.needs_official_contact_email_verification,
15
+ uo.official_contact_email_verification_token,
16
+ uo.official_contact_email_verification_sent_at
17
+ FROM users u
18
+ INNER JOIN users_organizations AS uo ON uo.user_id = u.id
19
+ WHERE uo.organization_id = $1
20
+ ${additionalWhereClause}`, [...baseParams, ...additionalParams]);
21
+ return rows;
22
+ };
23
+ }
@@ -0,0 +1,7 @@
1
+ export * from "./find-by-id.js";
2
+ export * from "./find-by-user-id.js";
3
+ export * from "./get-by-id.js";
4
+ export * from "./get-users-by-organization.js";
5
+ export * from "./link-user-to-organization.js";
6
+ export * from "./upsert.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/repositories/organization/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gCAAgC,CAAC;AAC/C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,aAAa,CAAC"}
@@ -0,0 +1,7 @@
1
+ //
2
+ export * from "./find-by-id.js";
3
+ export * from "./find-by-user-id.js";
4
+ export * from "./get-by-id.js";
5
+ export * from "./get-users-by-organization.js";
6
+ export * from "./link-user-to-organization.js";
7
+ export * from "./upsert.js";
@@ -0,0 +1,16 @@
1
+ import type { DatabaseContext, InsertUserOrganizationLink } from "#src/types";
2
+ export declare function linkUserToOrganizationFactory({ pg }: DatabaseContext): ({ is_external, needs_official_contact_email_verification, organization_id, user_id, verification_type, }: InsertUserOrganizationLink) => Promise<{
3
+ is_external: boolean;
4
+ verification_type: "code_sent_to_official_contact_email" | "domain" | "imported_from_coop_mediation_numerique" | "imported_from_inclusion_connect" | "in_liste_dirigeants_rna" | "in_liste_dirigeants_rne" | "no_validation_means_available" | "no_verification_means_for_entreprise_unipersonnelle" | "no_verification_means_for_small_association" | "official_contact_email" | "organization_dirigeant" | "proof_received" | "bypassed" | null;
5
+ verified_at: Date | null;
6
+ has_been_greeted: boolean;
7
+ needs_official_contact_email_verification: boolean;
8
+ official_contact_email_verification_token: string | null;
9
+ official_contact_email_verification_sent_at: Date | null;
10
+ user_id: number;
11
+ organization_id: number;
12
+ created_at: Date;
13
+ updated_at: Date;
14
+ }>;
15
+ export type LinkUserToOrganizationHandler = ReturnType<typeof linkUserToOrganizationFactory>;
16
+ //# sourceMappingURL=link-user-to-organization.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"link-user-to-organization.d.ts","sourceRoot":"","sources":["../../../src/repositories/organization/link-user-to-organization.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,0BAA0B,EAE3B,MAAM,YAAY,CAAC;AAGpB,wBAAgB,6BAA6B,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,IACtB,0GAM1C,0BAA0B;;;;;;;;;;;;GAyB9B;AAED,MAAM,MAAM,6BAA6B,GAAG,UAAU,CACpD,OAAO,6BAA6B,CACrC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { hashToPostgresParams } from "#src/services/postgres";
2
+ export function linkUserToOrganizationFactory({ pg }) {
3
+ return async function linkUserToOrganization({ is_external = false, needs_official_contact_email_verification = false, organization_id, user_id, verification_type, }) {
4
+ const { paramsString, valuesString, values } = hashToPostgresParams({
5
+ created_at: new Date(),
6
+ is_external,
7
+ needs_official_contact_email_verification,
8
+ organization_id,
9
+ updated_at: new Date(),
10
+ user_id,
11
+ verification_type,
12
+ verified_at: verification_type ? new Date() : undefined,
13
+ });
14
+ const { rows } = await pg.query(`
15
+ INSERT INTO users_organizations
16
+ ${paramsString}
17
+ VALUES
18
+ ${valuesString}
19
+ RETURNING *;`, values);
20
+ return rows.shift();
21
+ };
22
+ }
@@ -0,0 +1,7 @@
1
+ import type { DatabaseContext, Organization, OrganizationInfo } from "#src/types";
2
+ export declare function upsertFactory({ pg }: DatabaseContext): ({ siret, organizationInfo: { libelle: cached_libelle, nomComplet: cached_nom_complet, enseigne: cached_enseigne, trancheEffectifs: cached_tranche_effectifs, trancheEffectifsUniteLegale: cached_tranche_effectifs_unite_legale, libelleTrancheEffectif: cached_libelle_tranche_effectif, etatAdministratif: cached_etat_administratif, estActive: cached_est_active, statutDiffusion: cached_statut_diffusion, estDiffusible: cached_est_diffusible, adresse: cached_adresse, codePostal: cached_code_postal, codeOfficielGeographique: cached_code_officiel_geographique, activitePrincipale: cached_activite_principale, libelleActivitePrincipale: cached_libelle_activite_principale, categorieJuridique: cached_categorie_juridique, libelleCategorieJuridique: cached_libelle_categorie_juridique, }, }: {
3
+ siret: string;
4
+ organizationInfo: OrganizationInfo;
5
+ }) => Promise<Organization>;
6
+ export type UpsertHandler = ReturnType<typeof upsertFactory>;
7
+ //# sourceMappingURL=upsert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../../../src/repositories/organization/upsert.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACZ,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAKpB,wBAAgB,aAAa,CAAC,EAAE,EAAE,EAAE,EAAE,eAAe,IACtB,gxBAqB1B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,2BAuGF;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC"}