diff --git a/README.md b/README.md index 08a665e..832277b 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,63 @@ -# Projet Ferme +# Projet Ferme test ## Installation du projet + ### Windows + Pour windows, il faut installer le WSL2, Ubuntu, docker et nvm. -Il suffit de suivre cette [doc](https://wiki.malio.fr/bookstack/books/environnement-de-dev/chapter/windows) +Il suffit de suivre cette [doc](https://wiki.malio.fr/bookstack/books/environnement-de-dev/chapter/windows) ### Linux + Pour linux, il faut installer docker et nvm. Il suffit de suivre cette [doc](https://wiki.malio.fr/bookstack/books/environnement-de-dev/chapter/linux) ### Installation du projet + Une fois les prérequis installés, il suffit de cloner le projet et de lancer les commandes suivantes + ```bash make start make install ``` + Dans le cas ou le `make start` plante à cause du port de la bdd, il faut modifier **POSTGRES_PORT** dans le fichier .env.docker.local, remplacer le par un port disponible. ### Configuration global + Pour les variables d'environnement, il faut demander un .env.local pour le backend et un .env pour le frontend à votre collègue. Vérifier que dans le .env.local, vous avez : -* APP_SECRET (à généré dans le conteneur avec la commande php -r "echo bin2hex(random_bytes(32));" et doit être différent de celui de votre collègue, puisque utilisé pour signer des tokens) -* DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:${POSTGRES_PORT}/${POSTGRES_DB}?serverVersion=16&charset=utf8" -* PONT_BASCULE_BYPASS (doit être à true en dev) -* PONT_BASCULE_URL -* JWT_SECRET_KEY (à générer avec la commande php bin/console lexik:jwt:generate-keypair) -* JWT_PUBLIC_KEY -* JWT_PASSPHRASE (à généré dans le conteneur avec la commande php -r "echo bin2hex(random_bytes(32));") -* COOKIE_SECURE=0 (en dev 0 et en prod 1. Si c'est du http, laisser en 0) + +- APP_SECRET (à généré dans le conteneur avec la commande php -r "echo bin2hex(random_bytes(32));" et doit être différent de celui de votre collègue, puisque utilisé pour signer des tokens) +- DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:${POSTGRES_PORT}/${POSTGRES_DB}?serverVersion=16&charset=utf8" +- PONT_BASCULE_BYPASS (doit être à true en dev) +- PONT_BASCULE_URL +- JWT_SECRET_KEY (à générer avec la commande php bin/console lexik:jwt:generate-keypair) +- JWT_PUBLIC_KEY +- JWT_PASSPHRASE (à généré dans le conteneur avec la commande php -r "echo bin2hex(random_bytes(32));") +- COOKIE_SECURE=0 (en dev 0 et en prod 1. Si c'est du http, laisser en 0) Vérifier que dans le .env du dossier frontend, vous avez : -* NUXT_PUBLIC_API_BASE="http://localhost:8080/api" + +- NUXT_PUBLIC_API_BASE="http://localhost:8080/api" ### Configuration xdebug + Pour configurer xdebug, il faut ajouter un serveur sur phpstorm.
Pour cela, il faut aller dans **Settings > PHP > Servers**
-* Name : ferme-docker -* Host : localhost -* Port : 8080 -* Path : File/Directory -> l'endroit où est stocké votre projet et le path -> /var/www/html + +- Name : ferme-docker +- Host : localhost +- Port : 8080 +- Path : File/Directory -> l'endroit où est stocké votre projet et le path -> /var/www/html Pour que xdebug fonctionne sur windows, il faut modifier la variable **XDEBUG_CLIENT_HOST** par votre ip local ## Utilisation du projet + ### Backend + L'api est disponible sur http://localhost:8080/api Pour la bdd toutes les infos sont dans le fichier **docker/.env.docker.local** Vous pouvez modifier le port si nécessaire. @@ -53,17 +66,22 @@ La bdd est déja pré-configuré dans PhpStorm, il suffit de rentrer les infos d C'est un bdd local dans le docker. ### Frontend + Pour le frontend, il suffit de taper la commande suivante qui va lancer le serveur de dev + ```bash make dev-nuxt ``` + Le front sera accessible sur http://localhost:3000 ### Authentification + Ce projet utilise l'authentification JWT avec un cookie httpOnly (LexikJWTAuthenticationBundle). Le frontend ne lit jamais directement le token, le navigateur envoie automatiquement le cookie. ### Login flow + - Frontend envoie les identifiants à: - `POST /api/login_check` - Backend returns: @@ -73,20 +91,26 @@ Le frontend ne lit jamais directement le token, le navigateur envoie automatique - La déconnexion utilise `POST /api/logout` et redirige vers `/login`. ### Fixtures + Pour lancer les fixtures (Attention sa purge la bdd complètement) + ```bash php bin/console doctrine:fixtures:load ``` Attention cette commande est dangereuse, à utiliser que pour les débuts de la prod ou en recette. Dans un premier temps pour remplir les listes, vous pouvez lancer la commande symfony + ```bash php bin/console app:seed ``` + La commande va faire une update ou une création en fonction des data existante. ## Livraison en recette + ### Préparatifs + Avant de déployer, il faut penser à ajouter les variables d'env s'il y a des changements/modifications. Le .env se trouve /var/www/ferme/.env @@ -95,43 +119,62 @@ Sur la machine, il est disponible dans /usr/local/bin/deploy-ferme
Pour le modifier, il faut copier le contenu du deploy-release.sh dans le deploy-ferme ### Livraison + Sur le serveur de recette, il suffit d'utiliser cette commande pour livrer -```bash + +```bash /usr/local/bin/deploy-ferme vX.Y.Z ``` ## Commandes utiles + Pour restart le container + ```bash make restart ``` + Pour lancer les TU + ```bash make test ``` + Pour accéder au container et lance des commandes + ```bash make shell ``` + Pour clear le cache Symfony + ```bash make cache-clear ``` + Faire une migration + ```bash make migration-migrate ``` + Pour générer un password pour un user + ```bash make shell php bin/console security:hash-password ``` + Sélectionner entity User, taper sont mdp, le copier et l'ajouter dans l'insert de bdd suivant : + ```sql INSERT INTO "user" (username, roles, password) VALUES ('Mon user', '["ROLE_USER"]', 'Mon mdp hashé'); ``` + ## Gestion des logs + Pour suivre les logs en temps réel : -* tail -f var/log/dev.log -* tail -f var/log/prod.log + +- tail -f var/log/dev.log +- tail -f var/log/prod.log