feat: registration field polish, multi-category tags, file uploads, Partner icon
- Restructure field editor dialog: move Options section to bottom with divider and subheader, fix delete button with flex layout - Change tag_category (single string) to tag_categories (JSON array) supporting multiple category selection in tag picker fields - Portal tag picker now groups tags by category with subheaders - Add generic file upload endpoint (FileUploadService + UploadController) - Replace email branding logo URL text field with ImageUploadField - Update Partner crowd type default icon to tabler-affiliate - Apply changes consistently to both field and template dialogs Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -38,6 +38,7 @@ use App\Http\Controllers\Api\V1\EmailChangeController;
|
||||
use App\Http\Controllers\Api\V1\PasswordResetController;
|
||||
use App\Http\Controllers\Api\V1\PortalMeController;
|
||||
use App\Http\Controllers\Api\V1\Portal\PortalShiftController;
|
||||
use App\Http\Controllers\Api\V1\UploadController;
|
||||
use App\Http\Controllers\Api\V1\UserOrganisationTagController;
|
||||
use App\Http\Controllers\Api\V1\Admin\AdminOrganisationController;
|
||||
use App\Http\Controllers\Api\V1\Admin\AdminUserController;
|
||||
@@ -146,6 +147,9 @@ Route::middleware(['auth:sanctum', 'impersonation'])->group(function () {
|
||||
Route::delete('auth/trusted-devices/{device}', [TrustedDeviceController::class, 'destroy']);
|
||||
Route::delete('auth/trusted-devices', [TrustedDeviceController::class, 'destroyAll']);
|
||||
|
||||
// File uploads
|
||||
Route::post('upload/image', [UploadController::class, 'uploadImage']);
|
||||
|
||||
// Account management (self-service)
|
||||
Route::put('me/profile', [AccountController::class, 'updateProfile']);
|
||||
Route::post('me/change-password', [AccountController::class, 'changePassword']);
|
||||
|
||||
Reference in New Issue
Block a user