diff --git a/mon-aide-cyber-api/src/adaptateurs/AdaptateurDeVerificationDesAccesMAC.ts b/mon-aide-cyber-api/src/adaptateurs/AdaptateurDeVerificationDesAccesMAC.ts index a18ac6687..dbea7cb60 100644 --- a/mon-aide-cyber-api/src/adaptateurs/AdaptateurDeVerificationDesAccesMAC.ts +++ b/mon-aide-cyber-api/src/adaptateurs/AdaptateurDeVerificationDesAccesMAC.ts @@ -41,7 +41,8 @@ export class AdaptateurDeVerificationDesAccesMAC titre: 'Accès non autorisé', message: 'Désolé, vous ne pouvez pas accéder à ce diagnostic.', ...constructeurActionsHATEOAS() - .actionsAccesDiagnosticNonAutorise() + .pour({ contexte: 'aidant:acceder-aux-informations-utilisateur' }) + .pour({ contexte: 'se-deconnecter' }) .construis(), }); } else { diff --git a/mon-aide-cyber-api/src/api/demandes/routeAPIDemandeDevenirAidant.ts b/mon-aide-cyber-api/src/api/demandes/routeAPIDemandeDevenirAidant.ts index 8bc13e873..a18722856 100644 --- a/mon-aide-cyber-api/src/api/demandes/routeAPIDemandeDevenirAidant.ts +++ b/mon-aide-cyber-api/src/api/demandes/routeAPIDemandeDevenirAidant.ts @@ -144,7 +144,9 @@ export const routesAPIDemandesDevenirAidant = ( }) .then(() => reponse.status(201).json({ - ...constructeurActionsHATEOAS().actionsCreationCompte().construis(), + ...constructeurActionsHATEOAS() + .pour({ contexte: 'se-connecter' }) + .construis(), }) ) .catch((erreur) => diff --git a/mon-aide-cyber-api/src/api/hateoas/aidant.ts b/mon-aide-cyber-api/src/api/hateoas/aidant.ts index ee1946ed9..1a64b1257 100644 --- a/mon-aide-cyber-api/src/api/hateoas/aidant.ts +++ b/mon-aide-cyber-api/src/api/hateoas/aidant.ts @@ -1,4 +1,5 @@ import { ContexteSpecifique } from './contextesUtilisateur'; +import { Options } from './hateoas'; export const lancerDiagnostic: ContexteSpecifique = { 'lancer-diagnostic': { @@ -6,7 +7,9 @@ export const lancerDiagnostic: ContexteSpecifique = { methode: 'POST', }, }; -export const afficherTableauDeBord: ContexteSpecifique = { +export const afficherTableauDeBord: ContexteSpecifique & { + 'afficher-tableau-de-bord': Options; +} = { 'afficher-tableau-de-bord': { url: '/api/espace-aidant/tableau-de-bord', methode: 'GET', diff --git a/mon-aide-cyber-api/src/api/hateoas/devenirAidant.ts b/mon-aide-cyber-api/src/api/hateoas/devenirAidant.ts index 9bd43eaae..b9f099d2b 100644 --- a/mon-aide-cyber-api/src/api/hateoas/devenirAidant.ts +++ b/mon-aide-cyber-api/src/api/hateoas/devenirAidant.ts @@ -1,4 +1,5 @@ import { ContexteSpecifique } from './contextesUtilisateur'; +import { Options } from './hateoas'; export const finaliseCreationEspaceAidant: ContexteSpecifique = { 'finalise-creation-espace-aidant': { @@ -8,7 +9,12 @@ export const finaliseCreationEspaceAidant: ContexteSpecifique = { }, }, }; -export const demandeDevenirAidant: ContexteSpecifique = { +export const demandeDevenirAidant: ContexteSpecifique & { + 'demande-devenir-aidant': { + 'envoyer-demande-devenir-aidant': Options; + 'demande-devenir-aidant': Options; + }; +} = { 'demande-devenir-aidant': { 'envoyer-demande-devenir-aidant': { url: '/api/demandes/devenir-aidant', diff --git a/mon-aide-cyber-api/src/api/hateoas/etreAide.ts b/mon-aide-cyber-api/src/api/hateoas/etreAide.ts index 6a2577585..3f71fac5b 100644 --- a/mon-aide-cyber-api/src/api/hateoas/etreAide.ts +++ b/mon-aide-cyber-api/src/api/hateoas/etreAide.ts @@ -1,4 +1,5 @@ import { ContexteSpecifique } from './contextesUtilisateur'; +import { Options } from './hateoas'; export const demandeEtreAide: ContexteSpecifique = { 'demande-etre-aide': { @@ -6,7 +7,7 @@ export const demandeEtreAide: ContexteSpecifique = { methode: 'GET', }, }; -export const demandeAide: ContexteSpecifique = { +export const demandeAide: ContexteSpecifique & { 'demander-aide': Options } = { 'demander-aide': { url: '/api/demandes/etre-aide', methode: 'POST', diff --git a/mon-aide-cyber-api/src/api/hateoas/hateoas.ts b/mon-aide-cyber-api/src/api/hateoas/hateoas.ts index e79ab8d7e..654826735 100644 --- a/mon-aide-cyber-api/src/api/hateoas/hateoas.ts +++ b/mon-aide-cyber-api/src/api/hateoas/hateoas.ts @@ -4,6 +4,9 @@ import { ContexteSpecifique, contextesUtilisateur, } from './contextesUtilisateur'; +import { demandeAide } from './etreAide'; +import { afficherTableauDeBord } from './aidant'; +import { demandeDevenirAidant } from './devenirAidant'; type Methode = 'DELETE' | 'GET' | 'POST' | 'PATCH'; export type LiensHATEOAS = Record; @@ -68,17 +71,13 @@ class ConstructeurActionsHATEOAS { private readonly actions: Map = new Map(); public afficherTableauDeBord(): ConstructeurActionsHATEOAS { - this.actions.set('afficher-tableau-de-bord', { - url: '/api/espace-aidant/tableau-de-bord', - methode: 'GET', - }); + this.actions.set( + 'afficher-tableau-de-bord', + afficherTableauDeBord['afficher-tableau-de-bord'] + ); return this; } - public postAuthentification(): ConstructeurActionsHATEOAS { - return this.lancerDiagnostic().afficherMesInformations(); - } - public demandeLaRestitution(identifiant: string): ConstructeurActionsHATEOAS { this.pour({ contexte: 'aidant:acceder-aux-informations-utilisateur' }) .restituerDiagnostic(identifiant) @@ -87,10 +86,7 @@ class ConstructeurActionsHATEOAS { } public demandeAide() { - this.actions.set('demander-aide', { - url: '/api/demandes/etre-aide', - methode: 'POST', - }); + this.actions.set('demander-aide', demandeAide['demander-aide']); return this; } @@ -121,12 +117,6 @@ class ConstructeurActionsHATEOAS { }); } - public actionsAccesDiagnosticNonAutorise(): ConstructeurActionsHATEOAS { - return this.afficherTableauDeBord() - .afficherMesInformations() - .seDeconnecter(); - } - public ajoutReponseAuDiagnostic( identifiantDiagnostic: crypto.UUID ): ConstructeurActionsHATEOAS { @@ -136,29 +126,21 @@ class ConstructeurActionsHATEOAS { } public actionsPubliques(): ConstructeurActionsHATEOAS { - this.actions.set('demande-devenir-aidant', { - url: '/api/demandes/devenir-aidant', - methode: 'GET', - }); - - this.actions.set('demande-etre-aide', { - url: '/api/demandes/etre-aide', - methode: 'GET', - }); - - return this.seConnecter(); - } - - public demandeDevenirAidant(): ConstructeurActionsHATEOAS { - this.actions.set('envoyer-demande-devenir-aidant', { - url: '/api/demandes/devenir-aidant', - methode: 'POST', - }); + this.pour({ + contexte: 'demande-devenir-aidant:demande-devenir-aidant', + }) + .pour({ contexte: 'demande-etre-aide' }) + .pour({ contexte: 'se-connecter' }); return this; } - public actionsCreationCompte(): ConstructeurActionsHATEOAS { - this.seConnecter(); + public demandeDevenirAidant(): ConstructeurActionsHATEOAS { + this.actions.set( + 'envoyer-demande-devenir-aidant', + demandeDevenirAidant['demande-devenir-aidant'][ + 'envoyer-demande-devenir-aidant' + ] + ); return this; } @@ -180,28 +162,6 @@ class ConstructeurActionsHATEOAS { return this; } - private lancerDiagnostic(): ConstructeurActionsHATEOAS { - this.actions.set('lancer-diagnostic', { - url: '/api/diagnostic', - methode: 'POST', - }); - this.afficherTableauDeBord(); - return this; - } - - private afficherMesInformations(): ConstructeurActionsHATEOAS { - this.actions.set('afficher-profil', { - url: '/api/profil', - methode: 'GET', - }); - this.actions.set('afficher-preferences', { - url: '/api/aidant/preferences', - methode: 'GET', - }); - - return this; - } - private restituerDiagnostic( idDiagnostic: string ): ConstructeurActionsHATEOAS { @@ -226,25 +186,6 @@ class ConstructeurActionsHATEOAS { return this; } - private seConnecter(): ConstructeurActionsHATEOAS { - this.actions.set('se-connecter', { url: '/api/token', methode: 'POST' }); - if (process.env.PRO_CONNECT_ACTIF === 'true') { - this.actions.set('se-connecter-avec-pro-connect', { - url: '/pro-connect/connexion', - methode: 'GET', - }); - } - return this; - } - - private seDeconnecter(): ConstructeurActionsHATEOAS { - this.actions.set('se-deconnecter', { - url: '/api/token', - methode: 'DELETE', - }); - return this; - } - private afficherDiagnostic( idDiagnostic: crypto.UUID ): ConstructeurActionsHATEOAS { diff --git a/mon-aide-cyber-api/src/api/routesAPIAuthentification.ts b/mon-aide-cyber-api/src/api/routesAPIAuthentification.ts index c5048628e..f48eafc64 100644 --- a/mon-aide-cyber-api/src/api/routesAPIAuthentification.ts +++ b/mon-aide-cyber-api/src/api/routesAPIAuthentification.ts @@ -49,7 +49,7 @@ export const routesAPIAuthentification = ( ) .then((utilisateurAuthentifie: UtilisateurAuthentifie) => { let reponseHATEOAS = constructeurActionsHATEOAS() - .postAuthentification() + .pour({ contexte: 'aidant:acceder-aux-informations-utilisateur' }) .construis(); return unServiceAidant(entrepots.aidants()) .parIdentifiant(utilisateurAuthentifie.identifiant) diff --git a/mon-aide-cyber-api/test/adaptateurs/AdaptateurDeVerificationDesAccesMAC.spec.ts b/mon-aide-cyber-api/test/adaptateurs/AdaptateurDeVerificationDesAccesMAC.spec.ts index 3153b5865..ec85e2c2e 100644 --- a/mon-aide-cyber-api/test/adaptateurs/AdaptateurDeVerificationDesAccesMAC.spec.ts +++ b/mon-aide-cyber-api/test/adaptateurs/AdaptateurDeVerificationDesAccesMAC.spec.ts @@ -90,8 +90,13 @@ describe('Adaptateur de vérification de relations MAC', () => { url: '/api/espace-aidant/tableau-de-bord', methode: 'GET', }, + 'lancer-diagnostic': { + methode: 'POST', + url: '/api/diagnostic', + }, 'se-deconnecter': { methode: 'DELETE', + typeAppel: 'API', url: '/api/token', }, }, diff --git a/mon-aide-cyber-api/test/api/hateoas/liensAttendus.ts b/mon-aide-cyber-api/test/api/hateoas/liensAttendus.ts index 39f4e7b1c..410dcf5b9 100644 --- a/mon-aide-cyber-api/test/api/hateoas/liensAttendus.ts +++ b/mon-aide-cyber-api/test/api/hateoas/liensAttendus.ts @@ -6,10 +6,18 @@ export const liensPublicsAttendus: ReponseHATEOAS = { methode: 'GET', url: '/api/demandes/devenir-aidant', }, + 'envoyer-demande-devenir-aidant': { + methode: 'POST', + url: '/api/demandes/devenir-aidant', + }, 'demande-etre-aide': { methode: 'GET', url: '/api/demandes/etre-aide', }, + 'demander-aide': { + methode: 'POST', + url: '/api/demandes/etre-aide', + }, 'se-connecter': { methode: 'POST', url: '/api/token',