From a8be3d499b2a7d7fdfdd94c34b4dc8a3b40c2588 Mon Sep 17 00:00:00 2001 From: mohammad sedighi Date: Sat, 29 Aug 2026 23:47:58 +0330 Subject: [PATCH] fix superadmin settings cache --- .../Controllers/Admin/SettingsController.php | 11 +++++- .../SuperAdminProgramSettingsClient.php | 37 +++++++++++-------- 2 files changed, 31 insertions(+), 17 deletions(-) diff --git a/app/Http/Controllers/Admin/SettingsController.php b/app/Http/Controllers/Admin/SettingsController.php index 11a6e34..3c4255e 100644 --- a/app/Http/Controllers/Admin/SettingsController.php +++ b/app/Http/Controllers/Admin/SettingsController.php @@ -103,9 +103,18 @@ class SettingsController extends Controller } $count = (int) ($result['count'] ?? 0); + $domain = trim((string) (($result['meta']['domain'] ?? '') ?: '')); + $csp = (string) (($result['items']['customer_special_pricing'] ?? '') ?: ''); + $message = "همگام شد ({$count} کلید دسترسی از سوپرادمین)"; + if ($domain !== '') { + $message .= " — دامنه: {$domain}"; + } + if ($csp !== '') { + $message .= " — قیمت ویژه: {$csp}"; + } return response()->json([ - 'message' => "همگام شد ({$count} کلید دسترسی از سوپرادمین)", + 'message' => $message, 'ok' => true, 'count' => $count, 'items' => $result['items'] ?? [], diff --git a/app/Services/SuperAdminProgramSettingsClient.php b/app/Services/SuperAdminProgramSettingsClient.php index 63ddca1..277e6e9 100644 --- a/app/Services/SuperAdminProgramSettingsClient.php +++ b/app/Services/SuperAdminProgramSettingsClient.php @@ -278,15 +278,28 @@ class SuperAdminProgramSettingsClient /** * دامنه‌های کاندید برای resolve نسخه در سوپرادمین. * + * ترتیب مهم است: اولین پاسخ ۲۰۰ معتبر برنده است. + * Host واقعی درخواست باید قبل از APP_URL و SUPERADMIN_SMS_DOMAIN باشد؛ + * وگرنه دامنهٔ SMS/اشتراکی (با فلگ‌های پیش‌فرض false) به‌اشتباه اعمال می‌شود + * و همگام‌سازی «موفق» دیده می‌شود ولی منو روشن نمی‌شود. + * * @return list */ private function domainCandidates(): array { $candidates = []; - $override = trim((string) config('services.superadmin.sms_domain', '')); - if ($override !== '') { - $candidates[] = $this->normalizeHost($override); + try { + $request = request(); + if ($request) { + $forwarded = (string) $request->headers->get('X-Forwarded-Host', ''); + if ($forwarded !== '') { + $candidates[] = $this->normalizeHost(explode(',', $forwarded)[0] ?? ''); + } + $candidates[] = $this->normalizeHost((string) $request->getHost()); + } + } catch (\Throwable) { + // CLI / بدون request } $fromApp = parse_url((string) config('app.url'), PHP_URL_HOST); @@ -294,17 +307,9 @@ class SuperAdminProgramSettingsClient $candidates[] = $this->normalizeHost($fromApp); } - try { - $request = request(); - if ($request) { - $candidates[] = $this->normalizeHost((string) $request->getHost()); - $forwarded = (string) $request->headers->get('X-Forwarded-Host', ''); - if ($forwarded !== '') { - $candidates[] = $this->normalizeHost(explode(',', $forwarded)[0] ?? ''); - } - } - } catch (\Throwable) { - // CLI / بدون request + $override = trim((string) config('services.superadmin.sms_domain', '')); + if ($override !== '') { + $candidates[] = $this->normalizeHost($override); } $out = []; @@ -324,7 +329,7 @@ class SuperAdminProgramSettingsClient } /** - * admin.example.com / www.example.com → example.com هم امتحان شود. + * admin.example.com / www.example.com / api.example.com → example.com هم امتحان شود. * * @return list */ @@ -336,7 +341,7 @@ class SuperAdminProgramSettingsClient } $aliases = [$host]; - foreach (['www.', 'admin.', 'panel.', 'app.'] as $prefix) { + foreach (['www.', 'admin.', 'panel.', 'app.', 'api.', 'node.', 'backend.', 'server.'] as $prefix) { if (str_starts_with($host, $prefix)) { $bare = substr($host, strlen($prefix)); if ($bare !== '') {