Passed
Push — master ( 51edae...d29a9b )
by Curtis
11:52 queued 05:54
created

Update::__invoke()   A

Complexity

Conditions 5
Paths 16

Size

Total Lines 26
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 5
eloc 13
c 1
b 0
f 0
nc 16
nop 2
dl 0
loc 26
rs 9.5222
1
<?php
2
3
namespace App\Http\Controllers\enso\core\Administration\User;
4
5
use Illuminate\Auth\Events\PasswordReset;
6
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
7
use Illuminate\Routing\Controller;
8
use Illuminate\Support\Collection;
9
use Illuminate\Support\Facades\Event;
10
use LaravelEnso\Core\Http\Requests\ValidateUserRequest;
11
use App\Models\User;
12
13
class Update extends Controller
14
{
15
    use AuthorizesRequests;
16
17
    public function __invoke(ValidateUserRequest $request, User $user)
18
    {
19
        $this->authorize('handle', $user);
20
21
        if ($request->filled('password')) {
22
            $this->authorize('change-password', $user);
23
            $user->password = bcrypt($request->get('password'));
24
        }
25
26
        $user->fill($request->validated());
27
28
        if ($user->isDirty('group_id')) {
29
            $this->authorize('change-group', $user);
30
        }
31
32
        if ($user->isDirty('role_id')) {
33
            $this->authorize('change-role', $user);
34
        }
35
36
        $user->save();
37
38
        if ((new Collection($user->getChanges()))->keys()->contains('password')) {
39
            Event::dispatch(new PasswordReset($user));
40
        }
41
42
        return ['message' => __('The user was successfully updated')];
43
    }
44
}
45