Skip to content

[FEATURE] Récupérer les CGU de l'utilisateur de Pix Certif en passant par le nouveau modèle (PIX-22441) - #17404

Merged
widy-martial merged 9 commits into
devfrom
pix-22441-get-pix--certif-tos-status-from-new-implementation
Sep 10, 2026
Merged

[FEATURE] Récupérer les CGU de l'utilisateur de Pix Certif en passant par le nouveau modèle (PIX-22441)#17404
widy-martial merged 9 commits into
devfrom
pix-22441-get-pix--certif-tos-status-from-new-implementation

Conversation

@EmmanuelleBonnemay

@EmmanuelleBonnemay EmmanuelleBonnemay commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

☀️ Problème

Afin de mettre en place le versionnement des CGU de Pix Certif, il est nécessaire de modifier la route /.../me permettant de récupérer leur valeur afin de se baser sur le nouveau modèle.

⛱️ Proposition

Sur l’appel GET /api/certif.../me, récupérer les informations de CGU en appelant la nouvelle API interne getLegalDocumentStatusByUserId du contexte legal-document

🧴 Remarques

Nous n'avons pas pu importer la constante "STATUS" du modèle LegalDocumentStatus(Domain : Legal Documents) dans le modèle CertificationPointOfContact (Domain : Organizational entitie) .

Solution : Création d'un getter pour rendre la propriété 'isAccepted' accessible depuis l'extérieure.

🏊 Pour tester (plus facile en local)

  • Quand le FT newPixCertifLegalDocumentsVersioning est activé et désactivé, (donc dans tous les cas ci-dessous) les attributs suivants doivent apparaître sur la route api/certification-point-of-contacts/me :

-- pix-certif-terms-of-service-accepted
-- last-pix-certif-terms-of-service-validated-at
-- pix-certif-terms-of-service-status
-- pix-certif-terms-of-service-document-path

  • Quand le FT newPixCertifLegalDocumentsVersioning n'est pas activé :

-- Deux versions de legal-document du legal-document "Pix Certif" ont été rajoutées dans les seeds, il faut récupérer leurs versions.

[ACCEPTED]-- l'utilisateur a accepté les CGU actuelles

Connectez-vous avec un utilisateur (certacces@example.net) ayant accepté les cgu (ancien modèle) et RECUPEREZ L'ID DE L'UTILISATEUR
Constatez que l'utilisateur est redirigé vers sa homepage, avec
pix-certif-terms-of-service-accepted=true,
pix-certif-terms-of-service-status = "accepted",
last-pix-certif-terms-of-service-validated-at=<date de validation>,
pix-certif-terms-of-service-document-path=null sur la route api/certification-point-of-contacts/me

Déconnectez-vous.

[REQUESTED]-- l'utilisateur n'a jamais accepté les CGU.

Faites un update sur la table users :
UPDATE "users"
SET ("pixCertifTermsOfServiceAccepted", "lastPixCertifTermsOfServiceValidatedAt") = (false, null) WHERE id = <id de l'utilisateur>;
Constatez qu'à la connexion, vous êtes redirigé vers la page de validation de CGU avec
avec
pix-certif-terms-of-service-accepted=false,
pix-certif-terms-of-service-status = "requested",
last-pix-certif-terms-of-service-validated-at=null,
pix-certif-terms-of-service-document-path=null sur la route api/certification-point-of-contacts/me

Annulez.

  • Quand le FT newPixCertifLegalDocumentsVersioning est activé :

[REQUESTED]-- L'utilisateur n'a jamais accepté les CGU

Connectez-vous avec certacces@example.net
Constatez que vous êtes redirigés vers la page de signature des CGU et que la route api/certification-point-of-contacts/me renvoie
pix-certif-terms-of-service-accepted=false,
pix-certif-terms-of-service-status = "requested",
last-pix-certif-terms-of-service-validated-at=null,
pix-certif-terms-of-service-document-path=pix-certif-tos-2021-01-01 sur la route api/certification-point-of-contacts/me

Annulez.

[ACCEPTED]-- l'utilisateur a accepté les CGU actuelles

Ajoutez une acceptance dans la table legal-document-version-user-acceptances :
INSERT INTO "legal-document-version-user-acceptances" ("legalDocumentVersionId", "userId", "acceptedAt") VALUES (1005, < userId >, now());
Constatez que l'utilisateur est redirigé vers sa homepage, avec
pix-certif-terms-of-service-accepted=true,
pix-certif-terms-of-service-status = "accepted",
last-pix-certif-terms-of-service-validated-at=<date de validation>,
pix-certif-terms-of-service-document-path=pix-certif-tos-2021-01-01 sur la route api/certification-point-of-contacts/me

Déconnectez-vous.

[UPDATE_REQUESTED]-- L'utilisateur n'a pas accepté la dernière version des CGU

Faire un update sur l'acceptance que vous venez d'insérer en base :
UPDATE "legal-document-version-user-acceptances" SET "legalDocumentVersionId" = 1004 WHERE "legalDocumentVersionId" = 1005;
Puis connectez-vous, constatez que l'utilisateur est redirigé vers la page d'acceptation des cgu, avec
pix-certif-terms-of-service-accepted=false,
pix-certif-terms-of-service-status = "update-requested",
last-pix-certif-terms-of-service-validated-at=null,
pix-certif-terms-of-service-document-path=pix-certif-2021-01-01 sur la route api/certification-point-of-contacts/me
=> last-terms-of-service-validated-at est ramené à null dans ce cas car dans le modèle CertificationPointOfContact, la valeur de acceptedAt (qui est nulle quand le statut est UPDATE_REQUESTED) est reportée sur le last-PixCertifTerms-of-service-validated-at

@pix-bot-github

pix-bot-github commented Sep 4, 2026

Copy link
Copy Markdown

@widy-martial
widy-martial requested review from a team as code owners September 4, 2026 15:26
@EmmanuelleBonnemay
EmmanuelleBonnemay force-pushed the pix-22441-get-pix--certif-tos-status-from-new-implementation branch from 9843676 to ce45934 Compare September 7, 2026 08:09
@Libouk
Libouk force-pushed the pix-22441-get-pix--certif-tos-status-from-new-implementation branch from 8c71f02 to 0cfd9b5 Compare September 7, 2026 09:45
@nlepage
nlepage force-pushed the pix-22441-get-pix--certif-tos-status-from-new-implementation branch from 65c1f11 to 9877f5a Compare September 7, 2026 14:03
@EmmanuelleBonnemay
EmmanuelleBonnemay force-pushed the pix-22441-get-pix--certif-tos-status-from-new-implementation branch 6 times, most recently from 5cfc35a to 8eab17f Compare September 8, 2026 16:07
@widy-martial
widy-martial force-pushed the pix-22441-get-pix--certif-tos-status-from-new-implementation branch from 8eab17f to 73249e1 Compare September 9, 2026 09:01
@EmmanuelleBonnemay
EmmanuelleBonnemay force-pushed the pix-22441-get-pix--certif-tos-status-from-new-implementation branch from 73249e1 to e7dad94 Compare September 9, 2026 12:34
@nlepage
nlepage removed request for a team September 9, 2026 12:37

@nlepage nlepage left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

L’API interne legal documents laisse sortir des instances des models de son domain, est-ce qu’elle ne devrait pas les mapper vers des models propres à son API tel que défini ici ?

Dans cette PR, on voit que le fait de faire sortir les models du domain a déjà posé un peu problème (on a du ajouter le getter LegalDocumentStatus.isAccepted), et encore cela a beaucoup été minimisé car on a travaillé essentiellement dans le dossier deprecated qui n’est pas soumi à l’interdiction de cross contexte.

cc @lego-technix

Comment thread api/tests/tooling/domain-builder/factory/index.js Outdated
Comment thread api/src/legal-documents/domain/models/LegalDocumentStatus.js
@EmmanuelleBonnemay

Copy link
Copy Markdown
Contributor Author

L’API interne legal documents laisse sortir des instances des models de son domain, est-ce qu’elle ne devrait pas les mapper vers des models propres à son API tel que défini ici ?

Dans cette PR, on voit que le fait de faire sortir les models du domain a déjà posé un peu problème (on a du ajouter le getter LegalDocumentStatus.isAccepted), et encore cela a beaucoup été minimisé car on a travaillé essentiellement dans le dossier deprecated qui n’est pas soumi à l’interdiction de cross contexte.

cc @lego-technix

Oui tout à fait d'accord ! Je propose d'en faire un ticket dédié qui couvre les 4 consommateurs de cette api d'un coup, plutôt que de patcher uniquement le cas ajouté ici.

@widy-martial
widy-martial added this pull request to the merge queue Sep 10, 2026
Merged via the queue into dev with commit f07fc0c Sep 10, 2026
10 checks passed
@widy-martial
widy-martial deleted the pix-22441-get-pix--certif-tos-status-from-new-implementation branch September 10, 2026 09:55
pix-service pushed a commit that referenced this pull request Sep 10, 2026
# [5.499.0](v5.498.1...v5.499.0) (2026-09-10)

### 🚀 Amélioration

- [#17418](#17418) Ajouter l'ID de la catégorie à la modification d'organisations en masse (PIX-23565)
- [#17452](#17452) Ajouter un sélecteur de catégorie sur la fiche d'édition d'une organisation (PIX-23563)
- [#17429](#17429) migration pour remettre des contraintes "not nullable" supprimés par inadvertance (PIX-24132)
- [#17404](#17404) Récupérer les CGU de l'utilisateur de Pix Certif en passant par le nouveau modèle (PIX-22441)

### 🐛 Correction

- [#17460](#17460) Ne pas jeter d'erreur 500 lors de la concurrence de création d'invitation à un CDC (PIX-24219)

### 🏗️ Tech

- [#17410](#17410) Créer un script permettant l'ajout des ids de contenus formatifs pour la mise en avant en fin de parcours (PIX-24009).
- [#17070](#17070) Déplacer le pré-handler d'Assessment dans shared
- [#17394](#17394) Ne pas stocker de timestamp pour la révocation de session (PIX-24133)

### ⬆️ Montée de version

- [#17419](#17419) Update dependency @1024pix/pix-ui to ^68.1.1 (mon-pix)
- [#17462](#17462) Update dependency @1024pix/pix-ui to ^68.1.3 (junior)
- [#17428](#17428) Update dependency @testing-library/user-event to ^14.6.6 (mon-pix)
- [#17449](#17449) Update dependency @testing-library/user-event to ^14.6.7 (mon-pix)
- [#17445](#17445) Update dependency @xmldom/xmldom to >=0.9.12 (admin) [SECURITY]
- [#17446](#17446) Update dependency @xmldom/xmldom to >=0.9.12 (certif) [SECURITY]
- [#17369](#17369) Update dependency js-yaml to v5.2.2 [SECURITY]
- [#17442](#17442) Update dependency nodemailer to v9.1.1 [SECURITY]
- [#17447](#17447) Update dependency protobufjs to >=8.6.6 (api) [SECURITY]
- [#17440](#17440) Update dependency vitest to v4.1.11 [SECURITY]
@pix-service

Copy link
Copy Markdown
Contributor

🎉 This PR is included in version 5.499.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants