Completed
Push — master ( 003c09...adf374 )
by Arjay
11:24
created

Permission   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 4

Test Coverage

Coverage 0%

Importance

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

1 Method

Rating   Name   Duplication   Size   Complexity  
A createResource() 0 42 3
1
<?php
2
3
namespace Yajra\Acl\Models;
4
5
use Yajra\Acl\Traits\HasRole;
6
use Yajra\Acl\Traits\RefreshCache;
7
use Illuminate\Database\Eloquent\Model;
8
use Illuminate\Database\Eloquent\Collection;
9
10
/**
11
 * @property string resource
12
 * @property string name
13
 * @property string slug
14
 * @property bool system
15
 */
16
class Permission extends Model
17
{
18
    use HasRole, RefreshCache;
19
20
    /**
21
     * The database table used by the model.
22
     *
23
     * @var string
24
     */
25
    protected $table = 'permissions';
26
27
    /**
28
     * @var array
29
     */
30
    protected $fillable = ['name', 'slug', 'resource', 'system'];
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       = ucfirst($resource);
42
        $slug        = strtolower($group);
43
        $permissions = [
44
            [
45
                'slug'     => $slug . '.view',
46
                'resource' => $group,
47
                'name'     => 'View ' . $group,
48
                'system'   => $system,
49
            ],
50
            [
51
                'slug'     => $slug . '.create',
52
                'resource' => $group,
53
                'name'     => 'Create ' . $group,
54
                'system'   => $system,
55
            ],
56
            [
57
                'slug'     => $slug . '.update',
58
                'resource' => $group,
59
                'name'     => 'Update ' . $group,
60
                'system'   => $system,
61
            ],
62
            [
63
                'slug'     => $slug . '.delete',
64
                'resource' => $group,
65
                'name'     => 'Delete ' . $group,
66
                'system'   => $system,
67
            ],
68
        ];
69
70
        $collection = new Collection;
71
        foreach ($permissions as $permission) {
72
            try {
73
                $collection->push(static::create($permission));
74
            } catch (\Exception $e) {
75
                // permission already exists.
76
            }
77
        }
78
79
        return $collection;
80
    }
81
}
82