Passed
Push — master ( 0f5341...8d5d80 )
by Rutger
03:20
created

Oauth2ClientRepository::getClientEntity()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
cc 1
nc 1
nop 1
crap 1
1
<?php
2
3
namespace rhertogh\Yii2Oauth2Server\components\repositories;
4
5
use rhertogh\Yii2Oauth2Server\components\repositories\base\Oauth2BaseRepository;
6
use rhertogh\Yii2Oauth2Server\components\repositories\traits\Oauth2ModelRepositoryTrait;
7
use rhertogh\Yii2Oauth2Server\helpers\DiHelper;
8
use rhertogh\Yii2Oauth2Server\interfaces\components\repositories\Oauth2ClientRepositoryInterface;
9
use rhertogh\Yii2Oauth2Server\interfaces\models\Oauth2ClientInterface;
10
use yii\base\InvalidConfigException;
11
12
class Oauth2ClientRepository extends Oauth2BaseRepository implements Oauth2ClientRepositoryInterface
13
{
14
    use Oauth2ModelRepositoryTrait {
15
        findModelByPk as traitFindModelByPk;
16
        findModelByIdentifier as traitFindModelByIdentifier;
17
    }
18
19
    /**
20
     * @inheritDoc
21
     * @return class-string<Oauth2ClientInterface>
0 ignored issues
show
Documentation Bug introduced by
The doc comment class-string<Oauth2ClientInterface> at position 0 could not be parsed: Unknown type name 'class-string' at position 0 in class-string<Oauth2ClientInterface>.
Loading history...
22
     */
23 12
    public function getModelClass()
24
    {
25 12
        return Oauth2ClientInterface::class;
26
    }
27
28
    public function findModelByPk($pk)
29
    {
30
        /** @var Oauth2ClientInterface $client */
31
        $client = $this->traitFindModelByPk($pk);
32
        if ($client) {
0 ignored issues
show
introduced by
$client is of type rhertogh\Yii2Oauth2Serve...s\Oauth2ClientInterface, thus it always evaluated to true.
Loading history...
33
            $client->setModule($this->_module);
34
        }
35
        return $client;
36
    }
37
38 12
    public function findModelByIdentifier($identifier)
39
    {
40
        /** @var Oauth2ClientInterface $client */
41 12
        $client = $this->traitFindModelByIdentifier($identifier);
42 12
        if ($client) {
0 ignored issues
show
introduced by
$client is of type rhertogh\Yii2Oauth2Serve...s\Oauth2ClientInterface, thus it always evaluated to true.
Loading history...
43 10
            $client->setModule($this->_module);
44
        }
45 12
        return $client;
46
    }
47
48
    /**
49
     * @inheritDoc
50
     * @throws InvalidConfigException
51
     */
52 5
    public function getClientEntity($clientIdentifier)
53
    {
54 5
        return $this->findModelByIdentifier($clientIdentifier);
55
    }
56
57
    /**
58
     * @inheritDoc
59
     */
60 7
    public function validateClient($clientIdentifier, $clientSecret, $grantType)
61
    {
62
        /** @var Oauth2ClientInterface $client */
63 7
        $client = $this->findModelByIdentifier($clientIdentifier);
64
65
        if (
66 7
            $client
67 7
            && $client->isEnabled()
68 7
            && $client->validateGrantType($grantType)
69 7
            && (!$client->isConfidential() || $client->validateSecret($clientSecret, $this->_module->getCryptographer()))
0 ignored issues
show
Bug introduced by
The method getCryptographer() does not exist on null. ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-call  annotation

69
            && (!$client->isConfidential() || $client->validateSecret($clientSecret, $this->_module->/** @scrutinizer ignore-call */ getCryptographer()))

This check looks for calls to methods that do not seem to exist on a given type. It looks for the method on the type itself as well as in inherited classes or implemented interfaces.

This is most likely a typographical error or the method has been renamed.

Loading history...
70
        ) {
71 3
            return true;
72
        }
73
74 4
        return false;
75
    }
76
77
    public function getAllClients($filter = [])
78
    {
79
        $class = $this->getModelClass();
80
        /** @var class-string<Oauth2ClientInterface> $className */
81
        $className = DiHelper::getValidatedClassName($class);
82
83
        return array_map(
84
            fn(Oauth2ClientInterface $client) => $client->setModule($this->_module),
85
            $className::find()
86
                ->andFilterWhere($filter)
87
                ->all(),
88
        );
89
    }
90
}
91