HasPermissions   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 3
Bugs 1 Features 0
Metric Value
eloc 24
c 3
b 1
f 0
dl 0
loc 61
ccs 28
cts 28
cp 1
rs 10
wmc 12

5 Methods

Rating   Name   Duplication   Size   Complexity  
A permissions() 0 13 3
A apiPermissions() 0 9 2
A hasPermissionTo() 0 9 2
A hasAnyPermission() 0 9 3
A tokenPermissions() 0 11 2
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