Compare commits

...

2 Commits

Author SHA1 Message Date
sam 35c2fb9ca0 Merge pull request 'fix(front): heberge Alpine.js via Vite au lieu du CDN (bloque par la CSP)' (#8) from feat/ci-cd-securisation-infcdaal3 into main
CI - Intégration continue / quality-and-tests (push) Successful in 3m22s
CD - Déploiement continu / deploy (push) Successful in 1m42s
Reviewed-on: #8
2026-07-09 17:21:26 +00:00
sam df8af066fc fix(front): heberge Alpine.js via Vite au lieu du CDN (bloque par la CSP)
CI - Intégration continue / quality-and-tests (pull_request) Successful in 3m29s
La Content-Security-Policy stricte bloquait le CDN jsdelivr, donc Alpine ne
se chargeait pas : menu profil toujours ouvert et app de respiration KO.
Alpine est desormais bundle par Vite (servi depuis 'self') → compatible CSP,
sans dependance externe.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 19:19:54 +02:00
4 changed files with 38 additions and 2 deletions
+28 -1
View File
@@ -1,9 +1,12 @@
{ {
"name": "www", "name": "WEB",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"dependencies": {
"alpinejs": "^3.15.12"
},
"devDependencies": { "devDependencies": {
"@tailwindcss/vite": "^4.0.0", "@tailwindcss/vite": "^4.0.0",
"axios": "^1.11.0", "axios": "^1.11.0",
@@ -1134,6 +1137,30 @@
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
"node_modules/@vue/reactivity": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz",
"integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==",
"license": "MIT",
"dependencies": {
"@vue/shared": "3.1.5"
}
},
"node_modules/@vue/shared": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
"integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==",
"license": "MIT"
},
"node_modules/alpinejs": {
"version": "3.15.12",
"resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.15.12.tgz",
"integrity": "sha512-nJvPAQVNPdZZ0NrExJ/kzQco3ijR8LwvCOadQecllESiqT4NyZ/57sN9V2XyvhlBGAbmlKYgeWZvYdKq99ij/Q==",
"license": "MIT",
"dependencies": {
"@vue/reactivity": "~3.1.1"
}
},
"node_modules/ansi-regex": { "node_modules/ansi-regex": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+3
View File
@@ -13,5 +13,8 @@
"laravel-vite-plugin": "^2.0.0", "laravel-vite-plugin": "^2.0.0",
"tailwindcss": "^4.0.0", "tailwindcss": "^4.0.0",
"vite": "^7.0.7" "vite": "^7.0.7"
},
"dependencies": {
"alpinejs": "^3.15.12"
} }
} }
+7
View File
@@ -1 +1,8 @@
import './bootstrap'; import './bootstrap';
// Alpine.js hébergé localement (bundle Vite) plutôt que via un CDN externe,
// pour rester compatible avec la Content-Security-Policy stricte.
import Alpine from 'alpinejs';
window.Alpine = Alpine;
Alpine.start();
@@ -6,7 +6,6 @@
<title>@yield('title', 'CESIZen') | Ministère de la Santé et de la Prévention</title> <title>@yield('title', 'CESIZen') | Ministère de la Santé et de la Prévention</title>
@vite(['resources/css/app.css', 'resources/js/app.js']) @vite(['resources/css/app.css', 'resources/js/app.js'])
<link rel="icon" href="./img/CesiZen_logo.png" type="image/x-icon"> <link rel="icon" href="./img/CesiZen_logo.png" type="image/x-icon">
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
<style> <style>
:root { :root {
--fr-blue: #000091; --fr-blue: #000091;