Enable Group Creation Setting Implementation
Version: 0.230.029
Fixed/Implemented in version: 0.230.029
Overview
This implementation adds a comprehensive enable_group_creation setting that provides administrators with granular control over group creation functionality. The setting works consistently across both the Admin Settings interface and the Control Center, ensuring that when group creation is disabled, users cannot create new groups system-wide while still being able to participate in existing groups.
Technical Implementation
1. Default Settings Configuration
File: functions_settings.py
- Added
'enable_group_creation': Trueto the default settings dictionary - Positioned in the "Workspaces" section alongside other group-related settings
- Defaults to
Trueto maintain backward compatibility
2. Admin Settings Interface
File: templates/admin_settings.html
- Added "Enable Group Creation" toggle in the Group Workspaces section
- Toggle is conditionally displayed only when Group Workspaces are enabled
- Includes descriptive tooltip explaining the setting's purpose
- Properly integrated with form submission
File: route_frontend_admin_settings.py
- Added processing for
enable_group_creationform field - Converts checkbox state to boolean value for storage
File: static/js/admin/admin_settings.js
- Added visibility logic to show/hide the toggle based on Group Workspaces enablement
- Integrated with existing form modification tracking
3. API Endpoint Protection
File: route_backend_groups.py
- Added
@enabled_required("enable_group_creation")decorator to theapi_create_grouproute - This decorator works in conjunction with the existing
@enabled_required("enable_group_workspaces")decorator - Ensures API-level protection against group creation when disabled
4. Control Center Integration
File: templates/control_center.html
- Enhanced existing "Disable Group Creation" toggle to connect to the actual setting
- Implemented
loadGlobalSettings()method to retrieve current setting state - Implemented
saveGlobalSettings()method to persist changes via API - Uses existing agent settings API pattern for consistency
- Provides user feedback during save operations
5. Version Management
File: config.py
- Incremented version from
0.230.028to0.230.029
API Integration
Endpoint Used
- GET
/api/admin/agents/settings/enable_group_creation- Retrieve current setting - POST
/api/admin/agents/settings/enable_group_creation- Update setting
Request/Response Format
// POST Request Body
{
"value": true|false
}
// Response
{
"value": true|false
}
User Experience
Admin Settings
- Navigate to Admin Settings → Group Workspaces section
- Toggle "Enable Group Workspaces" to reveal group-related settings
- Toggle "Enable Group Creation" to control group creation functionality
- Save form to persist changes
Control Center
- Navigate to Control Center → Group Management tab
- Use "Disable Group Creation" toggle in Global Settings section
- Click "Save Settings" to persist changes immediately
- Toggle state loads automatically on page refresh
Setting Behavior
| Enable Group Creation | User Can Create Groups | User Can Join Groups | API Behavior |
|---|---|---|---|
| True (Default) | ✅ Yes | ✅ Yes | Group creation allowed |
| False | ❌ No | ✅ Yes | Group creation blocked with 403 |
Consistency Features
- Bidirectional Sync: Changes made in Admin Settings affect Control Center and vice versa
- Real-time Loading: Control Center loads current setting state on page load
- API-Level Protection: Backend enforces the setting regardless of frontend state
- User Feedback: Clear success/error messages for all operations
- Graceful Degradation: Existing groups continue to function when creation is disabled
Testing
Functional Test Coverage
- ✅ Default settings include
enable_group_creation - ✅ Admin settings template includes toggle
- ✅ Admin settings backend processes toggle
- ✅ Group creation API has required decorator
- ✅ Control center integration complete
- ✅ Admin settings JavaScript visibility logic
- ✅ Version properly updated
Test File
functional_tests/test_enable_group_creation_setting.py - Comprehensive test suite validating all aspects of the implementation.
Security Considerations
- Defense in Depth: Protection at both UI and API levels
- Consistent Enforcement: Setting is checked server-side regardless of client state
- Role-Based Access: Only administrators can modify the setting
- Graceful Fallback: When setting is missing, defaults to enabled for backward compatibility
Backward Compatibility
- Existing Groups: No impact on existing group functionality
- Default Behavior: New installations default to enabled
- Upgrade Path: Existing installations automatically get the default value
- API Compatibility: No breaking changes to existing group APIs
Integration Points
Dependencies
- Requires
enable_group_workspacesto be enabled for visibility in admin settings - Uses existing agent settings API infrastructure
- Integrates with existing role-based access control system
Related Settings
enable_group_workspaces- Parent setting for group functionalityrequire_member_of_create_group- Role-based group creation restriction
Maintenance Notes
- Setting is stored in the main application settings container
- Uses existing settings infrastructure for persistence
- Leverages established admin settings patterns for UI consistency
- Follows existing functional testing patterns for validation