سجلات التدقيق
يوفر Doggy قدرة تدقيق كاملة لعمليات النظام عبر السلسلة الكاملة، حيث يسجل AuditService جميع العمليات الرئيسية وتُخزَّن في App\Entity\System\AuditLog.
نظرة عامة
يتكون نظام سجلات التدقيق من الأجزاء التالية:
- كيان
AuditLog(src/Entity/System/AuditLog.php): تخزين السجلات بشكل دائم AuditService(src/Service/System/AuditService.php): خدمة تسجيل السجلات- نقطة دخول سجلات التدقيق في
App\Controller\Admin\SecurityConfigController
المحتوى المُسجَّل
تحتوي كل سجل تدقيق على:
action: نوع العملية (login_success،login_failure،create،update،delete)category: الفئة (security،business،system)details: تفاصيل العملية (بصيغة JSON)performer: المستخدم الذي نفّذ العملية
طريقة الاستخدام
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,
]);
}
}التكامل
تم دمج سجلات التدقيق تلقائيًا في العمليات الأمنية الرئيسية:
مصادقة تسجيل الدخول
يسجل App\Security\AppCustomAuthenticator تلقائيًا:
php
// 登录成功时
$this->auditService->log('login_success', 'security', [], $user);
// 登录失败时
$this->auditService->log('login_failure', 'security', [
'username' => $email,
'error' => $exception->getMessage(),
]);المتطلبات الأمنية
- لا يمكن الاطلاع على سجلات التدقيق إلا من قبل المدققين (
ROLE_AUDITOR، عبر صلاحيةAUDIT_VIEWالخاصة بـThreeOfficersVoter) - تُخزَّن السجلات في قاعدة البيانات مع دعم التتبع والتصدير
- دعم البحث حسب النطاق الزمني والمستخدم ونوع العملية