File: /var/www/api.vaspayment.com/app/Http/Controllers/Authentication/ResetPassword.php
<?php
namespace App\Http\Controllers\Authentication;
use App\Models\User;
use Illuminate\Http\Request;
use App\Models\OtpVerification;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\ValidationException;
class ResetPassword extends Controller
{
public function resetPassword(Request $request)
{
try {
$validatedData = $request->validate([
"password" => "required|string",
'email' => 'required|email|exists:otp_verifications,email',
'otp' => 'required|digits:6|exists:otp_verifications,otp',
]);
// Verify the OTP
$otpRecord = OtpVerification::where([
['email', '=', $validatedData['email']],
['otp', '=', $validatedData['otp']],
])->latest()->first();
if (!$otpRecord) {
return response()->json(['status' => 'error', 'message' => 'You entered an inccorrect OTP. Please try again'], 401);
}
// Fetch the user and update the password
$user = User::where("email", $validatedData['email'])->first();
if (!$user) {
return response()->json(['status' => 'error', 'message' => 'Your email has not been received. Please try the verification process again'], 404);
}
$user->password = Hash::make($validatedData['password']);
$user->save();
$otpRecord->delete();
return response()->json(['status' => 'success', 'message' => 'Your password was reset successfully'], 200);
} catch (ValidationException $e) {
return response()->json(['status' => 'error', 'message' => 'Your password failed to update', 'data' => $e->getMessage()], 422);
}
}
}