spyrit / spyrit-essential-sf-bundle
Bundle Symfony transverse SPYRIT (utilitaires communs aux applications internes)
Package info
github.com/spyrit/spyrit-essential-sf-bundle
Type:symfony-bundle
pkg:composer/spyrit/spyrit-essential-sf-bundle
Requires
- php: >=8.1
- symfony/config: ^5.4|^6.4|^7.0|^8.0
- symfony/dependency-injection: ^5.4|^6.4|^7.0|^8.0
- symfony/http-foundation: ^5.4|^6.4|^7.0|^8.0
- symfony/http-kernel: ^5.4|^6.4|^7.0|^8.0
- symfony/process: ^5.4|^6.4|^7.0|^8.0
- symfony/routing: ^5.4|^6.4|^7.0|^8.0
Requires (Dev)
- doctrine/dbal: ^3.0|^4.0
- friendsofphp/php-cs-fixer: ^3.49
- phpstan/phpstan: ^2.0
- phpstan/phpstan-symfony: ^2.0
- phpunit/phpunit: ^9.5
- symfony/framework-bundle: ^6.4
- symfony/phpunit-bridge: ^6.4
- symfony/yaml: ^6.4
Suggests
- doctrine/dbal: Pour exposer la version live de la base de données (MySQL/MariaDB/PostgreSQL) sur la route /spyrit-essential
Provides
None
Conflicts
None
Replaces
None
README
Bundle Symfony transverse SPYRIT, mutualisant des utilitaires communs aux applications internes.
Compatibilité : PHP >= 8.1, Symfony 5.4 (LTS) à la dernière LTS.
Dev
docker compose build ./docker/tools/composer install ./docker/tools/phpunit ./docker/tools/phpstan ./docker/tools/phpcsfixer
Utilisation en local dans une autre application (path repository)
Dans le composer.json de l'application consommatrice :
"repositories": [ { "type": "path", "url": "../spyrit_essential_sf_bundle", "options": { "symlink": true } } ]
puis composer require spyrit/spyrit-essential-sf-bundle:@dev.
Route d'infos runtime (/spyrit-essential)
Expose en JSON :
php: version live du runtime PHP.symfony: version de Symfony.node: version live du binairenodes'il est accessible depuis le process qui sert la requête, sinonnull.database: version live de la base connectée (MySQL/MariaDB/PostgreSQL, via Doctrine DBAL si présent), sinonnull.libraries-php: tous les packages Composer installés (viaComposer\InstalledVersions).libraries-node: tous les packages Node installés, lus depuisnode_modules/<pkg>/package.json(pas d'exec npm/yarn/pnpm).
Protégée par un token statique, comparé en temps constant (hash_equals) : la route renvoie 401 si le token attendu
est vide/absent, si aucun token n'est fourni, ou si les deux ne correspondent pas exactement.
Installation dans l'application consommatrice :
- Ajouter l'import de route dans
config/routes.yaml:spyrit_essential: resource: '@SpyritEssentialBundle/config/routes.php'
- Définir le token dans
.env(valeur vide, documentaire) puis dans.env.local(valeur réelle, jamais committée) :SPYRIT_ESSENTIAL_TOKEN= - Si l'application a un firewall Symfony qui protège tout par défaut, autoriser explicitement la route en accès public
(l'autorisation réelle est gérée par le token, pas par le firewall) :
access_control: - { path: ^/spyrit-essential, roles: PUBLIC_ACCESS }
Appel :
GET /spyrit-essential?token=xxx
⚠️ Avertissement sécurité : cette route expose des numéros de version exacts (PHP, Symfony, libs, BDD), utile pour du diagnostic mais aussi pour un attaquant qui chercherait des CVE connues sur ces versions précises si le token venait à fuiter. À ne pas exposer publiquement sans restriction complémentaire (IP allowlist, WAF) en production.