feat: LAN-first development with optional auth
- Default API URLs now use LAN IPs (192.168.86.149) - Auth interceptor skips auth when using LAN endpoints - Production builds override with --dart-define Development: flutter run -d chrome (no auth needed on LAN) Production: flutter build web --dart-define=CORE_API_URL=https://api.schweitz.net 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,19 +1,35 @@
|
||||
/// Application configuration from compile-time environment variables.
|
||||
///
|
||||
/// Set via: flutter build --dart-define=API_URL=https://...
|
||||
/// ## Development (LAN - no auth required)
|
||||
/// Default values use LAN IPs for local development:
|
||||
/// ```bash
|
||||
/// flutter run -d chrome
|
||||
/// ```
|
||||
///
|
||||
/// ## Production (public URLs - auth required)
|
||||
/// Override with public URLs for production builds:
|
||||
/// ```bash
|
||||
/// flutter build web \
|
||||
/// --dart-define=CORE_API_URL=https://api.schweitz.net \
|
||||
/// --dart-define=TATLOCK_API_URL=https://tatlock.schweitz.net
|
||||
/// ```
|
||||
class AppConfig {
|
||||
AppConfig._();
|
||||
|
||||
/// Core API base URL
|
||||
/// - LAN default: No auth required
|
||||
/// - Production: https://api.schweitz.net (requires OIDC)
|
||||
static const coreApiUrl = String.fromEnvironment(
|
||||
'CORE_API_URL',
|
||||
defaultValue: 'https://api.schweitz.net',
|
||||
defaultValue: 'http://192.168.86.149:8083',
|
||||
);
|
||||
|
||||
/// Tatlock API base URL
|
||||
/// - LAN default: No auth required
|
||||
/// - Production: https://tatlock.schweitz.net (requires OIDC)
|
||||
static const tatlockApiUrl = String.fromEnvironment(
|
||||
'TATLOCK_API_URL',
|
||||
defaultValue: 'https://tatlock.schweitz.net',
|
||||
defaultValue: 'http://192.168.86.149:8000',
|
||||
);
|
||||
|
||||
/// Authentik OIDC discovery URL
|
||||
@@ -37,4 +53,9 @@ class AppConfig {
|
||||
|
||||
/// Whether running in debug mode
|
||||
static const isDebug = bool.fromEnvironment('DEBUG', defaultValue: false);
|
||||
|
||||
/// Whether auth is required (false for LAN development)
|
||||
static bool get requiresAuth =>
|
||||
coreApiUrl.contains('schweitz.net') ||
|
||||
tatlockApiUrl.contains('schweitz.net');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user