From ce28557a844201937eeb19932b0806930dae1cbe Mon Sep 17 00:00:00 2001 From: Angger Pradana Date: Sat, 8 Feb 2025 20:49:12 +0700 Subject: [PATCH] feat: add methods to retrieve Authorization and Bearer token from headers (#416) --- src/System/Http/Request.php | 25 +++++++++++++++++++++++++ tests/Http/RequestTest.php | 20 ++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/src/System/Http/Request.php b/src/System/Http/Request.php index 9e649726..3c12047e 100644 --- a/src/System/Http/Request.php +++ b/src/System/Http/Request.php @@ -528,6 +528,31 @@ public function json(): Collection return $this->json; } + /** + * Get Authorization header. + */ + public function getAuthorization(): ?string + { + return $this->getHeaders('Authorization'); + } + + /** + * Get Bearer token from Authorization header. + */ + public function getBearerToken(): ?string + { + $authorization = $this->getAuthorization(); + if (null === $authorization) { + return null; + } + + if (Str::startsWith($authorization, 'Bearer ')) { + return substr($authorization, 7); + } + + return null; + } + /** * Compine all request input. * diff --git a/tests/Http/RequestTest.php b/tests/Http/RequestTest.php index 0f78f896..eb6c8500 100644 --- a/tests/Http/RequestTest.php +++ b/tests/Http/RequestTest.php @@ -482,4 +482,24 @@ public function itCanNotGetRequestFormat() $this->assertNull($request->getRequestFormat()); } + + /** + * @test + */ + public function itCanGetHeaderAuthorization(): void + { + $request = new Request('test.test', headers: ['Authorization' => '123']); + + $this->assertEquals('123', $request->getAuthorization()); + } + + /** + * @test + */ + public function itCanGetHeaderBearerAuthorization(): void + { + $request = new Request('test.test', headers: ['Authorization' => 'Bearer 123']); + + $this->assertEquals('123', $request->getBearerToken()); + } }