forked from baron/baron-sso
userfront 런타임 BACKEND_URL fallback 수정
This commit is contained in:
@@ -1,18 +1,10 @@
|
||||
import 'dart:convert';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
import 'runtime_env.dart';
|
||||
|
||||
class AuditService {
|
||||
static String _envOrDefault(String key, String fallback) {
|
||||
if (!dotenv.isInitialized) {
|
||||
return fallback;
|
||||
}
|
||||
return dotenv.env[key] ?? fallback;
|
||||
}
|
||||
|
||||
static String get _baseUrl =>
|
||||
_envOrDefault('BACKEND_URL', 'https://sso.hmac.kr');
|
||||
static String get _baseUrl => runtimeBackendUrl();
|
||||
|
||||
static Future<void> logEvent({
|
||||
required String userId,
|
||||
|
||||
@@ -1,41 +1,16 @@
|
||||
import 'dart:convert';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
import 'package:userfront/i18n.dart';
|
||||
import 'http_client.dart';
|
||||
import 'auth_token_store.dart';
|
||||
import 'log_policy.dart';
|
||||
import 'runtime_env.dart';
|
||||
|
||||
class AuthProxyService {
|
||||
static String _envOrDefault(String key, String fallback) {
|
||||
if (!dotenv.isInitialized) {
|
||||
return fallback;
|
||||
}
|
||||
final value = dotenv.env[key];
|
||||
if (value == null || value.trim().isEmpty) {
|
||||
return fallback;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
static String _fallbackOrigin() {
|
||||
try {
|
||||
final origin = Uri.base.origin;
|
||||
if (origin.isNotEmpty && origin != 'null') {
|
||||
return origin;
|
||||
}
|
||||
} catch (_) {}
|
||||
return 'http://sso.hmac.kr';
|
||||
}
|
||||
|
||||
static String get _baseUrl {
|
||||
final rawUrl = _envOrDefault('BACKEND_URL', _fallbackOrigin());
|
||||
// 배포 환경에서 $ 기호나 공백이 섞여 들어오는 경우를 방지하기 위해 정제합니다.
|
||||
return rawUrl.replaceAll(r'$', '').trim().replaceAll(RegExp(r'/$'), '');
|
||||
}
|
||||
static String get _baseUrl => runtimeBackendUrl();
|
||||
|
||||
static bool get _isProd {
|
||||
final env = _envOrDefault('APP_ENV', 'dev').toLowerCase();
|
||||
final env = envOrDefault('APP_ENV', 'dev').toLowerCase();
|
||||
return LogPolicy.isProductionEnv(env);
|
||||
}
|
||||
|
||||
@@ -156,7 +131,7 @@ class AuthProxyService {
|
||||
bool? drySend,
|
||||
}) async {
|
||||
final url = Uri.parse('$_baseUrl/api/v1/auth/enchanted-link/init');
|
||||
final userfrontUrl = _envOrDefault('USERFRONT_URL', _fallbackOrigin());
|
||||
final userfrontUrl = runtimeUserfrontUrl();
|
||||
|
||||
final body = <String, dynamic>{'loginId': loginId, 'uri': userfrontUrl};
|
||||
if (_shouldSendDrySend(drySend)) {
|
||||
@@ -897,10 +872,10 @@ class AuthProxyService {
|
||||
if (!_canSendClientLog()) {
|
||||
return;
|
||||
}
|
||||
final appEnv = _envOrDefault('APP_ENV', 'dev');
|
||||
final productionDebugFlag = _envOrDefault(
|
||||
final appEnv = envOrDefault('APP_ENV', 'dev');
|
||||
final productionDebugFlag = envOrDefault(
|
||||
'CLIENT_LOG_DEBUG',
|
||||
_envOrDefault('USERFRONT_DEBUG_LOG', ''),
|
||||
envOrDefault('USERFRONT_DEBUG_LOG', ''),
|
||||
);
|
||||
if (!LogPolicy.shouldRelayClientLog(
|
||||
level: level,
|
||||
|
||||
34
userfront/lib/core/services/runtime_env.dart
Normal file
34
userfront/lib/core/services/runtime_env.dart
Normal file
@@ -0,0 +1,34 @@
|
||||
import 'package:flutter_dotenv/flutter_dotenv.dart';
|
||||
|
||||
String runtimeOriginFallback() {
|
||||
try {
|
||||
final origin = Uri.base.origin;
|
||||
if (origin.isNotEmpty && origin != 'null') {
|
||||
return origin;
|
||||
}
|
||||
} catch (_) {}
|
||||
return 'https://sso-test.hmac.kr';
|
||||
}
|
||||
|
||||
String envOrDefault(String key, String fallback) {
|
||||
if (!dotenv.isInitialized) {
|
||||
return fallback;
|
||||
}
|
||||
final value = dotenv.env[key];
|
||||
if (value == null || value.trim().isEmpty) {
|
||||
return fallback;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
String sanitizedUrl(String value) {
|
||||
return value.replaceAll(r'$', '').trim().replaceAll(RegExp(r'/$'), '');
|
||||
}
|
||||
|
||||
String runtimeBackendUrl() {
|
||||
return sanitizedUrl(envOrDefault('BACKEND_URL', runtimeOriginFallback()));
|
||||
}
|
||||
|
||||
String runtimeUserfrontUrl() {
|
||||
return sanitizedUrl(envOrDefault('USERFRONT_URL', runtimeOriginFallback()));
|
||||
}
|
||||
Reference in New Issue
Block a user