| Numéro du ticket | Titre du ticket | |------------------|-----------------| | #202 | Authentification — Connexion utilisateur (JWT) | ## Description de la PR [#202] Authentification — Connexion utilisateur (JWT) ## Modification du .env ## Check list - [x] Pas de régression - [ ] TU/TI/TF rédigée - [x] TU/TI/TF OK - [x] CHANGELOG modifié Reviewed-on: https://gitea.malio.fr/MALIO-DEV/Ferme/pulls/5 Reviewed-by: THOLOT DECHENE Matthieu <matthieu@yuno.malio.fr> Co-authored-by: tristan <tristan@yuno.malio.fr> Co-committed-by: tristan <tristan@yuno.malio.fr>
Projet Ferme
Installation du projet
Windows
Pour windows, il faut installer le WSL2, Ubuntu, docker et nvm. Il suffit de suivre cette doc
Linux
Pour linux, il faut installer docker et nvm. Il suffit de suivre cette doc
Installation du projet
Une fois les prérequis installés, il suffit de cloner le projet et de lancer les commandes suivantes
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)
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
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/logoutet redirige vers/login.
Commandes utiles
Pour restart le container
make restart
Pour lancer les TU
make test
Pour accéder au container et lance des commandes
make shell
Pour clear le cache Symfony
make cache-clear
Faire une migration
make migration-migrate
Pour générer un password pour un user
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 :
INSERT INTO "user" (username, roles, password)
VALUES ('Mon user', '["ROLE_USER"]', 'Mon mdp hashé');