Skip to content

Commit c78cc8c

Browse files
committed
add basic auth support
1 parent 322ccd1 commit c78cc8c

File tree

2 files changed

+93
-0
lines changed

2 files changed

+93
-0
lines changed

src/Support/BasicAuth.php

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
namespace Shield\Shield\Support;
4+
5+
use Illuminate\Http\Request;
6+
7+
trait BasicAuth
8+
{
9+
/**
10+
* @param \Illuminate\Http\Request $request
11+
* @param string $username
12+
* @param string $password
13+
*
14+
* @return bool
15+
*/
16+
public function checkBasic(Request $request, string $username, string $password): bool
17+
{
18+
if ($request->hasHeader('PHP-AUTH-USER') && $request->hasHeader('PHP-AUTH-PW')) {
19+
return $request->header('PHP-AUTH-USER') == $username && $request->header('PHP-AUTH-PW') == $password;
20+
}
21+
22+
return false;
23+
}
24+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
<?php
2+
3+
namespace Shield\Shield\Test\Unit\Support;
4+
5+
use Illuminate\Http\Request;
6+
use Illuminate\Support\Collection;
7+
use PHPUnit\Framework\Assert;
8+
use Shield\Shield\Contracts\Service;
9+
use Shield\Shield\Support\BasicAuth;
10+
use Shield\Testing\TestCase;
11+
12+
/**
13+
* Class BasicAuthTest
14+
*
15+
* @package \Shield\Shield\Test\Unit\Support
16+
*/
17+
class BasicAuthTest extends TestCase
18+
{
19+
/**
20+
* @var \Shield\Shield\Test\Unit\Support\Example
21+
*/
22+
private $service;
23+
24+
public function setUp()
25+
{
26+
parent::setUp();
27+
28+
$this->service = new Example;
29+
}
30+
31+
/** @test */
32+
public function it_will_fail_if_invalid_credentials()
33+
{
34+
$request = $this->request();
35+
$request->headers->add([
36+
'PHP-AUTH-USER' => 'user',
37+
'PHP-AUTH-PW' => 'password',
38+
]);
39+
40+
Assert::assertFalse($this->service->checkBasic($request, 'user', 'pass'));
41+
}
42+
43+
/** @test */
44+
public function it_will_pass_if_correct_credentials()
45+
{
46+
$request = $this->request();
47+
$request->headers->add([
48+
'PHP-AUTH-USER' => 'user',
49+
'PHP-AUTH-PW' => 'pass',
50+
]);
51+
52+
Assert::assertTrue($this->service->checkBasic($request, 'user', 'pass'));
53+
}
54+
}
55+
56+
class Example implements Service {
57+
58+
use BasicAuth;
59+
60+
public function verify(Request $request, Collection $config): bool
61+
{
62+
return true;
63+
}
64+
65+
public function headers(): array
66+
{
67+
return [];
68+
}
69+
}

0 commit comments

Comments
 (0)