refactor: base event
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user