99 lines
2.5 KiB
Markdown
99 lines
2.5 KiB
Markdown
# Register Plugin
|
|
|
|
Provides user registration functionality.
|
|
|
|
## API Endpoints
|
|
|
|
### POST /register?action=register
|
|
Register a new user account.
|
|
|
|
**Request:**
|
|
- `username` (string, 3-20 chars, required)
|
|
- `password` (string, 8-255 chars, required)
|
|
- `confirm_password` (string, required)
|
|
- `csrf_token` (string, required)
|
|
- `terms` (boolean, required)
|
|
|
|
**Response:**
|
|
```json
|
|
{
|
|
"success": true,
|
|
"data": {
|
|
"message": "Registration successful. You can log in now.",
|
|
"redirect_to": "?page=login"
|
|
}
|
|
}
|
|
```
|
|
|
|
### GET /register?action=status
|
|
Check if registration is enabled.
|
|
|
|
## Configuration
|
|
|
|
Enable/disable registration in `totalmeet.conf.php`:
|
|
```php
|
|
'registration_enabled' => true,
|
|
```
|
|
|
|
## Security Features
|
|
|
|
- CSRF protection
|
|
- Rate limiting
|
|
- Password hashing
|
|
- Input sanitization
|
|
|
|
## Implementation
|
|
|
|
Uses callable dispatcher pattern with procedural handler functions:
|
|
```php
|
|
register_plugin_route_prefix('register', [
|
|
'dispatcher' => function($action, array $context = []) {
|
|
require_once PLUGIN_REGISTER_PATH . 'controllers/register.php';
|
|
if (function_exists('register_plugin_handle_register')) {
|
|
return register_plugin_handle_register($action, $context);
|
|
}
|
|
return false;
|
|
},
|
|
'access' => 'public',
|
|
'defaults' => ['action' => 'register'],
|
|
'plugin' => 'register',
|
|
]);
|
|
```
|
|
|
|
## Controller Architecture
|
|
|
|
The controller uses procedural functions:
|
|
- `register_plugin_handle_register($action, $context)` - main handler
|
|
- `register_plugin_handle_submission(...)` - processes form submission
|
|
- `register_plugin_render_form(...)` - renders registration form with layout
|
|
- `register_plugin_log_success(...)` - logs successful registration
|
|
|
|
## Database Tables
|
|
|
|
No plugin-specific tables. Uses core `user` and `user_meta` tables.
|
|
|
|
## Enable/Disable
|
|
|
|
The plugin is managed via the admin plugin management interface (stored in `settings` table).
|
|
When disabled, the registration route becomes unavailable.
|
|
|
|
## File Structure
|
|
|
|
```
|
|
plugins/register/
|
|
├── bootstrap.php # registers route with callable dispatcher
|
|
├── plugin.json # plugin metadata
|
|
├── README.md # this documentation
|
|
├── controllers/
|
|
│ └── register.php # procedural handler functions
|
|
├── models/
|
|
│ └── register.php # registration logic and validation
|
|
├── helpers.php # plugin helper wrapper
|
|
└── views/
|
|
└── form-register.php # registration form template
|
|
```
|
|
|
|
## Dependencies
|
|
|
|
None - functions independently.
|