Completed
Pull Request — master (#38)
by Arjay
16:34 queued 01:33
created

Permission   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 80
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 6

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
wmc 4
lcom 0
cbo 6
dl 0
loc 80
ccs 0
cts 39
cp 0
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A createResource() 0 48 3
A users() 0 5 1
1
<?php
2
3
namespace Yajra\Acl\Models;
4
5
use Exception;
6
use Illuminate\Database\Eloquent\Collection;
7
use Illuminate\Database\Eloquent\Model;
8
use Illuminate\Database\Eloquent\Relations\BelongsToMany;
9
use Illuminate\Support\Str;
10
use Yajra\Acl\Traits\HasRole;
11
use Yajra\Acl\Traits\RefreshCache;
12
13
/**
14
 * @property string resource
15
 * @property string name
16
 * @property string slug
17
 * @property bool system
18
 */
19
class Permission extends Model
20
{
21
    use HasRole, RefreshCache;
22
23
    /** @var string */
24
    protected $table = 'permissions';
25
26
    /** @var array */
27
    protected $fillable = ['name', 'slug', 'resource', 'system'];
28
29
    /** @var array */
30
    protected $casts = ['system' => 'bool'];
31
32
    /**
33
     * Create a permissions for a resource.
34
     *
35
     * @param $resource
36
     * @param  bool  $system
37
     * @return \Illuminate\Support\Collection
38
     */
39
    public static function createResource($resource, $system = false)
40
    {
41
        $group = Str::title($resource);
42
        $slug = Str::slug($group);
43
        $permissions = [
44
            [
45
                'slug' => $slug.'.viewAny',
46
                'resource' => $group,
47
                'name' => 'View Any '.$group,
48
                'system' => $system,
49
            ],
50
            [
51
                'slug' => $slug.'.view',
52
                'resource' => $group,
53
                'name' => 'View '.$group,
54
                'system' => $system,
55
            ],
56
            [
57
                'slug' => $slug.'.create',
58
                'resource' => $group,
59
                'name' => 'Create '.$group,
60
                'system' => $system,
61
            ],
62
            [
63
                'slug' => $slug.'.update',
64
                'resource' => $group,
65
                'name' => 'Update '.$group,
66
                'system' => $system,
67
            ],
68
            [
69
                'slug' => $slug.'.delete',
70
                'resource' => $group,
71
                'name' => 'Delete '.$group,
72
                'system' => $system,
73
            ],
74
        ];
75
76
        $collection = new Collection;
77
        foreach ($permissions as $permission) {
78
            try {
79
                $collection->push(static::create($permission));
0 ignored issues
show
Bug introduced by
The method create() does not exist on Yajra\Acl\Models\Permission. Did you maybe mean createResource()?

This check marks calls to methods that do not seem to exist on an object.

This is most likely the result of a method being renamed without all references to it being renamed likewise.

Loading history...
80
            } catch (Exception $e) {
81
                // permission already exists.
82
            }
83
        }
84
85
        return $collection;
86
    }
87
88
    /**
89
     * Permission can belong to many users.
90
     *
91
     * @return \Illuminate\Database\Eloquent\Relations\BelongsToMany
92
     */
93
    public function users(): BelongsToMany
94
    {
95
        return $this->belongsToMany(config('acl.user', config('auth.providers.users.model')))
96
            ->withTimestamps();
97
    }
98
}
99