# Plugin Action Logger

Ce plugin enregistre toutes les actions importantes de l'application et les affiche dans le dashboard admin.

## Fonctionnalités

- **Logging automatique** : Enregistre toutes les actions (création, modification, suppression) dans AuditLog
- **Affichage dans le dashboard** : Affiche les 20 dernières actions dans le dashboard admin
- **Webhooks optionnels** : Peut également envoyer des webhooks lors d'événements (si configuré)

## Fonctionnalités

### 1. Réception de webhooks

Le plugin écoute les webhooks entrants via le hook `webhook.received` :

```php
Plugin::hook('webhook.received', [$this, 'onWebhookReceived']);
```

### 2. Envoi de webhooks

Le plugin envoie des webhooks lors d'événements de l'application :

- `discussion.created` : Lorsqu'une discussion est créée
- `post.created` : Lorsqu'un post est créé
- `user.registered` : Lorsqu'un utilisateur s'inscrit

### 3. Utilisation du WebhookService

```php
use App\Plugins\Logger\WebhookService;

// Envoyer un webhook
WebhookService::send($url, $event, $payload, $secret);
```

## Configuration

Dans `stockage/config.json`, ajoutez :

```json
{
  "webhooks": {
    "url": "https://votre-serveur.com/webhook",
    "secret": "votre-secret-securise"
  }
}
```

## Exemple d'utilisation

### Écouter un événement

```php
public function boot(): void
{
    Plugin::hook('discussion.created', [$this, 'onDiscussionCreated']);
}

public function onDiscussionCreated(array $discussion): void
{
    // Votre logique ici
    WebhookService::send($url, 'discussion.created', $discussion);
}
```

### Recevoir un webhook

```php
public function onWebhookReceived(string $event, array $payload): void
{
    switch ($event) {
        case 'discussion.created':
            // Traiter l'événement
            break;
    }
}
```

## Structure du payload

### Discussion créée

```json
{
  "event": "discussion.created",
  "timestamp": 1234567890,
  "data": {
    "id": "discussion_id",
    "title": "Titre de la discussion",
    "author": "user_id",
    "category": "category_id"
  }
}
```

### Post créé

```json
{
  "event": "post.created",
  "timestamp": 1234567890,
  "data": {
    "id": "post_id",
    "discussion_id": "discussion_id",
    "author": "user_id",
    "content_preview": "Aperçu du contenu..."
  }
}
```

## Sécurité

Les webhooks peuvent être signés avec HMAC SHA256. Le header `X-Webhook-Signature` contient la signature.

Pour vérifier la signature :

```php
$signature = hash_hmac('sha256', $payload, $secret);
```

## Installation

1. Placez le plugin dans `plugins/Logger/`
2. Activez-le dans le panneau d'administration
3. Configurez l'URL du webhook dans les paramètres

