Passed
Push — dev6 ( 77ef26...6e2ff7 )
by Ron
16:42
created

FinishSetupController::__invoke()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 22
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 11
c 1
b 0
f 0
dl 0
loc 22
rs 9.9
cc 2
nc 2
nop 1
1
<?php
2
3
namespace App\Http\Controllers\User;
4
5
use App\Events\UserInitializedEvent;
6
use Carbon\Carbon;
7
8
use Illuminate\Support\Facades\Auth;
9
use Illuminate\Support\Facades\Hash;
10
11
use App\Models\User;
12
use App\Http\Controllers\Controller;
13
use App\Http\Requests\User\FinishSetupRequest;
14
use App\Models\UserInitialize;
15
16
class FinishSetupController extends Controller
17
{
18
    /**
19
     * Finish setting up a user account
20
     */
21
    public function __invoke(FinishSetupRequest $request)
22
    {
23
        $link = UserInitialize::where('username', $request->username)->firstOrFail();
24
25
        //  Determine the new expiration date
26
        $expires = config('auth.passwords.settings.expire') ? Carbon::now()->addDays(config('auth.passwords.settings.expire')) : null;
27
28
        //  Set the users new password
29
        $user = User::where('username', $request->username)->firstOrFail();
30
        $user->update(['password' => Hash::make($request->password), 'password_expires' => $expires]);
31
        $user->save();
32
33
        //  Delete the Initialization Link
34
        $link->delete();
35
36
        //  Log the user in and send to the Dashboard
37
        Auth::login($user);
38
39
        event(new UserInitializedEvent($user));
40
        return redirect(route('dashboard'))->with([
41
            'message' => 'Your Account is setup',
42
            'type'    => 'success',
43
        ]);
44
    }
45
}
46