Skip to content

Commit 3c2c578

Browse files
committed
Split request and response application in apply auth middleware
1 parent aef115b commit 3c2c578

File tree

3 files changed

+47
-4
lines changed

3 files changed

+47
-4
lines changed

src/AuthenticationResult/Transport/Transport.php

+10
Original file line numberDiff line numberDiff line change
@@ -91,4 +91,14 @@ public function isApplied(): bool
9191
{
9292
return $this->is_applied_to_request && $this->is_applied_to_response;
9393
}
94+
95+
public function isAppliedToRequest(): bool
96+
{
97+
return $this->is_applied_to_request;
98+
}
99+
100+
public function isAppliedToResponse(): bool
101+
{
102+
return $this->is_applied_to_response;
103+
}
94104
}

src/AuthenticationResult/Transport/TransportInterface.php

+2
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,6 @@ public function applyToResponse(ResponseInterface $response): ResponseInterface;
2828
public function applyTo(ServerRequestInterface $request, ResponseInterface $response): array;
2929

3030
public function isApplied(): bool;
31+
public function isAppliedToRequest(): bool;
32+
public function isAppliedToResponse(): bool;
3133
}

src/Middleware/ApplyAuthenticationMiddleware.php

+35-4
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,46 @@ public function process(ServerRequestInterface $request, RequestHandlerInterface
6161
return (new ResponseFactory())->createResponse();
6262
}
6363

64-
private function apply(ServerRequestInterface $request, ResponseInterface $response): array
64+
private function applyToRequest(ServerRequestInterface $request): ServerRequestInterface
65+
{
66+
$transport = $this->getTransportFrom($request);
67+
68+
if ($transport instanceof TransportInterface
69+
&& !$transport->isEmpty()
70+
&& !$transport->isAppliedToResponse()
71+
) {
72+
return $transport->applyToRequest($request);
73+
}
74+
75+
return $request;
76+
}
77+
78+
private function applyToResponse(
79+
ServerRequestInterface $request,
80+
ResponseInterface $response
81+
): ResponseInterface
6582
{
6683
$transport = $this->getTransportFrom($request);
6784

68-
if ($transport instanceof TransportInterface && !$transport->isEmpty() && !$transport->isApplied()) {
69-
[$request, $response] = $transport->applyTo($request, $response);
85+
if ($transport instanceof TransportInterface
86+
&& !$transport->isEmpty()
87+
&& !$transport->isAppliedToResponse()
88+
) {
89+
return $transport->applyToResponse($response);
7090
}
7191

72-
return [$request, $response];
92+
return $response;
93+
}
94+
95+
private function apply(ServerRequestInterface $request, ResponseInterface $response): array
96+
{
97+
$request = $this->applyToRequest($request);
98+
$response = $this->applyToResponse($request, $response);
99+
100+
return [
101+
$request,
102+
$response,
103+
];
73104
}
74105

75106
protected function getTransportFrom(ServerRequestInterface $request): ?TransportInterface

0 commit comments

Comments
 (0)