Code source wiki de Accueil Hypercerts

Version 41.1 par Matthieu Manginot le 23/07/2020 - 12:29

Masquer les derniers auteurs
Matthieu Manginot 28.1 1
2
3 {{toc/}}
4
dufour18 22.1 5 Vous cherchez à délivrer aux étudiants de votre université des attestations de réussite dématérialisées ? Hypercerts vous permettera de générer et envoyer des attestations officielles, numériques, et infalsifiable de façon automatique.
Benjamin Seclier 1.1 6
dufour18 39.1 7 Ces dernières pourront être envoyées par mail, déposées dans le nuage, et même être certifiées authentiques grâce à une blockchain dédiée.
Benjamin Seclier 1.1 8
dufour18 39.1 9 Une fois l'application connectée à Apogée et au LDAP, les gestionnaires de scolarité pourront demander la génération et l'envoi des attestations de réussite en un clic.
dufour18 4.1 10
dufour18 3.1 11 {{info}}
dufour18 24.1 12 La version 1.0.x est une première version limitée à l'envoi des attestations par email. Bien que le cœur de l'application soit fonctionnel, les dépôts de documents dans les coffres digisposte et la certification cryptographique sont en cours de dévelopement actif.
dufour18 3.1 13 {{/info}}
Benjamin Seclier 1.1 14
Matthieu Manginot 7.1 15 == Prérequis ==
dufour18 3.1 16
dufour18 5.1 17 Hypercerts est une application Java qui se connecte à Apogée et au LDAP. Elle requiert l'utilisation d'une base MariaDB pour son fonctionnement interne. Elle se déploie sur des serveurs comme une application SpringBoot classique. Le WAR pourra être pris en charge par un tomcat et servir les utilisateur•ices via l'URL configuré.
dufour18 3.1 18
dufour18 2.1 19 |=(((
dufour18 3.1 20 Technologie
dufour18 2.1 21 )))|=(((
dufour18 3.1 22 Version
dufour18 2.1 23 )))
24 |(((
dufour18 3.1 25 JDK
dufour18 2.1 26 )))|(((
dufour18 3.1 27 11+
dufour18 2.1 28 )))
dufour18 3.1 29 |(% colspan="1" %)(((
30 SpringBoot
31 )))|(% colspan="1" %)(((
32 2.3
33 )))
34 |(% colspan="1" %)(((
35 Vaadin (Frontend)
36 )))|(% colspan="1" %)(((
37 14
38 )))
dufour18 2.1 39 |(((
dufour18 3.1 40 Tomcat
dufour18 2.1 41 )))|(((
dufour18 3.1 42 9+
43 )))
44 |(% colspan="1" %)(((
45 MariaDB
46 )))|(% colspan="1" %)(((
47 14+
48 )))
49 |(% colspan="1" %)(((
50 Maven
51 )))|(% colspan="1" %)(((
52 3.6+
53 )))
54 |(% colspan="1" %)(((
55 Connection Apogée
56 )))|(% colspan="1" %)(((
dufour18 2.1 57 \\
58 )))
dufour18 3.1 59 |(% colspan="1" %)(((
60 Connection Apogée via WS
61 )))|(% colspan="1" %)(((
dufour18 2.1 62 \\
dufour18 3.1 63 )))
64 |(% colspan="1" %)(((
65 Connection LDAP
66 )))|(% colspan="1" %)(((
dufour18 2.1 67 \\
68 )))
dufour18 3.1 69 |(% colspan="1" %)(((
70 Docker (optionnel)
71 )))|(% colspan="1" %)(((
72 docker-compose 3
73 )))
Benjamin Seclier 1.1 74
dufour18 4.1 75 == Téléchargement des sources ==
76
77 Provisoirement, les sources de l'application peuvent être téléchargées à [[cet endroit>>url:http://download-sig.univ-lorraine.fr/home/download-sig/public/hypercerts||shape="rect"]].
78
Matthieu Manginot 27.1 79 == Installation d'Hypercerts ==
dufour18 2.1 80
Matthieu Manginot 26.1 81 === **Initialisation de la base** ===
dufour18 4.1 82
Matthieu Manginot 25.1 83 La base de données MariaDB/MySQL s'initialise avec la commande Flyway suivante :
Matthieu Manginot 23.1 84
Matthieu Manginot 25.1 85 {{code language="bash" theme="Eclipse"}}
86 mvn -Dflyway.configFiles=flyway.properties flyway:migrate
87 {{/code}}
Matthieu Manginot 19.1 88
Matthieu Manginot 25.1 89 Le fichier flyway.properties doit être créé à partir du fichier exemple flyway-sample.properties. Il contient les properties standard à Flyway.
90
91 {{code language="bash" theme="Eclipse" linenumbers="true" collapse="true"}}
92 # Flyway
93 # ConfigFiles : https://flywaydb.org/documentation/configfiles
94 # mvn -Dflyway.configFiles=xxx.properties flyway:migrate
95 flyway.url=jdbc:mariadb://localhost/hypercerts?serverTimezone=Europe/Paris
96 flyway.schemas=hypercerts
97 flyway.user=XXX
98 flyway.password=
99 # Emplacement des fichiers sql de migration
100 flyway.locations=classpath:db/migration
101 # baselineOnMigrate
102 flyway.baselineOnMigrate=false
103 {{/code}}
104
Matthieu Manginot 26.1 105 Au besoin, les fichiers sql de migration peuvent être trouvés sous //src/main/resources/db/migration//.
Matthieu Manginot 25.1 106
Matthieu Manginot 33.1 107 Pour remettre à zéro la base, lancer le script //src/main/resources/db/reset/reset.sql //puis exécuter à nouveau Flyway//.//
108
Matthieu Manginot 26.1 109 === Configuration l'application ===
Matthieu Manginot 25.1 110
Matthieu Manginot 26.1 111 Créer et compléter un fichier **application.yaml** à la racine du projet sur le modèle de **application-sample.yaml**
112
Matthieu Manginot 29.1 113 Des indications sont présents dans le fichier pour aider à sa configuration.
114
Matthieu Manginot 26.1 115 === **Éléments de configuration important ** ===
116
Matthieu Manginot 29.1 117 ==== Property (% style="letter-spacing: -0.003em;" %)//app.production//(%%) ====
Matthieu Manginot 26.1 118
Matthieu Manginot 19.1 119 Pour les tests, mettre **app.production** à false pour obtenir une année supplémentaire (N-2) pour la génération, ainsi des diplômes avec résultats seront plus facilement trouvables.
120
121 En étant à false, cette property autorise également l'interception de tout les mails applicatifs.
122
123 ==== **Envoi de mail** ====
124
Matthieu Manginot 15.1 125 (% style="color: rgb(0,51,102);" %)__**Sur votre environnement de test/développement**, pour empêcher l'envoi de mails de test en réel, il est conseillé :__
Matthieu Manginot 11.1 126
127 * d'utiliser un mail catcher ([[https:~~/~~/mailcatcher.me/>>url:https://mailcatcher.me/||shape="rect"]]) en remplacement de votre smtp
128 * ou de configurer l'application pour intercepter tout les mails applicatifs avec ces valeurs :
129 ** **app.production** à false
130 ** **spring.mail.intercept.active** à true
131 ** et **spring.mail.intercept.mails** contenant une ou plusieurs adresses de réception des mails
132
dufour18 39.1 133 Enfin, la property **app.mails** sert à définir une ou plusieurs adresses permettant de recevoir les mails applicatifs. ⚠ Aujourd'hui, dans cette version tous les envois sont en copie de cette property. Elle peut être laissé vide.
Matthieu Manginot 31.1 134
Matthieu Manginot 20.1 135 ==== WebServices Apogée ====
136
Matthieu Manginot 36.1 137 Les WebServices Apogée sont appelés par l'intermédiaire d'une librairie UL.
Matthieu Manginot 20.1 138
Matthieu Manginot 36.1 139 Les properties différent du classique configUrlServices.properties de l'AMUE.
140
141 Des headers peuvent être ajoutés en paramètre de chaque WebService.
142
143 Exemple :
144
145 {{code language="bash" theme="Eclipse" linenumbers="true" collapse="true"}}
146 ws:
147 apogee:
148 administratif:
149 url: https://api.univ.fr/apo/amue_apo_administratif
150 headers:
151 # header1: value1
152 # header2: value2
153 username: xxxx
154 password: xxxx
155 {{/code}}
156
Matthieu Manginot 12.1 157 === Configurer et lancer le projet dans Eclipse ===
158
159 * Importer le projet Maven dans eclipse.
Matthieu Manginot 19.1 160 * Lorsque la configuration est terminée, démarrer l'application en faisant un clic droit sur {{code language="none"}}fr.univlorraine.hypercerts.Application.java{{/code}} et en choisissant 'Run As / Java Application'.
Matthieu Manginot 12.1 161
Matthieu Manginot 14.1 162 === Customisation des services ===
163
Matthieu Manginot 18.1 164 Plusieurs services sont personnalisables en fonction de votre environnement.
Matthieu Manginot 14.1 165
Matthieu Manginot 25.1 166 Sous //fr.univlorraine.hypercerts.apogee.service.customs// :
Matthieu Manginot 16.1 167
Matthieu Manginot 17.1 168 * ApogeeUserServiceCustomExample
Matthieu Manginot 18.1 169 ** Personnalisation de la récupération des adresses mails des utilisateurs Apogée à partir de l'uid LDAP
Matthieu Manginot 17.1 170 * BlocageServiceCustomExample
Matthieu Manginot 18.1 171 ** Personnalisation de la récupération des blocages/interdits à partir d'un code étudiant Apogée
Matthieu Manginot 17.1 172 * ComposanteServiceCustomExample
Matthieu Manginot 18.1 173 ** Personnalisation de la récupération :
174 *** de toutes les composantes
175 *** des composantes pour un utilisateur à partir de l'uid LDAP
176 *** du nombre de composantes pour un utilisateur à partir de l'uid LDAP
Matthieu Manginot 16.1 177
Matthieu Manginot 37.1 178 Pour personnaliser un de ces services :
Matthieu Manginot 21.1 179
Matthieu Manginot 37.1 180 1. Copier la classe en la renommant
181 1. Implémentation la ou les méthodes
Matthieu Manginot 38.1 182 11. Vous êtes libre de créer des repositories ou d'utiliser l'entityManager directement.
Matthieu Manginot 37.1 183 1. (((
184 Dé-commenter les 2 annotations :1. (((
185 @Service
186 )))
187 1. (((
188 et @Override~*~*
189 )))
190 )))
Matthieu Manginot 38.1 191 1. Au démarrage de l'application
192 11. Un ligne "//Overriding XXX for YYY implementation//" doit apparaître dans les logs
Matthieu Manginot 37.1 193
194 Exemple :
195
Matthieu Manginot 38.1 196 {{code language="java" theme="Eclipse" linenumbers="true" collapse="true"}}
Matthieu Manginot 37.1 197 /**
198 * Override default ApogeeUserService implementation.
199 * >> README
200 * Décommenter l'annotation @Service pour que le service soit instancié et l'annotation @OverrideApogeeUserService pour que l'implémentation soit utilisée.
201 *
202 * @author Matthieu Manginot
203 */
204 @NoArgsConstructor
205 @Slf4j
206 @Service
207 @OverrideApogeeUserService
208 public class ApogeeUserServicePERSO implements IApogeeUserService {
209
210 @PersistenceContext(unitName = "apogeeEntityManagerFactory")
211 private EntityManager entityManagerApogee;
212
213 @PostConstruct
214 public void init() {
215 log.info("Overriding {} for IApogeeUserService implementation", getClass().getCanonicalName());
216 }
217
218 /**
219 * @see fr.univlorraine.hypercerts.apogee.services.IApogeeUserService#getEmail(java.lang.String)
220 */
221 @Override
222 public String getEmail(final String uidLdap) {
223 /* Implémentation personnalisée de getEmail. entityManagerApogee.createNativeQuery... */
224 return "mail@univ.fr";
225 }
226 }
227 {{/code}}
228
Matthieu Manginot 38.1 229 ===
230 Customisation de Digiposte ===
Matthieu Manginot 17.1 231
232 //Documentation à venir.//
233
Matthieu Manginot 12.1 234 === Tâches Maven ===
235
236 * Lancer l'application (hors d'un IDE) :
237
238 {{code language="bash" theme="Eclipse"}}
239 mvn spring-boot:run
240 {{/code}}
241
242 * Lancer les tests :
243
244 {{code language="bash" theme="Eclipse"}}
245 mvn verify
246 {{/code}}
247
248 * Créer le package pour production :
249
250 {{code language="bash" theme="Eclipse"}}
251 mvn clean package -Pproduction
252 {{/code}}
253
Matthieu Manginot 13.1 254 === Makefile ===
255
256 Un Makefile est également disponible. A la racine, utilisez `make help` pour obtenir les commandes disponibles.
257
Matthieu Manginot 14.1 258 == Tests unitaires ==
dufour18 4.1 259
Matthieu Manginot 40.1 260 Pour s'assurez que les résultats d'admission de vos étudiants soient bien correctes, et afin d'éviter les faux positifs (donc envoyer une attestation de réussite à un•e étudiant•e non reçu•e aux examens), vous pouvez ajouter vos jeux de données.
dufour18 4.1 261
Matthieu Manginot 41.1 262 Les tests utilisent 3 classes:
Matthieu Manginot 14.1 263
Matthieu Manginot 40.1 264 (% style="list-style-type: square;" %)
265 * ResultatsTests.java
Matthieu Manginot 41.1 266 * ResultatsTestCase.java
267 * ResultatsServiceTest.java
Matthieu Manginot 40.1 268
Matthieu Manginot 41.1 269 RésultatTes
270
Matthieu Manginot 40.1 271 \\
272
Matthieu Manginot 30.1 273 == Utilisation d'Hypercerts ==
274
dufour18 39.1 275 (% class="relative-table" style="width: 100.0%;" %)
Matthieu Manginot 34.1 276 |=(((
277 Vue
278 )))|=(((
279 Utilisation
280 )))
281 |(((
282 (% class="content-wrapper" %)
283 (((
Matthieu Manginot 36.1 284 [[image:attach:1-Accueil.png||height="250"]]
Matthieu Manginot 34.1 285 )))
286 )))|(((
Matthieu Manginot 36.1 287 (% class="content-wrapper" %)
288 (((
dufour18 39.1 289 En tant que gestionnaire de scolarité ou super admin, rendez vous sur l'application.
Matthieu Manginot 33.1 290
dufour18 39.1 291 Une fois le CAS passé, vous atteignez la page d'accueil de l'application. Vous y retrouvez les composantes dans lesquelles vous pourrez faire des demandes de génération en envoi d'attestations dématérialisées. Pour les gestionnaires, celles-ci correspondent à vos droits Apogée. Les super admins ont eux accès à toutes les composantes.
Matthieu Manginot 36.1 292
Matthieu Manginot 38.1 293 Dans le panneau de gauche, vous retrouvez une série d'onglets. Ceux-ci sont disposés de haut en bas, dans l'ordre de leur utilisation.
Matthieu Manginot 34.1 294 )))
Matthieu Manginot 36.1 295 )))
Matthieu Manginot 34.1 296 |(((
Matthieu Manginot 36.1 297 (% class="content-wrapper" %)
298 (((
299 [[image:attach:2-Génération.png||height="250"]]
300 )))
Matthieu Manginot 34.1 301 )))|(((
dufour18 39.1 302 Pour lancer la génération d'attestations de réussite pour un diplôme (créer une campagne de dématérialisation) choisissez:
303
304 (% style="list-style-type: square;" %)
305 * L'année académique
306 * La composante
307 * Le diplôme (les résultats proposés correspondent à la composante sélectionnée)
308
309 L'application retrouve les promotions d'étudiant.es et récapitule les informations avant le lancement des demandes.
310
311 Vous pouvez utiliser le bouton visualiser un specimen d'attestation pour valider visuellement le rendu des attestations qui vont être générées.
312
313 Veillez à ce que le libelle du diplôme soit bien celui que vous attendez.
314
Matthieu Manginot 34.1 315 \\
dufour18 39.1 316
317 * //Le bouton avec les flèches en rond permet de forcer une nouvelle recherche//
318 * //Le bouton gomme permet d'effacer les paramètres//
Matthieu Manginot 34.1 319 )))
320 |(((
Matthieu Manginot 36.1 321 (% class="content-wrapper" %)
322 (((
323 [[image:attach:3-diplomes.png||height="250"]]
324 )))
dufour18 39.1 325 )))|(% rowspan="2" %)(((
326 Une fois vos demandes faites, vous retrouvez leur avancement dans la vue "Diplômes"
327
328 Après que le traitement des demandes soit fait, les diplômes passent dans la section 'Terminés'
329
330 On y retrouve des informations relatives à la génération et distribution des attestations.
331
332 Le même rapport a été envoyé par email au gestionnaire qui à fait la demande.
Matthieu Manginot 34.1 333 )))
334 |(((
Matthieu Manginot 36.1 335 (% class="content-wrapper" %)
336 (((
337 [[image:attach:3-2.png||height="250"]]
338 )))
Matthieu Manginot 34.1 339 )))
Matthieu Manginot 36.1 340 |(% colspan="1" %)(((
341 (% class="content-wrapper" %)
342 (((
Matthieu Manginot 37.1 343 === [[image:attach:4-etudiants.png||height="250"]] ===
Matthieu Manginot 36.1 344 )))
345 )))|(% colspan="1" %)(((
dufour18 39.1 346 Si on cherche à vérifier comme s'est déroulé la génération et distribution d'une attestation pour un•e étudiant•e, on peut utiliser la vue "Étudiants".
347
Matthieu Manginot 36.1 348 \\
dufour18 39.1 349
350 On peut utiliser le codEtu ou recherche par nom / prénom.
351
352 \\
353
354 On retrouve toutes les années pour lesquelles l'un•e étudiant•e a été traitée. Pour chaque année sont précisés les diplôme, et pour chaque diplôme on retrouve le rapport des étapes dans l'ordre chronologique.
355
356 Si une erreur est survenue, la raison sera précisée ici.
357
358 \\
359
360 Il est aussi possible de télécharger l'attestation avec le bouton "Télécharger l'attestation"
Matthieu Manginot 36.1 361 )))
Matthieu Manginot 30.1 362
Matthieu Manginot 40.1 363 == Administration ==
dufour18 4.1 364
Matthieu Manginot 41.1 365 === Connexions ===
366
Matthieu Manginot 40.1 367 {{status colour="Red" title="TODO"/}}
368
Matthieu Manginot 41.1 369 === Gestion ===
370
371 {{status colour="Red" title="TODO"/}}
372
Matthieu Manginot 34.1 373 \\
374
Benjamin Seclier 1.1 375 {{section}}
376 {{column width="60%"}}
377 {{recently-updated/}}
378 {{/column}}
379
dufour18 2.1 380 {{column width="5%"}}
381 \\
382 {{/column}}
Benjamin Seclier 1.1 383
384 {{column width="35%"}}
385 ====== Navigate space ======
386
387 {{locationSearch reference="WebHome"/}}
388
389 {{pagetree/}}
390 {{/column}}
391 {{/section}}
Matthieu Manginot 37.1 392
393 {{code language="java" theme="Eclipse" linenumbers="true" collapse="true"}}
394 ws:
395 apogee:
396 administratif:
397 url: https://api.univ.fr/apo/amue_apo_administratif
398 headers:
399 # header1: value1
400 # header2: value2
401 username: xxxx
402 password: xxxx
403 {{/code}}