Files
citrus-cms/resources/views/guide/specific-permissions-module.md
T
2026-04-28 21:15:09 +03:00

192 lines
5.2 KiB
Markdown

# Specific Permissions Module Documentation
## Overview
The Specific Permissions Module is a configuration system that allows administrators to define granular permission settings for different user levels within the DevQMS application. This module provides a flexible way to control access to specific features and functionalities based on user roles.
## File Location
- **View File**: `resources/views/admin/type/settings/specific-permissions.blade.php`
- **Guide Documentation**: `resources/views/guide/specific-permissions-module.md`
## Features
### 1. Permission Management
- Define custom permission settings for different user levels
- Multi-select dropdown interface for easy configuration
- Real-time updates through form submission
- Integration with the existing settings system
### 2. User Level Integration
- Automatically retrieves available user levels from the system
- Dynamic option population in permission dropdowns
- Support for multiple user level selections per permission
### 3. Settings Storage
- Permissions are stored in the `settings` table
- JSON format for storing multiple values
- Persistent configuration across sessions
## Module Structure
### Permission Definitions
The module defines specific permissions in the `$permissions` array:
```php
$permissions = [
'Weld Log ISO Upload Permission' => 'weld_log_iso_upload_permission',
'Engineer Upload Permission' => 'engineer_upload_permission',
];
```
### Key Components
1. **Form Handler**: Processes permission updates via POST requests
2. **User Level Retrieval**: Gets available user levels from the system
3. **Settings Integration**: Uses the `firstOrUpdate` function for database operations
4. **Dynamic UI**: Select2 integration for enhanced user experience
## Technical Implementation
### Database Operations
```php
// Update settings when form is submitted
if(getisset("update")) {
foreach($_POST AS $key => $value) {
firstOrUpdate([
'title' => $key,
'html' => $value
],"settings",[
'title' => $key
]);
}
}
```
### User Level Integration
```php
// Retrieve available user levels
$userLevels = array_keys(levels());
```
### Frontend Integration
The module uses Select2 for enhanced dropdown functionality:
```javascript
$('.select2').select2({
placeholder: "Select User Levels",
allowClear: true,
width: '100%'
});
```
## Usage
### 1. Accessing the Module
Navigate to the admin panel and access the specific permissions settings through the settings section.
### 2. Configuring Permissions
1. Select the desired user levels for each permission
2. Use the multi-select dropdown to choose multiple levels
3. Click "Update" to save changes
### 3. Permission Types
Currently supported permission types:
- **Weld Log ISO Upload Permission**: Controls access to ISO upload functionality in weld log module
- **Engineer Upload Permission**: Controls engineer-level upload permissions
## Integration with Other Modules
### Settings System Integration
The module integrates with the global settings system:
```php
// Retrieve permission settings
$selectedValues = j(setting($key));
```
### User Level System
Leverages the existing user level system:
```php
// Get user levels from the system
$userLevels = array_keys(levels());
```
## Adding New Permissions
To add new permission types:
1. **Update the permissions array**:
```php
$permissions = [
'Weld Log ISO Upload Permission' => 'weld_log_iso_upload_permission',
'Engineer Upload Permission' => 'engineer_upload_permission',
'New Permission Name' => 'new_permission_key',
];
```
2. **The system will automatically**:
- Create the form field
- Add it to the database
- Include it in the Select2 initialization
## Security Considerations
- All form submissions include CSRF protection
- Permission changes require admin-level access
- Settings are stored securely in the database
- User level validation is performed server-side
## Dependencies
- **Laravel Framework**: For form handling and database operations
- **Select2**: For enhanced dropdown functionality
- **jQuery**: For frontend interactions
- **Bootstrap**: For styling and modal functionality
## Future Enhancements
Potential improvements for the module:
1. **Permission Categories**: Group related permissions together
2. **Permission Inheritance**: Allow permissions to inherit from parent levels
3. **Audit Logging**: Track permission changes over time
4. **Bulk Operations**: Enable bulk permission updates
5. **Permission Templates**: Predefined permission sets for common scenarios
## Troubleshooting
### Common Issues
1. **Permissions not saving**: Check CSRF token and form submission
2. **User levels not appearing**: Verify the `levels()` function returns correct data
3. **Select2 not working**: Ensure jQuery and Select2 are properly loaded
### Debug Information
To debug permission settings:
```php
// Check current permission values
$permissionValue = setting('weld_log_iso_upload_permission');
var_dump($permissionValue);
```
## Related Documentation
- [User Level System Documentation](user-levels.md)
- [Settings System Documentation](settings-system.md)
- [Admin Panel Documentation](admin-panel.md)
- [Permission Control Middleware](permission-middleware.md)