fix(uploads): keep absolute nerkh logo URLs intact

Only resolve relative /uploads/ paths; rewriting legacy hosts to SuperAdmin broke logos that still live on nerkh.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-09-07 20:10:07 +03:30
co-authored by Cursor
parent 0c4f88debf
commit a7747366f9
+6 -24
View File
@@ -26,15 +26,10 @@ export function publicApiBaseFromEnv(): string {
return fromEnv || 'https://adm.montzar.ir'; return fromEnv || 'https://adm.montzar.ir';
} }
const LEGACY_UPLOAD_HOSTS = new Set([ /**
'nerkh.gold', * فقط مسیر نسبی /uploads/ را به PUBLIC_API_URL می‌چسباند.
'www.nerkh.gold', * URL مطلق (مثل nerkh.gold) دست نخورده می‌ماند — فایل هنوز همان‌جاست.
'tablo.talasevin.ir', */
'ah.aygingold.ir',
'abshode-service.montgit.ir',
]);
/** nerkh.gold/uploads/... → PUBLIC_API_URL/uploads/... (فایل روی سوپرادمین است) */
export function rewriteLegacyUploadUrl( export function rewriteLegacyUploadUrl(
raw: unknown, raw: unknown,
publicBase = publicApiBaseFromEnv(), publicBase = publicApiBaseFromEnv(),
@@ -42,21 +37,8 @@ export function rewriteLegacyUploadUrl(
const value = String(raw || '').trim(); const value = String(raw || '').trim();
if (!value) return ''; if (!value) return '';
const base = String(publicBase || '').replace(/\/$/, ''); const base = String(publicBase || '').replace(/\/$/, '');
if (!base) return value; if (value.startsWith('/uploads/') && base) {
if (value.startsWith('/uploads/')) {
return `${base}${value}`; return `${base}${value}`;
} }
return value;
if (!/^https?:\/\//i.test(value)) return value;
try {
const parsed = new URL(value);
const host = parsed.hostname.toLowerCase();
if (!LEGACY_UPLOAD_HOSTS.has(host)) return value;
if (!/\/uploads\//i.test(parsed.pathname)) return value;
return `${base}${parsed.pathname}`;
} catch {
return value;
}
} }