Completed
Push — master ( 023448...f16a65 )
by wen
04:07
created

UserController::save()   A

Complexity

Conditions 3
Paths 4

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 18
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 11
nc 4
nop 1
1
<?php
2
3
4
namespace Sco\Admin\Http\Controllers\Users;
5
6
use Illuminate\Http\Request;
7
use Illuminate\Routing\Controller;
8
use Sco\Admin\Exceptions\AdminHttpException;
9
use Sco\Admin\Http\Requests\ManagerRequest;
10
use Sco\Admin\Models\Role;
11
12
class UserController extends Controller
13
{
14
15
    public function getList()
16
    {
17
        $userModelName = config('admin.user');
18
        $userModel = new $userModelName();
19
        $users = $userModel->with('roles')->paginate();
20
        return response()->json($users);
21
    }
22
23
    public function save(ManagerRequest $request)
24
    {
25
        $userModelName = config('admin.user');
26
        $model = new $userModelName();
27
28
        if (!empty($request->input('id'))) {
29
            $model = $model->findOrFail($request->input('id'));
30
        }
31
        $model->name = $request->input('name');
32
        $model->email = $request->input('email');
33
        if (!empty($request->input('password'))) {
34
            $model->password = $request->input('password');
35
        }
36
37
        $model->save();
38
39
        return response()->json(['message' => 'ok']);
40
    }
41
42
    public function delete($id)
43
    {
44
        if ($id == 1) {
45
            throw new AdminHttpException('超级管理员不能删除');
46
        }
47
48
        $userModelName = config('admin.user');
49
        $model = (new $userModelName())->findOrFail($id);
50
        $model->delete();
51
        return response()->json(['message' => 'ok']);
52
    }
53
54
    public function saveRole(Request $request)
55
    {
56
        $userModelName = config('admin.user');
57
        $user = (new $userModelName())->findOrFail($request->input('id'));
58
        $user->roles()->sync($request->input('roles'));
59
60
        return response()->json(['message' => 'ok']);
61
    }
62
63
    public function getAllRole()
64
    {
65
        $roles = Role::all();
66
        return response()->json($roles);
0 ignored issues
show
Bug introduced by
It seems like $roles defined by \Sco\Admin\Models\Role::all() on line 65 can also be of type object<Illuminate\Database\Eloquent\Collection>; however, Illuminate\Contracts\Rou...ResponseFactory::json() does only seem to accept string|array, maybe add an additional type check?

If a method or function can return multiple different values and unless you are sure that you only can receive a single value in this context, we recommend to add an additional type check:

/**
 * @return array|string
 */
function returnsDifferentValues($x) {
    if ($x) {
        return 'foo';
    }

    return array();
}

$x = returnsDifferentValues($y);
if (is_array($x)) {
    // $x is an array.
}

If this a common case that PHP Analyzer should handle natively, please let us know by opening an issue.

Loading history...
67
    }
68
}
69