feat: Implémentation authentification NIST SP 800-63B v3.0.8

- Ajout du service PasswordSecurityService conforme NIST SP 800-63B
- Vérification des mots de passe contre la base Have I Been Pwned
- Validation : minimum 8 caractères, maximum 64 caractères
- Pas d'exigences de composition obligatoires (conforme NIST)
- Intégration dans LoginController et UserController
- Génération de mots de passe sécurisés non compromis

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-08-15 15:31:23 +02:00
parent 206c76c7db
commit 5e255ebf5e
49 changed files with 152716 additions and 149802 deletions

385
app/tests-iphone.md Normal file
View File

@@ -0,0 +1,385 @@
# 📱 Guide de Test iOS - Geosector App
## ⚠️ Prérequis Importants
### Matériel Requis
- **Mac** avec macOS 10.15 (Catalina) ou plus récent
- **iPhone** avec iOS 12.0 ou plus récent
- **Câble Lightning/USB-C** pour la connexion
- **Apple Developer Account** (gratuit pour tests locaux)
- **Xcode** 14.0 ou plus récent
### ❌ Limitations Linux/Windows
**IMPORTANT** : Le développement iOS nécessite obligatoirement un Mac.
- Pas de compilation iOS native sur Linux/Windows
- Solutions alternatives limitées (voir section "Alternatives")
---
## 🍎 Configuration sur Mac
### 1⃣ Installation des Outils
#### Installer Xcode
```bash
# Via App Store ou ligne de commande
xcode-select --install
# Accepter la licence Xcode
sudo xcodebuild -license accept
```
#### Vérifier Flutter pour iOS
```bash
# Vérifier la configuration iOS
flutter doctor
# Résoudre les problèmes iOS si nécessaire
flutter doctor --verbose
```
#### Installer CocoaPods
```bash
# CocoaPods est nécessaire pour les dépendances iOS
sudo gem install cocoapods
pod setup
```
### 2⃣ Configuration du Projet
#### Ouvrir le projet iOS dans Xcode
```bash
# Depuis le dossier du projet Flutter
cd ios
open Runner.xcworkspace
```
#### Configuration dans Xcode
1. **Sélectionner l'équipe de développement** :
- Runner → Signing & Capabilities
- Team : Sélectionner votre Apple ID
- Bundle Identifier : `com.votredomaine.geosector`
2. **Configurer le déploiement** :
- Deployment Info → iOS 12.0 minimum
- Device Orientation : Portrait + Landscape
---
## 📲 Configuration de l'iPhone
### 1⃣ Mode Développeur (iOS 16+)
#### Activer le Mode Développeur
```
Réglages → Confidentialité et sécurité → Mode développeur → Activer
```
**Note** : Le téléphone redémarrera
### 2⃣ Trust Computer
1. Brancher l'iPhone au Mac
2. **Sur l'iPhone** : "Faire confiance à cet ordinateur" → Faire confiance
3. Entrer le code de déverrouillage
---
## 🚀 Lancer l'Application
### Test via USB
#### Vérifier la connexion
```bash
# Lister les appareils disponibles
flutter devices
# Devrait afficher quelque chose comme :
# iPhone de Pierre (mobile) • 00008110-001234567890ABCD • ios • iOS 17.2
```
#### Lancer en mode Debug
```bash
# Lancer sur l'iPhone connecté
flutter run
# Ou spécifier l'appareil
flutter run -d [DEVICE_ID]
```
#### Lancer en mode Release
```bash
# Performance optimale
flutter run --release
# Avec l'ID de l'appareil
flutter run -d [DEVICE_ID] --release
```
### Test via WiFi (Xcode 9+)
#### Configuration WiFi
1. **iPhone et Mac** sur le même réseau WiFi
2. Dans **Xcode** : Window → Devices and Simulators
3. Sélectionner l'iPhone → Cocher "Connect via network"
4. Débrancher le câble USB
#### Lancer via WiFi
```bash
# L'appareil reste visible dans flutter devices
flutter run -d [DEVICE_ID]
```
---
## 🛠️ Build et Installation
### Créer l'Archive iOS
#### Build pour App Store Connect
```bash
# Nettoyer le projet
flutter clean
cd ios && pod install && cd ..
# Build release
flutter build ios --release
# Ou avec obfuscation
flutter build ios --release --obfuscate --split-debug-info=debug_info
```
#### Archive dans Xcode
1. Ouvrir `ios/Runner.xcworkspace` dans Xcode
2. Product → Scheme → Runner
3. Product → Destination → Any iOS Device
4. Product → Archive
5. Distribute App → Ad Hoc ou App Store
### Installation via TestFlight
#### Configuration TestFlight
1. Upload l'archive vers **App Store Connect**
2. Ajouter les testeurs (emails)
3. Les testeurs reçoivent une invitation
#### Installation sur iPhone
1. Installer l'app **TestFlight** depuis l'App Store
2. Accepter l'invitation (via email)
3. Installer l'app Geosector depuis TestFlight
---
## 📱 Simulateur iOS
### Lancer sur Simulateur
```bash
# Lister les simulateurs disponibles
flutter emulators
# Lancer un simulateur
flutter emulators --launch apple_ios_simulator
# Ou ouvrir via Xcode
open -a Simulator
# Lancer l'app sur le simulateur
flutter run
```
### Simulateurs Recommandés
- iPhone 15 Pro (dernier modèle)
- iPhone SE (petit écran)
- iPad Pro (tablette)
---
## 🔧 Commandes Utiles iOS
### Gestion des Certificats
```bash
# Vérifier les certificats
security find-identity -p codesigning -v
# Nettoyer le cache DerivedData
rm -rf ~/Library/Developer/Xcode/DerivedData
```
### Pods et Dépendances
```bash
# Mettre à jour les pods
cd ios
pod update
pod install --repo-update
# Nettoyer les pods
pod deintegrate
pod install
```
### Logs et Debug
```bash
# Voir les logs de l'iPhone
flutter logs
# Console Xcode pour logs détaillés
# Xcode → Window → Devices and Simulators → View Device Logs
# Logs système iOS
xcrun simctl spawn booted log stream --level debug
```
---
## 🐛 Résolution de Problèmes
### Erreur "Could not find Developer Disk Image"
```bash
# Mettre à jour Xcode pour supporter la version iOS
# Ou télécharger les Developer Disk Images
```
### Erreur de Signature
```bash
# Dans Xcode
# Runner → Build Settings → Code Signing Identity → Apple Development
# Runner → Signing & Capabilities → Automatically manage signing
```
### Erreur CocoaPods
```bash
cd ios
pod cache clean --all
rm -rf Pods
rm Podfile.lock
pod install
```
### Application Non Fiable
```
iPhone → Réglages → Général → VPN et gestion d'appareils
→ App du développeur → Faire confiance
```
---
## 🎯 Tests Spécifiques iOS
### Vérifications Visuelles
- [ ] **Safe Area** : Respect des encoches (notch)
- [ ] **Gestes iOS** : Swipe pour retour arrière
- [ ] **Dark Mode** : Adaptation au thème système
- [ ] **Dynamic Type** : Respect des tailles de texte système
### Permissions iOS
- [ ] **Localisation** : Demande d'autorisation
- [ ] **Notifications** : Permission push (si applicable)
- [ ] **Caméra** : Accès pour scan (si applicable)
### Performance
- [ ] **Démarrage** : Temps de lancement < 2s
- [ ] **Animations** : 60 FPS constant
- [ ] **Mémoire** : Pas de fuites (Instruments)
- [ ] **Batterie** : Consommation raisonnable
---
## 🔄 Alternatives sans Mac
### 1. Codemagic CI/CD
```yaml
# codemagic.yaml
workflows:
ios-workflow:
name: iOS Build
environment:
xcode: latest
scripts:
- flutter build ios --release
```
### 2. GitHub Actions
```yaml
# .github/workflows/ios.yml
runs-on: macos-latest
steps:
- uses: actions/checkout@v2
- uses: subosito/flutter-action@v2
- run: flutter build ios --release --no-codesign
```
### 3. Services Cloud
- **MacinCloud** : Location de Mac virtuel
- **MacStadium** : Mac en cloud
- **AWS EC2 Mac** : Instances Mac sur AWS
### 4. Hackintosh (Non Recommandé)
**Risques** :
- Violation des conditions Apple
- Instabilité système
- Pas de support officiel
---
## 📋 Checklist Pré-Release iOS
### Configuration
- [ ] Bundle ID unique configuré
- [ ] Icônes de l'app (toutes tailles)
- [ ] Launch Screen configuré
- [ ] Info.plist à jour
- [ ] Permissions déclarées
### Tests
- [ ] Test sur iPhone réel
- [ ] Test sur iPad (si supporté)
- [ ] Test iOS minimum (12.0)
- [ ] Test iOS récent (17.x)
- [ ] Test mode avion
### App Store
- [ ] Screenshots (toutes tailles)
- [ ] Description de l'app
- [ ] Mots-clés optimisés
- [ ] Catégorie appropriée
- [ ] Politique de confidentialité
---
## 💡 Tips iOS
1. **Provisioning Profile** : Renouveler tous les ans
2. **TestFlight** : Builds expirent après 90 jours
3. **App Store Review** : Prévoir 24-48h de délai
4. **Crash Reports** : Utiliser Crashlytics ou Sentry
5. **Push Notifications** : Nécessite certificat APNS
---
## 📊 Commandes Rapides
```bash
# Session de test typique sur Mac
flutter clean
cd ios && pod install && cd ..
flutter devices
flutter run -d [iPhone_ID]
# Build pour distribution
flutter build ios --release
open ios/Runner.xcworkspace
# Product → Archive dans Xcode
```
---
## 🆘 Support
- **Documentation Flutter iOS** : https://flutter.dev/docs/deployment/ios
- **Apple Developer** : https://developer.apple.com
- **Forums Flutter** : https://github.com/flutter/flutter/issues
---
*Guide créé pour Geosector v3.0.6 - Flutter 3.32+ - iOS 12.0+*
**Note importante** : Ce guide nécessite un Mac pour la compilation et le déploiement iOS. Pour tester depuis Linux/Windows, utilisez les services cloud ou CI/CD mentionnés.