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

Permission::boot()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 12

Duplication

Lines 12
Ratio 100 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 12
loc 12
ccs 0
cts 5
cp 0
rs 9.8666
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 2
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