192 lines
5.2 KiB
Markdown
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)
|