. */ namespace App\Http\Controllers\Account; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Log; use App\Http\Controllers\Controller; use App\Mail\ChangedEmail; class EmailController extends Controller { public function show(Request $request) { return view('account.email', [ 'account' => $request->user() ]); } public function requestUpdate(Request $request) { $request->validate( $request->user()->email ? [ 'email_current' => ['required', Rule::in([$request->user()->email])], 'email' => 'required|different:email_current|confirmed|email', ] : [ 'email' => 'required|confirmed|email', ] ); $request->user()->requestEmailUpdate($request->get('email')); Log::channel('events')->info('Web: Email change requested', ['id' => $request->user()->identifier]); $request->session()->flash('success', 'An email was sent with a confirmation link. Please click it to update your email address.'); return redirect()->route('account.panel'); } public function update(Request $request, string $hash) { $account = $request->user(); if ($account->emailChanged && $account->emailChanged->hash == $hash) { $account->email = $account->emailChanged->new_email; $account->save(); Mail::to($account)->send(new ChangedEmail()); $account->emailChanged->delete(); Log::channel('events')->info('Web: Email change updated', ['id' => $account->identifier]); $request->session()->flash('success', 'Email successfully updated'); return redirect()->route('account.panel'); } abort(404); } }