fix: use SSL-tolerant axios instance for server-side API calls

صفحات سرور (doctors, doctor/[slug], appointment/[doctorId]) از axios خام
استفاده می‌کردند که گواهی self-signed ddev محلی را رد می‌کرد
(unable to verify the first certificate). حالا از axiosInstance/fetchReq
در lib/req استفاده می‌کنند که در development آن را می‌پذیرد.
افزودن clinic-pro.ddev.site (http/https) به remotePatterns تصاویر.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
hamed
2026-06-15 00:21:34 +03:30
co-authored by Claude Opus 4.8
parent f3192945c7
commit 1d56972b65
5 changed files with 18 additions and 11 deletions
+3 -3
View File
@@ -1,6 +1,6 @@
import AppointmentPage from "@/components/appointment";
import { getStateInfo } from "@/lib/getStateInfo";
import axios from "axios";
import { axiosInstance } from "@/lib/req";
async function Appointment({ params }) {
const { doctorId } = await params;
@@ -11,11 +11,11 @@ async function Appointment({ params }) {
let disabledDates = [];
try {
const doctorRes = await axios.get(`${API_URL}/api/v1/doctor/${doctorId}`);
const doctorRes = await axiosInstance.get(`${API_URL}/api/v1/doctor/${doctorId}`);
doctor = doctorRes.data;
if (doctor && doctor.id) {
const disabledDatesRes = await axios.get(
const disabledDatesRes = await axiosInstance.get(
`${API_URL}/api/v1/appointment/not-available/${doctor.id}`,
{ headers: { "Content-Type": "application/json" } }
);
+4 -4
View File
@@ -1,7 +1,7 @@
import DoctorPage from "@/components/doctor";
import Layout from "@/components/layout/StLayout";
import { getStateInfo } from "@/lib/getStateInfo";
import axios from "axios";
import { axiosInstance } from "@/lib/req";
export async function generateMetadata({ params }) {
const { slug } = await params;
@@ -10,7 +10,7 @@ export async function generateMetadata({ params }) {
const siteName = matchedCity?.site_name || "نوبت 724";
try {
const res = await axios.get(`${API_URL}/api/v1/doctor/${slug}`);
const res = await axiosInstance.get(`${API_URL}/api/v1/doctor/${slug}`);
const doctor = res.data;
if (!doctor) return {};
@@ -48,10 +48,10 @@ async function Doctor({ params }) {
const API_URL = process.env.NEXT_PUBLIC_API_URL;
try {
const resDoctor = await axios.get(`${API_URL}/api/v1/doctor/${slug}`);
const resDoctor = await axiosInstance.get(`${API_URL}/api/v1/doctor/${slug}`);
doctor = resDoctor.data;
if (doctor) {
const resComments = await axios.get(
const resComments = await axiosInstance.get(
`${API_URL}/api/v1/clinicpro/comments/${doctor.id}`
);
comments = resComments?.data?.data;
+2 -3
View File
@@ -2,7 +2,7 @@ import DoctorsPage from "@/components/doctors";
import Layout from "@/components/layout/StLayout";
import { buildDoctorParams } from "@/helper";
import { getStateInfo } from "@/lib/getStateInfo";
import axios from "axios";
import { fetchReq } from "@/lib/req";
export async function generateMetadata() {
const { matchedCity, matchedState } = await getStateInfo();
@@ -44,10 +44,9 @@ async function Doctors({ searchParams }) {
const params = buildDoctorParams(newSearchParams);
const response = await axios.get(`${API_URL}/api/v1/doctors`, {
doctors = await fetchReq(`${API_URL}/api/v1/doctors`, {
params,
});
doctors = response.data;
} catch (error) {
console.error("Error fetching doctors:", error);
}
+1 -1
View File
@@ -1,7 +1,7 @@
import axios from "axios";
import https from "https";
const axiosInstance = axios.create({
export const axiosInstance = axios.create({
...(process.env.NODE_ENV === "development" && {
httpsAgent: new https.Agent({ rejectUnauthorized: false }),
}),
+8
View File
@@ -20,6 +20,14 @@ const nextConfig = {
protocol: 'https',
hostname: 'clinic-pro-back.ddev.site',
},
{
protocol: 'https',
hostname: 'clinic-pro.ddev.site',
},
{
protocol: 'http',
hostname: 'clinic-pro.ddev.site',
},
],
},
env: {