Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
CRAP | |
0.00% |
0 / 52 |
UserController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 6 |
420 | |
0.00% |
0 / 52 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
index | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 13 |
|||
indexAll | |
0.00% |
0 / 1 |
30 | |
0.00% |
0 / 13 |
|||
update | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 8 |
|||
hasPermission | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 8 |
|||
hasRole | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 8 |
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\Exceptions\RolePermissionException; |
10 | use Qmp\Laravel\Acls\Facades\Permission; |
11 | use Qmp\Laravel\Acls\Facades\RoleGroup; |
12 | use Qmp\Laravel\Acls\Facades\Role; |
13 | use Illuminate\Http\Request; |
14 | use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController; |
15 | |
16 | class UserController extends AbstractMicroServiceController |
17 | { |
18 | public function __construct(Request $request) |
19 | { |
20 | parent::__construct($request); |
21 | } |
22 | |
23 | /** |
24 | * Display a listing of the resource. |
25 | * |
26 | * @return \Illuminate\Http\Response |
27 | */ |
28 | public function index($userId, $type = 'all') |
29 | { |
30 | switch ($type) { |
31 | case 'permission': |
32 | $user = User::with('permissions'); |
33 | break; |
34 | case 'role': |
35 | $user = User::with('roles'); |
36 | break; |
37 | case 'all': |
38 | $user = User::with('permissions', 'roles'); |
39 | break; |
40 | default: |
41 | return response()->json(['error' => 'type not found'], 404); |
42 | } |
43 | |
44 | $user = $user->where('id', $userId)->firstOrFail(); |
45 | return response()->json($user); |
46 | } |
47 | |
48 | /** |
49 | * Display a listing of the resource. |
50 | * |
51 | * @return \Illuminate\Http\Response |
52 | */ |
53 | public function indexAll($type = 'all') |
54 | { |
55 | switch ($type) { |
56 | case 'permission': |
57 | $user = User::with('permissions'); |
58 | break; |
59 | case 'role': |
60 | $user = User::with('roles'); |
61 | break; |
62 | case 'all': |
63 | $user = User::with('permissions', 'roles'); |
64 | break; |
65 | default: |
66 | return response()->json(['error' => 'type not found'], 404); |
67 | } |
68 | |
69 | $user = $user->paginate(); |
70 | return response()->json($user); |
71 | } |
72 | |
73 | /** |
74 | * @param Request $request |
75 | * @param $userId |
76 | * @return \Illuminate\Http\JsonResponse |
77 | */ |
78 | public function update(Request $request, $userId) |
79 | { |
80 | $user = User::find($userId); |
81 | $permissions = $request->permissions; |
82 | $roles = $request->roles; |
83 | if (is_array($permissions)) { |
84 | $user->permissions()->sync($permissions); |
85 | } |
86 | |
87 | if (is_array($roles)) { |
88 | $user->roles()->sync($roles); |
89 | } |
90 | |
91 | return response()->json(['status' => 'ok']); |
92 | } |
93 | |
94 | /** |
95 | * @param Request $request |
96 | * @return bool|\Illuminate\Http\JsonResponse |
97 | */ |
98 | public function hasPermission(Request $request, $userId) |
99 | { |
100 | try { |
101 | $permissionListToCheck = $request->permissions; |
102 | $allNeeded = $request->all_needed; |
103 | if (is_array($permissionListToCheck)) { |
104 | Permission::needed($userId, $permissionListToCheck, $allNeeded); |
105 | } |
106 | } catch (RolePermissionException $e) { |
107 | Log::debug('No permission for ' . $userId . ':' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true)); |
108 | return response()->json(['error' => $e->getMessage()], Response::HTTP_UNAUTHORIZED); |
109 | } |
110 | |
111 | return response()->json(['status' => 'ok'], Response::HTTP_OK); |
112 | } |
113 | |
114 | /** |
115 | * @param Request $request |
116 | * @return bool|\Illuminate\Http\JsonResponse |
117 | */ |
118 | public function hasRole(Request $request, $userId) |
119 | { |
120 | try { |
121 | $roleListToCheck = $request->roles; |
122 | $allNeeded = $request->all_needed; |
123 | if (is_array($roleListToCheck)) { |
124 | Role::needed($userId, $roleListToCheck, $allNeeded); |
125 | } |
126 | } catch (RolePermissionException $e) { |
127 | Log::debug('No role for ' . $userId . ':' . var_export(['message' => $e->getMessage(), 'line' => $e->getLine(), 'file' => $e->getFile()], true)); |
128 | return response()->json(['error' => $e->getMessage()], Response::HTTP_UNAUTHORIZED); |
129 | } |
130 | |
131 | return response()->json(['status' => 'ok'], Response::HTTP_OK); |
132 | } |
133 | } |