Completed
Push — master ( 4b04e0...ecec2c )
by Gabriel
10:34 queued 05:21
created

ClientHasGrantsTrait::removeGrants()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 6
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 3
c 1
b 0
f 1
dl 0
loc 6
rs 10
ccs 0
cts 4
cp 0
cc 2
nc 2
nop 1
crap 6
1
<?php
2
3
namespace ByTIC\Hello\Models\Clients\Traits;
4
5
use ByTIC\Hello\Utility\GrantsHelper;
6
7
/**
8
 * Trait ClientHasGrantsTrait
9
 * @package ByTIC\Hello\Models\Clients\Traits
10
 */
11
trait ClientHasGrantsTrait
12
{
13
    protected $grants = [];
14
15
    /**
16
     * @return bool
17
     */
18
    public function firstParty(): bool
19
    {
20
        return $this->hasGrant(GrantsHelper::GRANT_TYPE_USER_CREDENTIALS);
21
    }
22
23
    /**
24
     * @param string|array $grants
25
     * @see GrantHelper::GRANT_TYPE_*
26
     */
27 7
    public function addGrants($grants)
28
    {
29 7
        $grants = is_array($grants) ? $grants : [$grants];
30 7
        $this->setGrants(array_unique(array_merge($this->grants, $grants)));
31 7
    }
32
33
    /**
34
     * @param string|array $grants
35
     * @see GrantHelper::GRANT_TYPE_*
36
     */
37
    public function removeGrants($grants)
38
    {
39
        if (($key = array_search($grants, $this->grants)) !== false) {
40
            unset($this->grants[$key]);
41
        }
42
        $this->updateGrantsDbField();
43
    }
44
45
    /**
46
     * @return array
47
     */
48 11
    public function getGrants(): array
49
    {
50 11
        return $this->grants;
51
    }
52
53
    /**
54
     * @param array $grants
55
     */
56 7
    public function setGrants(array $grants)
57
    {
58 7
        $this->grants = $grants;
59 7
        $this->updateGrantsDbField();
60 7
    }
61
62
    /**
63
     * @param $grant
64
     * @return bool
65
     */
66
    public function handlesGrant($grant)
67
    {
68
        return $this->hasGrant($grant);
69
    }
70
71
    /**
72
     * @param string $grant
73
     * @return bool
74
     * @see GrantHelper::GRANT_TYPE_*
75
     */
76 1
    public function hasGrant(string $grant): bool
77
    {
78 1
        return array_search($grant, $this->grants) !== false;
79
    }
80
81 7
    protected function updateGrantsDbField()
82
    {
83 7
        $this->_data['grant_types'] = implode(',', $this->getGrants());
0 ignored issues
show
Bug Best Practice introduced by
The property _data does not exist. Although not strictly required by PHP, it is generally a best practice to declare properties explicitly.
Loading history...
84 7
    }
85
86
    /**
87
     * @param null $data
0 ignored issues
show
Documentation Bug introduced by
Are you sure the doc-type for parameter $data is correct as it would always require null to be passed?
Loading history...
88
     */
89 2
    protected function initGrantsFromDb($data = null)
90
    {
91 2
        $data = $data === null ? $this->grant_types : $data;
0 ignored issues
show
introduced by
The condition $data === null is always true.
Loading history...
Unused Code introduced by
The assignment to $data is dead and can be removed.
Loading history...
92 2
        if (!empty($this->grant_types)) {
93 2
            $this->grants = explode(',', $this->grant_types);
94
        } else {
95
            $this->grants = [];
96
        }
97 2
    }
98
}
99