Skip to content

Commit

Permalink
[PRO CONNECT][VALIDATION CGU] Demande à l’utilisateur connecté via Pr…
Browse files Browse the repository at this point in the history
…oConnect de valider les CGU
  • Loading branch information
bbougon committed Dec 24, 2024
1 parent c356ed9 commit 1184ea3
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 6 deletions.
19 changes: 15 additions & 4 deletions mon-aide-cyber-api/src/api/pro-connect/routeProConnect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,15 @@ export const routesProConnect = (configuration: ConfigurationServeur) => {

const redirige = (
idToken: string | undefined,
identifiant: crypto.UUID
identifiant: crypto.UUID,
urlDeRedirection: string
) => {
requete.session!.ProConnectIdToken = idToken;
const jeton = gestionnaireDeJeton.genereJeton({
identifiant: identifiant,
});
requete.session!.token = jeton;
return reponse.redirect('/aidant/tableau-de-bord');
return reponse.redirect(urlDeRedirection);
};

try {
Expand All @@ -108,7 +109,13 @@ export const routesProConnect = (configuration: ConfigurationServeur) => {
).rechercheParMail(email!);

if (aidant) {
return redirige(idToken, aidant.identifiant);
return redirige(
idToken,
aidant.identifiant,
!aidant.dateSignatureCGU
? '/aidant/valide-signature-cgu'
: '/aidant/tableau-de-bord'
);
}
if (estGendarme) {
const compte = await busCommande.publie<
Expand All @@ -128,7 +135,11 @@ export const routesProConnect = (configuration: ConfigurationServeur) => {
},
...(siret && { siret: siret }),
});
return redirige(idToken, compte.identifiant);
return redirige(
idToken,
compte.identifiant,
'/aidant/valide-signature-cgu'
);
}

return reponse.redirect(
Expand Down
36 changes: 34 additions & 2 deletions mon-aide-cyber-api/test/api/pro-connect/routeProConnect.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,38 @@ describe('Le serveur MAC, sur les routes de connexion ProConnect', () => {
);
});

describe('Dans le cas d’un Aidant n’ayant pas validé les CGU', () => {
beforeEach(async () => {
const aidant = unAidant().sansCGUSignees().construis();
await testeurMAC.entrepots.aidants().persiste(aidant);
utilitairesCookies.recuperateurDeCookies = () =>
'j%3A%7B%22state%22%3A%22etat%22%2C%22nonce%22%3A%22coucou%22%7D';
testeurMAC.adaptateurProConnect.recupereJeton = async () => ({
idToken: fakerFR.string.alpha(10),
accessToken: fakerFR.string.alpha(10),
});
testeurMAC.adaptateurProConnect.recupereInformationsUtilisateur =
async () =>
desInformationsUtilisateur().pourUnAidant(aidant).construis();
testeurMAC.gestionnaireDeJeton.genereJeton = () => 'abc';
donneesServeur = testeurMAC.initialise();
});

it('L’Aidant est redirigé vers la validation des CGU si elles ne sont pas signées', async () => {
const reponse = await executeRequete(
donneesServeur.app,
'GET',
'/pro-connect/apres-authentification',
donneesServeur.portEcoute
);

expect(reponse.statusCode).toStrictEqual(302);
expect(reponse.headers['location']).toStrictEqual(
'/aidant/valide-signature-cgu'
);
});
});

describe("Dans le cas d'un gendarme", () => {
it("Si l'utilisateur n'est pas connu, on crée un espace Aidant", async () => {
adaptateurEnvironnement.siretsEntreprise = () => ({
Expand Down Expand Up @@ -190,7 +222,7 @@ describe('Le serveur MAC, sur les routes de connexion ProConnect', () => {
expect(aidantTrouve!.siret).toStrictEqual('12345');
});

it("À l'issue de la création de l'espace Aidant, l'utilisateur est redirigé vers le tableau de bord", async () => {
it("À l'issue de la création de l'espace Aidant, l'utilisateur est redirigé vers la validation des CGU", async () => {
adaptateurEnvironnement.siretsEntreprise = () => ({
gendarmerie: () => '12345',
});
Expand All @@ -213,7 +245,7 @@ describe('Le serveur MAC, sur les routes de connexion ProConnect', () => {

expect(reponse.statusCode).toStrictEqual(302);
expect(reponse.headers['location']).toStrictEqual(
'/aidant/tableau-de-bord'
'/aidant/valide-signature-cgu'
);
const objet = enObjet<{ session: string; [clef: string]: string }>(
(reponse.headers['set-cookie'] as string[])[1]
Expand Down

0 comments on commit 1184ea3

Please sign in to comment.