HasPermissions::hasAnyPermission()   A
last analyzed

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 104
    public function permissions()
8
    {
9 104
        if ($this->accessToken) {
10 34
            return $this->tokenPermissions($this->accessToken);
11
        }
12
13 70
        $permissions = config("tinre.role_permissions.{$this->role}", []);
14
15 70
        if (in_array('*', $permissions)) {
16 18
            return config('tinre.permissions');
17
        }
18
19 52
        return $permissions;
20
    }
21
22 56
    public function apiPermissions()
23
    {
24 56
        $permissions = config("tinre.role_permissions.{$this->role}", []);
25
26 56
        if (in_array('*', $permissions)) {
27 10
            $permissions = config('tinre.api_permissions');
28
        }
29
30 56
        return array_intersect($permissions, config('tinre.api_permissions'));
31
    }
32
33 34
    public function tokenPermissions($accessToken)
34
    {
35 34
        $tokenPermissions = $accessToken->permissions;
36
37 34
        if (! is_array($tokenPermissions)) {
38 1
            return [];
39
        }
40
41 33
        $apiPermissions = $this->apiPermissions();
42
43 33
        return array_intersect($tokenPermissions, $apiPermissions);
44
    }
45
46 100
    public function hasPermissionTo($permission)
47
    {
48 100
        $userPermissions = $this->permissions();
49
50 100
        if (in_array($permission, $userPermissions)) {
51 79
            return true;
52
        }
53
54 64
        return false;
55
    }
56
57 7
    public function hasAnyPermission($permissions)
58
    {
59 7
        foreach ($permissions as $permission) {
60 7
            if ($this->hasPermissionTo($permission)) {
61 6
                return true;
62
            }
63
        }
64
65 1
        return false;
66
    }
67
}
68