Skip to content
Back to skills

998 Create Group Button Visibility Fix Ba5be863

ASecurity

**Version**: 0.230.030 **Fixed/Implemented in version**: **0.230.030**

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
developmentjavascriptpythonjavatestingapifrontendbackendsecurity

Works with

  • api

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 998-create_group_button_visibility_fix_ba5be863 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 998 Create Group Button Visibility Fix Ba5be863?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 998 Create Group Button Visibility Fix Ba5be863
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-998-create-group-button-visibility-fix-ba5be863/badge)](https://www.skillsdirectory.com/skills/tools-only-998-create-group-button-visibility-fix-ba5be863)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Create Group Button Visibility Enhancement

**Version**: 0.230.030  
**Fixed/Implemented in version**: **0.230.030**

## Overview

This enhancement ensures that the "Create New Group" button in the My Groups page respects the `enable_group_creation` setting. When group creation is disabled system-wide, the button will be hidden from all users regardless of their role permissions.

## Issue Description

Previously, the "Create New Group" button visibility was only controlled by the `require_member_of_create_group` setting and user roles. Even when the `enable_group_creation` setting was disabled in Admin Settings or Control Center, users would still see the button, though they would receive an error when attempting to use it due to API-level protection.

## Technical Implementation

### 1. Route Logic Enhancement

**File**: `route_frontend_groups.py`
**Function**: `my_groups()`

**Before**:
```python
# Check if user can create groups
can_create_groups = True
if require_member_of_create_group:
    can_create_groups = 'roles' in user and 'CreateGroups' in user['roles']
```

**After**:
```python
# Check if user can create groups
can_create_groups = enable_group_creation  # First check if group creation is enabled system-wide
if can_create_groups and require_member_of_create_group:
    can_create_groups = 'roles' in user and 'CreateGroups' in user['roles']
```

**Changes Made**:
- Added `enable_group_creation = settings.get("enable_group_creation", True)` to retrieve the setting
- Changed logic to first check `enable_group_creation` before evaluating role requirements
- Role checking now only occurs when group creation is enabled system-wide

### 2. Version Update

**File**: `config.py`
- Incremented version from `0.230.029` to `0.230.030`

## Permission Matrix

The button visibility now follows this logical hierarchy:

| enable_group_creation | require_member_of_create_group | User has CreateGroups role | Button Visible |
|----------------------|--------------------------------|----------------------------|----------------|
| **False**            | Any                           | Any                        | ❌ No          |
| **True**             | **False**                     | Any                        | ✅ Yes         |
| **True**             | **True**                      | **True**                   | ✅ Yes         |
| **True**             | **True**                      | **False**                  | ❌ No          |

## User Experience

### When `enable_group_creation` is disabled:
- The "Create New Group" button is completely hidden
- The create group modal is not rendered
- JavaScript event handlers for group creation are not bound
- Users cannot attempt to create groups through the UI

### When `enable_group_creation` is enabled:
- Button visibility follows the existing role-based logic
- Users with appropriate permissions can create groups
- Users without permissions don't see the button

## Consistency with Backend

This implementation ensures frontend-backend consistency:

### Frontend Protection (UI Level):
- Button hidden when `enable_group_creation = false`
- Modal not rendered when creation is disabled
- JavaScript events not bound when creation is disabled

### API Protection (Backend Level):
- `@enabled_required("enable_group_creation")` decorator on `api_create_group` endpoint
- Returns 403 Forbidden when group creation is disabled
- Prevents API access regardless of frontend state

## Testing

### Functional Test Coverage
The implementation includes comprehensive testing in `test_create_group_button_visibility.py`:

- ✅ **Route Logic**: Validates that the route checks `enable_group_creation` setting
- ✅ **Template Logic**: Confirms conditional button and modal display
- ✅ **Permission Scenarios**: Tests all combinations of settings and roles
- ✅ **API Protection**: Verifies backend decorator is in place
- ✅ **Version Update**: Confirms version increment

### Test Results
```
📊 Results: 5/5 tests passed
✅ All Create Group button visibility tests passed!
```

## Integration Points

### Dependencies
- Requires `enable_group_creation` setting (added in v0.230.029)
- Uses existing `can_create_groups` template variable
- Leverages existing conditional template logic
- Integrates with existing role-based permission system

### Related Components
- **Admin Settings**: Toggle to control `enable_group_creation`
- **Control Center**: "Disable Group Creation" toggle
- **API Endpoints**: Protected with `@enabled_required` decorator
- **Template System**: Conditional rendering based on permissions

## Security Considerations

### Defense in Depth
- **UI Level**: Button hidden when creation disabled
- **API Level**: Endpoint protected with decorator
- **Settings Level**: Admin-only control over the setting

### User Experience
- **Consistent Behavior**: No confusing "create button that doesn't work"
- **Clear Intent**: When button is hidden, creation is clearly disabled
- **Graceful Degradation**: Existing groups continue to function normally

## Backward Compatibility

- **No Breaking Changes**: Existing functionality preserved
- **Default Behavior**: `enable_group_creation` defaults to `true`
- **Existing Templates**: All existing template patterns continue to work
- **API Compatibility**: No changes to existing API contracts

## Maintenance Notes

- The permission logic follows a clear hierarchy: system setting → role requirement → user role
- Template conditional logic remains unchanged, only backend variable calculation modified
- Future permission additions should follow the same pattern of system-wide then role-based checks
- The implementation leverages existing infrastructure for consistency and maintainability

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.