Skip to content

Journal d'audit ​

Doggy fournit des capacités d'audit de bout en bout des opérations système. Toutes les opérations clés sont enregistrées via AuditService et stockées dans App\Entity\System\AuditLog.

Aperçu ​

Le système de journal d'audit est composé des éléments suivants :

  • Entité AuditLog (src/Entity/System/AuditLog.php) : persistance des journaux
  • AuditService (src/Service/System/AuditService.php) : service d'enregistrement des journaux
  • Le point d'entrée de l'audit se trouve dans App\Controller\Admin\SecurityConfigController

Contenu enregistré ​

Chaque entrée de journal d'audit contient :

  • action : type d'opération (login_success, login_failure, create, update, delete)
  • category : catégorie (security, business, system)
  • details : détails de l'opération (format JSON)
  • performer : l'utilisateur ayant effectué l'opération

Utilisation ​

php
use App\Service\System\AuditService;

class SomeService
{
    public function __construct(private AuditService $auditService) {}

    public function doSomething(): void
    {
        // 登录成功
        $this->auditService->log('login_success', 'security', [], $user);

        // 登录失败
        $this->auditService->log('login_failure', 'security', [
            'username' => $email,
            'error' => $exception->getMessage(),
        ]);

        // 数据操作
        $this->auditService->log('update', 'business', [
            'entity' => Employee::class,
            'id' => $employee->getId(),
            'changes' => $changes,
        ]);
    }
}

Intégration ​

Le journal d'audit est automatiquement intégré aux principaux flux de sécurité :

Authentification ​

App\Security\AppCustomAuthenticator enregistre automatiquement :

php
// 登录成功时
$this->auditService->log('login_success', 'security', [], $user);

// 登录失败时
$this->auditService->log('login_failure', 'security', [
    'username' => $email,
    'error' => $exception->getMessage(),
]);

Exigences de sécurité ​

  • Les journaux d'audit ne sont consultables que par les auditeurs (ROLE_AUDITOR, via la permission AUDIT_VIEW de ThreeOfficersVoter)
  • Les journaux sont stockés en base de données, avec prise en charge de la traçabilité et de l'export
  • Prise en charge de la recherche par plage de temps, utilisateur et type d'opération

Open source sous licence MIT | Copyright © 2026 Doggy