refactor: base event

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-08-08 22:15:24 -04:00
parent c8e6efe203
commit 62b416f13e
20 changed files with 109 additions and 99 deletions
+4 -4
View File
@@ -50,7 +50,7 @@ final class EventDispatcher implements EventDispatcherInterface, DeferredEventPr
try {
$this->invoke($event, DeliveryMode::Immediate);
if ($this->registry->listeners($event->getName(), DeliveryMode::Deferred) !== []) {
if ($this->registry->listeners($event->label(), DeliveryMode::Deferred) !== []) {
if ($this->activeExecution === null) {
throw new \LogicException('Deferred events require an active execution scope.');
}
@@ -96,7 +96,7 @@ final class EventDispatcher implements EventDispatcherInterface, DeferredEventPr
}
$eventListenerCount = count($this->registry->listeners(
$event->getName(),
$event->label(),
DeliveryMode::Deferred,
));
if ($listenerInvocations + $eventListenerCount > $this->maxDeferredListenerInvocations) {
@@ -134,7 +134,7 @@ final class EventDispatcher implements EventDispatcherInterface, DeferredEventPr
private function invoke(Event $event, DeliveryMode $delivery): int
{
$processed = 0;
foreach ($this->registry->listeners($event->getName(), $delivery) as $listener) {
foreach ($this->registry->listeners($event->label(), $delivery) as $listener) {
if ($event->isPropagationStopped()) {
break;
}
@@ -145,7 +145,7 @@ final class EventDispatcher implements EventDispatcherInterface, DeferredEventPr
$service->{$listener->method}($event);
} catch (\Throwable $error) {
$this->logger->error('Event listener failed.', [
'event' => $event->getName(),
'event' => $event->label(),
'module' => $listener->module,
'listener' => $listener->service . '::' . $listener->method,
'exception' => $error,
@@ -6,17 +6,17 @@ namespace KTXC\Security\Event;
interface SecurityEventInterface
{
public function getName(): string;
public function label(): string;
public function get(string $key, mixed $default = null): mixed;
public function getData(): array;
public function context(): array;
public function getEventId(): string;
public function identifier(): string;
public function getTenantId(): ?string;
public function tenantIdentifier(): ?string;
public function getIdentityId(): ?string;
public function actorIdentity(): ?string;
public function getUserId(): ?string;
+7 -7
View File
@@ -149,7 +149,7 @@ class FirewallService
{
$request = $this->requestContext->current();
$ipAddress = $request?->getClientIp();
$tenantId = $event->getTenantId() ?? $this->tenantContext->identifier();
$tenantId = $event->tenantIdentifier() ?? $this->tenantContext->identifier();
if (!$ipAddress || !$tenantId) {
return;
@@ -262,7 +262,7 @@ class FirewallService
?Request $request = null,
): ?FirewallLogObject
{
$tenantId = $event->getTenantId() ?? $this->tenantContext->identifier();
$tenantId = $event->tenantIdentifier() ?? $this->tenantContext->identifier();
$ruleScope = $event->get('ruleScope');
if (!$tenantId && $ruleScope !== FirewallRuleObject::SCOPE_SYSTEM) {
return null;
@@ -271,7 +271,7 @@ class FirewallService
$requestEvent = $event instanceof SecurityRequestEventInterface ? $event : null;
$log = new FirewallLogObject();
return $log->setEventId($event->getEventId())
return $log->setEventId($event->identifier())
->setTenantId($tenantId)
->setIpAddress($request?->getClientIp() ?? $requestEvent?->getIpAddress())
->setDeviceFingerprint(
@@ -281,13 +281,13 @@ class FirewallService
->setUserAgent($request?->headers->get('User-Agent') ?? $requestEvent?->getUserAgent())
->setRequestPath($request?->getPathInfo() ?? $requestEvent?->getRequestPath())
->setRequestMethod($request?->getMethod() ?? $requestEvent?->getRequestMethod())
->setEventType($this->mapEventToLogType($event->getName()))
->setEventType($this->mapEventToLogType($event->label()))
->setResult($this->mapEventToResult($event))
->setRuleId($event->get('ruleId'))
->setRuleScope($ruleScope)
->setIdentityId($event->getUserId() ?? $event->getIdentityId())
->setIdentityId($event->getUserId() ?? $event->actorIdentity())
->setTimestamp(new \DateTimeImmutable())
->setMetadata($event->getData());
->setMetadata($event->context());
}
/**
@@ -317,7 +317,7 @@ class FirewallService
*/
private function mapEventToResult(SecurityEventInterface $event): string
{
return match ($event->getName()) {
return match ($event->label()) {
AuthenticationSucceededEvent::class => FirewallLogObject::RESULT_ALLOWED,
FirewallRuleCreatedEvent::class,
FirewallRuleExtendedEvent::class,
+5
View File
@@ -61,6 +61,11 @@ abstract class UserEvent extends Event
return $this->userIdentifier;
}
public function tenantIdentifier(): string
{
return $this->tenantIdentifier;
}
public function userIdentity(): string
{
return $this->userIdentity;