diff --git a/.beads/issues.jsonl b/.beads/issues.jsonl index 0fdc6cd..9d7a5e6 100644 --- a/.beads/issues.jsonl +++ b/.beads/issues.jsonl @@ -36,7 +36,7 @@ {"id":"fotospiel-app-9mj","title":"Ops mail default + withdrawal legal routes","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-01T16:10:02.167387589+01:00","created_by":"soeren","updated_at":"2026-01-01T16:10:07.783737036+01:00","closed_at":"2026-01-01T16:10:07.783737036+01:00","close_reason":"Completed in codebase (verified)"} {"id":"fotospiel-app-a1n","title":"Paddle migration: define mobile/native billing strategy (RevenueCat vs Paddle)","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-01T15:56:40.030226023+01:00","created_by":"soeren","updated_at":"2026-01-01T15:56:40.030226023+01:00"} {"id":"fotospiel-app-agz","title":"Tenant admin onboarding: update PRP/docs + handoff notes","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-01T16:08:51.748367378+01:00","created_by":"soeren","updated_at":"2026-01-01T16:08:51.748367378+01:00"} -{"id":"fotospiel-app-arp","title":"Guest policy settings (toggles, rate limits, retention defaults)","description":"Global guest feature toggles, rate limits, and retention defaults. Settings page + persistence.","notes":"Implemented GuestPolicySetting (cached singleton + migration) and SuperAdmin guest policy settings page. Wired guest defaults + rate limits into EventPublicController, share-link TTL, per-device upload limit, and guest notification default TTL. Added tests for gallery defaults, policy device limit, and notification TTL. Ran vendor/bin/pint --dirty; php artisan test tests/Feature/Api/EventGuestUploadLimitTest.php; php artisan test tests/Feature/GuestJoinTokenFlowTest.php; php artisan test tests/Feature/Tenant/GuestNotificationBroadcastTest.php.","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-01T14:18:52.931017783+01:00","updated_at":"2026-01-01T20:25:05.509507365+01:00","closed_at":"2026-01-01T20:25:05.509507365+01:00","close_reason":"Completed"} +{"id":"fotospiel-app-arp","title":"Guest policy settings (toggles, rate limits, retention defaults)","description":"Global guest feature toggles, rate limits, and retention defaults. Settings page + persistence.","notes":"Fix: GuestPolicySettingsPage now defines form(Schema ) with schema components to register properly; ran vendor/bin/pint --dirty and php artisan test --filter=test_gallery_defaults_use_guest_policy_settings.","status":"closed","priority":2,"issue_type":"feature","created_at":"2026-01-01T14:18:52.931017783+01:00","updated_at":"2026-01-01T20:38:09.197512959+01:00","closed_at":"2026-01-01T20:38:09.197512959+01:00","close_reason":"Completed"} {"id":"fotospiel-app-auq","title":"Security review checklist: Media pipeline/storage dynamic tests","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-01T16:04:57.616770583+01:00","created_by":"soeren","updated_at":"2026-01-01T16:04:57.616770583+01:00"} {"id":"fotospiel-app-b0h","title":"Security review: trust boundaries/entrypoints mapped","status":"closed","priority":2,"issue_type":"task","created_at":"2026-01-01T16:03:43.175087637+01:00","created_by":"soeren","updated_at":"2026-01-01T16:03:48.799343248+01:00","closed_at":"2026-01-01T16:03:48.799343248+01:00","close_reason":"Completed in codebase (verified)"} {"id":"fotospiel-app-bep","title":"SEC-IO-01 Document PAT revocation/rotation playbook","status":"open","priority":2,"issue_type":"task","created_at":"2026-01-01T15:51:44.568780967+01:00","created_by":"soeren","updated_at":"2026-01-01T15:51:44.568780967+01:00"} diff --git a/app/Filament/SuperAdmin/Pages/GuestPolicySettingsPage.php b/app/Filament/SuperAdmin/Pages/GuestPolicySettingsPage.php index ec17f3a..a1eddbf 100644 --- a/app/Filament/SuperAdmin/Pages/GuestPolicySettingsPage.php +++ b/app/Filament/SuperAdmin/Pages/GuestPolicySettingsPage.php @@ -5,9 +5,10 @@ namespace App\Filament\SuperAdmin\Pages; use App\Filament\Clusters\RareAdmin\RareAdminCluster; use App\Models\GuestPolicySetting; use Filament\Forms; -use Filament\Forms\Form; use Filament\Notifications\Notification; use Filament\Pages\Page; +use Filament\Schemas\Components\Section; +use Filament\Schemas\Schema; class GuestPolicySettingsPage extends Page { @@ -73,10 +74,10 @@ class GuestPolicySettingsPage extends Page $this->guest_notification_ttl_hours = $settings->guest_notification_ttl_hours; } - public function form(Form $form): Form + public function form(Schema $schema): Schema { - return $form->schema([ - Forms\Components\Section::make(__('admin.guest_policy.sections.toggles')) + return $schema->schema([ + Section::make(__('admin.guest_policy.sections.toggles')) ->schema([ Forms\Components\Toggle::make('guest_downloads_enabled') ->label(__('admin.guest_policy.fields.guest_downloads_enabled')), @@ -91,7 +92,7 @@ class GuestPolicySettingsPage extends Page ->required(), ]) ->columns(2), - Forms\Components\Section::make(__('admin.guest_policy.sections.rate_limits')) + Section::make(__('admin.guest_policy.sections.rate_limits')) ->schema([ Forms\Components\TextInput::make('per_device_upload_limit') ->label(__('admin.guest_policy.fields.per_device_upload_limit')) @@ -126,7 +127,7 @@ class GuestPolicySettingsPage extends Page ->minValue(1), ]) ->columns(2), - Forms\Components\Section::make(__('admin.guest_policy.sections.retention')) + Section::make(__('admin.guest_policy.sections.retention')) ->schema([ Forms\Components\TextInput::make('share_link_ttl_hours') ->label(__('admin.guest_policy.fields.share_link_ttl_hours'))