Skip to main content
Version: 4.x

Configuration Reference

All configuration options available in auditor

This section covers all configuration options available in auditor.

⚙️ Auditor Configuration

The main Configuration class accepts the following options:

<?php

use DH\Auditor\Configuration;

$configuration = new Configuration([
'enabled' => true,
'timezone' => 'UTC',
'user_provider' => null,
'security_provider' => null,
'role_checker' => null,
]);

Options Reference

OptionTypeDefaultDescription
enabledbooltrueEnable or disable auditing globally
timezonestring'UTC'Timezone used for audit timestamps
user_providercallable|nullnullCallback that returns the current user
security_providercallable|nullnullCallback that returns security context info
role_checkercallable|nullnullCallback that checks if user can view entity audits

🔧 Configuration Methods

Enable/Disable Auditing

// Disable auditing
$configuration->disable();

// Re-enable auditing
$configuration->enable();

// Check if auditing is enabled
if ($configuration->isEnabled()) {
// ...
}

Get Timezone

$timezone = $configuration->getTimezone();

👤 User Provider

The user provider is a callable that returns information about the current user. This is used to record who made each change.

use DH\Auditor\User\User;

$configuration->setUserProvider(function (): ?User {
// Return null if no user is authenticated
$currentUser = $this->security->getUser();

if (null === $currentUser) {
return null;
}

return new User(
(string) $currentUser->getId(), // User identifier
$currentUser->getUsername() // Username for display
);
});

The User class implements UserInterface:

namespace DH\Auditor\User;

interface UserInterface
{
public function getIdentifier(): ?string;
public function getUsername(): ?string;
}

See User Provider Configuration for more details.

🔐 Security Provider

The security provider returns contextual security information to be stored with audit entries:

$configuration->setSecurityProvider(function (): array {
return [
'client_ip' => $_SERVER['REMOTE_ADDR'] ?? null,
'user_fqdn' => $this->security->getUser()?::class,
'user_firewall' => $this->getFirewallName(),
];
});

See Security Provider Configuration for more details.

🛡️ Role Checker

The role checker determines whether a user can view audits for a specific entity:

$configuration->setRoleChecker(function (string $entity, string $scope): bool {
// $entity is the FQCN of the audited entity
// $scope is the action (e.g., 'view')

// Example: Only admins can view User audits
if ($entity === User::class) {
return $this->security->isGranted('ROLE_ADMIN');
}

// Allow everyone to view other audits
return true;
});

See Role Checker Configuration for more details.

🗄️ DoctrineProvider Configuration

The DoctrineProvider has its own configuration. See DoctrineProvider Configuration for details.

📝 Configuration Summary

<?php

use DH\Auditor\Auditor;
use DH\Auditor\Configuration;
use DH\Auditor\User\User;
use Symfony\Component\EventDispatcher\EventDispatcher;

$configuration = new Configuration([
'enabled' => true,
'timezone' => 'Europe/Paris',
]);

// Set user provider
$configuration->setUserProvider(function (): ?User {
$user = $securityContext->getUser();
if (null === $user) {
return null;
}
return new User((string) $user->getId(), $user->getUsername());
});

// Set security provider
$configuration->setSecurityProvider(function (): array {
return [
'client_ip' => $_SERVER['REMOTE_ADDR'] ?? null,
];
});

// Set role checker
$configuration->setRoleChecker(function (string $entity, string $scope): bool {
return $this->authorizationChecker->isGranted('ROLE_AUDIT_VIEWER');
});

$auditor = new Auditor($configuration, new EventDispatcher());

Next Steps