1: | <?php |
2: | |
3: | /* |
4: | * Library to use PortBilling events with PSR-14 event dispatch |
5: | */ |
6: | |
7: | namespace Porta\Psr14Event\Auth; |
8: | |
9: | use Porta\Psr14Event\EventException; |
10: | |
11: | /** |
12: | * Class to perform basic authentification |
13: | * |
14: | * Create an instance of class with password and username and then check Event |
15: | * for credentials: |
16: | * ``` |
17: | * (new AuthBasic('username','pass'))->authentificate($event) |
18: | * ``` |
19: | * |
20: | * @api |
21: | * @package Auth |
22: | */ |
23: | class AuthBasic extends Auth |
24: | { |
25: | |
26: | protected const AUTH_BASIC = 'Basic'; |
27: | |
28: | protected string $login; |
29: | protected string $password; |
30: | |
31: | /** |
32: | * Sets login and password for basic authentification |
33: | * |
34: | * @param string $login |
35: | * @param string $password |
36: | * @api |
37: | */ |
38: | public function __construct(string $login, string $password) |
39: | { |
40: | $this->login = $login; |
41: | $this->password = $password; |
42: | } |
43: | |
44: | /** |
45: | * @internal |
46: | */ |
47: | protected function check(): void |
48: | { |
49: | if (($this->authType != self::AUTH_BASIC) || |
50: | ($this->authValue != base64_encode($this->login . ':' . $this->password))) { |
51: | throw new EventException("Basic auth failed", 401); |
52: | } |
53: | } |
54: | } |
55: |