# Chat Copains

Application de chat PHP simple entre amis, avec authentification par compte admin et chiffrement AES-256-GCM des messages en base.

## Fonctionnalités

- Connexion obligatoire (seuls les comptes créés par l'admin peuvent discuter)
- Panel admin pour créer / activer / désactiver des utilisateurs
- Messages chiffrés en base (AES-256-GCM)
- **Conversations privées** — discutez avec un contact à la fois
- Liste des contacts disponibles (tous les comptes actifs sauf le vôtre)

## Prérequis

- PHP 8.1+ avec extensions `pdo_mysql` et `openssl`
- MySQL 5.7+ ou MariaDB
- Accès à la base `chat` sur `192.168.1.254`

## Installation

1. Copier la configuration si besoin :
   ```bash
   cp config/config.example.php config/config.php
   ```
   Éditer `config/config.php` avec vos identifiants MySQL.

2. Lancer l'installation :
   ```bash
   php install.php
   ```

3. Démarrer le serveur de développement :
   ```bash
   php -S localhost:8080 -t public
   ```

4. Ouvrir [http://localhost:8080](http://localhost:8080)

**Compte admin par défaut :** `admin` / `Admin123!` (à changer après la première connexion)

## Utilisation

1. Connectez-vous en tant qu'admin
2. Allez dans **Administration** pour créer les comptes de vos copains
3. Chacun se connecte, **choisit un contact** dans la liste à gauche, puis discute en privé

## Sécurité

- Mots de passe hashés avec `password_hash()` (bcrypt)
- Messages chiffrés côté serveur avant stockage
- Protection CSRF sur les formulaires et l'API
- Cookies de session `HttpOnly` + `SameSite=Strict`
- `config/config.php` est ignoré par git (ne pas committer les secrets)

## Structure

```
CHAT/
├── config/          # Configuration DB et clé de chiffrement
├── includes/        # Auth, crypto, messages
├── public/          # Point d'entrée web
│   ├── api/         # API JSON messages
│   └── assets/      # CSS et JS
├── sql/             # Schéma MySQL
└── install.php      # Script d'installation
```

## Production

Configurez Apache ou Nginx pour pointer la racine web vers le dossier `public/`.
Activez HTTPS pour protéger les sessions et les échanges en transit.
