Il doit y exister 2 types d'utilisateurs : Administrateur et Employée
- Un administrateur a tous les privilèges sur les matériels : Ajout, Suppression, Modification, Listing ...
- Un Employée peut seulement allouer un matériel pour une durée donnée, et le rendre par la suite.
L'application contiendra donc une table User qui comprend les informations : username, password, role ... (Pour but de simplification, insérer les utilisateurs par script sql lors du lancement de l'application, )
Chaque type de matériel se voit avoir une quantité de stock : 5 tables toutes allouées veut dire que la prochaine allocation ne sera pas possible.
Un utilisateur ayant le rôle employée se connecte à l'application en fournissant le couple (username, password). Si la connexion est réussie, alors on lui affiche le menu :
- Chercher un matériel;
- Allouer un matériel;
- Rendre un matériel;
- Afficher la liste des matériels alloués par lui même
- Afficher la liste de tous les matériels
et d'après son choix on effectue les traitements nécessaires;
Un utilisateur ayant le rôle administrateur se connecte à l'application en fournissant le couple (username, password). Si la connexion est réussie, alors on lui affiche le menu :
- Chercher un matériel;
- Créer un nouveau matériel;
- Supprimer un matériel;
- Modifier les informations d'un matériel
- Marquer un matériel indisponible
- Allouer un matériel;
- Rendre un matériel;
- Afficher la liste des matériels alloués par lui même
- Afficher la liste des matériels alloués par chaque utilisateur
- Afficher la liste de tous les matériels et d'après son choix on effectue les traitements nécessaires;
Un utilisateur fournit un couple (username, password) qui est erroné
- Lui afficher un message d'erreur convenable;
- Lui proposer de ressaisir ses informations ou bien quitter l'application.
Un utilisateur veut allouer un matériel non disponible ou épuisé
- Lui afficher un message d'erreur convenable;
- Lui réafficher le menu initial correspondant;
- Foker le repo suivant, https://github.com/BelmoMusta/DEVEOIR-TP-GI4 pour soumission de travail, créer un PR sur github dont le titre sera votre nom complet;
- Créer les tables nécessaires, et aussi les relations entre elles;
- Respecter la décomposition des couches : dao, service, controller ....;
- Prévoir les beans spring nécessaire, et les injecter aux bons endroits;
- Utiliser JdbcTemplate avec les mappers nécessaires;
- Externaliser, à la limite du possible, les messages en dur sur des fichiers properties et les charger au démarrage;
- Prévoir un schéma d'héritage entre les entités;
- Utiliser le pattern publisher-listener uniquement pour la création et la modification des entités;
- Un point pour un code réfactoré x
- un point pour un code clean ( nommage, structure, SOLID, ...etc)
- Hasher les mots de passes des utilisateurs en utilisant un algorithme asymétrique (bCrypt par exemple)
- Utilser l'AOP pour gérer l'authentification;
- Utiliser une table de rôles : un utilisateur peut avoir plusieurs rôles à la fois;
- créer des test unitaires avec Junit.