Test Setup Failed
Push — dev5 ( f50ac4...861c43 )
by Ron
07:36
created

AccountController::submitInitializeUser()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 43
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 0
Metric Value
cc 3
eloc 21
nc 3
nop 2
dl 0
loc 43
ccs 0
cts 21
cp 0
crap 12
rs 9.584
c 0
b 0
f 0
1
<?php
2
3
namespace App\Http\Controllers;
4
5
use App\User;
6
use Carbon\Carbon;
7
use App\UserSettings;
8
use Illuminate\Http\Request;
9
use Illuminate\Validation\Rule;
10
use App\Rules\ValidatePassword;
11
use Illuminate\Support\Facades\Log;
12
use Illuminate\Support\Facades\Auth;
13
use Illuminate\Support\Facades\Hash;
14
use Illuminate\Support\Facades\Route;
15
16
class AccountController extends Controller
17
{
18 26
    public function __construct()
19
    {
20 26
        $this->middleware('auth');
21 26
    }
22
23
    //  Index page is the change user settings form
24 2
    public function index()
25
    {
26 2
        $userData = User::find(Auth::user()->user_id);
27 2
        $userSett = UserSettings::where('user_id', Auth::user()->user_id)->first();
28
29 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
30 2
        return view('account.index', [
31 2
            'userData'     => $userData,
32 2
            'userSettings' => $userSett,
33 2
            'userID'       => Auth::user()->user_id
34
        ]);
35
    }
36
37
    //  Submit the new user settings
38 2
    public function submit(Request $request)
39
    {
40 2
        $request->validate([
41 2
            'username'   => 'required',
42 2
            'first_name' => 'required',
43 2
            'last_name'  => 'required',
44
            'email'      => [
45 2
                'required',
46 2
                Rule::unique('users')->ignore(Auth::user())
47
            ],
48
        ]);
49
50 2
        $userID = Auth::user()->user_id;
51 2
        User::find($userID)->update(
52
        [
53 2
            'first_name' => $request->first_name,
54 2
            'last_name'  => $request->last_name,
55 2
            'email'      => $request->email
56
        ]);
57
58 2
        session()->flash('success', 'User Settings Updated');
59
60 2
        Log::notice('User Settings Updated', ['user_id' => Auth::user()->user_id]);
61 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
62 2
        Log::debug('Submitted Data - ', $request->toArray());
63 2
        return redirect(route('account'));
64
    }
65
66
    //  Submit the user notification settings
67 2
    public function notifications(Request $request)
68
    {
69 2
        UserSettings::where('user_id', Auth::user()->user_id)->update(
70
        [
71 2
            'em_tech_tip'     => $request->em_tech_tip === 'on' ? true : false,
72 2
            'em_file_link'    => $request->em_file_link === 'on' ? true : false,
73 2
            'em_notification' => $request->em_notification === 'on' ? true : false,
74 2
            'auto_del_link'   => $request->auto_del_link === 'on' ? true : false,
75
        ]);
76
77 2
        session()->flash('success', 'User Notifications Updated');
78
79 2
        Log::notice('User Notifications Updated', ['user_id' => Auth::user()->user_id]);
80 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
81 2
        Log::debug('Submitted Data - ', $request->toArray());
82 2
        return redirect(route('account'));
83
    }
84
85
    //  Bring up the change password form
86 2
    public function changePassword()
87
    {
88 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
89 2
        return view('account.changePassword');
90
    }
91
92
    //  Submit the change password form
93 8
    public function submitPassword(Request $request)
94
    {
95
        //  Validate form data
96 8
        $request->validate([
97 8
            'oldPass' => ['required', new ValidatePassword],
98 8
            'newPass' => 'required|string|min:6|confirmed|different:oldPass'
99
        ]);
100
101
        //  Determine if there is a new password expire's date
102 2
        $newExpire = config('auth.passwords.settings.expire') != null ? Carbon::now()->addDays(config('auth.passwords.settings.expire')) : null;
103
104
        //  Change the password
105 2
        $user = Auth::user();
106 2
        $user->password = bcrypt($request->newPass);
107 2
        $user->password_expires = $newExpire;
108 2
        $user->save();
109
110 2
        Log::debug('Route '.Route::currentRouteName().' visited by User ID-'.Auth::user()->user_id);
111 2
        Log::info('User Changed Password', ['user_id' => Auth::user()->user_id]);
112
113 2
        return redirect(route('account'))->with('success', 'Password Changed Successfully');
114
    }
115
}
116