Skip to content

Commit 4344f89

Browse files
committed
♻️ chore(api) move certification attestation route
1 parent 68ba2a0 commit 4344f89

File tree

4 files changed

+449
-574
lines changed

4 files changed

+449
-574
lines changed

Diff for: api/src/certification/results/application/certification-attestation-route.js

-104
This file was deleted.

Diff for: api/src/certification/results/application/certification-route.js

+88
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
import Joi from 'joi';
22

3+
import { securityPreHandlers } from '../../../shared/application/security-pre-handlers.js';
4+
import { LOCALE } from '../../../shared/domain/constants.js';
35
import { identifiersType } from '../../../shared/domain/types/identifiers-type.js';
46
import { certificationController } from './certification-controller.js';
57

8+
const { FRENCH_SPOKEN, ENGLISH_SPOKEN } = LOCALE;
9+
610
const register = async function (server) {
711
server.route([
812
{
@@ -54,6 +58,90 @@ const register = async function (server) {
5458
tags: ['api', 'certifications'],
5559
},
5660
},
61+
{
62+
method: 'GET',
63+
path: '/api/admin/sessions/{sessionId}/attestations',
64+
config: {
65+
validate: {
66+
params: Joi.object({
67+
sessionId: identifiersType.sessionId,
68+
}),
69+
},
70+
pre: [
71+
{
72+
method: (request, h) =>
73+
securityPreHandlers.hasAtLeastOneAccessOf([
74+
securityPreHandlers.checkAdminMemberHasRoleSuperAdmin,
75+
securityPreHandlers.checkAdminMemberHasRoleCertif,
76+
securityPreHandlers.checkAdminMemberHasRoleSupport,
77+
])(request, h),
78+
assign: 'hasAuthorizationToAccessAdminScope',
79+
},
80+
],
81+
handler: certificationController.getCertificationPDFAttestationsForSession,
82+
plugins: {
83+
'hapi-swagger': {
84+
produces: ['application/pdf'],
85+
},
86+
},
87+
notes: [
88+
'- **Route accessible par un user Admin**\n' +
89+
"- Récupération des certifications d'une session au format PDF" +
90+
' via un id de session et un user id',
91+
],
92+
tags: ['api', 'certifications', 'PDF'],
93+
},
94+
},
95+
{
96+
method: 'GET',
97+
path: '/api/attestation/{certificationCourseId}',
98+
config: {
99+
validate: {
100+
params: Joi.object({
101+
certificationCourseId: identifiersType.certificationCourseId,
102+
}),
103+
query: Joi.object({
104+
isFrenchDomainExtension: Joi.boolean().required(),
105+
lang: Joi.string().valid(FRENCH_SPOKEN, ENGLISH_SPOKEN),
106+
}),
107+
},
108+
handler: certificationController.getPDFAttestation,
109+
notes: [
110+
'- **Route accessible par un user authentifié**\n' +
111+
'- Récupération des informations d’une certification au format PDF' +
112+
' via un id de certification et un user id',
113+
],
114+
tags: ['api', 'certifications', 'PDF'],
115+
},
116+
},
117+
{
118+
method: 'GET',
119+
path: '/api/organizations/{organizationId}/certification-attestations',
120+
config: {
121+
pre: [
122+
{
123+
method: securityPreHandlers.checkUserIsAdminInSCOOrganizationManagingStudents,
124+
assign: 'belongsToOrganizationManagingStudents',
125+
},
126+
],
127+
validate: {
128+
params: Joi.object({
129+
organizationId: identifiersType.organizationId,
130+
}),
131+
query: Joi.object({
132+
division: Joi.string().required(),
133+
isFrenchDomainExtension: Joi.boolean().required(),
134+
lang: Joi.string().valid(FRENCH_SPOKEN, ENGLISH_SPOKEN),
135+
}),
136+
},
137+
handler: certificationController.downloadCertificationAttestationsForDivision,
138+
tags: ['api', 'organizations'],
139+
notes: [
140+
'Cette route est restreinte aux utilisateurs authentifiés',
141+
"Elle retourne les certificats par classe liées à l'organisation sous forme de fichier PDF.",
142+
],
143+
},
144+
},
57145
]);
58146
};
59147

0 commit comments

Comments
 (0)