Aller au contenu

Contribuer

Mise en place de l'environnement

Suivez la page Installation du portail.

Vérification rapide que tout fonctionne :

php bin/console about
php bin/console debug:router
php bin/phpunit

Branches

La branche d'intégration est main. Aucun développement n'y est poussé directement.

Préfixe Usage
feature/ Nouvelle fonctionnalité
fix/ Correction de bug
hotfix/ Correction urgente en production
release<n>/ Préparation d'une version

Créez votre branche depuis main à jour :

git switch main
git pull
git switch -c feature/ma-fonctionnalite

Messages de commit

Le dépôt suit la convention Conventional Commits :

<type>(<portée>): <description à l'impératif>

Types employés : feat, fix, hotfix, refactor, docs, test, chore.

Exemples tirés de l'historique :

feat: add script for trafik tracker in base
fix: disable contraint in bcard
fixes(physicalCard) disable verification pro/entreprise user

Conventions de code

PHP

  • PSR-12, indentation à 4 espaces.
  • Typage strict des propriétés, paramètres et retours dès que possible.
  • Injection de dépendances par le constructeur, en private readonly.
  • Attributs PHP 8 pour les routes (#[Route]) et le contrôle d'accès (#[IsGranted]), jamais les annotations de docblock.

Contrôleurs

  • Un contrôleur reste mince : la logique métier appartient aux services (src/Service/).
  • Les requêtes complexes appartiennent aux repositories, pas aux contrôleurs.
  • Toute suppression déclenchée par formulaire doit vérifier un jeton CSRF.

Sécurité

  • Contrôler l'accès et la propriété de la ressource : un #[IsGranted] de rôle ne suffit pas à empêcher un utilisateur d'agir sur les données d'un autre.
  • Ne jamais exposer d'identifiant séquentiel dans une URL publique : les cartes utilisent un publicHash.
  • Aucun secret dans le code ni dans un fichier versionné. Tout passe par des variables d'environnement.

Documentation

Toute nouvelle classe et toute nouvelle méthode publique doit être documentée selon les conventions décrites dans generer-la-doc.md : docblocks en français, route complète, rôle requis, effets de bord et cas d'erreur.


Base de données

Ne modifiez jamais le schéma à la main. Après un changement d'entité :

php bin/console make:migration
php bin/console doctrine:migrations:migrate

Relisez la migration générée avant de la committer : Doctrine produit parfois des instructions destructrices non souhaitées.


Tests

php bin/phpunit

Les tests vivent dans tests/. Une correction de bug s'accompagne idéalement d'un test qui échoue avant le correctif.


Avant d'ouvrir une merge request

  • [ ] php bin/phpunit passe
  • [ ] php bin/console cache:clear s'exécute sans erreur
  • [ ] Les nouvelles classes et méthodes sont documentées
  • [ ] Aucun secret, clé d'API ou mot de passe n'apparaît dans le diff
  • [ ] Les migrations éventuelles sont incluses et relues
  • [ ] Le message de commit respecte la convention