Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
50.00% covered (warning)
50.00%
3 / 6
CRAP
73.81% covered (success)
73.81%
31 / 42
PermissionController
0.00% covered (danger)
0.00%
0 / 1
50.00% covered (warning)
50.00%
3 / 6
23.82
73.81% covered (success)
73.81%
31 / 42
 __construct
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 index
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 store
0.00% covered (danger)
0.00%
0 / 1
6.68
73.33% covered (success)
73.33%
11 / 15
 show
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
1 / 1
 update
0.00% covered (danger)
0.00%
0 / 1
7.93
73.33% covered (success)
73.33%
11 / 15
 destroy
0.00% covered (danger)
0.00%
0 / 1
2.31
57.14% covered (warning)
57.14%
4 / 7
1<?php
2
3namespace Qmp\Laravel\Acls\Controllers;
4
5use Illuminate\Http\Response;
6use Illuminate\Support\Facades\Log;
7use Qmp\Laravel\Acls\Models\Permission;
8use Illuminate\Http\Request;
9use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
10
11class PermissionController extends AbstractMicroServiceController
12{
13    public function __construct(Request $request)
14    {
15        parent::__construct($request);
16    }
17
18    /**
19     * Display a listing of the resource.
20     *
21     * @return \Illuminate\Http\Response
22     */
23    public function index()
24    {
25        $permissions = Permission::select()->with('roles')->simplePaginate(1000);
26        return response()->json($permissions);
27    }
28
29    /**
30     * Store a newly created resource in storage.
31     *
32     * @param  \Illuminate\Http\Request  $request
33     * @return \Illuminate\Http\Response
34     */
35    public function store(Request $request)
36    {
37        $request->validate([
38            'name' => 'required|max:255',
39            'roles' => 'nullable|array',
40            'users' => 'nullable|array'
41        ]);
42
43        try {
44            $permission = new Permission();
45            $permission->name = $request->name;
46            $permission->save();
47
48            $roles = $request->roles;
49            if (!empty($roles) && is_array($roles)) {
50                $permission->roles()->attach($roles);
51            }
52
53            $users = $request->users;
54            if (!empty($users) && is_array($users)) {
55                $permission->users()->attach($users);
56            }
57
58        } catch(\Exception $e) {
59            Log::debug('Unable to store entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
60            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
61        }
62
63        return response(['status' => 'ok', 'permission' => $permission->id], Response::HTTP_CREATED);
64    }
65
66    /**
67     * Display the specified resource.
68     *
69     * @param  \Qmp\Laravel\Acls\Models\Permission  $permission
70     * @return \Illuminate\Http\Response
71     */
72    public function show(Permission $permission)
73    {
74        return response(Permission::where('id', $permission->id)->with('roles', 'users')->first());
75    }
76
77    /**
78     * Update the specified resource in storage.
79     *
80     * @param  \Illuminate\Http\Request  $request
81     * @param  \Qmp\Laravel\Acls\Models\Permission  $permission
82     * @return \Illuminate\Http\Response
83     */
84    public function update(Request $request, Permission $permission)
85    {
86        $request->validate([
87            'name' => 'nullable|max:255',
88            'roles' => 'nullable|array',
89            'users' => 'nullable|array'
90        ]);
91
92        try {
93            if ($request->name) {
94                $permission->name = $request->name;
95            }
96
97            $permission->save();
98
99            $roles = $request->roles;
100            if (!empty($roles) && is_array($roles)) {
101                $permission->roles()->sync($roles);
102            }
103
104            $users = $request->users;
105            if (!empty($users) && is_array($users)) {
106                $permission->users()->sync($users);
107            }
108
109        } catch (\Exception $e) {
110            Log::debug('Unable to update entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
111            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
112        }
113
114        return response(['status' => 'ok'], Response::HTTP_OK);
115    }
116
117    /**
118     * Remove the specified resource from storage.
119     *
120     * @param  \Qmp\Laravel\Acls\Models\Permission  $permission
121     * @return \Illuminate\Http\Response
122     */
123    public function destroy(Permission $permission)
124    {
125        try {
126            $permission->roles()->sync([]);
127            $permission->users()->sync([]);
128
129            Permission::destroy($permission->id);
130        } catch (\Exception $e) {
131            Log::debug('Unable to destroy entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
132            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
133        }
134
135        return response(['status' => 'ok'], Response::HTTP_OK);
136    }
137}