@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.
- package/CHANGELOG.md +96 -0
- package/dist/data/organization/domains-whitelist.d.ts +2 -0
- package/dist/data/organization/domains-whitelist.d.ts.map +1 -0
- package/dist/data/organization/domains-whitelist.js +7 -0
- package/dist/data/organization/index.d.ts +2 -0
- package/dist/data/organization/index.d.ts.map +1 -0
- package/dist/data/organization/index.js +2 -0
- package/dist/errors/index.d.ts +22 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +43 -0
- package/dist/managers/certification/distance.d.ts +4 -0
- package/dist/managers/certification/distance.d.ts.map +1 -0
- package/dist/managers/certification/distance.js +16 -0
- package/dist/managers/certification/index.d.ts +3 -0
- package/dist/managers/certification/index.d.ts.map +1 -0
- package/dist/managers/certification/index.js +3 -0
- package/dist/managers/certification/is-organization-dirigeant.d.ts +15 -0
- package/dist/managers/certification/is-organization-dirigeant.d.ts.map +1 -0
- package/dist/managers/certification/is-organization-dirigeant.js +60 -0
- package/dist/managers/franceconnect/index.d.ts +2 -0
- package/dist/managers/franceconnect/index.d.ts.map +1 -0
- package/dist/managers/franceconnect/index.js +2 -0
- package/dist/managers/franceconnect/openid-client.d.ts +37 -0
- package/dist/managers/franceconnect/openid-client.d.ts.map +1 -0
- package/dist/managers/franceconnect/openid-client.js +54 -0
- package/dist/managers/organization/force-join-organization.d.ts +29 -0
- package/dist/managers/organization/force-join-organization.d.ts.map +1 -0
- package/dist/managers/organization/force-join-organization.js +33 -0
- package/dist/managers/organization/get-organization-info.d.ts +5 -0
- package/dist/managers/organization/get-organization-info.d.ts.map +1 -0
- package/dist/managers/organization/get-organization-info.js +33 -0
- package/dist/managers/organization/index.d.ts +4 -0
- package/dist/managers/organization/index.d.ts.map +1 -0
- package/dist/managers/organization/index.js +4 -0
- package/dist/managers/organization/mark-domain-as-verified.d.ts +20 -0
- package/dist/managers/organization/mark-domain-as-verified.d.ts.map +1 -0
- package/dist/managers/organization/mark-domain-as-verified.js +63 -0
- package/dist/managers/user/assign-user-verification-type-to-domain.d.ts +10 -0
- package/dist/managers/user/assign-user-verification-type-to-domain.d.ts.map +1 -0
- package/dist/managers/user/assign-user-verification-type-to-domain.js +21 -0
- package/dist/managers/user/index.d.ts +2 -0
- package/dist/managers/user/index.d.ts.map +1 -0
- package/dist/managers/user/index.js +1 -0
- package/dist/mappers/certification/index.d.ts +4 -0
- package/dist/mappers/certification/index.d.ts.map +1 -0
- package/dist/mappers/certification/index.js +11 -0
- package/dist/mappers/index.d.ts +2 -0
- package/dist/mappers/index.d.ts.map +1 -0
- package/dist/mappers/index.js +2 -0
- package/dist/mappers/organization/from-siret.d.ts +5 -0
- package/dist/mappers/organization/from-siret.d.ts.map +1 -0
- package/dist/mappers/organization/from-siret.js +51 -0
- package/dist/mappers/organization/index.d.ts +2 -0
- package/dist/mappers/organization/index.d.ts.map +1 -0
- package/dist/mappers/organization/index.js +2 -0
- package/dist/repositories/email-domain/add-domain.d.ts +8 -0
- package/dist/repositories/email-domain/add-domain.d.ts.map +1 -0
- package/dist/repositories/email-domain/add-domain.js +25 -0
- package/dist/repositories/email-domain/delete-email-domains-by-verification-types.d.ts +8 -0
- package/dist/repositories/email-domain/delete-email-domains-by-verification-types.d.ts.map +1 -0
- package/dist/repositories/email-domain/delete-email-domains-by-verification-types.js +21 -0
- package/dist/repositories/email-domain/find-email-domains-by-organization-id.d.ts +4 -0
- package/dist/repositories/email-domain/find-email-domains-by-organization-id.d.ts.map +1 -0
- package/dist/repositories/email-domain/find-email-domains-by-organization-id.js +11 -0
- package/dist/repositories/email-domain/index.d.ts +12 -0
- package/dist/repositories/email-domain/index.d.ts.map +1 -0
- package/dist/repositories/email-domain/index.js +3 -0
- package/dist/repositories/organization/find-by-id.d.ts +4 -0
- package/dist/repositories/organization/find-by-id.d.ts.map +1 -0
- package/dist/repositories/organization/find-by-id.js +11 -0
- package/dist/repositories/organization/find-by-user-id.d.ts +12 -0
- package/dist/repositories/organization/find-by-user-id.d.ts.map +1 -0
- package/dist/repositories/organization/find-by-user-id.js +22 -0
- package/dist/repositories/organization/get-by-id.d.ts +4 -0
- package/dist/repositories/organization/get-by-id.d.ts.map +1 -0
- package/dist/repositories/organization/get-by-id.js +15 -0
- package/dist/repositories/organization/get-users-by-organization.d.ts +12 -0
- package/dist/repositories/organization/get-users-by-organization.d.ts.map +1 -0
- package/dist/repositories/organization/get-users-by-organization.js +23 -0
- package/dist/repositories/organization/index.d.ts +7 -0
- package/dist/repositories/organization/index.d.ts.map +1 -0
- package/dist/repositories/organization/index.js +7 -0
- package/dist/repositories/organization/link-user-to-organization.d.ts +16 -0
- package/dist/repositories/organization/link-user-to-organization.d.ts.map +1 -0
- package/dist/repositories/organization/link-user-to-organization.js +22 -0
- package/dist/repositories/organization/upsert.d.ts +7 -0
- package/dist/repositories/organization/upsert.d.ts.map +1 -0
- package/dist/repositories/organization/upsert.js +103 -0
- package/dist/repositories/user/create.d.ts +7 -0
- package/dist/repositories/user/create.d.ts.map +1 -0
- package/dist/repositories/user/create.js +25 -0
- package/dist/repositories/user/find-by-email.d.ts +4 -0
- package/dist/repositories/user/find-by-email.d.ts.map +1 -0
- package/dist/repositories/user/find-by-email.js +12 -0
- package/dist/repositories/user/find-by-id.d.ts +4 -0
- package/dist/repositories/user/find-by-id.d.ts.map +1 -0
- package/dist/repositories/user/find-by-id.js +13 -0
- package/dist/repositories/user/get-by-id.d.ts +4 -0
- package/dist/repositories/user/get-by-id.d.ts.map +1 -0
- package/dist/repositories/user/get-by-id.js +15 -0
- package/dist/repositories/user/get-franceconnect-user-info.d.ts +15 -0
- package/dist/repositories/user/get-franceconnect-user-info.d.ts.map +1 -0
- package/dist/repositories/user/get-franceconnect-user-info.js +13 -0
- package/dist/repositories/user/index.d.ts +9 -0
- package/dist/repositories/user/index.d.ts.map +1 -0
- package/dist/repositories/user/index.js +9 -0
- package/dist/repositories/user/update-user-organization-link.d.ts +16 -0
- package/dist/repositories/user/update-user-organization-link.d.ts.map +1 -0
- package/dist/repositories/user/update-user-organization-link.js +20 -0
- package/dist/repositories/user/update.d.ts +4 -0
- package/dist/repositories/user/update.d.ts.map +1 -0
- package/dist/repositories/user/update.js +19 -0
- package/dist/repositories/user/upsert-franceconnect-userinfo.d.ts +15 -0
- package/dist/repositories/user/upsert-franceconnect-userinfo.d.ts.map +1 -0
- package/dist/repositories/user/upsert-franceconnect-userinfo.js +23 -0
- package/dist/services/organization/index.d.ts +3 -0
- package/dist/services/organization/index.d.ts.map +1 -0
- package/dist/services/organization/index.js +3 -0
- package/dist/services/organization/is-domain-allowed-for-organization.d.ts +2 -0
- package/dist/services/organization/is-domain-allowed-for-organization.d.ts.map +1 -0
- package/dist/services/organization/is-domain-allowed-for-organization.js +8 -0
- package/dist/services/organization/is-entreprise-unipersonnelle.d.ts +9 -0
- package/dist/services/organization/is-entreprise-unipersonnelle.d.ts.map +1 -0
- package/dist/services/organization/is-entreprise-unipersonnelle.js +18 -0
- package/dist/services/postgres/hash-to-postgres-params.d.ts +6 -0
- package/dist/services/postgres/hash-to-postgres-params.d.ts.map +1 -0
- package/dist/services/postgres/hash-to-postgres-params.js +21 -0
- package/dist/services/postgres/index.d.ts +2 -0
- package/dist/services/postgres/index.d.ts.map +1 -0
- package/dist/services/postgres/index.js +2 -0
- package/dist/types/claims.d.ts +16 -0
- package/dist/types/claims.d.ts.map +1 -0
- package/dist/types/claims.js +16 -0
- package/dist/types/contexts.d.ts +5 -0
- package/dist/types/contexts.d.ts.map +1 -0
- package/dist/types/contexts.js +2 -0
- package/dist/types/dirigeant.d.ts +9 -0
- package/dist/types/dirigeant.d.ts.map +1 -0
- package/dist/types/dirigeant.js +9 -0
- package/dist/types/email-domain.d.ts +25 -0
- package/dist/types/email-domain.d.ts.map +1 -0
- package/dist/types/email-domain.js +14 -0
- package/dist/types/franceconnect.d.ts +28 -0
- package/dist/types/franceconnect.d.ts.map +1 -0
- package/dist/types/franceconnect.js +22 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +10 -0
- package/dist/types/organization-info.d.ts +27 -0
- package/dist/types/organization-info.d.ts.map +1 -0
- package/dist/types/organization-info.js +26 -0
- package/dist/types/organization.d.ts +26 -0
- package/dist/types/organization.d.ts.map +1 -0
- package/dist/types/organization.js +2 -0
- package/dist/types/user-organization-link.d.ts +92 -0
- package/dist/types/user-organization-link.d.ts.map +1 -0
- package/dist/types/user-organization-link.js +44 -0
- package/dist/types/user.d.ts +28 -0
- package/dist/types/user.d.ts.map +1 -0
- package/dist/types/user.js +2 -0
- package/package.json +68 -0
- package/src/data/organization/domains-whitelist.ts +8 -0
- package/src/data/organization/index.ts +3 -0
- package/src/errors/index.ts +50 -0
- package/src/managers/certification/distance.test.ts +109 -0
- package/src/managers/certification/distance.ts +41 -0
- package/src/managers/certification/index.ts +4 -0
- package/src/managers/certification/is-organization-dirigeant.test.ts +125 -0
- package/src/managers/certification/is-organization-dirigeant.ts +136 -0
- package/src/managers/franceconnect/index.ts +3 -0
- package/src/managers/franceconnect/openid-client.ts +131 -0
- package/src/managers/organization/force-join-organization.test.ts +94 -0
- package/src/managers/organization/force-join-organization.ts +90 -0
- package/src/managers/organization/get-organization-info.test.ts +47 -0
- package/src/managers/organization/get-organization-info.test.ts.snapshot +68 -0
- package/src/managers/organization/get-organization-info.ts +58 -0
- package/src/managers/organization/index.ts +5 -0
- package/src/managers/organization/mark-domain-as-verified.test.ts +90 -0
- package/src/managers/organization/mark-domain-as-verified.test.ts.snapshot +52 -0
- package/src/managers/organization/mark-domain-as-verified.ts +140 -0
- package/src/managers/user/assign-user-verification-type-to-domain.ts +50 -0
- package/src/managers/user/index.ts +1 -0
- package/src/mappers/certification/index.ts +18 -0
- package/src/mappers/index.ts +3 -0
- package/src/mappers/organization/from-siret.test.ts +26 -0
- package/src/mappers/organization/from-siret.test.ts.snapshot +68 -0
- package/src/mappers/organization/from-siret.ts +75 -0
- package/src/mappers/organization/index.ts +3 -0
- package/src/repositories/email-domain/add-domain.test.ts +43 -0
- package/src/repositories/email-domain/add-domain.ts +48 -0
- package/src/repositories/email-domain/delete-email-domains-by-verification-types.test.ts +49 -0
- package/src/repositories/email-domain/delete-email-domains-by-verification-types.ts +45 -0
- package/src/repositories/email-domain/find-email-domains-by-organization-id.test.ts +55 -0
- package/src/repositories/email-domain/find-email-domains-by-organization-id.ts +28 -0
- package/src/repositories/email-domain/index.ts +13 -0
- package/src/repositories/organization/find-by-id.test.ts +51 -0
- package/src/repositories/organization/find-by-id.ts +22 -0
- package/src/repositories/organization/find-by-user-id.test.ts +70 -0
- package/src/repositories/organization/find-by-user-id.test.ts.snapshot +102 -0
- package/src/repositories/organization/find-by-user-id.ts +38 -0
- package/src/repositories/organization/get-by-id.test.ts +60 -0
- package/src/repositories/organization/get-by-id.ts +21 -0
- package/src/repositories/organization/get-users-by-organization.test.ts +50 -0
- package/src/repositories/organization/get-users-by-organization.test.ts.snapshot +38 -0
- package/src/repositories/organization/get-users-by-organization.ts +46 -0
- package/src/repositories/organization/index.ts +8 -0
- package/src/repositories/organization/link-user-to-organization.test.ts +65 -0
- package/src/repositories/organization/link-user-to-organization.test.ts.snapshot +31 -0
- package/src/repositories/organization/link-user-to-organization.ts +45 -0
- package/src/repositories/organization/upsert.ts +142 -0
- package/src/repositories/organization/upset.test.ts +95 -0
- package/src/repositories/user/create.test.ts +49 -0
- package/src/repositories/user/create.ts +44 -0
- package/src/repositories/user/find-by-email.test.ts +62 -0
- package/src/repositories/user/find-by-email.ts +22 -0
- package/src/repositories/user/find-by-id.test.ts +64 -0
- package/src/repositories/user/find-by-id.ts +23 -0
- package/src/repositories/user/get-by-id.test.ts +63 -0
- package/src/repositories/user/get-by-id.ts +21 -0
- package/src/repositories/user/get-franceconnect-user-info.test.ts +58 -0
- package/src/repositories/user/get-franceconnect-user-info.ts +25 -0
- package/src/repositories/user/index.ts +10 -0
- package/src/repositories/user/update-user-organization-link.test.ts +46 -0
- package/src/repositories/user/update-user-organization-link.ts +42 -0
- package/src/repositories/user/update.test.ts +26 -0
- package/src/repositories/user/update.ts +34 -0
- package/src/repositories/user/upsert-franceconnect-userinfo.test.ts +100 -0
- package/src/repositories/user/upsert-franceconnect-userinfo.ts +41 -0
- package/src/services/organization/index.ts +4 -0
- package/src/services/organization/is-domain-allowed-for-organization.ts +10 -0
- package/src/services/organization/is-entreprise-unipersonnelle.test.ts +32 -0
- package/src/services/organization/is-entreprise-unipersonnelle.ts +31 -0
- package/src/services/postgres/hash-to-postgres-params.ts +34 -0
- package/src/services/postgres/index.ts +3 -0
- package/src/types/claims.ts +21 -0
- package/src/types/contexts.ts +9 -0
- package/src/types/dirigeant.ts +13 -0
- package/src/types/email-domain.ts +48 -0
- package/src/types/franceconnect.ts +37 -0
- package/src/types/index.ts +11 -0
- package/src/types/organization-info.ts +32 -0
- package/src/types/organization.ts +30 -0
- package/src/types/user-organization-link.ts +71 -0
- package/src/types/user.ts +29 -0
- package/testing/index.ts +31 -0
- package/testing/seed/franceconnect/index.ts +40 -0
- package/testing/seed/insee/index.ts +22 -0
- package/testing/seed/mandataires/index.ts +32 -0
- package/testing/seed/organizations/index.ts +41 -0
- package/tsconfig.json +17 -0
- package/tsconfig.lib.json +9 -0
- package/tsconfig.lib.tsbuildinfo +1 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# @proconnect-gouv/proconnect.identite
|
|
2
|
+
|
|
3
|
+
## 1.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [#1455](https://github.com/proconnect-gouv/proconnect-identite/pull/1455) [`38fffb0`](https://github.com/proconnect-gouv/proconnect-identite/commit/38fffb00ca5a5d2341a662f684d2555bbfb5ff02) Thanks [@douglasduteil](https://github.com/douglasduteil)! - 📦 Première version officiel des packages `@proconnect-gouv/*`
|
|
8
|
+
|
|
9
|
+
## 0.9.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [#1385](https://github.com/proconnect-gouv/proconnect-identite/pull/1385) [`5906294`](https://github.com/proconnect-gouv/proconnect-identite/commit/5906294b6618d0d2cc1865a836886a35d740feb4) Thanks [@dependabot](https://github.com/apps/dependabot)! - feat: migration vers Zod v4
|
|
14
|
+
|
|
15
|
+
Migration de Zod v3 vers v4 - les utilisateurs du package doivent s'assurer que leur projet est compatible avec Zod v4 si ils importent des schémas ou types depuis ce package.
|
|
16
|
+
|
|
17
|
+
## 0.8.1
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- [#1317](https://github.com/proconnect-gouv/proconnect-identite/pull/1317) [`749329f`](https://github.com/proconnect-gouv/proconnect-identite/commit/749329f4279db13151d42337e578cacbed8d2a26) Thanks [@douglasduteil](https://github.com/douglasduteil)! - 🐛 Correction du sélecteur lors de la suppression de domaines de vérification
|
|
22
|
+
|
|
23
|
+
see [`b5893a5`](https://github.com/proconnect-gouv/proconnect-identite/commit/b5893a5412faeea47afd8b4c9683bae47d389089)
|
|
24
|
+
|
|
25
|
+
## 0.8.0
|
|
26
|
+
|
|
27
|
+
### Minor Changes
|
|
28
|
+
|
|
29
|
+
- [#1284](https://github.com/proconnect-gouv/proconnect-identite/pull/1284) [`30db367`](https://github.com/proconnect-gouv/proconnect-identite/commit/30db367114350ae67fbdf3a283858addfab56d26) Thanks [@rebeccadumazert](https://github.com/rebeccadumazert)! - Renomme la vérification type "receipt_sent" en "proof_received"
|
|
30
|
+
|
|
31
|
+
## 0.7.0
|
|
32
|
+
|
|
33
|
+
### Minor Changes
|
|
34
|
+
|
|
35
|
+
- [#1282](https://github.com/proconnect-gouv/proconnect-identite/pull/1282) [`a3b52c3`](https://github.com/proconnect-gouv/proconnect-identite/commit/a3b52c33470f24bbe164d2435c717cb1f2f0a932) Thanks [@rebeccadumazert](https://github.com/rebeccadumazert)! - Ajoute deux nouveaux types de vérification
|
|
36
|
+
- in_liste_dirigeants_rne : Liste des dirigeants RNE
|
|
37
|
+
- receipt_sent : Justificatif transmis
|
|
38
|
+
|
|
39
|
+
## 0.6.0
|
|
40
|
+
|
|
41
|
+
### Minor Changes
|
|
42
|
+
|
|
43
|
+
- [#1251](https://github.com/proconnect-gouv/proconnect-identite/pull/1251) [`2bd56c8`](https://github.com/proconnect-gouv/proconnect-identite/commit/2bd56c8c857fd7a819cbc787faf030547e18023c) Thanks [@BenoitSerrano](https://github.com/BenoitSerrano)! - Centralize handling of email domains verification (addition, deletion, update for a specific domain)
|
|
44
|
+
|
|
45
|
+
## 0.5.3
|
|
46
|
+
|
|
47
|
+
### Patch Changes
|
|
48
|
+
|
|
49
|
+
- [#1252](https://github.com/proconnect-gouv/proconnect-identite/pull/1252) [`d2d6759`](https://github.com/proconnect-gouv/proconnect-identite/commit/d2d6759458b98ccc153005537ac2f5d063d0495a) Thanks [@rdubigny](https://github.com/rdubigny)! - La vérification de domaine official_contact permet de créer un lien vérifié avec le type "domain" plutôt qu'un lien non vérifié lors d'une validation du domaine par hyyypertool.
|
|
50
|
+
|
|
51
|
+
## 0.5.2
|
|
52
|
+
|
|
53
|
+
### Patch Changes
|
|
54
|
+
|
|
55
|
+
- [#1021](https://github.com/proconnect-gouv/proconnect-identite/pull/1021) [`86ad73c`](https://github.com/proconnect-gouv/proconnect-identite/commit/86ad73c9bb43f7171c0bda7b06fba14837449c1e) Thanks [@douglasduteil](https://github.com/douglasduteil)! - ❎ Les erreurs sont nommées
|
|
56
|
+
|
|
57
|
+
## 0.5.1
|
|
58
|
+
|
|
59
|
+
### Patch Changes
|
|
60
|
+
|
|
61
|
+
- [#990](https://github.com/proconnect-gouv/proconnect-identite/pull/990) [`5ad2bd9`](https://github.com/proconnect-gouv/proconnect-identite/commit/5ad2bd9031d9b01902401990ba79affb0082eb43) Thanks [@douglasduteil](https://github.com/douglasduteil)! - 🐛 Correction d'un code d'erreur
|
|
62
|
+
- si l'organisation est introuvable, `markDomainAsVerifiedFactory` retourne une erreur `NotFoundError` au lieu de `InseeNotFoundError`
|
|
63
|
+
|
|
64
|
+
## 0.5.0
|
|
65
|
+
|
|
66
|
+
### Minor Changes
|
|
67
|
+
|
|
68
|
+
- [#988](https://github.com/proconnect-gouv/proconnect-identite/pull/988) [`375ea4e`](https://github.com/proconnect-gouv/proconnect-identite/commit/375ea4e3c134bc70ae0bbda09663cc50fd511c59) Thanks [@douglasduteil](https://github.com/douglasduteil)! - ♻️ Prélevement d'un partie du buisness proconnect identité
|
|
69
|
+
|
|
70
|
+
## 0.4.0
|
|
71
|
+
|
|
72
|
+
### Minor Changes
|
|
73
|
+
|
|
74
|
+
- [#983](https://github.com/proconnect-gouv/proconnect-identite/pull/983) [`5f866a6`](https://github.com/proconnect-gouv/proconnect-identite/commit/5f866a6c57642229f8ccf8d517dc55519e7abee8) Thanks [@douglasduteil](https://github.com/douglasduteil)! - ♻️ Prélevement d'un partie du buisness proconnect identité
|
|
75
|
+
|
|
76
|
+
## 0.3.2
|
|
77
|
+
|
|
78
|
+
### Patch Changes
|
|
79
|
+
|
|
80
|
+
- [#975](https://github.com/proconnect-gouv/proconnect-identite/pull/975) [`8e57ecc`](https://github.com/proconnect-gouv/proconnect-identite/commit/8e57eccff4d3d614a4264b63f2583a63f82a88e6) Thanks [@douglasduteil](https://github.com/douglasduteil)! - 🚚 Renommage de moncomptepro en proconnect-identite
|
|
81
|
+
|
|
82
|
+
## 0.3.1
|
|
83
|
+
|
|
84
|
+
### Patch Changes
|
|
85
|
+
|
|
86
|
+
- [#964](https://github.com/proconnect-gouv/proconnect-identite/pull/964) [`eb63af3`](https://github.com/proconnect-gouv/proconnect-identite/commit/eb63af3bf33139adece820c1cfadf3ee387713f1) Thanks [@douglasduteil](https://github.com/douglasduteil)! - 🧑💻 Ajout du package @gouvfr-lasuite/proconnect.devtools.typescript
|
|
87
|
+
|
|
88
|
+
Partage de la configuration de TypeScript entre les packages.
|
|
89
|
+
|
|
90
|
+
## 0.3.0
|
|
91
|
+
|
|
92
|
+
### Minor Changes
|
|
93
|
+
|
|
94
|
+
- [#913](https://github.com/proconnect-gouv/proconnect-identite/pull/913) [`21d47b6`](https://github.com/proconnect-gouv/proconnect-identite/commit/21d47b6c00670b7bbea1ce1f59b96a91c59bbe7a) Thanks [@douglasduteil](https://github.com/douglasduteil)! - ♻️ Prélevement d'un partie du buisness proconnect identité
|
|
95
|
+
|
|
96
|
+
Dans le cadres la migration du script d'import de comptes coop, une partie de du buisness proconnect est déplacées dans le package `@gouvfr-lasuite/proconnect.identite` pour permettre leur réutilisation dans Hyyypertool.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domains-whitelist.d.ts","sourceRoot":"","sources":["../../../src/data/organization/domains-whitelist.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,uBAK5B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/organization/index.ts"],"names":[],"mappings":"AAEA,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare class InvalidCertificationError extends Error {
|
|
2
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
3
|
+
}
|
|
4
|
+
export declare class InvalidSiretError extends Error {
|
|
5
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
6
|
+
}
|
|
7
|
+
export declare class NotFoundError extends Error {
|
|
8
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
9
|
+
}
|
|
10
|
+
export declare class OrganizationNotActiveError extends Error {
|
|
11
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
12
|
+
}
|
|
13
|
+
export declare class OrganizationNotFoundError extends Error {
|
|
14
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
15
|
+
}
|
|
16
|
+
export declare class UserNotFoundError extends Error {
|
|
17
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
18
|
+
}
|
|
19
|
+
export declare class ModerationNotFoundError extends Error {
|
|
20
|
+
constructor(message?: string, options?: ErrorOptions);
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAEA,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIrD;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIrD;AAED,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIrD;AAED,qBAAa,0BAA2B,SAAQ,KAAK;gBACvC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIrD;AAED,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIrD;AAED,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIrD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIrD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
//
|
|
2
|
+
export class InvalidCertificationError extends Error {
|
|
3
|
+
constructor(message, options) {
|
|
4
|
+
super(message, options);
|
|
5
|
+
this.name = "InvalidCertificationError";
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
export class InvalidSiretError extends Error {
|
|
9
|
+
constructor(message, options) {
|
|
10
|
+
super(message, options);
|
|
11
|
+
this.name = "InvalidSiretError";
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export class NotFoundError extends Error {
|
|
15
|
+
constructor(message, options) {
|
|
16
|
+
super(message, options);
|
|
17
|
+
this.name = "NotFoundError";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
export class OrganizationNotActiveError extends Error {
|
|
21
|
+
constructor(message, options) {
|
|
22
|
+
super(message, options);
|
|
23
|
+
this.name = "OrganizationNotActiveError";
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class OrganizationNotFoundError extends Error {
|
|
27
|
+
constructor(message, options) {
|
|
28
|
+
super(message, options);
|
|
29
|
+
this.name = "OrganizationNotFoundError";
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export class UserNotFoundError extends Error {
|
|
33
|
+
constructor(message, options) {
|
|
34
|
+
super(message, options);
|
|
35
|
+
this.name = "UserNotFoundError";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export class ModerationNotFoundError extends Error {
|
|
39
|
+
constructor(message, options) {
|
|
40
|
+
super(message, options);
|
|
41
|
+
this.name = "ModerationNotFoundError";
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"distance.d.ts","sourceRoot":"","sources":["../../../src/managers/certification/distance.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,wBAAgB,QAAQ,CACtB,qBAAqB,EAAE,cAAc,EACrC,eAAe,EAAE,cAAc,GAC9B,MAAM,CA2BR"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//
|
|
2
|
+
import leven from "leven";
|
|
3
|
+
//
|
|
4
|
+
// \from https://github.com/date-fns/date-fns/blob/v4.1.0/src/constants/index.ts#L84
|
|
5
|
+
export const millisecondsInDay = 86400000;
|
|
6
|
+
export function distance(franceconnectUserInfo, sourceDirigeant) {
|
|
7
|
+
const sameGivenName = () => leven(franceconnectUserInfo.given_name?.toUpperCase() ||
|
|
8
|
+
Math.random().toString(36), sourceDirigeant.given_name?.toUpperCase() || Math.random().toString(36));
|
|
9
|
+
const sameFamilyName = () => leven(franceconnectUserInfo.family_name?.toUpperCase() ||
|
|
10
|
+
Math.random().toString(36), sourceDirigeant.family_name?.toUpperCase() || Math.random().toString(36));
|
|
11
|
+
const sameBirthDay = () => (Number(sourceDirigeant.birthdate) -
|
|
12
|
+
Number(franceconnectUserInfo.birthdate)) /
|
|
13
|
+
millisecondsInDay;
|
|
14
|
+
const sameBirthPlace = () => leven(franceconnectUserInfo.birthplace || Math.random().toString(36), sourceDirigeant.birthplace || Math.random().toString(36));
|
|
15
|
+
return [sameGivenName, sameFamilyName, sameBirthDay, sameBirthPlace].reduce((value, metric) => value + metric(), 0);
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/managers/certification/index.ts"],"names":[],"mappings":"AAEA,cAAc,eAAe,CAAC;AAC9B,cAAc,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { GetFranceConnectUserInfoHandler } from "#src/repositories/user";
|
|
2
|
+
import type { EntrepriseApiInfogreffeRepository, EntrepriseApiInseeRepository } from "@proconnect-gouv/proconnect.entreprise/api";
|
|
3
|
+
import type { InseeApiRepository } from "@proconnect-gouv/proconnect.insee/api";
|
|
4
|
+
type IsOrganizationExecutiveFactoryFactoryConfig = {
|
|
5
|
+
EntrepriseApiInfogreffeRepository: EntrepriseApiInfogreffeRepository;
|
|
6
|
+
EntrepriseApiInseeRepository: Pick<EntrepriseApiInseeRepository, "findBySiret">;
|
|
7
|
+
EQUALITY_THRESHOLD?: number;
|
|
8
|
+
getFranceConnectUserInfo: GetFranceConnectUserInfoHandler;
|
|
9
|
+
InseeApiRepository: Pick<InseeApiRepository, "findBySiret">;
|
|
10
|
+
log?: typeof console.log;
|
|
11
|
+
};
|
|
12
|
+
export declare function isOrganizationDirigeantFactory(config: IsOrganizationExecutiveFactoryFactoryConfig): (siret: string, user_id: number) => Promise<boolean>;
|
|
13
|
+
export type IsOrganizationDirigeantHandler = ReturnType<typeof isOrganizationDirigeantFactory>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=is-organization-dirigeant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"is-organization-dirigeant.d.ts","sourceRoot":"","sources":["../../../src/managers/certification/is-organization-dirigeant.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,wBAAwB,CAAC;AAG9E,OAAO,KAAK,EACV,iCAAiC,EACjC,4BAA4B,EAC7B,MAAM,4CAA4C,CAAC;AAEpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAMhF,KAAK,2CAA2C,GAAG;IACjD,iCAAiC,EAAE,iCAAiC,CAAC;IACrE,4BAA4B,EAAE,IAAI,CAChC,4BAA4B,EAC5B,aAAa,CACd,CAAC;IACF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,+BAA+B,CAAC;IAC1D,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;IAC5D,GAAG,CAAC,EAAE,OAAO,OAAO,CAAC,GAAG,CAAC;CAC1B,CAAC;AAIF,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,2CAA2C,IAYjD,OAAO,MAAM,EACb,SAAS,MAAM,sBAoFlB;AAED,MAAM,MAAM,8BAA8B,GAAG,UAAU,CACrD,OAAO,8BAA8B,CACtC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
//
|
|
2
|
+
import { NotFoundError } from "#src/errors";
|
|
3
|
+
import { fromInfogreffe } from "#src/mappers/certification";
|
|
4
|
+
import { fromSiret } from "#src/mappers/organization";
|
|
5
|
+
import { isEntrepriseUnipersonnelle } from "#src/services/organization";
|
|
6
|
+
import { formatBirthdate } from "@proconnect-gouv/proconnect.insee/formatters";
|
|
7
|
+
import { distance } from "./distance.js";
|
|
8
|
+
//
|
|
9
|
+
export function isOrganizationDirigeantFactory(config) {
|
|
10
|
+
const { EQUALITY_THRESHOLD = 0, EntrepriseApiInseeRepository, EntrepriseApiInfogreffeRepository, InseeApiRepository, getFranceConnectUserInfo, log = () => { }, } = config;
|
|
11
|
+
return async function isOrganizationDirigeant(siret, user_id) {
|
|
12
|
+
const establishment = await EntrepriseApiInseeRepository.findBySiret(siret);
|
|
13
|
+
const franceconnectUserInfo = await getFranceConnectUserInfo(user_id);
|
|
14
|
+
if (!franceconnectUserInfo) {
|
|
15
|
+
throw new NotFoundError("FranceConnect UserInfo not found");
|
|
16
|
+
}
|
|
17
|
+
const sourceDirigeants = await getSourceDirigeantsFromEstablishment(establishment);
|
|
18
|
+
if (sourceDirigeants.length === 0) {
|
|
19
|
+
throw new NotFoundError("No mandataires found");
|
|
20
|
+
}
|
|
21
|
+
const distances = sourceDirigeants.map((sourceDirigeant) => Math.abs(distance(franceconnectUserInfo, sourceDirigeant)));
|
|
22
|
+
const closestSourceDirigeantDistance = Math.min(...distances);
|
|
23
|
+
const closestSourceDirigeant = sourceDirigeants[distances.indexOf(closestSourceDirigeantDistance)];
|
|
24
|
+
log(closestSourceDirigeant, " is the closest source dirigeant to ", franceconnectUserInfo, " with a distance of ", closestSourceDirigeantDistance);
|
|
25
|
+
return closestSourceDirigeantDistance === EQUALITY_THRESHOLD;
|
|
26
|
+
};
|
|
27
|
+
async function getSourceDirigeantsFromEstablishment(establishment) {
|
|
28
|
+
const organization = fromSiret(establishment);
|
|
29
|
+
if (isEntrepriseUnipersonnelle({
|
|
30
|
+
cached_libelle_categorie_juridique: organization.libelleCategorieJuridique,
|
|
31
|
+
cached_tranche_effectifs: organization.trancheEffectifs,
|
|
32
|
+
})) {
|
|
33
|
+
return getSourceDirigeantsFromInsseApi(establishment.siret);
|
|
34
|
+
}
|
|
35
|
+
return getSourceDirigeantsFromEntrepriseApi(establishment.unite_legale.siren);
|
|
36
|
+
}
|
|
37
|
+
async function getSourceDirigeantsFromInsseApi(siret) {
|
|
38
|
+
const { uniteLegale } = await InseeApiRepository.findBySiret(siret);
|
|
39
|
+
const birthdate = formatBirthdate(String(uniteLegale?.dateNaissanceUniteLegale));
|
|
40
|
+
return [
|
|
41
|
+
{
|
|
42
|
+
birthplace: uniteLegale?.codeCommuneNaissanceUniteLegale ?? null,
|
|
43
|
+
birthdate: isNaN(birthdate.getTime()) ? null : birthdate,
|
|
44
|
+
family_name: uniteLegale?.nomUniteLegale ?? null,
|
|
45
|
+
given_name: [
|
|
46
|
+
uniteLegale?.prenom1UniteLegale,
|
|
47
|
+
uniteLegale?.prenom2UniteLegale,
|
|
48
|
+
uniteLegale?.prenom3UniteLegale,
|
|
49
|
+
uniteLegale?.prenom4UniteLegale,
|
|
50
|
+
]
|
|
51
|
+
.filter(Boolean)
|
|
52
|
+
.join(" "),
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
async function getSourceDirigeantsFromEntrepriseApi(siren) {
|
|
57
|
+
const mandataires = await EntrepriseApiInfogreffeRepository.findMandatairesSociauxBySiren(siren);
|
|
58
|
+
return mandataires.map((mandataire) => fromInfogreffe(mandataire));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/managers/franceconnect/index.ts"],"names":[],"mappings":"AAEA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type ClientMetadata } from "openid-client";
|
|
2
|
+
export type FranceConnectConfigurationParams = {
|
|
3
|
+
allowLocalhost?: boolean;
|
|
4
|
+
clientId: string;
|
|
5
|
+
clientSecret: string;
|
|
6
|
+
metadata: Partial<ClientMetadata>;
|
|
7
|
+
server: URL;
|
|
8
|
+
};
|
|
9
|
+
export declare function getFranceConnectConfigurationFactory(params: FranceConnectConfigurationParams): () => Promise<import("openid-client").Configuration>;
|
|
10
|
+
export type GetFranceConnectConfigurationHandler = ReturnType<typeof getFranceConnectConfigurationFactory>;
|
|
11
|
+
export declare function createOidcChecks(): {
|
|
12
|
+
state: string;
|
|
13
|
+
nonce: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function getFranceConnectRedirectUrlFactory(getConfiguration: GetFranceConnectConfigurationHandler, parameters: {
|
|
16
|
+
callbackUrl: string;
|
|
17
|
+
scope: string;
|
|
18
|
+
}): (nonce: string, state: string) => Promise<URL>;
|
|
19
|
+
export declare function getFranceConnectUserFactory(getConfiguration: GetFranceConnectConfigurationHandler): (parameters: {
|
|
20
|
+
code: string;
|
|
21
|
+
currentUrl: URL;
|
|
22
|
+
expectedNonce: string;
|
|
23
|
+
expectedState: string;
|
|
24
|
+
}) => Promise<{
|
|
25
|
+
user_info: {
|
|
26
|
+
birthdate: Date;
|
|
27
|
+
birthplace: string;
|
|
28
|
+
family_name: string;
|
|
29
|
+
gender: string;
|
|
30
|
+
given_name: string;
|
|
31
|
+
sub: string;
|
|
32
|
+
preferred_username?: string | undefined;
|
|
33
|
+
};
|
|
34
|
+
id_token: string | undefined;
|
|
35
|
+
}>;
|
|
36
|
+
export declare function getFranceConnectLogoutRedirectUrlFactory(getConfiguration: GetFranceConnectConfigurationHandler): (id_token_hint: string, post_logout_redirect_uri: string, state: string) => Promise<URL>;
|
|
37
|
+
//# sourceMappingURL=openid-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openid-client.d.ts","sourceRoot":"","sources":["../../../src/managers/franceconnect/openid-client.ts"],"names":[],"mappings":"AAMA,OAAO,EAUL,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAKvB,MAAM,MAAM,gCAAgC,GAAG;IAC7C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,MAAM,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,wBAAgB,oCAAoC,CAClD,MAAM,EAAE,gCAAgC,wDAYzC;AAED,MAAM,MAAM,oCAAoC,GAAG,UAAU,CAC3D,OAAO,oCAAoC,CAC5C,CAAC;AAEF,wBAAgB,gBAAgB;;;EAK/B;AAED,wBAAgB,kCAAkC,CAChD,gBAAgB,EAAE,oCAAoC,EACtD,UAAU,EAAE;IACV,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;CACf,IAG0C,OAAO,MAAM,EAAE,OAAO,MAAM,kBAaxE;AAED,wBAAgB,2BAA2B,CACzC,gBAAgB,EAAE,oCAAoC,IAEX,YAAY;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,GAAG,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;;;;;;;;;;;GA0BF;AAED,wBAAgB,wCAAwC,CACtD,gBAAgB,EAAE,oCAAoC,IAGpD,eAAe,MAAM,EACrB,0BAA0B,MAAM,EAChC,OAAO,MAAM,kBAShB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//
|
|
2
|
+
import { FranceConnectUserInfoResponseSchema, } from "#src/types";
|
|
3
|
+
import { allowInsecureRequests, authorizationCodeGrant, buildAuthorizationUrl, buildEndSessionUrl, ClientSecretBasic, discovery, fetchUserInfo, randomNonce, randomState, } from "openid-client";
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
export function getFranceConnectConfigurationFactory(params) {
|
|
6
|
+
const { allowLocalhost, clientId, clientSecret, metadata, server } = params;
|
|
7
|
+
return function getFranceConnectConfiguration() {
|
|
8
|
+
return discovery(server, clientId, metadata, ClientSecretBasic(clientSecret), allowLocalhost ? { execute: [allowInsecureRequests] } : undefined);
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export function createOidcChecks() {
|
|
12
|
+
return {
|
|
13
|
+
state: randomState(),
|
|
14
|
+
nonce: randomNonce(),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function getFranceConnectRedirectUrlFactory(getConfiguration, parameters) {
|
|
18
|
+
const { callbackUrl, scope } = parameters;
|
|
19
|
+
return async function getFranceConnectUser(nonce, state) {
|
|
20
|
+
const config = await getConfiguration();
|
|
21
|
+
return buildAuthorizationUrl(config, new URLSearchParams({
|
|
22
|
+
acr_values: "eidas1",
|
|
23
|
+
nonce,
|
|
24
|
+
redirect_uri: callbackUrl,
|
|
25
|
+
scope,
|
|
26
|
+
state,
|
|
27
|
+
}));
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function getFranceConnectUserFactory(getConfiguration) {
|
|
31
|
+
return async function getFranceConnectUser(parameters) {
|
|
32
|
+
const { code, currentUrl, expectedNonce, expectedState } = parameters;
|
|
33
|
+
const config = await getConfiguration();
|
|
34
|
+
const tokens = await authorizationCodeGrant(config, currentUrl, {
|
|
35
|
+
expectedNonce,
|
|
36
|
+
expectedState,
|
|
37
|
+
}, { code });
|
|
38
|
+
const claims = tokens.claims();
|
|
39
|
+
const { sub } = await z.object({ sub: z.string() }).parseAsync(claims);
|
|
40
|
+
const user_info_response = await fetchUserInfo(config, tokens.access_token, sub);
|
|
41
|
+
const user_info = await FranceConnectUserInfoResponseSchema.parseAsync(user_info_response);
|
|
42
|
+
return { user_info, id_token: tokens.id_token };
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function getFranceConnectLogoutRedirectUrlFactory(getConfiguration) {
|
|
46
|
+
return async function getFranceConnectLogoutRedirectUrl(id_token_hint, post_logout_redirect_uri, state) {
|
|
47
|
+
const config = await getConfiguration();
|
|
48
|
+
return buildEndSessionUrl(config, {
|
|
49
|
+
id_token_hint,
|
|
50
|
+
post_logout_redirect_uri,
|
|
51
|
+
state,
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { FindEmailDomainsByOrganizationIdHandler } from "#src/repositories/email-domain";
|
|
2
|
+
import type { GetByIdHandler as GetOrganizationByIdHandler, LinkUserToOrganizationHandler } from "#src/repositories/organization";
|
|
3
|
+
import type { GetByIdHandler as GetUserByIdHandler } from "#src/repositories/user";
|
|
4
|
+
type FactoryDependencies = {
|
|
5
|
+
findEmailDomainsByOrganizationId: FindEmailDomainsByOrganizationIdHandler;
|
|
6
|
+
getById: GetOrganizationByIdHandler;
|
|
7
|
+
getUserById: GetUserByIdHandler;
|
|
8
|
+
linkUserToOrganization: LinkUserToOrganizationHandler;
|
|
9
|
+
};
|
|
10
|
+
export declare function forceJoinOrganizationFactory({ findEmailDomainsByOrganizationId, getById, getUserById, linkUserToOrganization, }: FactoryDependencies): ({ organization_id, user_id, is_external, }: {
|
|
11
|
+
organization_id: number;
|
|
12
|
+
user_id: number;
|
|
13
|
+
is_external?: boolean;
|
|
14
|
+
}) => Promise<{
|
|
15
|
+
is_external: boolean;
|
|
16
|
+
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;
|
|
17
|
+
verified_at: Date | null;
|
|
18
|
+
has_been_greeted: boolean;
|
|
19
|
+
needs_official_contact_email_verification: boolean;
|
|
20
|
+
official_contact_email_verification_token: string | null;
|
|
21
|
+
official_contact_email_verification_sent_at: Date | null;
|
|
22
|
+
user_id: number;
|
|
23
|
+
organization_id: number;
|
|
24
|
+
created_at: Date;
|
|
25
|
+
updated_at: Date;
|
|
26
|
+
}>;
|
|
27
|
+
export type ForceJoinOrganizationHandler = ReturnType<typeof forceJoinOrganizationFactory>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=force-join-organization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"force-join-organization.d.ts","sourceRoot":"","sources":["../../../src/managers/organization/force-join-organization.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,gCAAgC,CAAC;AAC9F,OAAO,KAAK,EACV,cAAc,IAAI,0BAA0B,EAC5C,6BAA6B,EAC9B,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAQnF,KAAK,mBAAmB,GAAG;IACzB,gCAAgC,EAAE,uCAAuC,CAAC;IAC1E,OAAO,EAAE,0BAA0B,CAAC;IACpC,WAAW,EAAE,kBAAkB,CAAC;IAChC,sBAAsB,EAAE,6BAA6B,CAAC;CACvD,CAAC;AAIF,wBAAgB,4BAA4B,CAAC,EAC3C,gCAAgC,EAChC,OAAO,EACP,WAAW,EACX,sBAAsB,GACvB,EAAE,mBAAmB,IACwB,4CAIzC;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;;;;;;;;;;;;GA+CF;AAED,MAAM,MAAM,4BAA4B,GAAG,UAAU,CACnD,OAAO,4BAA4B,CACpC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//
|
|
2
|
+
import { getEmailDomain } from "@proconnect-gouv/proconnect.core/services/email";
|
|
3
|
+
import { match } from "ts-pattern";
|
|
4
|
+
import { UserOrganizationLinkVerificationTypeSchema } from "../../types/index.js";
|
|
5
|
+
//
|
|
6
|
+
export function forceJoinOrganizationFactory({ findEmailDomainsByOrganizationId, getById, getUserById, linkUserToOrganization, }) {
|
|
7
|
+
return async function forceJoinOrganization({ organization_id, user_id, is_external = false, }) {
|
|
8
|
+
const user = await getUserById(user_id);
|
|
9
|
+
// Ensure that the organization exists (Ceinture Bretelle)
|
|
10
|
+
await getById(organization_id);
|
|
11
|
+
const { email } = user;
|
|
12
|
+
const domain = getEmailDomain(email);
|
|
13
|
+
const organizationEmailDomains = await findEmailDomainsByOrganizationId(organization_id);
|
|
14
|
+
const link_verification_type = organizationEmailDomains
|
|
15
|
+
.filter(({ domain: currentDomain }) => currentDomain === domain)
|
|
16
|
+
.reduce((acc, { verification_type }) => {
|
|
17
|
+
if (acc === "domain") {
|
|
18
|
+
return acc;
|
|
19
|
+
}
|
|
20
|
+
return match(verification_type)
|
|
21
|
+
.with("verified", "trackdechets_postal_mail", "external", "official_contact", () => UserOrganizationLinkVerificationTypeSchema.enum.domain)
|
|
22
|
+
.with(null, "blacklisted", "refused", () => UserOrganizationLinkVerificationTypeSchema.enum
|
|
23
|
+
.no_validation_means_available)
|
|
24
|
+
.exhaustive();
|
|
25
|
+
}, "no_validation_means_available");
|
|
26
|
+
return await linkUserToOrganization({
|
|
27
|
+
organization_id,
|
|
28
|
+
user_id,
|
|
29
|
+
is_external,
|
|
30
|
+
verification_type: link_verification_type,
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type OrganizationInfo } from "#src/types";
|
|
2
|
+
import type { EntrepriseApiInseeRepository } from "@proconnect-gouv/proconnect.entreprise/api";
|
|
3
|
+
export declare function getOrganizationInfoFactory(config: EntrepriseApiInseeRepository): (siretOrSiren: string) => Promise<OrganizationInfo>;
|
|
4
|
+
export type GetOrganizationInfoHandler = ReturnType<typeof getOrganizationInfoFactory>;
|
|
5
|
+
//# sourceMappingURL=get-organization-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-organization-info.d.ts","sourceRoot":"","sources":["../../../src/managers/organization/get-organization-info.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,4CAA4C,CAAC;AAQ/F,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,4BAA4B,IAKlC,cAAc,MAAM,KACnB,OAAO,CAAC,gBAAgB,CAAC,CAiC7B;AAED,MAAM,MAAM,0BAA0B,GAAG,UAAU,CACjD,OAAO,0BAA0B,CAClC,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
//
|
|
2
|
+
import { InvalidSiretError, NotFoundError } from "#src/errors";
|
|
3
|
+
import { OrganizationInfoMapper } from "#src/mappers";
|
|
4
|
+
import {} from "#src/types";
|
|
5
|
+
import { EntrepriseApiConnectionError, EntrepriseApiInvalidSiret, } from "@proconnect-gouv/proconnect.entreprise/types";
|
|
6
|
+
//
|
|
7
|
+
export function getOrganizationInfoFactory(config) {
|
|
8
|
+
const { findBySiren, findBySiret } = config;
|
|
9
|
+
return async function getOrganizationInfo(siretOrSiren) {
|
|
10
|
+
try {
|
|
11
|
+
let establishment;
|
|
12
|
+
if (siretOrSiren.match(/^\d{14}$/)) {
|
|
13
|
+
establishment = OrganizationInfoMapper.fromSiret(await findBySiret(siretOrSiren));
|
|
14
|
+
}
|
|
15
|
+
else if (siretOrSiren.match(/^\d{9}$/)) {
|
|
16
|
+
establishment = OrganizationInfoMapper.fromSiret(await findBySiren(siretOrSiren));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
throw new InvalidSiretError();
|
|
20
|
+
}
|
|
21
|
+
const { statutDiffusion } = establishment;
|
|
22
|
+
if (statutDiffusion === "non_diffusible") {
|
|
23
|
+
throw new NotFoundError();
|
|
24
|
+
}
|
|
25
|
+
return establishment;
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
if (EntrepriseApiInvalidSiret.isInvalidSiret(e))
|
|
29
|
+
throw new InvalidSiretError();
|
|
30
|
+
throw new EntrepriseApiConnectionError("unknown error while fetching entreprise.api.gouv.fr", { cause: e });
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/managers/organization/index.ts"],"names":[],"mappings":"AAEA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GetUsersByOrganizationHandler } from "#src/repositories/organization";
|
|
2
|
+
import type { UpdateUserOrganizationLinkHandler } from "#src/repositories/user";
|
|
3
|
+
import type { AddDomainHandler, DeleteEmailDomainsByVerificationTypesHandler } from "@proconnect-gouv/proconnect.identite/repositories/email-domain";
|
|
4
|
+
import type { FindByIdHandler } from "@proconnect-gouv/proconnect.identite/repositories/organization";
|
|
5
|
+
import { type EmailDomainVerificationType } from "@proconnect-gouv/proconnect.identite/types";
|
|
6
|
+
type FactoryDependencies = {
|
|
7
|
+
addDomain: AddDomainHandler;
|
|
8
|
+
deleteEmailDomainsByVerificationTypes: DeleteEmailDomainsByVerificationTypesHandler;
|
|
9
|
+
findOrganizationById: FindByIdHandler;
|
|
10
|
+
getUsers: GetUsersByOrganizationHandler;
|
|
11
|
+
updateUserOrganizationLink: UpdateUserOrganizationLinkHandler;
|
|
12
|
+
};
|
|
13
|
+
export declare function markDomainAsVerifiedFactory({ addDomain, deleteEmailDomainsByVerificationTypes, findOrganizationById, getUsers, updateUserOrganizationLink, }: FactoryDependencies): ({ organization_id, domain, domain_verification_type, }: {
|
|
14
|
+
organization_id: number;
|
|
15
|
+
domain: string;
|
|
16
|
+
domain_verification_type: NonNullable<EmailDomainVerificationType>;
|
|
17
|
+
}) => Promise<import("@proconnect-gouv/proconnect.identite/types").EmailDomain>;
|
|
18
|
+
export type MarkDomainAsVerifiedHandler = ReturnType<typeof markDomainAsVerifiedFactory>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=mark-domain-as-verified.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mark-domain-as-verified.d.ts","sourceRoot":"","sources":["../../../src/managers/organization/mark-domain-as-verified.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EACV,gBAAgB,EAChB,4CAA4C,EAC7C,MAAM,gEAAgE,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gEAAgE,CAAC;AACtG,OAAO,EAKL,KAAK,2BAA2B,EACjC,MAAM,4CAA4C,CAAC;AAMpD,KAAK,mBAAmB,GAAG;IACzB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,qCAAqC,EAAE,4CAA4C,CAAC;IACpF,oBAAoB,EAAE,eAAe,CAAC;IACtC,QAAQ,EAAE,6BAA6B,CAAC;IACxC,0BAA0B,EAAE,iCAAiC,CAAC;CAC/D,CAAC;AAEF,wBAAgB,2BAA2B,CAAC,EAC1C,SAAS,EACT,qCAAqC,EACrC,oBAAoB,EACpB,QAAQ,EACR,0BAA0B,GAC3B,EAAE,mBAAmB,IAMuB,wDAIxC;IACD,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB,EAAE,WAAW,CAAC,2BAA2B,CAAC,CAAC;CACpE,+EAoFF;AAED,MAAM,MAAM,2BAA2B,GAAG,UAAU,CAClD,OAAO,2BAA2B,CACnC,CAAC"}
|