requirePermission(self::PERMISSION_READ); return $this->rules->list(FirewallRuleScope::system(), $activeOnly); } public function blockIp(string $ip, ?string $reason = null, ?int $durationSeconds = null): FirewallRuleObject { $this->requirePermission(self::PERMISSION_MANAGE); return $this->rules->blockIp( FirewallRuleScope::system(), $ip, $reason, $this->identity->identifier(), $durationSeconds ); } public function allowIp(string $ip, ?string $reason = null): FirewallRuleObject { $this->requirePermission(self::PERMISSION_MANAGE); return $this->rules->allowIp( FirewallRuleScope::system(), $ip, $reason, $this->identity->identifier() ); } public function blockIpRange(string $cidr, ?string $reason = null): FirewallRuleObject { $this->requirePermission(self::PERMISSION_MANAGE); return $this->rules->blockIpRange( FirewallRuleScope::system(), $cidr, $reason, $this->identity->identifier() ); } public function blockDevice( string $fingerprint, ?string $reason = null, ?int $durationSeconds = null ): FirewallRuleObject { $this->requirePermission(self::PERMISSION_MANAGE); return $this->rules->blockDevice( FirewallRuleScope::system(), $fingerprint, $reason, $this->identity->identifier(), $durationSeconds ); } public function disableRule(string $ruleId): bool { $this->requirePermission(self::PERMISSION_MANAGE); return $this->rules->disable(FirewallRuleScope::system(), $ruleId); } public function removeRule(string $ruleId): bool { $this->requirePermission(self::PERMISSION_MANAGE); return $this->rules->remove(FirewallRuleScope::system(), $ruleId); } private function requirePermission(string $permission): void { if (!$this->identity->hasPermission($permission)) { throw new \RuntimeException("Missing required permission: {$permission}"); } } }