Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/charlenry/spring-gestion-produits
Partie backend métier de l'application "Gestion de produits"
https://github.com/charlenry/spring-gestion-produits
api api-rest auth0-jwt java keycloak mysql oauth2 openid-connect postman spring-boot-3 sts4
Last synced: about 11 hours ago
JSON representation
Partie backend métier de l'application "Gestion de produits"
- Host: GitHub
- URL: https://github.com/charlenry/spring-gestion-produits
- Owner: charlenry
- Created: 2024-05-11T17:18:51.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-06-29T00:37:55.000Z (5 months ago)
- Last Synced: 2024-06-29T01:38:47.757Z (5 months ago)
- Topics: api, api-rest, auth0-jwt, java, keycloak, mysql, oauth2, openid-connect, postman, spring-boot-3, sts4
- Language: Java
- Homepage:
- Size: 193 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Partie backend métier de l'application "Gestion de produits"
Cette application permet de gérer des produits avec des accès sécurisés selon les rôles attribués à chaque utilisateur. Il y a un rôle `administrateur` et un rôle `utilisateur`. L'application a été développée dans le cadre du projet fil rouge d'une formation MOOC pour devenir `Développeur Full Stack Java Spring Boot 3 / Angular`. Elle est composée de trois parties :
1. Une partie `frontend` développée en Angular 17 (voir [angular-gestion-produits](https://github.com/charlenry/Angular-Gestion-Produits)),
2. Une partie `backend métier` (ce projet) connectée à une base de données MySQL qui permet de gérer les produits. Elle a été développée en Java avec Spring Boot 3,
3. Une partie `backend IAM` **(Identity and Access Management)** connectée à une base de données MySQL qui gère les identités et les accès. Elle a été développée en Java avec Spring Boot 3 (voir le projet [spring-gestion-utilisateurs](https://github.com/charlenry/Spring-Gestion-Utilisateurs)).**Remarque :** La partie IAM développée en Java avec Spring Boot 3 est interchangeable avec l'IAM `Keycloak`. Pour ce faire, il y a deux branches dans la partie `frontend` et dans la partie `backend métier` :
1. La branche `main` qui permet de faire fonctionner les parties frontend et backend métier avec la partie IAM développée en Java avec Spring Boot 3,
2. La branche `secured_apis_with_keycloak_oauth2` qui permet de faire fonctionner les parties frontend et backend métier avec l'IAM Keycloak.## Installation et lancement
Pour que l'application fonctionne correctement, il faut exécuter le serveur de base de données MySQL plus les trois parties.### Serveur de base de données MySQL
1. Téléchargez et installez le logiciel [XAMPP](https://www.apachefriends.org/fr/download.html),
2. Lancez le serveur Apache et le serveur MySQL,
3. Dans la console `XAMPP Control Panel`, cliquez sur le bouton `Admin` de MySQL pour accéder à l'interface de gestion des bases de données,
4. Créez deux bases de données nommées respectivement `spring_produits_db` et `spring_users_iam_db`. Puis importez les tables à partir des fichiers `spring_produits_db.sql` et `spring_users_iam_db.sql` à télécharger depuis [GitHub](https://github.com/charlenry/Annexe-Gestion-Produits).### Partie backend métier
1. Si vous utilisez `Spring Tool Suite` , importez le projet [spring-gestion-produits](https://github.com/charlenry/Spring-Gestion-Produits) à partir Git, fournissez l'URL du dépôt du projet et choisissez la branche `main` pour le faire fonctionner avec le projet [spring-gestion-utilisateurs](https://github.com/charlenry/Spring-Gestion-Utilisateurs). Sinon, choisissez la branche `secured_apis_with_keycloak_oauth2` pour le faire fonctionner avec [Keycloak](https://www.keycloak.org/downloads). Si vous utilisez VSCode, clonez le projet, puis choisissez la branche `main` ou `secured_apis_with_keycloak_oauth2` selon votre choix.
2. Lancez le projet en tant qu'application Spring Boot. L'application sera accessible à l'adresse `http://localhost:8080`.### Partie backend IAM
1. Si vous utilisez `Spring Tool Suite`, importez le projet [spring-gestion-utilisateurs](https://github.com/charlenry/Spring-Gestion-Utilisateurs) à partir Git, fournissez l'URL du dépôt du projet et choisissez la branche `main`. Si vous utilisez VSCode, clonez le projet et choisissez la branche `main`.
2. Lancez le projet en tant qu'application Spring Boot. L'application sera accessible à l'adresse `http://localhost:8081`.### Partie frontend
1. Clonez le projet,
2. Tapez la commande `npm install` pour installer les dépendances,
3. Tapez la commande `ng serve -o` pour lancer l'application. L'application sera accessible à l'adresse `http://localhost:4200`.### Keycloak
Si vous utilisez la branche `secured_apis_with_keycloak_oauth2` pour la partie backend IAM, il faut installer Keycloak. Rendez-vous sur le site officiel de [Keycloak](https://www.keycloak.org/downloads) et téléchargez le premier fichier dans la rubrique `Server`. Décompressez-le puis rendez-vous dans le dossier `bin`.Entre-temps, créez une variable d'environnement système nommée `JAVA_HOME` qui contient le chemin de votre `JDK`.
Pour lancer Keycloak, tapez la commande suivante :
```bash
kc.[bat|sh] start-dev --http-port=8090
````kc.bat` ou `kc.sh` selon votre système d'exploitation. Keycloak sera accessible à l'adresse `http://localhost:8090`. Créez un compte administrateur pour accéder à l'interface d'administration. Une fois dans l'interface d'administration, cliquez sur la liste déroulante en haut à gauche puis sur le bouton `Create realm`. Ensuite, cliquez sur `Browse...` et choisissez le fichier `products-realm.json` à télécharger depuis [GitHub](https://github.com/charlenry/Annexe-Gestion-Produits). Enfin, cliquez sur le bouton `Create` pour importer le `realm`.
Par la suite, vous pouvez vous connecter à l'interface de l'application à l'adresse `http://localhost:4200`. Vous pouvez vous connecter avec les mêmes identifiants que ceux mentionnés dans la partie `Page d'accueil` ci-dessous.
## Utilisation
### Page d'accueil
La page d'accueil permet de se connecter à l'application. Les nouveaux utilisateurs peuvent s'inscrire. Un code de confirmation est envoyé par email pour activer le compte. Pour faire fonctionner cette partie, il y a deux options :1. Vous utilisez le `backend IAM` développé avec Spring Boot 3. Dans ce cas, il faut configurer le serveur SMTP dans le fichier `application.properties` du projet [spring-gestion-utilisateurs](https://github.com/charlenry/Spring-Gestion-Utilisateurs). Vous pouvez utiliser le serveur SMTP [MailHog](https://github.com/mailhog/MailHog/releases) pour tester l'envoi d'email. L'application est configurée pour utiliser le serveur SMTP `MailHog` par défaut. Mais vous pouvez configurer un autre serveur SMTP de votre choix.
2. Vous utilisez `Keycloak`. Dans ce cas, si vous avez importé le `realm` du projet, il est déjà préconfiguré pour fonctionner avec [MailHog](https://github.com/mailhog/MailHog/releases) que vous devez lancer. Mais vous pouvez configurer le serveur SMTP de votre choix.
Il y a deux rôles : `ADMIN` et `USER`. Les identifiants et mots de passe sont les suivants :
1. Pour le rôle `ADMIN` :
🔹 Identifiant : `admin`
🔹 Mot de passe : `123`2. Pour le rôle `USER` :
🔹 Identifiant : `charles`
🔹 Mot de passe : `123`### Page de gestion des produits
La page de gestion des produits permet de visualiser, ajouter, modifier et supprimer des produits. Seul l'utilisateur ayant le rôle `ADMIN` peut ajouter, modifier ou supprimer des produits. Il est également possible de rechercher des produits par nom ou par catégorie.