Skip to content
Marina edited this page Feb 10, 2023 · 17 revisions

Backlog

1) Création de comptes étudiant

US : En tant qu'utilisateur non enregistré, j'aimerais pouvoir me créer un compte étudiant. Fonctionnalité qui fournit un formulaire avec une adresse email, un pseudo et un mot de passe. Après cela l'utilisateur appuie sur le bouton submit et sera redirigé vers la page d'accueil.

Critères d'acceptation

  • l'utilisateur a bien accès à la bibliothèque après inscription.
  • l'utilisateur non enregistré arrive sur une page connexion/inscription en premier lorsqu'il accède au site.

2) Création de compte formateur

US : En tant qu'utilisateur non enregistré, j'aimerais me créer un compte formateur. Fonctionnalité similaire à la fonctionnalité 1, il faudra en plus préciser via une checkbox si l'utilisateur désire bénéficier du statut de formateur à faire valider par l'admin.

Critères d'acceptation

  • L'utilisateur après avoir cliqué sur le bouton submit est renvoyé sur une page "en attente de validation" en attendant la validation de l'admin.
  • Une fois que l'administrateur a validé l'inscription, l'utilisateur est redirigé vers la page d'accueil.

3) Confirmation de compte formateur

US : En tant qu'administrateur j'aimerais valider un compte formateur. Fonctionnalité qui permet à l'administrateur de valider l'inscription d'un formateur (lorsqu'un utilisateur s'inscrit en cochant la checkbox "formateur"). Il aura accès à une page "formateur en demande" avec le nom et le mail ainsi qu'un bouton de validation.

Critère d'acceptation

  • L'administrateur est prévenu (par mail) lorsque un formateur souhaite se créer un compte (il voit quelle est l'adresse mail de ce formateur et détermine si il est bien légitime).
  • Grâce à un bouton "valider l'inscription", il peut valider l'inscription de ce formateur et ce dernier disposera donc d'un compte formateur.

4) Connexion des comptes

US : En tant qu'utilisateur(étudiant, formateur, administrateur) j'aimerais me connecter à mon compte. Fonctionnalité qui permet à un utilisateur inscrit d'accéder à une page et d'entrer son pseudo et son mot de passe afin d'avoir accès à la page bibliothèque.

Critères d'acceptation

  • L'utilisateur accède à la page en cliquant sur l'onglet "connexion".
  • L'utilisateur entre son pseudo et son mot de passe et clique sur "submit".
  • Si le pseudo n'existe pas dans la DB, un message d'alerte est envoyé "cet utilisateur n'existe pas".
  • Si le mot de passe est incorrect, un message d'alerte est envoyé "mot de passe incorrect".
  • Une fois le bouton "submit" cliqué, l'utilisateur est redirigé vers la page "bibliothèque".

5) Affichage des formations

US : En tant qu'utilisateur (étudiant, formateur, administrateur) j'aimerais accéder à l'ensemble des créations des autres utilisateurs via une bibliothèque. Fonctionnalité qui consiste en une page contenant tous les documents créés par les formateurs. Chacune de ces création identifie son créateur et le titre . En cliquant sur un titre il aura accès au document.

Critère d'acceptation

  • L'utilisateur doit être redirigé vers cette page après s'être connecté.
  • L'utilisateur peut également accéder à cette page

6) Création d'une formation

US : En tant que formateur et administrateur, j'aimerais pouvoir poster un(des) écrit(s) afin de compléter la bibliothèque du site accessible aux autres utilisateurs. Cette fonctionnalité permet à un formateur/administrateur d'ajouter une formation à une bibliothèque (sur la page bibliothèque). Une fois l'outil de création ouvert, il pourra ajouter un titre, et écrire le contenu avant de le valider via un bouton submit.

Critères d'acceptation

  • Une fois le bouton submit appuyé l'utilisateur est renvoyé à la page d'accueil et il peut bien consulter son œuvre à partir de la bibliothèque.
  • Une fois le bouton "ajout" a été sélectionné, j'ai bien accès à une page avec 2 champs, un pour le titre et un autre pour le texte ainsi qu'un bouton submit.

7) Redirection page d'accueil

US : En tant qu'utilisateur, j'aimerais pouvoir revenir sur la page d'accueil (bibliothèque) une fois ma consultation finie. Cette fonctionnalité offre un bouton "revenir à la page d'accueil" sur une page de formation afin de finir la consultation.

Critères d'acceptation

  • Une fois le bouton cliqué, je reviens bien sur la page d'accueil.

Déploiement

Nous avons déployé le site sur 2 containers différents. Le Frontend et le Backend se trouvent sur une machine France sous l'IPV4 "10.0.110.5".
Nous les avons par contre séparées en 2 containers différents et ce qui les différencie est le port exposé. Le backend communique sur le port 3001 et le frontend utilise les ports 80 et 443.

La base de données est déployée sur un container dans une autre machine par soucis de sécurité. Elle est placée dans une DMZ séparée mais pas complètement isolée car elle réalise des sauts indirects vers l'extérieur via le backend. L'adresse IPv4 de cette machine est 10.0.140.1 et communique par le port 5432 (car nous utilisons PostgreSQL). Nous avons créé un fichier Dockerfile qui permettra de configurer le container avec le script situé dans le fichier DB.

Technologies utilisées

Nginx

Technologie la plus générique et la plus simple à déployer. Voici une liste non-exhaustive de caractéristiques liée à Nginx.

  • Gratuit
  • Backup disponible mais sans personnalisation.
  • peu flexible dans la personnalisation.
  • Nginx joue le rôle de reverse proxy donc il n'est pas nécessaire d'en implémenter un dans l'infra.
  • peut poser des problèmes avec des modules dynamiques.
  • plus performant que Apache grâce à sa capacité à faire plusieurs requêtes par thread.

Les choix principaux se tournaient entre Apache et Nginx mais les choix se ont été guidés sur Nginx par un choix basé sur l'expérience d'utilisation. Ayant un site léger il entre dans les caractéristiques suffisantes autant dans Apache que Nginx, le choix se porte donc sur la préférence.

Nous allons ajouter un 3ème container avec Nginx que nous allons configurer pour qu'il fasse office de reverse proxy.

Ici un lien d'analyse plus détaillé.

Node.js React

Choix fait par soucis de facilité afin de pouvoir recycler nos anciens projets. C'est la technologie évidente car c'est celle qui a été la plus utilisée par les membres de notre groupe. L'accent n'étant pas porté sur le web nous n'avons pas pris plus de temp à se poser la question.

Voici un lien pour une analyse plus complète

Choix technologies backend

NodeJS

etape1

NodeJs est une plateforme libre en javascript. Nous avons choisi d’utiliser NodeJs car nous connaissons tous cette technologie et nous savons tous utiliser le langage javascript. Voici quelques avantage de NodeJS :

  • Evolutif car il est capable de gérer un grand nombre de connexions simultanées avec un débit élevé.
  • Paquets, il existe beaucoup de paquets Node.js open source qui peut simplifier le travail.
  • Solide, Node.js est écrit en C et C++, cela le rend rapide et ajoute des fonctionnalités tel que le support réseau.
  • Asynchrone, cela permet d’éviter les attentes et que plusieurs requêtes soient lancée en parallèles

Express Js

etape1

Express.js est une plateforme full stack étant donné qu'elle permet d’utiliser un seul langage pour le front-end et le back-end.

Express validor

etape1

Nous avons utilisé express validator. Cela peut aider à améliorer la sécurité, la qualité et l’expérience utilisateur de l’application en permettant une validation efficace et flexibilité des données d’entrée.

Quelques avantages :

  • Valider les données des requêtes http pour s’assurer qu’elles sont valides et conformes à certaines règles définies. Cela permet de prévenir certaines erreurs et vulnérabilité de sécurité qui pourraient arriver si les données d’entrée ne sont pas bien validées.
  • Il peut envoyer des messages d’erreur pour informer l’utilisateur des erreurs dans le formulaire soumis
Clone this wiki locally