Initial commit - production deployment
This commit is contained in:
70
services/auth/app/core/config.py
Normal file
70
services/auth/app/core/config.py
Normal file
@@ -0,0 +1,70 @@
|
||||
# ================================================================
|
||||
# AUTH SERVICE CONFIGURATION
|
||||
# services/auth/app/core/config.py
|
||||
# ================================================================
|
||||
|
||||
"""
|
||||
Authentication service configuration
|
||||
User management and JWT token handling
|
||||
"""
|
||||
|
||||
from shared.config.base import BaseServiceSettings
|
||||
import os
|
||||
|
||||
class AuthSettings(BaseServiceSettings):
|
||||
"""Auth service specific settings"""
|
||||
|
||||
# Service Identity
|
||||
APP_NAME: str = "Authentication Service"
|
||||
SERVICE_NAME: str = "auth-service"
|
||||
DESCRIPTION: str = "User authentication and authorization service"
|
||||
|
||||
# Database configuration (secure approach - build from components)
|
||||
@property
|
||||
def DATABASE_URL(self) -> str:
|
||||
"""Build database URL from secure components"""
|
||||
# Try complete URL first (for backward compatibility)
|
||||
complete_url = os.getenv("AUTH_DATABASE_URL")
|
||||
if complete_url:
|
||||
return complete_url
|
||||
|
||||
# Build from components (secure approach)
|
||||
user = os.getenv("AUTH_DB_USER", "auth_user")
|
||||
password = os.getenv("AUTH_DB_PASSWORD", "auth_pass123")
|
||||
host = os.getenv("AUTH_DB_HOST", "localhost")
|
||||
port = os.getenv("AUTH_DB_PORT", "5432")
|
||||
name = os.getenv("AUTH_DB_NAME", "auth_db")
|
||||
|
||||
return f"postgresql+asyncpg://{user}:{password}@{host}:{port}/{name}"
|
||||
|
||||
# Redis Database (dedicated for auth)
|
||||
REDIS_DB: int = 0
|
||||
|
||||
# Enhanced Password Requirements for Spain
|
||||
PASSWORD_MIN_LENGTH: int = 8
|
||||
PASSWORD_REQUIRE_UPPERCASE: bool = True
|
||||
PASSWORD_REQUIRE_LOWERCASE: bool = True
|
||||
PASSWORD_REQUIRE_NUMBERS: bool = True
|
||||
PASSWORD_REQUIRE_SYMBOLS: bool = False
|
||||
|
||||
# Spanish GDPR Compliance
|
||||
GDPR_COMPLIANCE_ENABLED: bool = True
|
||||
DATA_RETENTION_DAYS: int = int(os.getenv("AUTH_DATA_RETENTION_DAYS", "365"))
|
||||
CONSENT_REQUIRED: bool = True
|
||||
PRIVACY_POLICY_URL: str = os.getenv("PRIVACY_POLICY_URL", "/privacy")
|
||||
|
||||
# Account Security
|
||||
ACCOUNT_LOCKOUT_ENABLED: bool = True
|
||||
MAX_LOGIN_ATTEMPTS: int = 5
|
||||
LOCKOUT_DURATION_MINUTES: int = 30
|
||||
PASSWORD_HISTORY_COUNT: int = 5
|
||||
|
||||
# Session Management
|
||||
SESSION_TIMEOUT_MINUTES: int = int(os.getenv("SESSION_TIMEOUT_MINUTES", "60"))
|
||||
CONCURRENT_SESSIONS_LIMIT: int = int(os.getenv("CONCURRENT_SESSIONS_LIMIT", "3"))
|
||||
|
||||
# Email Verification
|
||||
EMAIL_VERIFICATION_REQUIRED: bool = os.getenv("EMAIL_VERIFICATION_REQUIRED", "true").lower() == "true"
|
||||
EMAIL_VERIFICATION_EXPIRE_HOURS: int = int(os.getenv("EMAIL_VERIFICATION_EXPIRE_HOURS", "24"))
|
||||
|
||||
settings = AuthSettings()
|
||||
Reference in New Issue
Block a user