Completed
Push — develop ( 741023...325480 )
by Enea
02:01
created

HasRole::getPermissionModels()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Created on 11/02/18 by enea dhack.
4
 */
5
6
namespace Enea\Authorization\Traits;
7
8
use Enea\Authorization\Contracts\PermissionContract;
9
use Enea\Authorization\Contracts\RoleContract;
10
use Enea\Authorization\Facades\Authorizer;
11
use Enea\Authorization\Facades\Granter;
12
use Enea\Authorization\Facades\Revoker;
13
use Enea\Authorization\Support\Config;
14
use Illuminate\Database\Eloquent\Collection as EloquentCollection;
15
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
16
17
/**
18
 * Trait HasRole.
19
 *
20
 * @package Enea\Authorization\Traits
21
 *
22
 * @property EloquentCollection permissions
23
 */
24
trait HasRole
25
{
26
    use Grantable;
27
28 1
    public static function locateByName(string $secretName): ?RoleContract
29
    {
30 1
        $role = static::query()->where('secret_name', $secretName)->first();
31 1
        return $role instanceof RoleContract ? $role : null;
32
    }
33
34 4
    public function can(string $permission): bool
35
    {
36 4
        return Authorizer::can($this, $permission);
37
    }
38
39 2
    public function cannot(string $permission): bool
40
    {
41 2
        return ! $this->can($permission);
42
    }
43
44 3
    public function grant(PermissionContract $permission): void
45
    {
46 3
        $this->syncGrant([$permission]);
47 3
    }
48
49 7
    public function syncGrant(array $permissions): void
50
    {
51 7
        Granter::permissions($this, collect($permissions));
52 7
    }
53
54 1
    public function revoke(PermissionContract $permission): void
55
    {
56 1
        $this->syncRevoke([$permission]);
57 1
    }
58
59 2
    public function syncRevoke(array $permissions): void
60
    {
61 2
        Revoker::permissions($this, collect($permissions));
62 2
    }
63
64 16
    public function permissions(): BelongsToMany
65
    {
66 16
        return $this->belongsToMany(Config::permissionModel(), Config::rolePermissionTableName(), 'role_id', 'permission_id');
67
    }
68
69 1
    public function getPermissionModels(): EloquentCollection
70
    {
71 1
        return $this->permissions;
72
    }
73
}
74