Add support API scaffold

This commit is contained in:
Codex Agent
2026-01-28 13:52:47 +01:00
parent 594c3b1772
commit e2948c0388
23 changed files with 2381 additions and 1 deletions

View File

@@ -8,6 +8,11 @@ use App\Http\Controllers\Api\Marketing\CouponPreviewController;
use App\Http\Controllers\Api\PackageController;
use App\Http\Controllers\Api\PhotoboothConnectController;
use App\Http\Controllers\Api\SparkboothUploadController;
use App\Http\Controllers\Api\Support\SupportGuestPolicyController;
use App\Http\Controllers\Api\Support\SupportResourceController;
use App\Http\Controllers\Api\Support\SupportTenantActionsController;
use App\Http\Controllers\Api\Support\SupportTokenController;
use App\Http\Controllers\Api\Support\SupportWatermarkSettingsController;
use App\Http\Controllers\Api\Tenant\AdminPushSubscriptionController;
use App\Http\Controllers\Api\Tenant\DashboardController;
use App\Http\Controllers\Api\Tenant\DataExportController;
@@ -39,6 +44,7 @@ use App\Http\Controllers\Api\TenantAuth\TenantAdminPasswordResetController;
use App\Http\Controllers\Api\TenantBillingController;
use App\Http\Controllers\Api\TenantPackageController;
use App\Http\Controllers\RevenueCatWebhookController;
use App\Support\SupportApiRegistry;
use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse;
use Illuminate\Cookie\Middleware\EncryptCookies;
use Illuminate\Session\Middleware\StartSession;
@@ -67,6 +73,71 @@ Route::prefix('v1')->name('api.v1.')->group(function () {
->middleware('throttle:60,1')
->name('webhooks.revenuecat');
Route::prefix('support')->name('support.')->group(function () {
Route::post('/auth/token', [SupportTokenController::class, 'store'])
->middleware('throttle:60,1')
->name('support.auth.token');
Route::middleware(['auth:sanctum', 'support.token'])->group(function () {
Route::post('/auth/logout', [SupportTokenController::class, 'destroy'])->name('support.auth.logout');
Route::get('/auth/me', [SupportTokenController::class, 'me'])->name('support.auth.me');
Route::get('/settings/guest-policy', [SupportGuestPolicyController::class, 'show'])
->name('support.settings.guest-policy.show');
Route::patch('/settings/guest-policy', [SupportGuestPolicyController::class, 'update'])
->name('support.settings.guest-policy.update');
Route::get('/settings/watermark', [SupportWatermarkSettingsController::class, 'show'])
->name('support.settings.watermark.show');
Route::patch('/settings/watermark', [SupportWatermarkSettingsController::class, 'update'])
->name('support.settings.watermark.update');
Route::prefix('tenants/{tenant}')->group(function () {
Route::post('actions/activate', [SupportTenantActionsController::class, 'activate'])
->name('support.tenants.actions.activate');
Route::post('actions/deactivate', [SupportTenantActionsController::class, 'deactivate'])
->name('support.tenants.actions.deactivate');
Route::post('actions/suspend', [SupportTenantActionsController::class, 'suspend'])
->name('support.tenants.actions.suspend');
Route::post('actions/unsuspend', [SupportTenantActionsController::class, 'unsuspend'])
->name('support.tenants.actions.unsuspend');
Route::post('actions/schedule-deletion', [SupportTenantActionsController::class, 'scheduleDeletion'])
->name('support.tenants.actions.schedule-deletion');
Route::post('actions/cancel-deletion', [SupportTenantActionsController::class, 'cancelDeletion'])
->name('support.tenants.actions.cancel-deletion');
Route::post('actions/anonymize', [SupportTenantActionsController::class, 'anonymize'])
->name('support.tenants.actions.anonymize');
Route::post('actions/add-package', [SupportTenantActionsController::class, 'addPackage'])
->name('support.tenants.actions.add-package');
Route::post('actions/update-limits', [SupportTenantActionsController::class, 'updateLimits'])
->name('support.tenants.actions.update-limits');
Route::post('actions/update-subscription-expires-at', [SupportTenantActionsController::class, 'updateSubscriptionExpiresAt'])
->name('support.tenants.actions.update-subscription-expires-at');
Route::post('actions/set-grace-period', [SupportTenantActionsController::class, 'setGracePeriod'])
->name('support.tenants.actions.set-grace-period');
Route::post('actions/clear-grace-period', [SupportTenantActionsController::class, 'clearGracePeriod'])
->name('support.tenants.actions.clear-grace-period');
});
$resourcePattern = SupportApiRegistry::resourcePattern();
Route::get('{resource}', [SupportResourceController::class, 'index'])
->where('resource', $resourcePattern)
->name('support.resources.index');
Route::post('{resource}', [SupportResourceController::class, 'store'])
->where('resource', $resourcePattern)
->name('support.resources.store');
Route::get('{resource}/{record}', [SupportResourceController::class, 'show'])
->where('resource', $resourcePattern)
->name('support.resources.show');
Route::patch('{resource}/{record}', [SupportResourceController::class, 'update'])
->where('resource', $resourcePattern)
->name('support.resources.update');
Route::delete('{resource}/{record}', [SupportResourceController::class, 'destroy'])
->where('resource', $resourcePattern)
->name('support.resources.destroy');
});
});
Route::prefix('tenant-auth')->name('tenant-auth.')->group(function () {
Route::post('/login', [TenantAdminTokenController::class, 'store'])
->middleware('throttle:tenant-auth')