didvan-app/lib/config/auth_config.dart

75 lines
3.8 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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';
}