@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
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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,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 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mappers/organization/index.ts"],"names":[],"mappings":"AAEA,cAAc,iBAAiB,CAAC"}
|
|
@@ -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,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,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,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"}
|