Skip to content

Commit 9dcd30e

Browse files
committed
Do ability to t override existing event in Http middleware
1 parent 659290d commit 9dcd30e

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

config/initial-event-propagation.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,12 @@
55
'set_initial_event_http_middleware' => [
66
'default_user_type' => '',
77

8+
/**
9+
* If is set to `true` the middleware does not override the InitialEvent if it was already set for current context earlier.
10+
* Defaults to `false`.
11+
*/
12+
'preserve_existing_event' => false,
13+
814
/**
915
* Middleware parses this header to get `appCode`.
1016
* If the header is not specified here or in a request, `appCode` is taken from `app_code` config value

src/SetInitialEventHttpMiddleware.php

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,21 @@ public function handle(Request $request, Closure $next): mixed
1515
$user = $request->user();
1616
$config = config('initial-event-propagation', []);
1717
$mc = config('initial-event-propagation.set_initial_event_http_middleware', []);
18-
19-
$initialEvent = InitialEventDTO::fromScratch(
20-
userId: $user ? $user->getId() : "",
21-
userType: $user ? $mc['default_user_type'] : "",
22-
app: !empty($mc['app_code_header']) ? $request->header($mc['app_code_header']) : ($config['app_code'] ?? ''),
23-
entrypoint: $this->extractEntrypoint($request),
24-
correlationId: !empty($mc['correlation_id_header']) ? $request->header($mc['correlation_id_header']) : '',
25-
timestamp: !empty($mc['timestamp_header']) ? $request->header($mc['timestamp_header']) : ''
26-
);
27-
28-
Container::getInstance()->make(InitialEventHolder::class)->setInitialEvent($initialEvent);
18+
$holder = Container::getInstance()->make(InitialEventHolder::class);
19+
$existingEvent = $holder->getInitialEvent();
20+
21+
if (!$existingEvent || empty($mc['preserve_existing_event'])) {
22+
$initialEvent = InitialEventDTO::fromScratch(
23+
userId: $user ? $user->getId() : "",
24+
userType: $user ? $mc['default_user_type'] : "",
25+
app: !empty($mc['app_code_header']) ? $request->header($mc['app_code_header']) : ($config['app_code'] ?? ''),
26+
entrypoint: $this->extractEntrypoint($request),
27+
correlationId: !empty($mc['correlation_id_header']) ? $request->header($mc['correlation_id_header']) : '',
28+
timestamp: !empty($mc['timestamp_header']) ? $request->header($mc['timestamp_header']) : ''
29+
);
30+
31+
$holder->setInitialEvent($initialEvent);
32+
}
2933

3034
return $next($request);
3135
}

0 commit comments

Comments
 (0)