Completed
Push — master ( bd8278...a640c0 )
by Andrii
15:21
created

AuthMiddleware::getAccessToken()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace hiapi\Core\Auth;
4
5
use Psr\Http\Message\ResponseInterface;
6
use Psr\Http\Message\ServerRequestInterface;
7
use Psr\Http\Server\MiddlewareInterface;
8
use Psr\Http\Server\RequestHandlerInterface;
9
10
abstract class AuthMiddleware implements MiddlewareInterface
11
{
12
    /**
13
     * @inheritDoc
14
     */
15
    public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
16
    {
17
        $this->authenticate($request);
18
19
        return $handler->handle($request);
20
    }
21
22
    abstract public function authenticate(ServerRequestInterface $request);
23
24
    protected function getAccessToken(ServerRequestInterface $request): ?string
25
    {
26
        return $this->getBearerToken($request) ?? $this->getParam($request, 'access_token');
27
    }
28
29
    protected function getBearerToken(ServerRequestInterface $request): ?string
30
    {
31
        $header = $request->getHeader('Authorization');
32
        if (preg_match('/^Bearer\s+([a-fA-F0-9]{30,50})$/', $header, $matches)) {
33
            return $matches[1];
34
        }
35
36
        return null;
37
    }
38
39
    public function getParam(ServerRequestInterface $request, string $name): ?string
40
    {
41
        return $request->getParsedBody()[$name] ?? $request->getQueryParams()[$name] ?? null;
42
    }
43
}
44