From 01813c8d47ae1538975836c3f2406d5d6e4dad25 Mon Sep 17 00:00:00 2001 From: Amirmahdi Nourkazemi Date: Mon, 8 Sep 2025 18:15:44 +0330 Subject: [PATCH] feat: add resend email verification --- app/Http/Controllers/UserController.php | 40 +++++++++++++++++++++++++ routes/api.php | 1 + 2 files changed, 41 insertions(+) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 0ea8389..c6fa12c 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -66,6 +66,46 @@ public function login(Request $request) ]); } +public function resendEmailVerification(Request $request) +{ + $request->validate([ + 'email' => 'required|email', + ]); + + $user = User::where('email', $request->email)->first(); + + if (!$user) { + return response()->json(['message' => 'User not found'], 404); + } + + if ($user->email_verified_at) { + return response()->json(['message' => 'Email is already verified'], 400); + } + + // Generate new code + $code = rand(1000, 9999); + + // Delete previous codes + \DB::table('email_verifications')->where('user_id', $user->id)->delete(); + + // Insert new verification code + \DB::table('email_verifications')->insert([ + 'user_id' => $user->id, + 'code' => $code, + 'expires_at' => now()->addMinutes(15), + 'created_at' => now(), + 'updated_at' => now(), + ]); + + // Send email + \Mail::to($user->email)->send(new \App\Mail\VerifyEmailCodeMail($code)); + + return response()->json([ + 'message' => 'Verification email resent successfully' + ]); +} + + public function register(Request $request) { $data = $request->validate([ diff --git a/routes/api.php b/routes/api.php index 00ed769..1f68ad3 100644 --- a/routes/api.php +++ b/routes/api.php @@ -31,6 +31,7 @@ Route::post('verify-email-code','verifyEmailCode'); Route::post('login', 'login'); Route::post('register', 'register'); + Route::post('resend-email-verification', [UserController::class, 'resendEmailVerification']); Route::post('/login-google', 'googleLogin'); Route::get('/oauth/callback', 'oauthCallback');