- Ajout page infrastructure/bovine avec CRUD - Refacto BuildingCase (suppression Statut, simplification) - Commande EnrichBovinesCommand pour enrichir les données bovins - 4 migrations Doctrine - Mise à jour composables shipment/weighing - Mise à jour README et CHANGELOG Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
181 lines
4.9 KiB
Markdown
181 lines
4.9 KiB
Markdown
# 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. <br>
|
|
Pour cela, il faut aller dans **Settings > PHP > Servers** <br>
|
|
|
|
- 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 <br>
|
|
Sur la machine, il est disponible dans /usr/local/bin/deploy-ferme <br>
|
|
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
|