Passed
Push — dependabot/npm_and_yarn/string... ( b56eb5...bc569b )
by
unknown
45:46 queued 33s
created

PermissionController   A

Complexity

Total Complexity 10

Size/Duplication

Total Lines 112
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 40
dl 0
loc 112
ccs 0
cts 46
cp 0
rs 10
c 0
b 0
f 0
wmc 10
1
<?php
2
3
namespace Thinktomorrow\Chief\App\Http\Controllers\Back\Authorization;
4
5
use Thinktomorrow\Chief\App\Http\Controllers\Controller;
6
use Thinktomorrow\Chief\Authorization\Permission;
7
use Thinktomorrow\Chief\Authorization\Role;
8
use Illuminate\Http\Request;
9
10
class PermissionController extends Controller
11
{
12
    /**
13
     * Display a listing of the resource.
14
     *
15
     * @return \Illuminate\Http\Response
16
     */
17
    public function index()
18
    {
19
        $permissions = Permission::all();
20
        return view('chief::back.permissions.index')->with('permissions', $permissions);
21
    }
22
    /**
23
     * Show the form for creating a new resource.
24
     *
25
     * @return \Illuminate\Http\Response
26
     */
27
    public function create()
28
    {
29
        $roles = Role::get();
30
        return view('chief::back.permissions.create')->with('roles', $roles);
31
    }
32
    /**
33
     * Store a newly created resource in storage.
34
     *
35
     * @param  \Illuminate\Http\Request  $request
36
     * @return \Illuminate\Http\Response
37
     */
38
    public function store(Request $request)
39
    {
40
        $this->validate($request, [
41
            'name'=>'required|max:40',
42
        ]);
43
        $name = $request['name'];
44
        $permission = new Permission();
45
        $permission->name = $name;
46
        $roles = $request['roles'];
47
48
        $permission->save();
49
        if (!empty($request['roles'])) {
50
            foreach ($roles as $role) {
51
                $r = Role::where('id', '=', $role)->firstOrFail(); //Match input role to db record
52
                $permission = Permission::where('name', '=', $name)->first();
53
                $r->givePermissionTo($permission);
54
            }
55
        }
56
        return redirect()->route('chief.back.permissions.index')
57
            ->with('flash_message',
58
                'Permission'. $permission->name.' added!');
59
    }
60
    /**
61
     * Display the specified resource.
62
     *
63
     * @param  int  $id
64
     * @return \Illuminate\Http\Response
65
     */
66
    public function show($id)
67
    {
68
        return redirect('permissions');
69
    }
70
    /**
71
     * Show the form for editing the specified resource.
72
     *
73
     * @param  int  $id
74
     * @return \Illuminate\Http\Response
75
     */
76
    public function edit($id)
77
    {
78
        $permission = Permission::find($id);
79
80
        return view('chief::back.permissions.edit', compact('permission'));
81
    }
82
    /**
83
     * Update the specified resource in storage.
84
     *
85
     * @param  \Illuminate\Http\Request  $request
86
     * @param  int  $id
87
     * @return \Illuminate\Http\Response
88
     */
89
    public function update(Request $request, $id)
90
    {
91
        $permission = Permission::findOrFail($id);
92
        $this->validate($request, [
93
            'name'=>'required|max:40',
94
        ]);
95
96
        $input = $request->all();
97
        $permission->fill($input)->save();
98
        return redirect()->route('chief.back.permissions.index')
99
            ->with('flash_message',
100
                'Permission'. $permission->name.' updated!');
101
    }
102
    /**
103
     * Remove the specified resource from storage.
104
     *
105
     * @param  int  $id
106
     * @return \Illuminate\Http\Response
107
     */
108
    public function destroy($id)
109
    {
110
        $permission = Permission::findOrFail($id);
111
112
        if ($permission->name == "Administer roles & permissions") {
113
            return redirect()->route('chief.back.permissions.index')
114
                ->with('flash_message',
115
                    'Cannot delete this Permission!');
116
        }
117
118
        $permission->delete();
119
        return redirect()->route('chief.back.permissions.index')
120
            ->with('flash_message',
121
                'Permission deleted!');
122
    }
123
}
124