Après une première version centrée sur la gestion métier de la chocolaterie et une deuxième étape orientée application web CRUD avec Spring Boot, Thymeleaf, JPA et PostgreSQL, une version 3 du projet est désormais envisagée.
Cette nouvelle étape a pour objectif d’ajouter une vraie dimension applicative, sécurisée et professionnelle au projet.
L’application devra donc évoluer pour intégrer :
Either
La charte graphique existante de la Chocolaterie de Pâques doit être conservée. Les nouvelles pages doivent donc rester cohérentes avec le style CSS déjà fourni dans les templates.
La Maison du Cacao Royal souhaite désormais ouvrir son application à 2 types d’utilisateurs :
L’administrateur gère le contenu et le fonctionnement global de la boutique :
Un internaute doit pouvoir :
L’application ne doit donc plus être pensée uniquement comme un outil de gestion interne, mais comme une application web complète avec sécurité et profils utilisateurs.
Cette nouvelle étape du projet doit permettre de mettre en pratique :
L’application doit intégrer une vraie gestion des utilisateurs.
Un utilisateur doit posséder au minimum :
Les rôles à prévoir au minimum :
ROLE_ADMIN
ROLE_CLIENT
Un administrateur authentifié doit pouvoir accéder à une zone d’administration permettant :
L’administrateur doit également pouvoir :
Un internaute client doit pouvoir :
Contraintes importantes :
L’authentification doit être mise en place avec Spring Security. L’utilisateur doit pouvoir se connecter à l’aide de son email et de son mot de passe.
Le mot de passe doit être stocké de manière sécurisée, par exemple via un encodeur de mot de passe.
La sécurité doit s’appuyer sur les rôles.
Exemples de règles attendues :
/admin/**
/client/**
/inscription
/connexion
L’application doit proposer :
Le modèle existant doit évoluer.
Les entités métier existantes restent présentes :
Categorie
Produit
Client
Commande
LigneCommande
LigneCommandeId
Vous devez ajouter au minimum :
Utilisateur
Role
Deux approches sont possibles :
Un champ role dans Utilisateur.
role
Une entité Role liée à Utilisateur.
Pour ce mini-projet, les 2 approches sont acceptables, à condition que le modèle reste propre.
Vous devez réfléchir à l’articulation entre :
Plusieurs choix sont possibles :
Pour ce projet, il est recommandé de privilégier une structure claire et maintenable.
Le projet doit continuer à respecter une architecture en couches :
fr/chocolaterie/ ├── controller/ ├── entity/ ├── repository/ ├── service/ ├── security/ ├── dto/ ├── mapper/ ├── config/ └── exception/
Éléments supplémentaires attendus :
security
dto
mapper
config
Elle doit contenir :
Elle doit contenir les repositories JPA nécessaires pour :
Les templates fournis précédemment restent la base visuelle du projet.
Contraintes sur l’IHM :
Pages à ajouter au minimum :
Le style CSS existant doit être réutilisé et prolongé, pas remplacé brutalement.
Une documentation interactive de l’API doit être intégrée.
Objectifs :
Exemples de routes qui peuvent être documentées :
Dans cette version 3, vous pouvez introduire Vavr pour rendre la logique métier plus expressive.
L’objectif est d’éviter une prolifération d’exceptions pour des cas métier prévisibles.
Exemples de cas métier adaptés à Either :
Plutôt que de lever systématiquement une exception, vous pouvez retourner un résultat du type :
Either<String, Commande>
Either<ErreurMetier, Produit>
Either<ErreurMetier, Void>
Intérêt :
En plus de la logique déjà attendue dans les versions précédentes, la version 3 doit intégrer les règles suivantes :
Inscription :
le rôle attribué lors de l’inscription publique est ROLE_CLIENT.
Connexion :
un utilisateur authentifié doit être redirigé vers l’espace adapté à son rôle.
Consultation des commandes :
un client ne peut consulter que ses propres commandes.
Création de commande côté client :
il ne doit pas pouvoir créer une commande au nom d’un autre client.
La logique de stock des versions précédentes reste applicable.
Vous devez proposer une configuration de sécurité cohérente.
Exemples de routes publiques :
/
/catalogue
/produits
/categories
Exemples de routes réservées aux clients connectés :
/mes-commandes/**
Exemples de routes réservées à l’administrateur.trice :
/gestion/**
Pour les routes REST :
À partir du projet précédent :
Vous devez rendre :
pom.xml
application.yml
application.properties
À la fin de cette version 3, l’application doit permettre :
Travaillez dans cet ordre :
N’essayez pas de tout faire d’un seul coup.
Commencez par tester :
Dans cette version 3, la chocolaterie passe du simple atelier de gestion à une vraie boutique en ligne.