Total Complexity | 3 |
Total Lines | 34 |
Duplicated Lines | 0 % |
Changes | 2 | ||
Bugs | 0 | Features | 0 |
1 | <?php |
||
9 | class WebhookValidator |
||
10 | { |
||
11 | use VerifiesWebhooks; |
||
12 | |||
13 | private SecretProvider $secretProvider; |
||
14 | |||
15 | public function __construct(SecretProvider $secretProvider) |
||
16 | { |
||
17 | $this->secretProvider = $secretProvider; |
||
18 | } |
||
19 | |||
20 | public function validate(string $signature, string $domain, string $data): void |
||
21 | { |
||
22 | // Validate webhook secret presence |
||
23 | $secret = $this->secretProvider->getSecret($domain); |
||
24 | throw_if(empty($secret), WebhookFailed::missingSigningSecret()); |
||
25 | |||
26 | // Validate webhook signature |
||
27 | throw_unless( |
||
28 | $this->isWebhookSignatureValid($signature, $data, $secret), |
||
29 | WebhookFailed::invalidSignature($signature) |
||
30 | ); |
||
31 | } |
||
32 | |||
33 | public function validateFromRequest(Request $request): void |
||
43 | } |
||
44 | } |
||
45 |