email)->first(); if (!$patient) { return response()->json(['message' => 'The specified email cannot be located.'], 404); } $token = base64_encode(Str::random(60)); $tokenData = PasswordResetTokens::where('email', $request->email)->first(); if ($tokenData) { PasswordResetTokens::where('email', $request->email)->delete(); } PasswordResetTokens::create([ 'email' => $request->email, 'token' => $token, 'created_at' => now() ]); // Send reset link email Mail::send('emails.password_reset', ['token' => $token], function ($message) use ($request) { $message->to($request->email); $message->subject('Password Reset Request'); }); return response()->json(['message' => 'Password reset link sent']); } public function resetPassword(Request $request) { $tokenData = PasswordResetTokens::where('token', $request->token)->first(); if (!$tokenData || !$request->token == $tokenData->token) { return response()->json([ 'msg' => "Link Expired", 'status' => 'error' ]); } $password = $request->get('password'); $confPassword = $request->get('confirm'); if ($confPassword != $password) { return response()->json([ 'msg' => "Password don no match", 'status' => 'error' ]); } $user = Patient::where('email', $tokenData->email)->first(); $user->password = bcrypt($password); $user->save(); PasswordResetTokens::where('token', $request->token)->delete(); return response()->json([ 'msg' => "Password updated" ]); } }