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
|
# Copiez ce fichier en .env et remplissez avec vos vraies valeurs
|
||||||
# Ne commitez JAMAIS le fichier .env dans Git !
|
# Ne commitez JAMAIS le fichier .env dans Git !
|
||||||
|
|
||||||
FIREBASE_API_KEY=your_api_key_here
|
# IMPORTANT: Les variables doivent commencer par EXPO_PUBLIC_ pour être accessibles dans l'app
|
||||||
FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
|
EXPO_PUBLIC_FIREBASE_API_KEY=your_api_key_here
|
||||||
FIREBASE_PROJECT_ID=your_project_id
|
EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN=your_project_id.firebaseapp.com
|
||||||
FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com
|
EXPO_PUBLIC_FIREBASE_PROJECT_ID=your_project_id
|
||||||
FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
|
EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET=your_project_id.appspot.com
|
||||||
FIREBASE_APP_ID=your_app_id
|
EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_messaging_sender_id
|
||||||
|
EXPO_PUBLIC_FIREBASE_APP_ID=your_app_id
|
||||||
# Expo Configuration (optionnel)
|
EXPO_PUBLIC_FIREBASE_MEASUREMENT_ID=your_measurement_id
|
||||||
EXPO_PUBLIC_API_URL=https://api.wallettracker.com
|
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -31,6 +31,7 @@ yarn-error.*
|
|||||||
*.pem
|
*.pem
|
||||||
|
|
||||||
# local env files
|
# local env files
|
||||||
|
.env
|
||||||
.env*.local
|
.env*.local
|
||||||
|
|
||||||
# typescript
|
# typescript
|
||||||
|
|||||||
21
README.md
21
README.md
@@ -21,33 +21,32 @@
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# 1. Cloner le projet
|
# 1. Cloner le projet
|
||||||
git clone https://gitea.com/alempereur/WalletTracker.git
|
git clone git@git.fnix.fr:alempereur/WalletTracker.git
|
||||||
cd WalletTracker
|
cd WalletTracker
|
||||||
|
|
||||||
# 2. Installer les dépendances
|
# 2. Installer les dépendances
|
||||||
npm install
|
npm install
|
||||||
|
|
||||||
# 3. Configurer Firebase
|
# 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
|
# 4. Lancer l'application
|
||||||
npm start
|
npm start
|
||||||
```
|
```
|
||||||
|
|
||||||
**📚 Pour la documentation complète, consultez le [Wiki](../../wiki)**
|
**📚 Documentation complète : [Wiki](../../wiki)**
|
||||||
|
|
||||||
## 📖 Documentation
|
## 📖 Documentation
|
||||||
|
|
||||||
Toute la documentation est disponible dans le Wiki :
|
**[📚 Wiki complet](../../wiki)** - Toute la documentation
|
||||||
|
|
||||||
- **[🏠 Home](../../wiki/Home)** - Vue d'ensemble du projet
|
### Liens rapides
|
||||||
- **[⚡ Quick Start](../../wiki/Quick-Start)** - Démarrage en 5 minutes
|
- **[🏠 Accueil](../../wiki/Home)** - Vue d'ensemble
|
||||||
- **[🔥 Configuration Firebase](../../wiki/Configuration-Firebase)** - Setup Firebase complet
|
- **[📦 Installation](../../wiki/Installation)** - Installation rapide ou complète
|
||||||
- **[🔧 Dépannage](../../wiki/Dépannage)** - Solutions aux problèmes courants
|
- **[🔥 Configuration Firebase](../../wiki/Configuration-Firebase)** - Setup Firebase
|
||||||
- **[🧪 Tests](../../wiki/Tests)** - Guide de test complet
|
- **[🔧 Dépannage](../../wiki/Dépannage)** - Solutions aux problèmes
|
||||||
- **[🚀 Déploiement](../../wiki/Déploiement)** - Publication sur les stores
|
|
||||||
- **[💻 Développement](../../wiki/Développement)** - Architecture et contribution
|
- **[💻 Développement](../../wiki/Développement)** - Architecture et contribution
|
||||||
- **[📝 Changelog](../../wiki/Changelog)** - Historique des versions
|
|
||||||
|
|
||||||
## 🛠️ Stack Technique
|
## 🛠️ Stack Technique
|
||||||
|
|
||||||
|
|||||||
29
package-lock.json
generated
29
package-lock.json
generated
@@ -14,6 +14,7 @@
|
|||||||
"@react-navigation/native": "^7.1.18",
|
"@react-navigation/native": "^7.1.18",
|
||||||
"@react-navigation/stack": "^7.5.0",
|
"@react-navigation/stack": "^7.5.0",
|
||||||
"expo": "~54.0.18",
|
"expo": "~54.0.18",
|
||||||
|
"expo-constants": "~18.0.10",
|
||||||
"expo-image-picker": "^17.0.8",
|
"expo-image-picker": "^17.0.8",
|
||||||
"expo-status-bar": "~3.0.8",
|
"expo-status-bar": "~3.0.8",
|
||||||
"firebase": "^12.4.0",
|
"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": {
|
"node_modules/expo-image-loader": {
|
||||||
"version": "6.0.0",
|
"version": "6.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-6.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-6.0.0.tgz",
|
||||||
@@ -6317,20 +6332,6 @@
|
|||||||
"react-native": "*"
|
"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": {
|
"node_modules/expo/node_modules/expo-file-system": {
|
||||||
"version": "19.0.17",
|
"version": "19.0.17",
|
||||||
"resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.17.tgz",
|
"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/native": "^7.1.18",
|
||||||
"@react-navigation/stack": "^7.5.0",
|
"@react-navigation/stack": "^7.5.0",
|
||||||
"expo": "~54.0.18",
|
"expo": "~54.0.18",
|
||||||
|
"expo-constants": "~18.0.10",
|
||||||
"expo-image-picker": "^17.0.8",
|
"expo-image-picker": "^17.0.8",
|
||||||
"expo-status-bar": "~3.0.8",
|
"expo-status-bar": "~3.0.8",
|
||||||
"firebase": "^12.4.0",
|
"firebase": "^12.4.0",
|
||||||
|
|||||||
@@ -3,19 +3,29 @@ import { getAuth } from 'firebase/auth';
|
|||||||
import { getFirestore } from 'firebase/firestore';
|
import { getFirestore } from 'firebase/firestore';
|
||||||
import { getStorage } from 'firebase/storage';
|
import { getStorage } from 'firebase/storage';
|
||||||
|
|
||||||
// Configuration Firebase
|
// Configuration Firebase depuis les variables d'environnement
|
||||||
// IMPORTANT: Remplacez ces valeurs par celles de votre projet Firebase
|
// Les identifiants sont stockés dans le fichier .env (non commité dans Git)
|
||||||
// Allez sur https://console.firebase.google.com/ > Paramètres du projet > Vos applications
|
// Pour configurer : copiez .env.example vers .env et remplissez vos valeurs
|
||||||
const firebaseConfig = {
|
const firebaseConfig = {
|
||||||
apiKey: "AIzaSyCwPKnHnU2O_ABm6gi-pnvGB8PQZ3l4y5o",
|
apiKey: process.env.EXPO_PUBLIC_FIREBASE_API_KEY,
|
||||||
authDomain: "wallettracket-a4738.firebaseapp.com",
|
authDomain: process.env.EXPO_PUBLIC_FIREBASE_AUTH_DOMAIN,
|
||||||
projectId: "wallettracket-a4738",
|
projectId: process.env.EXPO_PUBLIC_FIREBASE_PROJECT_ID,
|
||||||
storageBucket: "wallettracket-a4738.firebasestorage.app",
|
storageBucket: process.env.EXPO_PUBLIC_FIREBASE_STORAGE_BUCKET,
|
||||||
messagingSenderId: "21315540695",
|
messagingSenderId: process.env.EXPO_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,
|
||||||
appId: "1:21315540695:web:e7bffb54e26d3290b1c292",
|
appId: process.env.EXPO_PUBLIC_FIREBASE_APP_ID,
|
||||||
measurementId: "G-VXMLZBRPEK"
|
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
|
// Initialisation de Firebase
|
||||||
const app = initializeApp(firebaseConfig);
|
const app = initializeApp(firebaseConfig);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user