Role   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 71
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 2
dl 0
loc 71
ccs 13
cts 13
cp 1
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A delete() 0 6 1
A getPermissions() 0 4 1
A users() 0 4 1
A setPermissionsAttribute() 0 10 2
1
<?php
2
3
namespace Napp\Core\Acl\Model;
4
5
use Illuminate\Database\Eloquent\Model;
6
7
/**
8
 * Class Role.
9
 */
10
class Role extends Model
11
{
12
    /**
13
     * @var array
14
     */
15
    protected $casts = ['permissions' => 'json'];
16
17
    /**
18
     * @var array
19
     */
20
    protected $hidden = ['deleted_at'];
21
22
    /**
23
     * @var array
24
     */
25
    protected $fillable = [
26
        'name',
27
        'description',
28
        'is_default',
29
        'permissions',
30
        'slug',
31
        'access_level',
32
        'access_level_parent',
33
    ];
34
35
    /**
36
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
37
     */
38 2
    public function users()
39
    {
40 2
        return $this->belongsToMany(config('acl.models.user'), config('acl.table_names.users_roles'));
41
    }
42
43
    /**
44
     * @throws \Exception
45
     *
46
     * @return bool
47
     */
48 2
    public function delete()
49
    {
50 2
        $this->users()->detach();
51
52 2
        return parent::delete();
53
    }
54
55
    /**
56
     * @return array
57
     */
58 34
    public function getPermissions()
59
    {
60 34
        return $this->permissions;
61
    }
62
63
    /**
64
     * @param null|array $permissions
65
     *
66
     * @throws \InvalidArgumentException
67
     *
68
     * @return void
69
     */
70 2
    public function setPermissionsAttribute(?array $permissions)
71
    {
72 2
        if (\is_array($permissions)) {
73 2
            $this->attributes['permissions'] = json_encode($permissions);
74
75 2
            return;
76
        }
77
78 2
        $this->attributes['permissions'] = null;
79 2
    }
80
}
81