Skip to content

Commit 598265b

Browse files
Add signed:relative support to signed middleware. (#33137)
1 parent 1331ba8 commit 598265b

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/Illuminate/Routing/Middleware/ValidateSignature.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,14 @@ class ValidateSignature
1212
*
1313
* @param \Illuminate\Http\Request $request
1414
* @param \Closure $next
15+
* @param string|null $relative
1516
* @return \Illuminate\Http\Response
1617
*
1718
* @throws \Illuminate\Routing\Exceptions\InvalidSignatureException
1819
*/
19-
public function handle($request, Closure $next)
20+
public function handle($request, Closure $next, $relative = null)
2021
{
21-
if ($request->hasValidSignature()) {
22+
if ($request->hasValidSignature($relative !== 'relative')) {
2223
return $next($request);
2324
}
2425

tests/Integration/Routing/UrlSigningTest.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,19 @@ public function testSignedMiddlewareWithRoutableParameter()
8585
$this->assertIsString($url = URL::signedRoute('foo', $model));
8686
$this->assertSame('routable', $this->get($url)->original);
8787
}
88+
89+
public function testSignedMiddlewareWithRelativePath()
90+
{
91+
Route::get('/foo/relative', function (Request $request) {
92+
return $request->hasValidSignature($absolute = false) ? 'valid' : 'invalid';
93+
})->name('foo')->middleware('signed:relative');
94+
95+
$this->assertIsString($url = 'https://fake.test'.URL::signedRoute('foo', [], null, $absolute = false));
96+
$this->assertSame('valid', $this->get($url)->original);
97+
98+
$response = $this->get('/foo/relative');
99+
$response->assertStatus(403);
100+
}
88101
}
89102

90103
class RoutableInterfaceStub implements UrlRoutable

0 commit comments

Comments
 (0)