• 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
Name
Last commit
Last update
..
api Loading commit data...
auth Loading commit data...
database Loading commit data...
main Loading commit data...
templates Loading commit data...
upload Loading commit data...
utils Loading commit data...
__init__.py Loading commit data...
models.py Loading commit data...