1 | <?php |
||
2 | |||
3 | namespace App\Http\Controllers; |
||
4 | |||
5 | use Exception; |
||
6 | use Illuminate\Http\Request; |
||
7 | use Illuminate\Support\Facades\Auth; |
||
8 | use Illuminate\Validation\Rule; |
||
9 | use Illuminate\Support\Facades\Log; |
||
10 | use Illuminate\Support\Facades\Mail; |
||
11 | use DB; |
||
12 | use App\Role; |
||
13 | use App\User; |
||
14 | use App\UserLogins; |
||
15 | use App\UserInitialize; |
||
16 | use App\Mail\InitializeUser; |
||
17 | |||
18 | class UserController extends Controller |
||
19 | { |
||
20 | public function __construct() |
||
21 | { |
||
22 | $this->middleware('auth')->except('initializeUser', 'submitInitializeUser'); |
||
23 | } |
||
24 | |||
25 | // Show the list of current users |
||
26 | public function index() |
||
27 | { |
||
28 | $users = User::where('active', 1)->with('UserLogins')->get(); |
||
29 | |||
30 | return view('admin.userList', [ |
||
31 | 'users' => $users |
||
32 | ]); |
||
33 | } |
||
34 | |||
35 | // New user form |
||
36 | public function create() |
||
37 | { |
||
38 | $roles = Role::all(); |
||
39 | |||
40 | $roleArr = []; |
||
41 | foreach($roles as $role) |
||
42 | { |
||
43 | if($role->role_id == 1 && Auth::user()->role_id != 1) |
||
44 | { |
||
45 | continue; |
||
46 | } |
||
47 | else |
||
48 | { |
||
49 | $roleArr[$role->role_id] = $role->name; |
||
50 | } |
||
51 | } |
||
52 | |||
53 | return view('admin.form.newUser', [ |
||
54 | 'roles' => $roleArr |
||
55 | ]); |
||
56 | } |
||
57 | |||
58 | // Create the new user |
||
59 | public function store(Request $request) |
||
60 | { |
||
61 | // Validate the new user form |
||
62 | $request->validate([ |
||
63 | 'username' => 'required|unique:users|regex:/^[a-zA-Z0-9_]*$/', |
||
64 | 'first_name' => 'required', |
||
65 | 'last_name' => 'required', |
||
66 | 'email' => 'required|unique:users', |
||
67 | // 'password' => 'required|string|min:6|confirmed' |
||
68 | ]); |
||
69 | |||
70 | // Create the user |
||
71 | $newUser = User::create([ |
||
72 | 'username' => $request->username, |
||
73 | 'first_name' => $request->first_name, |
||
74 | 'last_name' => $request->last_name, |
||
75 | 'email' => $request->email, |
||
76 | 'password' => bcrypt(strtolower(str_random(15))), |
||
77 | 'active' => 1 |
||
78 | ]); |
||
79 | |||
80 | $userID = $newUser->user_id; |
||
81 | |||
82 | // Assign the users role |
||
83 | DB::insert('INSERT INTO `user_role` (`user_id`, `role_id`) VALUES (?, ?)', [$userID, $request->role]); |
||
84 | |||
85 | // Create the setup user link |
||
86 | $hash = strtolower(str_random(30)); |
||
87 | UserInitialize::create([ |
||
88 | 'username' => $request->username, |
||
89 | 'token' => $hash |
||
90 | ]); |
||
91 | |||
92 | // Email the new user |
||
93 | |||
94 | try |
||
95 | { |
||
96 | Mail::to($request->email)->send(new InitializeUser($hash, $request->username, $request->first_name.' '.$request->last_name)); |
||
97 | } |
||
98 | catch(Exception $e) |
||
99 | { |
||
100 | report($e); |
||
101 | } |
||
102 | |||
103 | Log::info('New User Created', ['created_by' => Auth::user()->user_id, 'new_id' => $userID]); |
||
104 | |||
105 | return redirect(route('admin.users.index'))->with('success', 'User Created Successfully'); |
||
106 | } |
||
107 | |||
108 | // Finish setting up the user account by making them assign their password |
||
109 | public function initializeUser($hash) |
||
110 | { |
||
111 | $this->middleware('guest'); |
||
112 | |||
113 | // Validate the hash token |
||
114 | $user = UserInitialize::where('token', $hash)->get(); |
||
115 | |||
116 | if($user->isEmpty()) |
||
117 | { |
||
118 | return abort(404); |
||
119 | } |
||
120 | |||
121 | return view('account.form.initializePassword', ['hash' => $hash]); |
||
122 | } |
||
123 | |||
124 | // Submit the password change and log in the user |
||
125 | public function submitInitializeUser($hash, Request $request) |
||
126 | { |
||
127 | // Verify that the link matches the assigned email address |
||
128 | $valid = UserInitialize::where('token', $hash)->first(); |
||
129 | if(empty($valid)) |
||
130 | { |
||
131 | return abort(404); |
||
0 ignored issues
–
show
|
|||
132 | } |
||
133 | |||
134 | // Validate the form |
||
135 | $request->validate([ |
||
136 | 'username' => [ |
||
137 | 'required', |
||
138 | Rule::in([$valid->username]), |
||
139 | ], |
||
140 | 'newPass' => 'required|string|min:6|confirmed' |
||
141 | ]); |
||
142 | |||
143 | // Get the users information |
||
144 | $userData = User::where('username', $valid->username)->first(); |
||
145 | |||
146 | // Update the password |
||
147 | User::find($userData->user_id)->update( |
||
148 | [ |
||
149 | 'password' => bcrypt($request->newPass) |
||
150 | ]); |
||
151 | |||
152 | // Remove the initialize instance |
||
153 | UserInitialize::find($valid->id)->delete(); |
||
154 | |||
155 | // Log the change |
||
156 | Log::info('User has setup account', ['user_id' => $userData->user_id]); |
||
157 | |||
158 | // Log in the user |
||
159 | Auth::loginUsingID($userData->user_id); |
||
160 | |||
161 | // Redirect the user to the dashboard |
||
162 | return redirect(route('dashboard')); |
||
163 | } |
||
164 | |||
165 | // Show the for to edit a users password |
||
166 | public function show($id) |
||
167 | { |
||
168 | $name = User::find($id); |
||
169 | $name = $name->first_name.' '.$name->last_name; |
||
170 | return view('admin.form.resetPassword', [ |
||
171 | 'id' => $id, |
||
172 | 'user' => $name |
||
173 | ]); |
||
174 | } |
||
175 | |||
176 | // Submit the reset password form |
||
177 | public function resetPassword(Request $request, $id) |
||
178 | { |
||
179 | $request->validate([ |
||
180 | 'password' => 'required|string|min:6|confirmed' |
||
181 | ]); |
||
182 | |||
183 | // Update the user data |
||
184 | User::find($id)->update( |
||
185 | [ |
||
186 | 'password' => bcrypt($request->password) |
||
187 | ]); |
||
188 | |||
189 | |||
190 | return redirect(route('admin.users.index'))->with('success', 'User Password Updated Successfully'); |
||
191 | } |
||
192 | |||
193 | // Edit an existing user |
||
194 | public function edit($id) |
||
195 | { |
||
196 | $roles = Role::all(); |
||
197 | $userData = User::find($id); |
||
198 | $userRole = DB::select('SELECT `role_id` FROM `user_role` WHERE `user_id` = ?', [$id])[0]->role_id; |
||
199 | |||
200 | $roleArr = []; |
||
201 | foreach($roles as $role) |
||
202 | { |
||
203 | if($role->role_id == 1 && Auth::user()->role_id != 1) |
||
204 | { |
||
205 | continue; |
||
206 | } |
||
207 | else |
||
208 | { |
||
209 | $roleArr[$role->role_id] = $role->name; |
||
210 | } |
||
211 | } |
||
212 | |||
213 | return view('admin.form.editUser', [ |
||
214 | 'userID' => $id, |
||
215 | 'roles' => $roleArr, |
||
216 | 'role' => $userRole, |
||
217 | 'user' => $userData |
||
218 | ]); |
||
219 | } |
||
220 | |||
221 | // Submit the updated user |
||
222 | public function update(Request $request, $id) |
||
223 | { |
||
224 | $request->validate([ |
||
225 | 'username' => [ |
||
226 | 'required', |
||
227 | Rule::unique('users')->ignore($id, 'user_id') |
||
228 | ], |
||
229 | 'first_name' => 'required', |
||
230 | 'last_name' => 'required', |
||
231 | 'email' => [ |
||
232 | 'required', |
||
233 | Rule::unique('users')->ignore($id, 'user_id') |
||
234 | ], |
||
235 | ]); |
||
236 | |||
237 | // Update the user data |
||
238 | User::find($id)->update( |
||
239 | [ |
||
240 | 'username' => $request->username, |
||
241 | 'first_name' => $request->first_name, |
||
242 | 'last_name' => $request->last_name, |
||
243 | 'email' => $request->email |
||
244 | ]); |
||
245 | |||
246 | // Update the user's role |
||
247 | DB::update('UPDATE `user_role` SET `role_id` = ? WHERE `user_id` = ?', [$request->role, $id]); |
||
248 | |||
249 | return redirect(route('admin.users.index'))->with('success', 'User Updated Successfully'); |
||
250 | } |
||
251 | |||
252 | // Deactivae an active user |
||
253 | public function destroy($id) |
||
254 | { |
||
255 | // Update the user data |
||
256 | User::find($id)->update( |
||
257 | [ |
||
258 | 'active' => 0 |
||
259 | ]); |
||
260 | } |
||
261 | } |
||
262 |
This check looks for function or method calls that always return null and whose return value is used.
The method
getObject()
can return nothing but null, so it makes no sense to use the return value.The reason is most likely that a function or method is imcomplete or has been reduced for debug purposes.