Skip to content

Commit

Permalink
[REMANIEMENT][HATEOAS] Supprime la duplication en faisant appel aux c…
Browse files Browse the repository at this point in the history
…onstantes déclarées
  • Loading branch information
bbougon committed Dec 27, 2024
1 parent 4389baa commit 1a1fdf4
Show file tree
Hide file tree
Showing 9 changed files with 52 additions and 85 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,9 @@ export const routesAPIDemandesDevenirAidant = (
})
.then(() =>
reponse.status(201).json({
...constructeurActionsHATEOAS().actionsCreationCompte().construis(),
...constructeurActionsHATEOAS()
.pour({ contexte: 'se-connecter' })
.construis(),
})
)
.catch((erreur) =>
Expand Down
5 changes: 4 additions & 1 deletion mon-aide-cyber-api/src/api/hateoas/aidant.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
import { ContexteSpecifique } from './contextesUtilisateur';
import { Options } from './hateoas';

export const lancerDiagnostic: ContexteSpecifique = {
'lancer-diagnostic': {
url: '/api/diagnostic',
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',
Expand Down
8 changes: 7 additions & 1 deletion mon-aide-cyber-api/src/api/hateoas/devenirAidant.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { ContexteSpecifique } from './contextesUtilisateur';
import { Options } from './hateoas';

export const finaliseCreationEspaceAidant: ContexteSpecifique = {
'finalise-creation-espace-aidant': {
Expand All @@ -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',
Expand Down
3 changes: 2 additions & 1 deletion mon-aide-cyber-api/src/api/hateoas/etreAide.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { ContexteSpecifique } from './contextesUtilisateur';
import { Options } from './hateoas';

export const demandeEtreAide: ContexteSpecifique = {
'demande-etre-aide': {
url: '/api/demandes/etre-aide',
methode: 'GET',
},
};
export const demandeAide: ContexteSpecifique = {
export const demandeAide: ContexteSpecifique & { 'demander-aide': Options } = {
'demander-aide': {
url: '/api/demandes/etre-aide',
methode: 'POST',
Expand Down
99 changes: 20 additions & 79 deletions mon-aide-cyber-api/src/api/hateoas/hateoas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, Options>;
Expand Down Expand Up @@ -68,17 +71,13 @@ class ConstructeurActionsHATEOAS {
private readonly actions: Map<string, Options> = 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)
Expand All @@ -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;
}

Expand Down Expand Up @@ -121,12 +117,6 @@ class ConstructeurActionsHATEOAS {
});
}

public actionsAccesDiagnosticNonAutorise(): ConstructeurActionsHATEOAS {
return this.afficherTableauDeBord()
.afficherMesInformations()
.seDeconnecter();
}

public ajoutReponseAuDiagnostic(
identifiantDiagnostic: crypto.UUID
): ConstructeurActionsHATEOAS {
Expand All @@ -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;
}

Expand All @@ -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 {
Expand All @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion mon-aide-cyber-api/src/api/routesAPIAuthentification.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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',
},
},
Expand Down
8 changes: 8 additions & 0 deletions mon-aide-cyber-api/test/api/hateoas/liensAttendus.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down

0 comments on commit 1a1fdf4

Please sign in to comment.