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()); + } }