Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
50.00% |
3 / 6 |
CRAP | |
85.71% |
42 / 49 |
RoleController | |
0.00% |
0 / 1 |
|
50.00% |
3 / 6 |
21.17 | |
85.71% |
42 / 49 |
__construct | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
index | |
100.00% |
1 / 1 |
1 | |
100.00% |
3 / 3 |
|||
store | |
0.00% |
0 / 1 |
6.06 | |
88.24% |
15 / 17 |
|||
show | |
100.00% |
1 / 1 |
1 | |
100.00% |
1 / 1 |
|||
update | |
0.00% |
0 / 1 |
9.09 | |
89.47% |
17 / 19 |
|||
destroy | |
0.00% |
0 / 1 |
2.31 | |
57.14% |
4 / 7 |
1 | <?php |
2 | |
3 | namespace Qmp\Laravel\Acls\Controllers; |
4 | |
5 | use App\Http\Controllers\Controller; |
6 | use App\User; |
7 | use Illuminate\Http\Response; |
8 | use Illuminate\Support\Facades\Log; |
9 | use Qmp\Laravel\Acls\Facades\Permission; |
10 | use Qmp\Laravel\Acls\Models\Role; |
11 | use Illuminate\Http\Request; |
12 | use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController; |
13 | |
14 | class 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 | } |