Passed
Push — master ( 02b2dd...8b56d0 )
by Paul
05:11
created

HasPermissions::hasAnyPermission()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 9
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 5
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 4
c 1
b 0
f 0
nc 3
nop 1
dl 0
loc 9
ccs 5
cts 5
cp 1
crap 3
rs 10
1
<?php
2
3
namespace Devpri\Tinre\Traits;
4
5
trait HasPermissions
6
{
7 89
    public function permissions()
8
    {
9 89
        if ($this->accessToken) {
10 25
            return $this->tokenPermissions($this->accessToken);
11
        }
12
13 64
        $permissions = config("tinre.role_permissions.{$this->role}", []);
14
15 64
        if (in_array('*', $permissions)) {
16 17
            return config('tinre.permissions');
17
        }
18
19 47
        return $permissions;
20
    }
21
22 45
    public function apiPermissions()
23
    {
24 45
        $permissions = config("tinre.role_permissions.{$this->role}", []);
25
26 45
        if (in_array('*', $permissions)) {
27 7
            $permissions = config('tinre.api_permissions');
28
        }
29
30 45
        return array_intersect($permissions, config('tinre.api_permissions'));
31
    }
32
33 25
    public function tokenPermissions($accessToken)
34
    {
35 25
        $tokenPermissions = $accessToken->permissions;
36
37 25
        if (! is_array($tokenPermissions)) {
38 1
            return [];
39
        }
40
41 24
        $apiPermissions = $this->apiPermissions();
42
43 24
        return array_intersect($tokenPermissions, $apiPermissions);
44
    }
45
46 85
    public function hasPermissionTo($permission)
47
    {
48 85
        $userPermissions = $this->permissions();
49
50 85
        if (in_array($permission, $userPermissions)) {
51 67
            return true;
52
        }
53
54 53
        return false;
55
    }
56
57 5
    public function hasAnyPermission($permissions)
58
    {
59 5
        foreach ($permissions as $permission) {
60 5
            if ($this->hasPermissionTo($permission)) {
61 4
                return true;
62
            }
63
        }
64
65 1
        return false;
66
    }
67
}
68