Completed
Push — develop ( 84967e...f66a3c )
by Nate
02:18
created

ManageTokens::findByProvider()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 0
cts 7
cp 0
rs 9.4285
c 0
b 0
f 0
cc 2
eloc 4
nc 2
nop 1
crap 6
1
<?php
2
3
/**
4
 * @copyright  Copyright (c) Flipbox Digital Limited
5
 * @license    https://flipboxfactory.com/software/patron/license
6
 * @link       https://www.flipboxfactory.com/software/patron/
7
 */
8
9
namespace flipbox\patron\services;
10
11
use flipbox\ember\helpers\ArrayHelper;
12
use flipbox\ember\services\traits\records\Accessor;
13
use flipbox\patron\db\TokenQuery;
14
use flipbox\patron\Patron;
15
use flipbox\patron\records\Token;
16
use League\OAuth2\Client\Provider\AbstractProvider;
17
use League\OAuth2\Client\Token\AccessToken;
18
use yii\base\Component;
19
20
/**
21
 * @author Flipbox Factory <[email protected]>
22
 * @since 1.0.0
23
 *
24
 * @method Token create(array $attributes = [])
25
 * @method TokenQuery getQuery($config = [])
26
 * @method Token parentFind($identifier)
27
 * @method Token get($identifier)
28
 * @method Token findByCondition($condition = [])
29
 * @method Token getByCondition($condition = [])
30
 * @method Token findByCriteria($criteria = [])
31
 * @method Token getByCriteria($criteria = [])
32
 * @method Token[] findAllByCondition($condition = [])
33
 * @method Token[] getAllByCondition($condition = [])
34
 * @method Token[] findAllByCriteria($criteria = [])
35
 * @method Token[] getAllByCriteria($criteria = [])
36
 */
37
class ManageTokens extends Component
38
{
39
    use Accessor {
40
        find as parentFind;
41
    }
42
43
    /**
44
     * @inheritdoc
45
     */
46
    public static function recordClass(): string
47
    {
48
        return Token::class;
49
    }
50
51
    /**
52
     * @param array $config
53
     * @return array
54
     */
55
    protected function prepareQueryConfig($config = [])
56
    {
57
        if (!is_array($config)) {
58
            $config = ArrayHelper::toArray($config, [], true);
59
        }
60
61
        // Allow disabled when managing
62
        if (!array_key_exists('enabled', $config)) {
63
            $config['enabled'] = null;
64
        }
65
66
        return $config;
67
    }
68
69
    /**
70
     * @inheritdoc
71
     */
72
    public function find($identifier)
73
    {
74
        if ($identifier instanceof AccessToken) {
75
            return $this->findByAccessToken($identifier);
76
        }
77
78
        if ($identifier instanceof AbstractProvider) {
79
            return $this->findByProvider($identifier);
80
        }
81
82
        return $this->parentFind($identifier);
83
    }
84
85
    /*******************************************
86
     * FIND/GET BY ACCESS TOKEN
87
     *******************************************/
88
89
    /**
90
     * @param AccessToken $accessToken
91
     * @return Token|null
92
     */
93
    public function findByAccessToken(AccessToken $accessToken)
94
    {
95
        return $this->findByCriteria(['accessToken' => $accessToken->getToken()]);
96
    }
97
98
    /*******************************************
99
     * FIND/GET BY PROVIDER
100
     *******************************************/
101
102
    /**
103
     * @param AbstractProvider $provider
104
     * @return Token|null
105
     */
106
    public function findByProvider(AbstractProvider $provider)
107
    {
108
        if (null === ($providerId = Patron::getInstance()->getProviders()->getId($provider))) {
109
            return null;
110
        }
111
112
        return $this->findByCriteria(['providerId' => $providerId]);
113
    }
114
115
    /*******************************************
116
     * STATES
117
     *******************************************/
118
119
    /**
120
     * @param Token $record
121
     * @return bool
122
     */
123
    public function disable(Token $record)
124
    {
125
        $record->enabled = false;
126
        return $record->save(true, ['enabled']);
127
    }
128
129
    /**
130
     * @param Token $model
131
     * @return bool
132
     */
133
    public function enable(Token $model)
134
    {
135
        $model->enabled = true;
136
        return $model->save(true, ['enabled']);
137
    }
138
}
139