From fd21fa27e3d8ffb0f841fca01e103043faf7748d Mon Sep 17 00:00:00 2001 From: Arthur Lempereur Date: Thu, 23 Oct 2025 18:22:54 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20s=C3=A9curiser=20les=20identifiants=20Fi?= =?UTF-8?q?rebase=20avec=20variables=20d'environnement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Déplacement des identifiants Firebase vers .env - Ajout de .env au .gitignore - Installation de expo-constants - Validation automatique des variables au démarrage - Mise à jour de .env.example avec EXPO_PUBLIC_ prefix - Mise à jour du README avec instructions .env BREAKING CHANGE: Les identifiants Firebase doivent maintenant être configurés dans .env --- .env.example | 17 ++++++++--------- .gitignore | 1 + README.md | 21 ++++++++++----------- package-lock.json | 29 +++++++++++++++-------------- package.json | 1 + src/config/firebase.ts | 30 ++++++++++++++++++++---------- 6 files changed, 55 insertions(+), 44 deletions(-) diff --git a/.env.example b/.env.example index 3cbd212..12473e4 100644 --- a/.env.example +++ b/.env.example @@ -2,12 +2,11 @@ # Copiez ce fichier en .env et remplissez avec vos vraies valeurs # Ne commitez JAMAIS le fichier .env dans Git ! -FIREBASE_API_KEY=your_api_key_here -FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com -FIREBASE_PROJECT_ID=your_project_id -FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com -FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id -FIREBASE_APP_ID=your_app_id - -# Expo Configuration (optionnel) -EXPO_PUBLIC_API_URL=https://api.wallettracker.com +# IMPORTANT: Les variables doivent commencer par EXPO_PUBLIC_ pour être accessibles dans l'app +EXPO_PUBLIC_FIREBASE_API_KEY=your_api_key_here +EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com +EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_project_id +EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com +EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id +EXPO_PUBLIC_FIREBASE_APP_ID=your_app_id +EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id diff --git a/.gitignore b/.gitignore index d914c32..da9569c 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ yarn-error.* *.pem # local env files +.env .env*.local # typescript diff --git a/README.md b/README.md index e3bd0a2..347952a 100644 --- a/README.md +++ b/README.md @@ -21,33 +21,32 @@ ```bash # 1. Cloner le projet -git clone https://gitea.com/alempereur/WalletTracker.git +git clone git@git.fnix.fr:alempereur/WalletTracker.git cd WalletTracker # 2. Installer les dépendances npm install # 3. Configurer Firebase -# Copiez vos identifiants dans src/config/firebase.ts +cp .env.example .env +# Éditez .env avec vos identifiants Firebase # 4. Lancer l'application npm start ``` -**📚 Pour la documentation complète, consultez le [Wiki](../../wiki)** +**📚 Documentation complète : [Wiki](../../wiki)** ## 📖 Documentation -Toute la documentation est disponible dans le Wiki : +**[📚 Wiki complet](../../wiki)** - Toute la documentation -- **[🏠 Home](../../wiki/Home)** - Vue d'ensemble du projet -- **[⚡ Quick Start](../../wiki/Quick-Start)** - Démarrage en 5 minutes -- **[🔥 Configuration Firebase](../../wiki/Configuration-Firebase)** - Setup Firebase complet -- **[🔧 Dépannage](../../wiki/Dépannage)** - Solutions aux problèmes courants -- **[🧪 Tests](../../wiki/Tests)** - Guide de test complet -- **[🚀 Déploiement](../../wiki/Déploiement)** - Publication sur les stores +### Liens rapides +- **[🏠 Accueil](../../wiki/Home)** - Vue d'ensemble +- **[📦 Installation](../../wiki/Installation)** - Installation rapide ou complète +- **[🔥 Configuration Firebase](../../wiki/Configuration-Firebase)** - Setup Firebase +- **[🔧 Dépannage](../../wiki/Dépannage)** - Solutions aux problèmes - **[💻 Développement](../../wiki/Développement)** - Architecture et contribution -- **[📝 Changelog](../../wiki/Changelog)** - Historique des versions ## 🛠️ Stack Technique diff --git a/package-lock.json b/package-lock.json index e36d6ed..9139e31 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,7 @@ "@react-navigation/native": "^7.1.18", "@react-navigation/stack": "^7.5.0", "expo": "~54.0.18", + "expo-constants": "~18.0.10", "expo-image-picker": "^17.0.8", "expo-status-bar": "~3.0.8", "firebase": "^12.4.0", @@ -5875,6 +5876,20 @@ } } }, + "node_modules/expo-constants": { + "version": "18.0.10", + "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.10.tgz", + "integrity": "sha512-Rhtv+X974k0Cahmvx6p7ER5+pNhBC0XbP1lRviL2J1Xl4sT2FBaIuIxF/0I0CbhOsySf0ksqc5caFweAy9Ewiw==", + "license": "MIT", + "dependencies": { + "@expo/config": "~12.0.10", + "@expo/env": "~2.0.7" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*" + } + }, "node_modules/expo-image-loader": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-6.0.0.tgz", @@ -6317,20 +6332,6 @@ "react-native": "*" } }, - "node_modules/expo/node_modules/expo-constants": { - "version": "18.0.10", - "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.10.tgz", - "integrity": "sha512-Rhtv+X974k0Cahmvx6p7ER5+pNhBC0XbP1lRviL2J1Xl4sT2FBaIuIxF/0I0CbhOsySf0ksqc5caFweAy9Ewiw==", - "license": "MIT", - "dependencies": { - "@expo/config": "~12.0.10", - "@expo/env": "~2.0.7" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*" - } - }, "node_modules/expo/node_modules/expo-file-system": { "version": "19.0.17", "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.17.tgz", diff --git a/package.json b/package.json index 558cf98..443bf74 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@react-navigation/native": "^7.1.18", "@react-navigation/stack": "^7.5.0", "expo": "~54.0.18", + "expo-constants": "~18.0.10", "expo-image-picker": "^17.0.8", "expo-status-bar": "~3.0.8", "firebase": "^12.4.0", diff --git a/src/config/firebase.ts b/src/config/firebase.ts index 58580de..3e97e86 100644 --- a/src/config/firebase.ts +++ b/src/config/firebase.ts @@ -3,19 +3,29 @@ import { getAuth } from 'firebase/auth'; import { getFirestore } from 'firebase/firestore'; import { getStorage } from 'firebase/storage'; -// Configuration Firebase -// IMPORTANT: Remplacez ces valeurs par celles de votre projet Firebase -// Allez sur https://console.firebase.google.com/ > Paramètres du projet > Vos applications +// Configuration Firebase depuis les variables d'environnement +// Les identifiants sont stockés dans le fichier .env (non commité dans Git) +// Pour configurer : copiez .env.example vers .env et remplissez vos valeurs const firebaseConfig = { - apiKey: "AIzaSyCwPKnHnU2O_ABm6gi-pnvGB8PQZ3l4y5o", - authDomain: "wallettracket-a4738.firebaseapp.com", - projectId: "wallettracket-a4738", - storageBucket: "wallettracket-a4738.firebasestorage.app", - messagingSenderId: "21315540695", - appId: "1:21315540695:web:e7bffb54e26d3290b1c292", - measurementId: "G-VXMLZBRPEK" + apiKey: process.env.EXPO_PUBLIC_FIREBASE_API_KEY, + authDomain: process.env.EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN, + projectId: process.env.EXPO_PUBLIC_FIREBASE_PROJECT_ID, + storageBucket: process.env.EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET, + messagingSenderId: process.env.EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID, + appId: process.env.EXPO_PUBLIC_FIREBASE_APP_ID, + measurementId: process.env.EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID }; +// Vérification que toutes les variables sont définies +if (!firebaseConfig.apiKey || !firebaseConfig.projectId) { + throw new Error( + '❌ Configuration Firebase manquante!\n\n' + + 'Veuillez créer un fichier .env à la racine du projet avec vos identifiants Firebase.\n' + + 'Copiez .env.example vers .env et remplissez les valeurs.\n\n' + + 'Consultez la documentation: Configuration-Firebase.md' + ); +} + // Initialisation de Firebase const app = initializeApp(firebaseConfig);