// lib/config/auth_config.dart // // مقادیر مربوط به سرور Keycloak و API گیت‌وی جدید (didvan-iac/envs). // // مقادیر این فایل از فایل‌های env سرور production استخراج شده‌اند: // - apiBaseUrl <- envs/.frontend.env (NEXT_PUBLIC_API_BASE_URL) // - keycloakBaseUrl, keycloakRealm <- envs/.api.env // - keycloakClientId <- envs/.frontend.env (NEXT_PUBLIC_KEYCLOAK_CLIENT_ID) // // نکته‌ی امنیتی: client `didvan-app` به صورت public استفاده می‌شود // (Next.js هم بدون secret از همین client استفاده می‌کند) و این رویکرد // برای اپلیکیشن‌های موبایل/SPA توصیه‌شده است. class AuthConfig { // ------------------------------------------------------------- // API Gateway (NestJS) - بک‌اند جدید // ------------------------------------------------------------- /// آدرس پایه API gateway جدید (Nest microservices). /// مسیرها زیر این آدرس قرار می‌گیرند (مثل `/auth/users/...`). /// /// مشتق‌شده از `nginx-data/config/nginx.conf` در پروژه‌ی iac: /// `server_name api2.didvan.com -> upstream api_gateway:3000`. static const String apiBaseUrl = 'https://api2.didvan.com'; // ------------------------------------------------------------- // Keycloak // ------------------------------------------------------------- /// آدرس پایه سرور Keycloak (بدون اسلش انتهایی). static const String keycloakBaseUrl = 'https://auth.didvan.com'; /// نام realm مورد استفاده در Keycloak. /// تایید شده در `README.keycloak.md` و `app.service.ts` بک‌اند: /// `https://auth.didvan.com/realms/didvan`. static const String keycloakRealm = 'didvan'; /// Client ID که اپلیکیشن فلاتر با آن لاگین می‌کند. /// همان client ای که فرانت Next.js هم استفاده می‌کند (public client با /// Direct Access Grants فعال). مرجع: `envs/.frontend.env` در پروژه‌ی iac: /// `NEXT_PUBLIC_KEYCLOAK_CLIENT_ID=didvan-app`. static const String keycloakClientId = 'didvan-app'; /// `didvan-app` یک public client است (frontend Next.js بدون secret از آن /// استفاده می‌کند) — برای موبایل هم همین رویکرد امن‌تر است. static const String? keycloakClientSecret = null; // ------------------------------------------------------------- // Feature flags // ------------------------------------------------------------- /// تماس‌های قدیمی به `api.didvan.app` (mainPageContent, didvanPlus, /// didvanVoice, topBanner, searchAll با categoryهای قدیمی، و ...). /// /// در حال حاضر `api.didvan.app` SSL handshake fail می‌کند، پس این /// تماس‌ها فقط timeout می‌خورند و وقت کاربر را هدر می‌دهند. برای /// عدم اجرا، این مقدار را روی `false` نگه دارید. وقتی بک‌اند جدید /// endpoint های معادل را پیاده‌سازی کرد، آن تماس‌ها مستقیم به /// `apiBaseUrl` (api2.didvan.com) منتقل می‌شوند. static const bool useLegacyApi = false; // ------------------------------------------------------------- // URL های مشتق // ------------------------------------------------------------- static String get keycloakTokenUrl => '$keycloakBaseUrl/realms/$keycloakRealm/protocol/openid-connect/token'; static String get keycloakLogoutUrl => '$keycloakBaseUrl/realms/$keycloakRealm/protocol/openid-connect/logout'; static String get keycloakUserInfoUrl => '$keycloakBaseUrl/realms/$keycloakRealm/protocol/openid-connect/userinfo'; }