Web authentication now uses OIDC Authorization Code flow with PKCE instead of NPM forward auth. Added callback route and web utilities. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
80 lines
2.4 KiB
Dart
80 lines
2.4 KiB
Dart
/// Application configuration from compile-time environment variables.
|
|
///
|
|
/// ## 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: '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: 'http://192.168.86.149:8000',
|
|
);
|
|
|
|
/// Authentik OIDC discovery URL
|
|
static const authDiscoveryUrl = String.fromEnvironment(
|
|
'AUTH_DISCOVERY_URL',
|
|
defaultValue:
|
|
'https://auth.schweitz.net/application/o/tatlock-ui/.well-known/openid-configuration',
|
|
);
|
|
|
|
/// Authentik client ID
|
|
static const authClientId = String.fromEnvironment(
|
|
'AUTH_CLIENT_ID',
|
|
defaultValue: 'tatlock-ui',
|
|
);
|
|
|
|
/// Authentik redirect URI scheme (for mobile/native)
|
|
static const authRedirectScheme = String.fromEnvironment(
|
|
'AUTH_REDIRECT_SCHEME',
|
|
defaultValue: 'net.schweitz.tatlock',
|
|
);
|
|
|
|
/// Web app base URL (for OIDC redirect URI on web)
|
|
static const webBaseUrl = String.fromEnvironment(
|
|
'WEB_BASE_URL',
|
|
defaultValue: 'https://home.schweitz.net',
|
|
);
|
|
|
|
/// 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');
|
|
|
|
/// Portainer URL for container management
|
|
static const portainerUrl = String.fromEnvironment(
|
|
'PORTAINER_URL',
|
|
defaultValue: 'http://192.168.86.149:9000',
|
|
);
|
|
|
|
/// Netdata URL for system monitoring
|
|
static const netdataUrl = String.fromEnvironment(
|
|
'NETDATA_URL',
|
|
defaultValue: 'http://192.168.86.149:19999',
|
|
);
|
|
}
|