75 lines
3.8 KiB
Dart
75 lines
3.8 KiB
Dart
// 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';
|
||
}
|