Files
fotospiel-app/config/support-api.php
Codex Agent 6bc1d86009
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled
Tighten support API resource mutations
2026-01-28 18:34:12 +01:00

371 lines
11 KiB
PHP

<?php
use App\Models\BlogCategory;
use App\Models\BlogPost;
use App\Models\Coupon;
use App\Models\DataExport;
use App\Models\Emotion;
use App\Models\Event;
use App\Models\EventPurchase;
use App\Models\EventType;
use App\Models\GiftVoucher;
use App\Models\InfrastructureActionLog;
use App\Models\LegalPage;
use App\Models\MediaStorageTarget;
use App\Models\Package;
use App\Models\PackageAddon;
use App\Models\PackagePurchase;
use App\Models\Photo;
use App\Models\PhotoboothSetting;
use App\Models\PurchaseHistory;
use App\Models\RetentionOverride;
use App\Models\SuperAdminActionLog;
use App\Models\Task;
use App\Models\TaskCollection;
use App\Models\Tenant;
use App\Models\TenantAnnouncement;
use App\Models\TenantFeedback;
use App\Models\TenantPackage;
use App\Models\User;
return [
'token' => [
'name' => 'support-api',
'default_abilities' => [
'support-admin',
'support:read',
'support:write',
'support:actions',
'support:billing',
'support:ops',
'support:content',
'support:settings',
'support:infrastructure',
],
],
'pagination' => [
'default_per_page' => 50,
'max_per_page' => 200,
],
'resources' => [
'tenants' => [
'model' => Tenant::class,
'search' => ['name', 'slug', 'contact_email', 'paddle_customer_id'],
'with' => ['user', 'activeResellerPackage'],
'abilities' => [
'read' => ['support:read'],
'write' => ['support:write'],
'actions' => ['support:actions'],
],
'mutations' => [
'create' => false,
'update' => true,
'delete' => false,
],
],
'users' => [
'model' => User::class,
'search' => ['email', 'username', 'name', 'first_name', 'last_name'],
'abilities' => [
'read' => ['support:read'],
'write' => ['support:write'],
],
'mutations' => [
'create' => false,
'update' => true,
'delete' => false,
],
],
'events' => [
'model' => Event::class,
'search' => ['name', 'slug'],
'read_only' => true,
'abilities' => [
'read' => ['support:read'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'event-types' => [
'model' => EventType::class,
'search' => ['name', 'slug'],
'read_only' => true,
'abilities' => [
'read' => ['support:read'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'photos' => [
'model' => Photo::class,
'search' => ['id'],
'read_only' => true,
'abilities' => [
'read' => ['support:read'],
],
],
'event-purchases' => [
'model' => EventPurchase::class,
'search' => ['id'],
'read_only' => true,
'abilities' => [
'read' => ['support:billing'],
],
],
'purchases' => [
'model' => PackagePurchase::class,
'search' => ['provider_id'],
'read_only' => true,
'abilities' => [
'read' => ['support:billing'],
],
],
'purchase-histories' => [
'model' => PurchaseHistory::class,
'search' => ['provider_id'],
'read_only' => true,
'abilities' => [
'read' => ['support:billing'],
],
],
'packages' => [
'model' => Package::class,
'search' => ['name', 'slug'],
'read_only' => true,
'abilities' => [
'read' => ['support:billing'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'package-addons' => [
'model' => PackageAddon::class,
'search' => ['name', 'slug'],
'read_only' => true,
'abilities' => [
'read' => ['support:billing'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'tenant-packages' => [
'model' => TenantPackage::class,
'search' => ['id'],
'read_only' => true,
'abilities' => [
'read' => ['support:billing'],
],
],
'coupons' => [
'model' => Coupon::class,
'search' => ['code', 'name'],
'read_only' => true,
'abilities' => [
'read' => ['support:billing'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'gift-vouchers' => [
'model' => GiftVoucher::class,
'search' => ['code', 'email'],
'read_only' => true,
'abilities' => [
'read' => ['support:billing'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'tenant-feedback' => [
'model' => TenantFeedback::class,
'search' => ['email', 'message'],
'abilities' => [
'read' => ['support:read'],
'write' => ['support:write'],
],
'mutations' => [
'create' => false,
'update' => true,
'delete' => false,
],
],
'tenant-announcements' => [
'model' => TenantAnnouncement::class,
'search' => ['title', 'body'],
'read_only' => true,
'abilities' => [
'read' => ['support:read'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'media-storage-targets' => [
'model' => MediaStorageTarget::class,
'search' => ['name', 'driver'],
'read_only' => true,
'abilities' => [
'read' => ['support:ops'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'retention-overrides' => [
'model' => RetentionOverride::class,
'search' => ['id'],
'read_only' => true,
'abilities' => [
'read' => ['support:ops'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'data-exports' => [
'model' => DataExport::class,
'search' => ['id'],
'abilities' => [
'read' => ['support:ops'],
'write' => ['support:ops'],
],
'mutations' => [
'create' => true,
'update' => false,
'delete' => false,
],
],
'photobooth-settings' => [
'model' => PhotoboothSetting::class,
'search' => ['label'],
'abilities' => [
'read' => ['support:ops'],
'write' => ['support:ops'],
],
'mutations' => [
'create' => false,
'update' => true,
'delete' => false,
],
],
'legal-pages' => [
'model' => LegalPage::class,
'search' => ['slug', 'title'],
'read_only' => true,
'abilities' => [
'read' => ['support:content'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'blog-categories' => [
'model' => BlogCategory::class,
'search' => ['name', 'slug'],
'read_only' => true,
'abilities' => [
'read' => ['support:content'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'blog-posts' => [
'model' => BlogPost::class,
'search' => ['title', 'slug'],
'read_only' => true,
'abilities' => [
'read' => ['support:content'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'emotions' => [
'model' => Emotion::class,
'search' => ['name', 'slug'],
'read_only' => true,
'abilities' => [
'read' => ['support:content'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'tasks' => [
'model' => Task::class,
'search' => ['title'],
'read_only' => true,
'abilities' => [
'read' => ['support:read'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'task-collections' => [
'model' => TaskCollection::class,
'search' => ['name'],
'read_only' => true,
'abilities' => [
'read' => ['support:read'],
],
'mutations' => [
'create' => false,
'update' => false,
'delete' => false,
],
],
'super-admin-action-logs' => [
'model' => SuperAdminActionLog::class,
'search' => ['action', 'target_type'],
'read_only' => true,
'abilities' => [
'read' => ['support:infrastructure'],
],
],
'infrastructure-action-logs' => [
'model' => InfrastructureActionLog::class,
'search' => ['action', 'target_type'],
'read_only' => true,
'abilities' => [
'read' => ['support:infrastructure'],
],
],
],
];