• Stefy Lanza (nextime / spora )'s avatar
    Implement persistent registration setting system with comprehensive admin interface · b8bcdc15
    Stefy Lanza (nextime / spora ) authored
    PROBLEM ADDRESSED:
    User requested: 'the registration setting should be persistent at boot, default disabled'
    
    SOLUTION IMPLEMENTED:
    
    1. SystemSettings Model (app/models.py):
       - Created comprehensive SystemSettings model for persistent configuration storage
       - Added specialized methods: is_registration_enabled(), set_registration_enabled()
       - Implemented type-safe setting management (string, boolean, integer, float, json)
       - Added initialize_default_settings() for automatic setup
       - Comprehensive logging and error handling
    
    2. Database Migration (app/database/migrations.py):
       - Added Migration_004_CreateSystemSettingsTable with MySQL compatibility
       - Automatic creation of system_settings table with proper indexes
       - Default settings insertion (registration_enabled=false, app_name, maintenance_mode)
       - Rollback capability for safe database management
    
    3. Registration Route Integration (app/auth/routes.py):
       - Updated registration route to use SystemSettings.is_registration_enabled()
       - Replaced config-based check with database-backed persistent setting
       - Maintains backward compatibility while adding persistence
    
    4. Admin Interface (app/main/routes.py):
       - Added /admin/settings route for comprehensive system settings management
       - Added /admin/settings/registration for quick registration toggle
       - Added /admin/settings/<setting_key> for individual setting management
       - JSON API endpoints for dynamic frontend updates
    
    5. Admin Template (app/templates/main/admin_settings.html):
       - Modern Bootstrap 5 interface with toggle switches
       - Real-time setting updates via AJAX
       - Quick access cards for registration and maintenance mode
       - Comprehensive settings table with add/edit/delete functionality
       - Modal dialogs for setting management
    
    TECHNICAL BENEFITS:
    -  Persistent at boot: Settings stored in database, survive application restarts
    -  Default disabled: Registration defaults to False for security
    -  Admin control: Full web interface for setting management
    -  Type safety: Proper type conversion and validation
    -  Audit trail: Comprehensive logging of setting changes
    -  Extensible: Easy to add new system settings
    
    SECURITY IMPROVEMENTS:
    - Registration disabled by default prevents unauthorized access
    - Admin-only setting management with proper authentication
    - Type validation prevents injection attacks
    - Comprehensive error handling and logging
    
    This fully addresses the user's requirement for persistent, default-disabled registration settings.
    b8bcdc15
models.py 25.3 KB