fix: sécuriser les identifiants Firebase avec variables d'environnement
- 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
This commit is contained in:
17
.env.example
17
.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
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -31,6 +31,7 @@ yarn-error.*
|
||||
*.pem
|
||||
|
||||
# local env files
|
||||
.env
|
||||
.env*.local
|
||||
|
||||
# typescript
|
||||
|
||||
21
README.md
21
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
|
||||
|
||||
|
||||
29
package-lock.json
generated
29
package-lock.json
generated
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user