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
85.71% covered (success)
85.71%
42 / 49
RoleController
0.00% covered (danger)
0.00%
0 / 1
50.00% covered (warning)
50.00%
3 / 6
21.17
85.71% covered (success)
85.71%
42 / 49
 __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%
3 / 3
 store
0.00% covered (danger)
0.00%
0 / 1
6.06
88.24% covered (success)
88.24%
15 / 17
 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
9.09
89.47% covered (success)
89.47%
17 / 19
 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 App\Http\Controllers\Controller;
6use App\User;
7use Illuminate\Http\Response;
8use Illuminate\Support\Facades\Log;
9use Qmp\Laravel\Acls\Facades\Permission;
10use Qmp\Laravel\Acls\Models\Role;
11use Illuminate\Http\Request;
12use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
13
14class RoleController extends AbstractMicroServiceController
15{
16    public function __construct(Request $request)
17    {
18        parent::__construct($request);
19    }
20
21    /**
22     * Display a listing of the resource.
23     *
24     * @return \Illuminate\Http\Response
25     */
26    public function index()
27    {
28        Log::info('user id:' . $this->userId);
29        $roles = Role::select()->with('users', 'permissions')->paginate();
30        return response()->json($roles);
31    }
32
33    /**
34     * Store a newly created resource in storage.
35     *
36     * @param  \Illuminate\Http\Request  $request
37     * @return \Illuminate\Http\Response
38     */
39    public function store(Request $request)
40    {
41        $request->validate([
42            'name' => 'required|max:255',
43            'description' => 'required|max:255',
44            'group_id' => 'required|integer',
45            'users' => 'nullable|array',
46            'permissions' => 'nullable|array'
47        ]);
48
49        try {
50            $role = new Role();
51            $role->name = $request->name;
52            $role->description = $request->description;
53            $role->group_id = $request->group_id;
54            $role->save();
55
56            $permissions = $request->permissions;
57            if (!empty($permissions) && is_array($permissions)) {
58                $role->permissions()->attach($permissions);
59            }
60
61            $users = $request->users;
62            if (!empty($users) && is_array($users)) {
63                $role->users()->attach($users);
64            }
65
66        } catch(\Exception $e) {
67            Log::debug('Unable to store entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
68            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
69        }
70
71        return response(['status' => 'ok', 'role' => $role->id], Response::HTTP_CREATED);
72    }
73
74    /**
75     * Display the specified resource.
76     *
77     * @param  \Qmp\Laravel\Acls\Models\Role  $role
78     * @return \Illuminate\Http\Response
79     */
80    public function show(Role $role)
81    {
82        return response(Role::where('id', $role->id)->with('users', 'permissions', 'group')->first());
83    }
84
85    /**
86     * Update the specified resource in storage.
87     *
88     * @param  \Illuminate\Http\Request  $request
89     * @param  \Qmp\Laravel\Acls\Models\Role  $role
90     * @return \Illuminate\Http\Response
91     */
92    public function update(Request $request, Role $role)
93    {
94        $request->validate([
95            'name' => 'nullable|max:255',
96            'description' => 'nullable|max:255',
97            'group_id' => 'nullable|integer',
98            'permissions' => 'nullable|array',
99            'users' => 'nullable|array'
100        ]);
101
102        try {
103            if ($request->name) {
104                $role->name = $request->name;
105            }
106
107            if ($request->description) {
108                $role->description = $request->description;
109            }
110
111            if ($request->group_id) {
112                $role->group_id = $request->group_id;
113            }
114
115            $role->save();
116
117            $permissions = $request->permissions;
118            if (!empty($permissions) && is_array($permissions)) {
119                $role->permissions()->sync($permissions);
120            }
121
122            $users = $request->users;
123            if (!empty($users) && is_array($users)) {
124                $role->users()->sync($users);
125            }
126        } catch (\Exception $e) {
127            Log::debug('Unable to update entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
128            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
129        }
130
131        return response(['status' => 'ok'], Response::HTTP_OK);
132    }
133
134    /**
135     * Remove the specified resource from storage.
136     *
137     * @param  \Qmp\Laravel\Acls\Models\Role  $role
138     * @return \Illuminate\Http\Response
139     */
140    public function destroy(Role $role)
141    {
142        try {
143            $role->permissions()->sync([]);
144            $role->users()->sync([]);
145
146            Role::destroy($role->id);
147        } catch (\Exception $e) {
148            Log::debug('Unable to destroy entity:' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true));
149            return response()->json(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
150        }
151
152        return response(['status' => 'ok'], Response::HTTP_OK);
153    }
154}