Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 6
CRAP
0.00% covered (danger)
0.00%
0 / 52
UserController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 6
420
0.00% covered (danger)
0.00%
0 / 52
 __construct
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 2
 index
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 13
 indexAll
0.00% covered (danger)
0.00%
0 / 1
30
0.00% covered (danger)
0.00%
0 / 13
 update
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 8
 hasPermission
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 8
 hasRole
0.00% covered (danger)
0.00%
0 / 1
12
0.00% covered (danger)
0.00%
0 / 8
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\Exceptions\RolePermissionException;
10use Qmp\Laravel\Acls\Facades\Permission;
11use Qmp\Laravel\Acls\Facades\RoleGroup;
12use Qmp\Laravel\Acls\Facades\Role;
13use Illuminate\Http\Request;
14use Qmp\Laravel\MicroService\Controllers\AbstractMicroServiceController;
15
16class 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}