# Projet Ferme t ## 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) ### 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) Vérifier que dans le .env du dossier frontend, vous avez : - 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 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. La bdd est déja pré-configuré dans PhpStorm, il suffit de rentrer les infos du .env.docker.local pour se connecter. 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: - `204 No Content` (normal) - `Set-Cookie: BEARER=...; HttpOnly` - Le cookie est automatiquement envoyé pour les futures requêtes. - 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 Le script de livraison est version dans le repo dans script/deploy-release.sh
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 /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