✨ Nouvelles fonctionnalités: - Ajout du mode terrain pour utilisation mobile hors connexion - Génération automatique de reçus PDF avec template personnalisé - Révision complète du système de cartes avec amélioration des performances 🔧 Améliorations techniques: - Refactoring du module chat avec architecture simplifiée - Optimisation du système de sécurité NIST SP 800-63B - Amélioration de la gestion des secteurs géographiques - Support UTF-8 étendu pour les noms d'utilisateurs 📱 Application mobile: - Nouveau mode terrain dans user_field_mode_page - Interface utilisateur adaptative pour conditions difficiles - Synchronisation offline améliorée 🗺️ Cartographie: - Optimisation des performances MapBox - Meilleure gestion des tuiles hors ligne - Amélioration de l'affichage des secteurs 📄 Documentation: - Ajout guide Android (ANDROID-GUIDE.md) - Documentation sécurité API (API-SECURITY.md) - Guide module chat (CHAT_MODULE.md) 🐛 Corrections: - Résolution des erreurs 400 lors de la création d'utilisateurs - Correction de la validation des noms d'utilisateurs - Fix des problèmes de synchronisation chat 🤖 Generated with Claude Code (https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
4.4 KiB
4.4 KiB
Changements de validation des usernames - Version ultra-souple
Date : 17 janvier 2025
Contexte
Suite aux problèmes d'erreurs 400 et au besoin d'avoir une approche plus moderne et inclusive, les règles de validation des usernames ont été assouplies pour accepter tous les caractères UTF-8, similaire à l'approche NIST pour les mots de passe.
Anciennes règles (trop restrictives)
- ❌ 10-30 caractères
- ❌ Doit commencer par une lettre minuscule
- ❌ Seulement : a-z, 0-9, ., -, _
- ❌ Pas d'espaces
- ❌ Pas de majuscules
- ❌ Pas d'accents ou caractères spéciaux
Nouvelles règles (ultra-souples)
- ✅ 8-30 caractères UTF-8
- ✅ Tous caractères acceptés :
- Lettres (majuscules/minuscules)
- Chiffres
- Espaces
- Caractères spéciaux (!@#$%^&*()_+-=[]{}|;:'"<>,.?/)
- Accents (é, è, à, ñ, ü, etc.)
- Émojis (😀, 🎉, ❤️, etc.)
- Caractères non-latins (中文, العربية, Русский, etc.)
- ✅ Sensible à la casse (Jean ≠ jean)
- ✅ Trim automatique des espaces début/fin
- ✅ Unicité vérifiée dans toute la base
Exemples de usernames valides
Noms classiques
Jean-PierreMarie Claire(avec espace)O'ConnorJosé García
Avec chiffres et caractères spéciaux
admin2024user@companytest_user#1Marie*123!
International
李明(chinois)محمد(arabe)Владимир(russe)さくら(japonais)Παύλος(grec)
Modernes/Fun
🦄UnicornPlayer_1 🎮☕Coffee.Lover2024_User
Exemples de usernames invalides
short❌ (moins de 8 caractères)❌ (espaces seulement)very_long_username_that_exceeds_thirty_chars❌ (plus de 30 caractères)
Modifications techniques
1. Code PHP (UserController.php)
// Avant (restrictif)
if (!preg_match('/^[a-z][a-z0-9._-]{9,29}$/', $username))
// Après (ultra-souple)
$username = trim($data['username']);
$usernameLength = mb_strlen($username, 'UTF-8');
if ($usernameLength < 8) {
// Erreur : trop court
}
if ($usernameLength > 30) {
// Erreur : trop long
}
// C'est tout ! Pas d'autre validation
2. Base de données
-- Script à exécuter : scripts/sql/migration_username_utf8_support.sql
ALTER TABLE `users`
MODIFY COLUMN `encrypted_user_name` varchar(255) DEFAULT '';
3. Messages d'erreur simplifiés
- Avant : "Format du nom d'utilisateur invalide (10-30 caractères, commence par une lettre, caractères autorisés: a-z, 0-9, ., -, _)"
- Après :
- "Identifiant trop court" + "Minimum 8 caractères"
- "Identifiant trop long" + "Maximum 30 caractères"
- "Identifiant déjà utilisé"
Impact sur l'expérience utilisateur
Avantages
- Inclusivité : Support de toutes les langues et cultures
- Modernité : Permet les émojis et caractères spéciaux
- Simplicité : Règles faciles à comprendre (juste la longueur)
- Flexibilité : Les utilisateurs peuvent choisir l'identifiant qu'ils veulent
- Moins d'erreurs : Moins de rejets pour format invalide
Points d'attention
- Support client : Former le support aux nouveaux formats possibles
- Affichage : S'assurer que l'UI supporte bien l'UTF-8
- Recherche : La recherche d'utilisateurs doit gérer la casse et l'UTF-8
- Export : Vérifier que les exports CSV/Excel gèrent bien l'UTF-8
Sécurité
Pas d'impact sur la sécurité
- ✅ Les usernames sont toujours chiffrés en base (AES-256-CBC)
- ✅ L'unicité est toujours vérifiée
- ✅ Les injections SQL sont impossibles (prepared statements)
- ✅ Le trim empêche les espaces invisibles
Recommandations
- Continuer à générer automatiquement des usernames simples (ASCII) pour éviter les problèmes
- Mais permettre la saisie manuelle de tout format
- Logger les usernames "exotiques" pour détecter d'éventuels abus
Tests
- Script de test disponible :
/tests/test_username_validation.php - Teste tous les cas limites et formats internationaux
Rollback si nécessaire
Si besoin de revenir en arrière :
- Restaurer l'ancienne validation dans UserController
- Les usernames UTF-8 existants continueront de fonctionner
- Seuls les nouveaux seront restreints
Conclusion
Cette approche ultra-souple aligne les usernames sur les standards modernes d'inclusivité et d'accessibilité, tout en maintenant la sécurité grâce au chiffrement et à la validation de l'unicité.