. */ namespace App\Http\Controllers\Account; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Str; use Illuminate\Validation\Rule; use App\Http\Controllers\Controller; use App\Mail\ChangingEmail; use App\Mail\ChangedEmail; use App\EmailChanged; class EmailController extends Controller { public function show(Request $request) { return view('account.email', [ 'account' => $request->user() ]); } public function requestUpdate(Request $request) { $request->validate([ 'email_current' => ['required', Rule::in([$request->user()->email])], 'email' => 'required|different:email_current|confirmed|email', ]); $request->user()->requestEmailUpdate($request->get('email')); $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(); $request->session()->flash('success', 'Email successfully updated'); return redirect()->route('account.panel'); } abort(404); } }