feat(firewall): add audited configuration management
Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
@@ -314,6 +314,43 @@ final class FirewallController extends ControllerAbstract
|
||||
return new JsonResponse($this->tenantStatus->configuration());
|
||||
}
|
||||
|
||||
#[AuthenticatedRoute(
|
||||
'/firewall/configuration',
|
||||
name: 'firewall.tenant.configuration.update',
|
||||
methods: ['PUT'],
|
||||
permissions: [TenantFirewallStatusService::PERMISSION_SETTINGS_MANAGE],
|
||||
)]
|
||||
public function updateTenantConfiguration(
|
||||
bool $enabled,
|
||||
int $maxAuthFailures,
|
||||
int $authFailureWindow,
|
||||
int $autoBlockDuration,
|
||||
string $reason
|
||||
): JsonResponse {
|
||||
return $this->settingsResponse(fn() => $this->tenantStatus->updateConfiguration(
|
||||
$enabled, $maxAuthFailures, $authFailureWindow, $autoBlockDuration, $reason
|
||||
));
|
||||
}
|
||||
|
||||
#[AuthenticatedRoute(
|
||||
'/firewall/system/tenants/{tenantId}/configuration',
|
||||
name: 'firewall.system.tenant.configuration.update',
|
||||
methods: ['PUT'],
|
||||
permissions: [SystemFirewallStatusService::PERMISSION_SETTINGS_MANAGE],
|
||||
)]
|
||||
public function updateSystemTenantConfiguration(
|
||||
string $tenantId,
|
||||
bool $enabled,
|
||||
int $maxAuthFailures,
|
||||
int $authFailureWindow,
|
||||
int $autoBlockDuration,
|
||||
string $reason
|
||||
): JsonResponse {
|
||||
return $this->settingsResponse(fn() => $this->systemStatus->updateTenantConfiguration(
|
||||
$tenantId, $enabled, $maxAuthFailures, $authFailureWindow, $autoBlockDuration, $reason
|
||||
));
|
||||
}
|
||||
|
||||
#[AuthenticatedRoute(
|
||||
'/firewall/system/metrics',
|
||||
name: 'firewall.system.metrics.read',
|
||||
@@ -405,4 +442,24 @@ final class FirewallController extends ControllerAbstract
|
||||
]], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
|
||||
private function settingsResponse(callable $mutation): JsonResponse
|
||||
{
|
||||
try {
|
||||
$configuration = $mutation();
|
||||
if ($configuration === null) {
|
||||
return new JsonResponse(['error' => [
|
||||
'code' => 'tenant_not_found',
|
||||
'message' => 'Tenant not found.',
|
||||
]], JsonResponse::HTTP_NOT_FOUND);
|
||||
}
|
||||
|
||||
return new JsonResponse(['configuration' => $configuration]);
|
||||
} catch (\InvalidArgumentException $error) {
|
||||
return new JsonResponse(['error' => [
|
||||
'code' => 'invalid_firewall_configuration',
|
||||
'message' => $error->getMessage(),
|
||||
]], JsonResponse::HTTP_BAD_REQUEST);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user