Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
CRAP
100.00% covered (success)
100.00%
1 / 1
AuthenticationService
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
1 / 1
 getAuthenticatedUser
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3declare(strict_types=1);
4
5namespace BO\Zmscitizenapi\Services\Core;
6
7use BO\Zmscitizenapi\Exceptions\InvalidAuthTokenException;
8use Psr\Http\Message\RequestInterface;
9use BO\Zmscitizenapi\Models\AuthenticatedUser;
10
11abstract class AuthenticationService
12{
13    public static function getAuthenticatedUser(RequestInterface $request): AuthenticatedUser | null
14    {
15        $authHeader = $request->getHeaderLine('Authorization');
16        if (empty($authHeader)) {
17            return null;
18        }
19        if (!preg_match('/Bearer\s(\S+)/', $authHeader, $matches)) {
20            throw new InvalidAuthTokenException('authKeyMismatch', 'Invalid JWT payload.');
21        }
22        $token = $matches[1];
23        return AuthenticatedUser::fromJwtPayload($token);
24    }
25}