@@ -163,26 +163,56 @@ public function postUserAlias(Request $request, $name, $id) {
163163 return redirect ()->back ();
164164 }
165165
166- public function postUserAccount (Request $ request , $ name ) {
166+ /**
167+ * Updates a user's account information.
168+ *
169+ * @param mixed $name
170+ *
171+ * @return \Illuminate\Http\RedirectResponse
172+ */
173+ public function postUserAccount (Request $ request , UserService $ service , $ name ) {
167174 $ user = User::where ('name ' , $ name )->first ();
168175
169176 if (!$ user ) {
170177 flash ('Invalid user. ' )->error ();
171178 } elseif (!Auth::user ()->canEditRank ($ user ->rank )) {
172179 flash ('You cannot edit the information of a user that has a higher rank than yourself. ' )->error ();
173- } elseif ($ user ->settings ->update (['is_fto ' => $ request ->get ('is_fto ' ) ?: 0 ])) {
174- if (!(new UserService )->logAdminAction (Auth::user (), 'Edited User ' , 'Edited ' .$ user ->displayname )) {
175- flash ('Failed to log admin action. ' )->error ();
180+ } else {
181+ if ($ request ->get ('is_fto ' ) != $ user ->settings ->is_fto ) {
182+ if ($ user ->settings ->update (['is_fto ' => $ request ->get ('is_fto ' ) ?: 0 ])) {
183+ if (!(new UserService )->logAdminAction (Auth::user (), 'Edited User ' , 'Edited ' .$ user ->displayname )) {
184+ flash ('Failed to log admin action. ' )->error ();
176185
177- return redirect ()->back ();
186+ return redirect ()->back ();
187+ }
188+
189+ UserUpdateLog::create (['staff_id ' => Auth::user ()->id , 'user_id ' => $ user ->id , 'data ' => ['is_fto ' => $ request ->get ('is_fto ' ) ? 'Yes ' : 'No ' ], 'type ' => 'FTO Status Change ' ]);
190+ } else {
191+ flash ('Failed to update FTO status. ' )->error ();
192+
193+ return redirect ()->back ();
194+ }
178195 }
179196
180- UserUpdateLog::create (['staff_id ' => Auth::user ()->id , 'user_id ' => $ user ->id , 'data ' => ['is_fto ' => $ request ->get ('is_fto ' ) ? 'Yes ' : 'No ' ], 'type ' => 'FTO Status Change ' ]);
181- flash ('Updated user \'s account information successfully. ' )->success ();
182- } else {
183- flash ('Failed to update user \'s account information. ' )->error ();
197+ if ($ request ->get ('email ' ) != $ user ->email ) {
198+ $ request ->validate ([
199+ 'email ' => 'required|string|email|max:255|unique:users ' ,
200+ ]);
201+
202+ if ($ service ->updateEmail ($ request ->only (['email ' ]), Auth::user ())) {
203+ flash ('Email updated successfully. A verification email has been sent to the user \'s new email address. ' )->success ();
204+ } else {
205+ foreach ($ service ->errors ()->getMessages ()['error ' ] as $ error ) {
206+ flash ($ error )->error ();
207+ }
208+
209+ return redirect ()->back ();
210+ }
211+ }
184212 }
185213
214+ flash ('Updated user \'s account information successfully. ' )->success ();
215+
186216 return redirect ()->back ();
187217 }
188218
0 commit comments