Authenticator   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 12
c 1
b 0
f 0
dl 0
loc 38
rs 10
wmc 8

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getToken() 0 9 3
A authenticate() 0 12 4
A isApplicable() 0 3 1
1
<?php
2
3
namespace Riddler7\Oauth2GraphQL;
4
5
use AdvancedLearning\Oauth2Server\Exceptions\AuthenticationException;
0 ignored issues
show
Bug introduced by
The type AdvancedLearning\Oauth2S...AuthenticationException was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
6
use AdvancedLearning\Oauth2Server\Models\Client;
0 ignored issues
show
Bug introduced by
The type AdvancedLearning\Oauth2Server\Models\Client was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
7
use function is_null;
8
use SilverStripe\Control\HTTPRequest;
0 ignored issues
show
Bug introduced by
The type SilverStripe\Control\HTTPRequest was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
9
use SilverStripe\Core\Injector\Injector;
0 ignored issues
show
Bug introduced by
The type SilverStripe\Core\Injector\Injector was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
10
use SilverStripe\GraphQL\Auth\AuthenticatorInterface;
0 ignored issues
show
Bug introduced by
The type SilverStripe\GraphQL\Auth\AuthenticatorInterface was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
11
use SilverStripe\ORM\ValidationException;
0 ignored issues
show
Bug introduced by
The type SilverStripe\ORM\ValidationException was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
12
use SilverStripe\Security\Member;
0 ignored issues
show
Bug introduced by
The type SilverStripe\Security\Member was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
13
use function substr;
14
15
class Authenticator implements AuthenticatorInterface
16
{
17
    public function authenticate(HTTPRequest $request)
18
    {
19
        $authenticator = Injector::inst()->get(\AdvancedLearning\Oauth2Server\Services\Authenticator::class);
0 ignored issues
show
Bug introduced by
The type AdvancedLearning\Oauth2S...\Services\Authenticator was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
20
21
        try {
22
            $request = $authenticator->authenticate($request);
23
24
            if ($userId = $request->getHeader('oauth_user_id')) {
25
                return Member::get()->filter(['Email' => $userId])->first();
26
            }
27
        } catch (AuthenticationException $exception) {
28
            throw new ValidationException($exception->getMessage(), $exception->getCode() ?: 403);
29
        }
30
    }
31
32
    public function isApplicable(HTTPRequest $request)
33
    {
34
        return !is_null($this->getToken($request));
35
    }
36
37
    /**
38
     * Extract the token from the authorization header.
39
     *
40
     * @param HTTPRequest $request The request container the token.
41
     *
42
     * @return null|string
43
     */
44
    protected function getToken(HTTPRequest $request): ?string
45
    {
46
        if ($authHeader = $request->getHeader('Authorization')) {
47
            if (stripos($authHeader, 'Bearer ') === 0) {
48
                return substr($authHeader, 6);
49
            }
50
        }
51
52
        return null;
53
    }
54
}
55