diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 65b7062..79bc1d6 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -2,7 +2,10 @@ namespace App\Http\Controllers; +use App\Mail\EmailChangeConfirmedMail; +use App\Mail\NotifyEmailChangeMail; use App\Mail\RegisterMail; +use App\Mail\RequestEmailChangeMail; use App\Mail\UpdatePasswordMail; use App\Mail\UpdateRoleMail; use App\Notifications\VolunteerRoleUpdated; @@ -383,4 +386,37 @@ class UserController extends Controller return response()->json(['message' => 'Server error'], 500); } } + + public function requestEmailChange(Request $request): JsonResponse + { + try { + $request->validate([ + 'email' => ['required', 'email:strict,rfc', 'unique:users,email'], + ]); + + $user = $request->user(); + + $token = \Str::random(64); + + $user->pending_email = $request['email']; + $user->email_change_token = hash('sha256', $token); + $user->email_change_token_expires_at = now()->addHour(); + $user->save(); + + $data = [ + 'name' => $user->name, + 'lastname' => $user->lastname, + 'token' => $token + ]; + Mail::to($user->email)->send(new NotifyEmailChangeMail($data)); + Mail::to($request['email'])->send(new RequestEmailChangeMail($data)); + + return response()->json(['message' => 'Un email de confirmation a été envoyé à votre nouvelle adresse.']); + } catch (\Exception $e) { + Log::error($e->getMessage()); + return response()->json(['message' => 'Server error'], 500); + } + } + + }