lotteryAdmin(); if (! $admin instanceof AdminUser) { return false; } /** @var list|null $items */ $items = $this->input('items'); if (! is_array($items)) { return true; } foreach ($items as $item) { $key = is_array($item) ? (string) ($item['key'] ?? '') : ''; if (str_starts_with($key, 'settlement.')) { return $admin->hasAdminPermission('prd.payout.manage'); } } return true; } public function rules(): array { return [ 'items' => ['required', 'array', 'min:1', 'max:50'], 'items.*.key' => ['required', 'string', 'max:128'], 'items.*.value' => ['present'], ]; } }